From 6306368ccd515ee738ab4b4c204003086d2e7af2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Wed, 13 Jul 2022 15:00:08 -0400
Subject: [PATCH] contrib: update gnutls to 3.7.6

Change-Id: Iba7eb07733e75e4ea4fbc556ea31d959b3233809
---
 .../0001-m4-remove-malloc-realloc.patch       |  1850 +
 contrib/src/gnutls/SHA512SUMS                 |     2 +-
 .../downgrade-gettext-requirement.patch       |     5 -
 .../gnutls/gnutls-3.6.7-win32-compat.patch    |   420 -
 .../gnutls-3.6.7-win32-vs-support.patch       | 56920 ----------------
 contrib/src/gnutls/gnutls-no-egd.patch        |   107 -
 contrib/src/gnutls/gnutls-uwp.patch           |   196 -
 contrib/src/gnutls/gnutls_tasn.patch          |   423 -
 contrib/src/gnutls/no-create-time-h.patch     |    11 -
 contrib/src/gnutls/read-file-limits.h.patch   |    12 -
 contrib/src/gnutls/rules.mak                  |    24 +-
 11 files changed, 1854 insertions(+), 58116 deletions(-)
 create mode 100644 contrib/src/gnutls/0001-m4-remove-malloc-realloc.patch
 delete mode 100644 contrib/src/gnutls/downgrade-gettext-requirement.patch
 delete mode 100644 contrib/src/gnutls/gnutls-3.6.7-win32-compat.patch
 delete mode 100644 contrib/src/gnutls/gnutls-3.6.7-win32-vs-support.patch
 delete mode 100644 contrib/src/gnutls/gnutls-no-egd.patch
 delete mode 100644 contrib/src/gnutls/gnutls-uwp.patch
 delete mode 100644 contrib/src/gnutls/gnutls_tasn.patch
 delete mode 100644 contrib/src/gnutls/no-create-time-h.patch
 delete mode 100644 contrib/src/gnutls/read-file-limits.h.patch

diff --git a/contrib/src/gnutls/0001-m4-remove-malloc-realloc.patch b/contrib/src/gnutls/0001-m4-remove-malloc-realloc.patch
new file mode 100644
index 0000000000..5c3ba77658
--- /dev/null
+++ b/contrib/src/gnutls/0001-m4-remove-malloc-realloc.patch
@@ -0,0 +1,1850 @@
+From 23dc18c2232245e5fe28b1f97c36f84a95855915 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
+Date: Tue, 12 Jul 2022 19:37:12 -0400
+Subject: [PATCH] m4: remove malloc, realloc
+
+---
+ Makefile.in                         |   8 +-
+ aclocal.m4                          |   4 -
+ doc/Makefile.in                     |   8 +-
+ doc/credentials/Makefile.in         |   8 +-
+ doc/credentials/srp/Makefile.in     |   8 +-
+ doc/credentials/x509/Makefile.in    |   8 +-
+ doc/examples/Makefile.in            |   8 +-
+ doc/latex/Makefile.in               |   8 +-
+ doc/manpages/Makefile.in            |   8 +-
+ doc/reference/Makefile.in           |   8 +-
+ doc/scripts/Makefile.in             |   8 +-
+ extra/Makefile.in                   |   8 +-
+ extra/includes/Makefile.in          |   8 +-
+ fuzz/Makefile.in                    |   8 +-
+ gl/Makefile.in                      |   8 +-
+ guile/Makefile.in                   |   8 +-
+ guile/src/Makefile.in               |   8 +-
+ lib/Makefile.in                     |   8 +-
+ lib/accelerated/Makefile.in         |   8 +-
+ lib/accelerated/aarch64/Makefile.in |   8 +-
+ lib/accelerated/x86/Makefile.in     |   8 +-
+ lib/algorithms/Makefile.in          |   8 +-
+ lib/auth/Makefile.in                |   8 +-
+ lib/ext/Makefile.in                 |   8 +-
+ lib/extras/Makefile.in              |   8 +-
+ lib/includes/Makefile.in            |   8 +-
+ lib/minitasn1/Makefile.in           |   8 +-
+ lib/nettle/Makefile.in              |   8 +-
+ lib/unistring/Makefile.in           |   8 +-
+ lib/x509/Makefile.in                |   8 +-
+ libdane/Makefile.in                 |   8 +-
+ libdane/includes/Makefile.in        |   8 +-
+ m4/eealloc.m4                       |  31 -----
+ m4/gnulib-comp.m4                   |  15 ---
+ m4/malloc.m4                        | 174 ----------------------------
+ m4/malloca.m4                       |  14 ---
+ m4/realloc.m4                       |  63 ----------
+ m4/strdup.m4                        |   4 -
+ src/Makefile.in                     |   8 +-
+ src/gl/Makefile.in                  |   8 +-
+ src/gl/m4/calloc.m4                 |   4 -
+ src/gl/m4/gnulib-comp.m4            |  23 ----
+ src/gl/m4/reallocarray.m4           |   7 --
+ src/gl/tests/Makefile.in            |   8 +-
+ tests/Makefile.in                   |   8 +-
+ tests/cert-tests/Makefile.in        |   8 +-
+ tests/slow/Makefile.in              |   8 +-
+ tests/suite/Makefile.in             |   8 +-
+ tests/windows/Makefile.in           |   8 +-
+ 49 files changed, 156 insertions(+), 495 deletions(-)
+ delete mode 100644 m4/eealloc.m4
+ delete mode 100644 m4/malloc.m4
+ delete mode 100644 m4/malloca.m4
+ delete mode 100644 m4/realloc.m4
+
+diff --git a/Makefile.in b/Makefile.in
+index c1f6caf..fc9368f 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -211,7 +211,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -238,8 +238,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -252,7 +252,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/aclocal.m4 b/aclocal.m4
+index 7b5b8be..99193c8 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -1587,7 +1587,6 @@ m4_include([m4/byteswap.m4])
+ m4_include([m4/close.m4])
+ m4_include([m4/double-slash-root.m4])
+ m4_include([m4/dup2.m4])
+-m4_include([m4/eealloc.m4])
+ m4_include([m4/errno_h.m4])
+ m4_include([m4/explicit_bzero.m4])
+ m4_include([m4/exponentd.m4])
+@@ -1638,8 +1637,6 @@ m4_include([m4/ltoptions.m4])
+ m4_include([m4/ltsugar.m4])
+ m4_include([m4/ltversion.m4])
+ m4_include([m4/lt~obsolete.m4])
+-m4_include([m4/malloc.m4])
+-m4_include([m4/malloca.m4])
+ m4_include([m4/manywarnings.m4])
+ m4_include([m4/memchr.m4])
+ m4_include([m4/memmem.m4])
+@@ -1664,7 +1661,6 @@ m4_include([m4/printf.m4])
+ m4_include([m4/progtest.m4])
+ m4_include([m4/pthread_rwlock_rdlock.m4])
+ m4_include([m4/read-file.m4])
+-m4_include([m4/realloc.m4])
+ m4_include([m4/secure_getenv.m4])
+ m4_include([m4/size_max.m4])
+ m4_include([m4/snprintf.m4])
+diff --git a/doc/Makefile.in b/doc/Makefile.in
+index 8962fd5..b261304 100644
+--- a/doc/Makefile.in
++++ b/doc/Makefile.in
+@@ -209,7 +209,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -236,8 +236,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -250,7 +250,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/doc/credentials/Makefile.in b/doc/credentials/Makefile.in
+index 2ff9d92..e8841f0 100644
+--- a/doc/credentials/Makefile.in
++++ b/doc/credentials/Makefile.in
+@@ -201,7 +201,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -228,8 +228,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -242,7 +242,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/doc/credentials/srp/Makefile.in b/doc/credentials/srp/Makefile.in
+index 6ddcd3f..4853854 100644
+--- a/doc/credentials/srp/Makefile.in
++++ b/doc/credentials/srp/Makefile.in
+@@ -181,7 +181,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -208,8 +208,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -222,7 +222,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/doc/credentials/x509/Makefile.in b/doc/credentials/x509/Makefile.in
+index cd96c6c..83c198c 100644
+--- a/doc/credentials/x509/Makefile.in
++++ b/doc/credentials/x509/Makefile.in
+@@ -181,7 +181,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -208,8 +208,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -222,7 +222,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/doc/examples/Makefile.in b/doc/examples/Makefile.in
+index 0322ed2..bfb1b4c 100644
+--- a/doc/examples/Makefile.in
++++ b/doc/examples/Makefile.in
+@@ -216,7 +216,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -243,8 +243,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -257,7 +257,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/doc/latex/Makefile.in b/doc/latex/Makefile.in
+index cc42d42..be36a0c 100644
+--- a/doc/latex/Makefile.in
++++ b/doc/latex/Makefile.in
+@@ -181,7 +181,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -208,8 +208,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -222,7 +222,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/doc/manpages/Makefile.in b/doc/manpages/Makefile.in
+index 69abc35..f037603 100644
+--- a/doc/manpages/Makefile.in
++++ b/doc/manpages/Makefile.in
+@@ -205,7 +205,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -232,8 +232,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -246,7 +246,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/doc/reference/Makefile.in b/doc/reference/Makefile.in
+index ef17f10..2b11a88 100644
+--- a/doc/reference/Makefile.in
++++ b/doc/reference/Makefile.in
+@@ -210,7 +210,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -237,8 +237,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -251,7 +251,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/doc/scripts/Makefile.in b/doc/scripts/Makefile.in
+index d45bd86..c54daa5 100644
+--- a/doc/scripts/Makefile.in
++++ b/doc/scripts/Makefile.in
+@@ -199,7 +199,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -226,8 +226,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -240,7 +240,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/extra/Makefile.in b/extra/Makefile.in
+index 32e85b8..e7deae2 100644
+--- a/extra/Makefile.in
++++ b/extra/Makefile.in
+@@ -212,7 +212,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -239,8 +239,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -253,7 +253,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/extra/includes/Makefile.in b/extra/includes/Makefile.in
+index abd94b9..c275547 100644
+--- a/extra/includes/Makefile.in
++++ b/extra/includes/Makefile.in
+@@ -204,7 +204,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -231,8 +231,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -245,7 +245,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/fuzz/Makefile.in b/fuzz/Makefile.in
+index 926adea..0925077 100644
+--- a/fuzz/Makefile.in
++++ b/fuzz/Makefile.in
+@@ -181,7 +181,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -208,8 +208,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -222,7 +222,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/gl/Makefile.in b/gl/Makefile.in
+index 7d25ba6..fd58c13 100644
+--- a/gl/Makefile.in
++++ b/gl/Makefile.in
+@@ -276,7 +276,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -303,8 +303,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -317,7 +317,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/guile/Makefile.in b/guile/Makefile.in
+index 9ed85b5..1aa99a5 100644
+--- a/guile/Makefile.in
++++ b/guile/Makefile.in
+@@ -203,7 +203,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -230,8 +230,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -244,7 +244,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/guile/src/Makefile.in b/guile/src/Makefile.in
+index 370a607..9e01094 100644
+--- a/guile/src/Makefile.in
++++ b/guile/src/Makefile.in
+@@ -205,7 +205,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -232,8 +232,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -246,7 +246,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/Makefile.in b/lib/Makefile.in
+index 3258bc1..ed2626e 100644
+--- a/lib/Makefile.in
++++ b/lib/Makefile.in
+@@ -242,7 +242,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -269,8 +269,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -283,7 +283,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/accelerated/Makefile.in b/lib/accelerated/Makefile.in
+index c378c14..63661e7 100644
+--- a/lib/accelerated/Makefile.in
++++ b/lib/accelerated/Makefile.in
+@@ -212,7 +212,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -239,8 +239,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -253,7 +253,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/accelerated/aarch64/Makefile.in b/lib/accelerated/aarch64/Makefile.in
+index d0b941f..398cb33 100644
+--- a/lib/accelerated/aarch64/Makefile.in
++++ b/lib/accelerated/aarch64/Makefile.in
+@@ -208,7 +208,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -235,8 +235,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -249,7 +249,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/accelerated/x86/Makefile.in b/lib/accelerated/x86/Makefile.in
+index 1bbf4ef..67d4cd0 100644
+--- a/lib/accelerated/x86/Makefile.in
++++ b/lib/accelerated/x86/Makefile.in
+@@ -220,7 +220,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -247,8 +247,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -261,7 +261,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/algorithms/Makefile.in b/lib/algorithms/Makefile.in
+index 48b3156..3ee817e 100644
+--- a/lib/algorithms/Makefile.in
++++ b/lib/algorithms/Makefile.in
+@@ -202,7 +202,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -229,8 +229,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -243,7 +243,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/auth/Makefile.in b/lib/auth/Makefile.in
+index 00551ca..e232cae 100644
+--- a/lib/auth/Makefile.in
++++ b/lib/auth/Makefile.in
+@@ -202,7 +202,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -229,8 +229,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -243,7 +243,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/ext/Makefile.in b/lib/ext/Makefile.in
+index 6c9a6e5..20fdc35 100644
+--- a/lib/ext/Makefile.in
++++ b/lib/ext/Makefile.in
+@@ -204,7 +204,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -231,8 +231,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -245,7 +245,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/extras/Makefile.in b/lib/extras/Makefile.in
+index 232407b..8963490 100644
+--- a/lib/extras/Makefile.in
++++ b/lib/extras/Makefile.in
+@@ -202,7 +202,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -229,8 +229,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -243,7 +243,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/includes/Makefile.in b/lib/includes/Makefile.in
+index 24e4bac..0c034ad 100644
+--- a/lib/includes/Makefile.in
++++ b/lib/includes/Makefile.in
+@@ -202,7 +202,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -229,8 +229,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -243,7 +243,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/minitasn1/Makefile.in b/lib/minitasn1/Makefile.in
+index 43edcf4..696a679 100644
+--- a/lib/minitasn1/Makefile.in
++++ b/lib/minitasn1/Makefile.in
+@@ -203,7 +203,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -230,8 +230,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -244,7 +244,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/nettle/Makefile.in b/lib/nettle/Makefile.in
+index 6f2a441..6b13f5f 100644
+--- a/lib/nettle/Makefile.in
++++ b/lib/nettle/Makefile.in
+@@ -222,7 +222,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -249,8 +249,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -263,7 +263,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/unistring/Makefile.in b/lib/unistring/Makefile.in
+index 36fe9f2..b21ff9e 100644
+--- a/lib/unistring/Makefile.in
++++ b/lib/unistring/Makefile.in
+@@ -309,7 +309,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -336,8 +336,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -350,7 +350,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/lib/x509/Makefile.in b/lib/x509/Makefile.in
+index bb879bb..2cd3455 100644
+--- a/lib/x509/Makefile.in
++++ b/lib/x509/Makefile.in
+@@ -201,7 +201,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -228,8 +228,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -242,7 +242,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/libdane/Makefile.in b/libdane/Makefile.in
+index d5e30ec..952a0c2 100644
+--- a/libdane/Makefile.in
++++ b/libdane/Makefile.in
+@@ -208,7 +208,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -235,8 +235,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -249,7 +249,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/libdane/includes/Makefile.in b/libdane/includes/Makefile.in
+index 3b72a35..c907bbd 100644
+--- a/libdane/includes/Makefile.in
++++ b/libdane/includes/Makefile.in
+@@ -201,7 +201,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -228,8 +228,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -242,7 +242,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/m4/eealloc.m4 b/m4/eealloc.m4
+deleted file mode 100644
+index 002f0c8..0000000
+--- a/m4/eealloc.m4
++++ /dev/null
+@@ -1,31 +0,0 @@
+-# eealloc.m4 serial 3
+-dnl Copyright (C) 2003, 2009-2021 Free Software Foundation, Inc.
+-dnl This file is free software; the Free Software Foundation
+-dnl gives unlimited permission to copy and/or distribute it,
+-dnl with or without modifications, as long as this notice is preserved.
+-
+-AC_DEFUN([gl_EEALLOC],
+-[
+-  AC_REQUIRE([gl_EEMALLOC])
+-  AC_REQUIRE([gl_EEREALLOC])
+-])
+-
+-AC_DEFUN([gl_EEMALLOC],
+-[
+-  _AC_FUNC_MALLOC_IF(
+-    [gl_cv_func_malloc_0_nonnull=1],
+-    [gl_cv_func_malloc_0_nonnull=0])
+-  AC_DEFINE_UNQUOTED([MALLOC_0_IS_NONNULL], [$gl_cv_func_malloc_0_nonnull],
+-    [If malloc(0) is != NULL, define this to 1.  Otherwise define this
+-     to 0.])
+-])
+-
+-AC_DEFUN([gl_EEREALLOC],
+-[
+-  _AC_FUNC_REALLOC_IF(
+-    [gl_cv_func_realloc_0_nonnull=1],
+-    [gl_cv_func_realloc_0_nonnull=0])
+-  AC_DEFINE_UNQUOTED([REALLOC_0_IS_NONNULL], [$gl_cv_func_realloc_0_nonnull],
+-    [If realloc(NULL,0) is != NULL, define this to 1.  Otherwise define this
+-     to 0.])
+-])
+diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
+index 363f649..769901f 100644
+--- a/m4/gnulib-comp.m4
++++ b/m4/gnulib-comp.m4
+@@ -346,12 +346,6 @@ AC_SUBST([LTALLOCA])
+     [AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])])
+   AC_REQUIRE([AC_PROG_SED])
+   AC_REQUIRE([AC_PROG_GREP])
+-  AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
+-  if test $REPLACE_MALLOC = 1; then
+-    AC_LIBOBJ([malloc])
+-  fi
+-  gl_STDLIB_MODULE_INDICATOR([malloc-posix])
+-  gl_MALLOCA
+   gl_FUNC_MEMCHR
+   if test $REPLACE_MEMCHR = 1; then
+     AC_LIBOBJ([memchr])
+@@ -387,11 +381,6 @@ AC_SUBST([LTALLOCA])
+   gl_PATHMAX
+   AC_PATH_PROG([PMCCABE], [pmccabe], [false])
+   gl_PREREQ_READ_FILE
+-  gl_FUNC_REALLOC_POSIX
+-  if test $REPLACE_REALLOC = 1; then
+-    AC_LIBOBJ([realloc])
+-  fi
+-  gl_STDLIB_MODULE_INDICATOR([realloc-posix])
+   gl_FUNC_SECURE_GETENV
+   if test $HAVE_SECURE_GETENV = 0; then
+     AC_LIBOBJ([secure_getenv])
+@@ -872,7 +861,6 @@ AC_DEFUN([gl_FILE_LIST], [
+   m4/close.m4
+   m4/double-slash-root.m4
+   m4/dup2.m4
+-  m4/eealloc.m4
+   m4/errno_h.m4
+   m4/explicit_bzero.m4
+   m4/exponentd.m4
+@@ -911,8 +899,6 @@ AC_DEFUN([gl_FILE_LIST], [
+   m4/limits-h.m4
+   m4/lock.m4
+   m4/lseek.m4
+-  m4/malloc.m4
+-  m4/malloca.m4
+   m4/manywarnings-c++.m4
+   m4/manywarnings.m4
+   m4/math_h.m4
+@@ -935,7 +921,6 @@ AC_DEFUN([gl_FILE_LIST], [
+   m4/printf.m4
+   m4/pthread_rwlock_rdlock.m4
+   m4/read-file.m4
+-  m4/realloc.m4
+   m4/secure_getenv.m4
+   m4/size_max.m4
+   m4/snprintf.m4
+diff --git a/m4/malloc.m4 b/m4/malloc.m4
+deleted file mode 100644
+index 972e808..0000000
+--- a/m4/malloc.m4
++++ /dev/null
+@@ -1,174 +0,0 @@
+-# malloc.m4 serial 27
+-dnl Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
+-dnl This file is free software; the Free Software Foundation
+-dnl gives unlimited permission to copy and/or distribute it,
+-dnl with or without modifications, as long as this notice is preserved.
+-
+-# This is adapted with modifications from upstream Autoconf here:
+-# https://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/autoconf/functions.m4?id=v2.70#n949
+-AC_DEFUN([_AC_FUNC_MALLOC_IF],
+-[
+-  AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+-  AC_CACHE_CHECK([whether malloc (0) returns nonnull],
+-    [ac_cv_func_malloc_0_nonnull],
+-    [AC_RUN_IFELSE(
+-       [AC_LANG_PROGRAM(
+-          [[#include <stdlib.h>
+-          ]],
+-          [[void *p = malloc (0);
+-            int result = !p;
+-            free (p);
+-            return result;]])
+-       ],
+-       [ac_cv_func_malloc_0_nonnull=yes],
+-       [ac_cv_func_malloc_0_nonnull=no],
+-       [case "$host_os" in
+-          # Guess yes on platforms where we know the result.
+-          *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \
+-          | gnu* | *-musl* | midnightbsd* \
+-          | hpux* | solaris* | cygwin* | mingw* | msys* )
+-            ac_cv_func_malloc_0_nonnull="guessing yes" ;;
+-          # If we don't know, obey --enable-cross-guesses.
+-          *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;;
+-        esac
+-       ])
+-    ])
+-  AS_CASE([$ac_cv_func_malloc_0_nonnull], [*yes], [$1], [$2])
+-])# _AC_FUNC_MALLOC_IF
+-
+-# gl_FUNC_MALLOC_GNU
+-# ------------------
+-# Replace malloc if it is not compatible with GNU libc.
+-AC_DEFUN([gl_FUNC_MALLOC_GNU],
+-[
+-  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+-  AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
+-  if test $REPLACE_MALLOC = 0; then
+-    _AC_FUNC_MALLOC_IF([], [REPLACE_MALLOC=1])
+-  fi
+-])
+-
+-# gl_FUNC_MALLOC_PTRDIFF
+-# ----------------------
+-# Test whether malloc (N) reliably fails when N exceeds PTRDIFF_MAX,
+-# and replace malloc otherwise.
+-AC_DEFUN([gl_FUNC_MALLOC_PTRDIFF],
+-[
+-  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+-  AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF])
+-  test "$gl_cv_malloc_ptrdiff" = yes || REPLACE_MALLOC=1
+-])
+-
+-# Test whether malloc, realloc, calloc refuse to create objects
+-# larger than what can be expressed in ptrdiff_t.
+-# Set gl_cv_func_malloc_gnu to yes or no accordingly.
+-AC_DEFUN([gl_CHECK_MALLOC_PTRDIFF],
+-[
+-  AC_CACHE_CHECK([whether malloc is ptrdiff_t safe],
+-    [gl_cv_malloc_ptrdiff],
+-    [AC_COMPILE_IFELSE(
+-       [AC_LANG_PROGRAM(
+-          [[#include <stdint.h>
+-          ]],
+-          [[/* 64-bit ptrdiff_t is so wide that no practical platform
+-               can exceed it.  */
+-            #define WIDE_PTRDIFF (PTRDIFF_MAX >> 31 >> 31 != 0)
+-
+-            /* On rare machines where size_t fits in ptrdiff_t there
+-               is no problem.  */
+-            #define NARROW_SIZE (SIZE_MAX <= PTRDIFF_MAX)
+-
+-            /* glibc 2.30 and later malloc refuses to exceed ptrdiff_t
+-               bounds even on 32-bit platforms.  We don't know which
+-               non-glibc systems are safe.  */
+-            #define KNOWN_SAFE (2 < __GLIBC__ + (30 <= __GLIBC_MINOR__))
+-
+-            #if WIDE_PTRDIFF || NARROW_SIZE || KNOWN_SAFE
+-              return 0;
+-            #else
+-              #error "malloc might not be ptrdiff_t safe"
+-              syntax error
+-            #endif
+-          ]])],
+-       [gl_cv_malloc_ptrdiff=yes],
+-       [gl_cv_malloc_ptrdiff=no])
+-    ])
+-])
+-
+-# gl_FUNC_MALLOC_POSIX
+-# --------------------
+-# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
+-# fails, and doesn't mess up with ptrdiff_t overflow), and replace
+-# malloc if it is not.
+-AC_DEFUN([gl_FUNC_MALLOC_POSIX],
+-[
+-  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+-  AC_REQUIRE([gl_FUNC_MALLOC_PTRDIFF])
+-  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+-  if test "$gl_cv_func_malloc_posix" = yes; then
+-    AC_DEFINE([HAVE_MALLOC_POSIX], [1],
+-      [Define if malloc, realloc, and calloc set errno on allocation failure.])
+-  else
+-    REPLACE_MALLOC=1
+-  fi
+-])
+-
+-# Test whether malloc, realloc, calloc set errno to ENOMEM on failure.
+-# Set gl_cv_func_malloc_posix to yes or no accordingly.
+-AC_DEFUN([gl_CHECK_MALLOC_POSIX],
+-[
+-  AC_REQUIRE([AC_CANONICAL_HOST])
+-  AC_CACHE_CHECK([whether malloc, realloc, calloc set errno on failure],
+-    [gl_cv_func_malloc_posix],
+-    [
+-      dnl It is too dangerous to try to allocate a large amount of memory:
+-      dnl some systems go to their knees when you do that. So assume that
+-      dnl all Unix implementations of the function set errno on failure,
+-      dnl except on those platforms where we have seen 'test-malloc-gnu',
+-      dnl 'test-realloc-gnu', 'test-calloc-gnu' fail.
+-      case "$host_os" in
+-        mingw*)
+-          gl_cv_func_malloc_posix=no ;;
+-        irix* | solaris*)
+-          dnl On IRIX 6.5, the three functions return NULL with errno unset
+-          dnl when the argument is larger than PTRDIFF_MAX.
+-          dnl On Solaris 11.3, the three functions return NULL with errno set
+-          dnl to EAGAIN, not ENOMEM, when the argument is larger than
+-          dnl PTRDIFF_MAX.
+-          dnl Here is a test program:
+-m4_divert_push([KILL])
+-#include <errno.h>
+-#include <stdio.h>
+-#include <stdlib.h>
+-#define ptrdiff_t long
+-#ifndef PTRDIFF_MAX
+-# define PTRDIFF_MAX ((ptrdiff_t) ((1UL << (8 * sizeof (ptrdiff_t) - 1)) - 1))
+-#endif
+-
+-int main ()
+-{
+-  void *p;
+-
+-  fprintf (stderr, "PTRDIFF_MAX = %lu\n", (unsigned long) PTRDIFF_MAX);
+-
+-  errno = 0;
+-  p = malloc ((unsigned long) PTRDIFF_MAX + 1);
+-  fprintf (stderr, "p=%p errno=%d\n", p, errno);
+-
+-  errno = 0;
+-  p = calloc (PTRDIFF_MAX / 2 + 1, 2);
+-  fprintf (stderr, "p=%p errno=%d\n", p, errno);
+-
+-  errno = 0;
+-  p = realloc (NULL, (unsigned long) PTRDIFF_MAX + 1);
+-  fprintf (stderr, "p=%p errno=%d\n", p, errno);
+-
+-  return 0;
+-}
+-m4_divert_pop([KILL])
+-          gl_cv_func_malloc_posix=no ;;
+-        *)
+-          gl_cv_func_malloc_posix=yes ;;
+-      esac
+-    ])
+-])
+diff --git a/m4/malloca.m4 b/m4/malloca.m4
+deleted file mode 100644
+index 06ed2c6..0000000
+--- a/m4/malloca.m4
++++ /dev/null
+@@ -1,14 +0,0 @@
+-# malloca.m4 serial 2
+-dnl Copyright (C) 2003-2004, 2006-2007, 2009-2021 Free Software Foundation,
+-dnl Inc.
+-dnl This file is free software; the Free Software Foundation
+-dnl gives unlimited permission to copy and/or distribute it,
+-dnl with or without modifications, as long as this notice is preserved.
+-
+-AC_DEFUN([gl_MALLOCA],
+-[
+-  dnl Use the autoconf tests for alloca(), but not the AC_SUBSTed variables
+-  dnl @ALLOCA@ and @LTALLOCA@.
+-  dnl gl_FUNC_ALLOCA   dnl Already brought in by the module dependencies.
+-  AC_REQUIRE([gl_EEMALLOC])
+-])
+diff --git a/m4/realloc.m4 b/m4/realloc.m4
+deleted file mode 100644
+index 0abc418..0000000
+--- a/m4/realloc.m4
++++ /dev/null
+@@ -1,63 +0,0 @@
+-# realloc.m4 serial 24
+-dnl Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
+-dnl This file is free software; the Free Software Foundation
+-dnl gives unlimited permission to copy and/or distribute it,
+-dnl with or without modifications, as long as this notice is preserved.
+-
+-# This is adapted with modifications from upstream Autoconf here:
+-# https://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/autoconf/functions.m4?id=v2.70#n1455
+-AC_DEFUN([_AC_FUNC_REALLOC_IF],
+-[
+-  AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+-  AC_CACHE_CHECK([whether realloc (0, 0) returns nonnull],
+-    [ac_cv_func_realloc_0_nonnull],
+-    [AC_RUN_IFELSE(
+-       [AC_LANG_PROGRAM(
+-          [[#include <stdlib.h>
+-          ]],
+-          [[void *p = realloc (0, 0);
+-            int result = !p;
+-            free (p);
+-            return result;]])
+-       ],
+-       [ac_cv_func_realloc_0_nonnull=yes],
+-       [ac_cv_func_realloc_0_nonnull=no],
+-       [case "$host_os" in
+-          # Guess yes on platforms where we know the result.
+-          *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \
+-          | gnu* | *-musl* | midnightbsd* \
+-          | hpux* | solaris* | cygwin* | mingw* | msys* )
+-            ac_cv_func_realloc_0_nonnull="guessing yes" ;;
+-          # If we don't know, obey --enable-cross-guesses.
+-          *) ac_cv_func_realloc_0_nonnull="$gl_cross_guess_normal" ;;
+-        esac
+-       ])
+-    ])
+-  AS_CASE([$ac_cv_func_realloc_0_nonnull], [*yes], [$1], [$2])
+-])# AC_FUNC_REALLOC
+-
+-# gl_FUNC_REALLOC_GNU
+-# -------------------
+-# Replace realloc if it is not compatible with GNU libc.
+-AC_DEFUN([gl_FUNC_REALLOC_GNU],
+-[
+-  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+-  AC_REQUIRE([gl_FUNC_REALLOC_POSIX])
+-  if test $REPLACE_REALLOC = 0; then
+-    _AC_FUNC_REALLOC_IF([], [REPLACE_REALLOC=1])
+-  fi
+-])# gl_FUNC_REALLOC_GNU
+-
+-# gl_FUNC_REALLOC_POSIX
+-# ---------------------
+-# Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it
+-# fails, and doesn't mess up with ptrdiff_t overflow),
+-# and replace realloc if it is not.
+-AC_DEFUN([gl_FUNC_REALLOC_POSIX],
+-[
+-  AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+-  AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
+-  if test $REPLACE_MALLOC = 1; then
+-    REPLACE_REALLOC=1
+-  fi
+-])
+diff --git a/m4/strdup.m4 b/m4/strdup.m4
+index 5b6018f..47d62df 100644
+--- a/m4/strdup.m4
++++ b/m4/strdup.m4
+@@ -18,10 +18,6 @@ AC_DEFUN([gl_FUNC_STRDUP],
+ AC_DEFUN([gl_FUNC_STRDUP_POSIX],
+ [
+   AC_REQUIRE([gl_STRING_H_DEFAULTS])
+-  AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+-  if test $gl_cv_func_malloc_posix != yes; then
+-    REPLACE_STRDUP=1
+-  fi
+   AC_CHECK_DECLS_ONCE([strdup])
+   if test $ac_cv_have_decl_strdup = no; then
+     HAVE_DECL_STRDUP=0
+diff --git a/src/Makefile.in b/src/Makefile.in
+index 521e16a..5e1808d 100644
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -226,7 +226,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -253,8 +253,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -267,7 +267,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/src/gl/Makefile.in b/src/gl/Makefile.in
+index 6daebe9..6013510 100644
+--- a/src/gl/Makefile.in
++++ b/src/gl/Makefile.in
+@@ -289,7 +289,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -316,8 +316,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -330,7 +330,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/src/gl/m4/calloc.m4 b/src/gl/m4/calloc.m4
+index fe12b15..39ec3f2 100644
+--- a/src/gl/m4/calloc.m4
++++ b/src/gl/m4/calloc.m4
+@@ -71,10 +71,6 @@ AC_DEFUN([gl_FUNC_CALLOC_GNU],
+ AC_DEFUN([gl_FUNC_CALLOC_POSIX],
+ [
+   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+-  AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
+-  if test $REPLACE_MALLOC = 1; then
+-    REPLACE_CALLOC=1
+-  fi
+   dnl Although in theory we should also test for size_t overflow,
+   dnl in practice testing for ptrdiff_t overflow suffices
+   dnl since PTRDIFF_MAX <= SIZE_MAX on all known Gnulib porting targets.
+diff --git a/src/gl/m4/gnulib-comp.m4 b/src/gl/m4/gnulib-comp.m4
+index 67c0da7..37b027d 100644
+--- a/src/gl/m4/gnulib-comp.m4
++++ b/src/gl/m4/gnulib-comp.m4
+@@ -639,16 +639,6 @@ AC_SUBST([LTALLOCA])
+     AC_LIBOBJ([lseek])
+   fi
+   gl_UNISTD_MODULE_INDICATOR([lseek])
+-  gl_FUNC_MALLOC_GNU
+-  if test $REPLACE_MALLOC = 1; then
+-    AC_LIBOBJ([malloc])
+-  fi
+-  AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
+-  if test $REPLACE_MALLOC = 1; then
+-    AC_LIBOBJ([malloc])
+-  fi
+-  gl_STDLIB_MODULE_INDICATOR([malloc-posix])
+-  gl_MALLOCA
+   gl_FUNC_MEMCHR
+   if test $REPLACE_MEMCHR = 1; then
+     AC_LIBOBJ([memchr])
+@@ -698,15 +688,6 @@ AC_SUBST([LTALLOCA])
+   AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
+   AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
+   gl_PREREQ_READ_FILE
+-  gl_FUNC_REALLOC_GNU
+-  if test $REPLACE_REALLOC = 1; then
+-    AC_LIBOBJ([realloc])
+-  fi
+-  gl_FUNC_REALLOC_POSIX
+-  if test $REPLACE_REALLOC = 1; then
+-    AC_LIBOBJ([realloc])
+-  fi
+-  gl_STDLIB_MODULE_INDICATOR([realloc-posix])
+   gl_FUNC_REALLOCARRAY
+   if test $HAVE_REALLOCARRAY = 0 || test $REPLACE_REALLOCARRAY = 1; then
+     AC_LIBOBJ([reallocarray])
+@@ -1556,7 +1537,6 @@ AC_DEFUN([ggl_FILE_LIST], [
+   m4/ctype_h.m4
+   m4/double-slash-root.m4
+   m4/dup2.m4
+-  m4/eealloc.m4
+   m4/environ.m4
+   m4/errno_h.m4
+   m4/error.m4
+@@ -1617,8 +1597,6 @@ AC_DEFUN([ggl_FILE_LIST], [
+   m4/lock.m4
+   m4/lseek.m4
+   m4/lstat.m4
+-  m4/malloc.m4
+-  m4/malloca.m4
+   m4/math_h.m4
+   m4/memchr.m4
+   m4/memmem.m4
+@@ -1650,7 +1628,6 @@ AC_DEFUN([ggl_FILE_LIST], [
+   m4/putenv.m4
+   m4/raise.m4
+   m4/read-file.m4
+-  m4/realloc.m4
+   m4/reallocarray.m4
+   m4/sched_h.m4
+   m4/sched_yield.m4
+diff --git a/src/gl/m4/reallocarray.m4 b/src/gl/m4/reallocarray.m4
+index 9d8a626..597b9df 100644
+--- a/src/gl/m4/reallocarray.m4
++++ b/src/gl/m4/reallocarray.m4
+@@ -10,13 +10,6 @@ AC_DEFUN([gl_FUNC_REALLOCARRAY],
+   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ 
+   AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+-  AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF])
+-  AC_CHECK_FUNCS([reallocarray])
+-  if test "$ac_cv_func_reallocarray" = no; then
+-    HAVE_REALLOCARRAY=0
+-  elif test "$gl_cv_malloc_ptrdiff" = no; then
+-    REPLACE_REALLOCARRAY=1
+-  fi
+ ])
+ 
+ # Prerequisites of lib/reallocarray.c.
+diff --git a/src/gl/tests/Makefile.in b/src/gl/tests/Makefile.in
+index 57f44b4..c52ee2b 100644
+--- a/src/gl/tests/Makefile.in
++++ b/src/gl/tests/Makefile.in
+@@ -350,7 +350,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -377,8 +377,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -391,7 +391,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/tests/Makefile.in b/tests/Makefile.in
+index 850c3b1..f45350a 100644
+--- a/tests/Makefile.in
++++ b/tests/Makefile.in
+@@ -330,7 +330,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -357,8 +357,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -371,7 +371,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/tests/cert-tests/Makefile.in b/tests/cert-tests/Makefile.in
+index 9e12ec1..8074630 100644
+--- a/tests/cert-tests/Makefile.in
++++ b/tests/cert-tests/Makefile.in
+@@ -215,7 +215,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -242,8 +242,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -256,7 +256,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/tests/slow/Makefile.in b/tests/slow/Makefile.in
+index dac282e..1e6b7f1 100644
+--- a/tests/slow/Makefile.in
++++ b/tests/slow/Makefile.in
+@@ -209,7 +209,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -236,8 +236,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -250,7 +250,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/tests/suite/Makefile.in b/tests/suite/Makefile.in
+index 2b36b87..334b324 100644
+--- a/tests/suite/Makefile.in
++++ b/tests/suite/Makefile.in
+@@ -214,7 +214,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -241,8 +241,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -255,7 +255,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+diff --git a/tests/windows/Makefile.in b/tests/windows/Makefile.in
+index 3bebe3a..0539f57 100644
+--- a/tests/windows/Makefile.in
++++ b/tests/windows/Makefile.in
+@@ -207,7 +207,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/builtin-expect.m4 \
+ 	$(top_srcdir)/m4/byteswap.m4 $(top_srcdir)/m4/close.m4 \
+ 	$(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+-	$(top_srcdir)/m4/eealloc.m4 $(top_srcdir)/m4/errno_h.m4 \
++	$(top_srcdir)/m4/errno_h.m4 \
+ 	$(top_srcdir)/m4/explicit_bzero.m4 \
+ 	$(top_srcdir)/m4/exponentd.m4 $(top_srcdir)/m4/extensions.m4 \
+ 	$(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+@@ -234,8 +234,8 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/lock.m4 \
+ 	$(top_srcdir)/m4/lseek.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/malloc.m4 \
+-	$(top_srcdir)/m4/malloca.m4 $(top_srcdir)/m4/manywarnings.m4 \
++	$(top_srcdir)/m4/lt~obsolete.m4 \
++	$(top_srcdir)/m4/manywarnings.m4 \
+ 	$(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memmem.m4 \
+ 	$(top_srcdir)/m4/minmax.m4 $(top_srcdir)/m4/mmap-anon.m4 \
+ 	$(top_srcdir)/m4/mode_t.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+@@ -248,7 +248,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
+ 	$(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/po.m4 \
+ 	$(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \
+ 	$(top_srcdir)/m4/pthread_rwlock_rdlock.m4 \
+-	$(top_srcdir)/m4/read-file.m4 $(top_srcdir)/m4/realloc.m4 \
++	$(top_srcdir)/m4/read-file.m4 \
+ 	$(top_srcdir)/m4/secure_getenv.m4 $(top_srcdir)/m4/size_max.m4 \
+ 	$(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/socketlib.m4 \
+ 	$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sockpfaf.m4 \
+-- 
+2.37.0
+
diff --git a/contrib/src/gnutls/SHA512SUMS b/contrib/src/gnutls/SHA512SUMS
index 3ca889fd5f..583aa6960b 100644
--- a/contrib/src/gnutls/SHA512SUMS
+++ b/contrib/src/gnutls/SHA512SUMS
@@ -1 +1 @@
-0fe801f03676c3bd970387f94578c8be7ba6030904989e7d21dffdc726209bab44c8096fbcb6d51fed2de239537bd00df2338ee9c8d984a1c386826b91062a95  gnutls-3.7.1.tar.xz
\ No newline at end of file
+f872339df80ec31d292821ff00eaafbe50e0bd4cdbb86e21e4f78541cd0a26d843596d5e69c91de4db8ce7d027fc639ae6462b57d89fb116162ae63c5a97486a  gnutls-3.7.6.tar.xz
diff --git a/contrib/src/gnutls/downgrade-gettext-requirement.patch b/contrib/src/gnutls/downgrade-gettext-requirement.patch
deleted file mode 100644
index 1db92c85a5..0000000000
--- a/contrib/src/gnutls/downgrade-gettext-requirement.patch
+++ /dev/null
@@ -1,5 +0,0 @@
---- gnutls-3.4.6/configure.ac	2015-10-07 04:21:22.000000000 -0400
-+++ gnutls-3.4.6/configure.ac	2015-11-04 16:17:24.705546543 -0500
-@@ -200 +200 @@
--AM_GNU_GETTEXT_VERSION([0.19])
-+AM_GNU_GETTEXT_VERSION([0.18.3])
diff --git a/contrib/src/gnutls/gnutls-3.6.7-win32-compat.patch b/contrib/src/gnutls/gnutls-3.6.7-win32-compat.patch
deleted file mode 100644
index e53a5c70c9..0000000000
--- a/contrib/src/gnutls/gnutls-3.6.7-win32-compat.patch
+++ /dev/null
@@ -1,420 +0,0 @@
-From e30e6957e0f7fa707e15fbcd8077023ec6c793d8 Mon Sep 17 00:00:00 2001
-From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
-Date: Fri, 21 Jun 2019 15:53:30 -0400
-Subject: [PATCH] gnutls-3.6.7-win32-compat
-
----
- gl/c-strcase.h                    |  10 +-
- gl/read-file.c                    | 379 +++++++++++++++++++-------------------
- lib/nettle/gost/nettle-internal.h |   9 +-
- lib/nettle/gost/streebog.c        |   4 +-
- lib/nettle/pk.c                   |  10 +-
- lib/priority.c                    |   8 -
- lib/system/fastopen.c             |   9 +-
- lib/x509/common.c                 |  16 +-
- lib/x509/hostname-verify.c        |  12 +-
- lib/x509/ip.c                     |   5 +-
- 10 files changed, 230 insertions(+), 232 deletions(-)
-
-diff --git a/gl/c-strcase.h b/gl/c-strcase.h
-index b67c9b5..64d794f 100644
---- a/gl/c-strcase.h
-+++ b/gl/c-strcase.h
-@@ -20,7 +20,6 @@
- 
- #include <stddef.h>
- 
--
- /* The functions defined in this file assume the "C" locale and a character
-    set without diacritics (ASCII-US or EBCDIC-US or something like that).
-    Even if the "C" locale on a particular system is an extension of the ASCII
-@@ -30,12 +29,11 @@
-    string; the other one can also contain non-ASCII characters (but then
-    the comparison result will be nonzero).  */
- 
--
- #ifdef __cplusplus
- extern "C" {
- #endif
- 
--
-+#ifndef _MSC_VER
- /* Compare strings S1 and S2, ignoring case, returning less than, equal to or
-    greater than zero if S1 is lexicographically less than, equal to or greater
-    than S2.  */
-@@ -46,11 +44,13 @@ extern int c_strcasecmp (const char *s1, const char *s2) _GL_ATTRIBUTE_PURE;
-    lexicographically less than, equal to or greater than S2.  */
- extern int c_strncasecmp (const char *s1, const char *s2, size_t n)
-   _GL_ATTRIBUTE_PURE;
--
-+#else
-+#define c_strcasecmp strcasecmp
-+#define c_strncasecmp strncasecmp
-+#endif
- 
- #ifdef __cplusplus
- }
- #endif
- 
--
- #endif /* C_STRCASE_H */
-diff --git a/lib/nettle/gost/nettle-internal.h b/lib/nettle/gost/nettle-internal.h
-index 2e06ebb..f40430e 100644
---- a/lib/nettle/gost/nettle-internal.h
-+++ b/lib/nettle/gost/nettle-internal.h
-@@ -42,11 +42,16 @@
- 
- #if HAVE_ALLOCA
- # define TMP_DECL(name, type, max) type *name
--# define TMP_ALLOC(name, size) (name = alloca(sizeof (*name) * (size)))
-+# ifndef _MSC_VER
-+#  define TMP_ALLOC(name, size) (name = alloca(sizeof (*name) * (size)))
-+# else
-+#  include <malloc.h>
-+#  define TMP_ALLOC(name, size) (name = _alloca(sizeof (*name) * (size)))
-+# endif
- #else /* !HAVE_ALLOCA */
- # define TMP_DECL(name, type, max) type name[max]
- # define TMP_ALLOC(name, size) \
-   do { if ((size) > (sizeof(name) / sizeof(name[0]))) abort(); } while (0)
--#endif 
-+#endif
- 
- #endif /* NETTLE_INTERNAL_H_INCLUDED */
-diff --git a/lib/nettle/gost/streebog.c b/lib/nettle/gost/streebog.c
-index 12c5c08..bc5c1ee 100644
---- a/lib/nettle/gost/streebog.c
-+++ b/lib/nettle/gost/streebog.c
-@@ -45,7 +45,6 @@
- #include <nettle/macros.h>
- #include "nettle-write.h"
- 
--
- /* Pre-computed results of multiplication of bytes on A and reordered with
-    Pi[]. */
- static const uint64_t streebog_table[8][256] =
-@@ -1195,7 +1194,6 @@ static inline void g (uint64_t *h, uint64_t *m, uint64_t *N)
-   h[7] ^= T[7] ^ K[7] ^ m[7];
- }
- 
--
- static void
- streebog512_compress (struct streebog512_ctx *ctx, const uint8_t *input, size_t count)
- {
-@@ -1230,7 +1228,7 @@ streebog512_compress (struct streebog512_ctx *ctx, const uint8_t *input, size_t
- static void
- streebog_final (struct streebog512_ctx *ctx)
- {
--  uint64_t Z[8] = {};
-+  uint64_t Z[8] = {0};
-   unsigned int i;
- 
-   /* PAD. It does not count towards message length */
-diff --git a/lib/nettle/pk.c b/lib/nettle/pk.c
-index 9aa5166..ee90af6 100644
---- a/lib/nettle/pk.c
-+++ b/lib/nettle/pk.c
-@@ -99,7 +99,7 @@ ecc_point_zclear (struct ecc_point *p)
- 	zeroize_key(p->p, ecc_size_a(p->ecc)*sizeof(mp_limb_t));
- 	ecc_point_clear(p);
- }
-- 
-+
- static void
- _dsa_params_get(const gnutls_pk_params_st * pk_params,
- 		struct dsa_params *pub)
-@@ -276,7 +276,6 @@ static int _wrap_nettle_pk_derive(gnutls_pk_algorithm_t algo,
- 			goto dh_cleanup;
- 		}
- 
--
- 		ret = _gnutls_mpi_powm(k, f, x, prime);
- 		if (ret < 0) {
- 			gnutls_assert();
-@@ -562,7 +561,7 @@ _wrap_nettle_pk_decrypt2(gnutls_pk_algorithm_t algo,
- 		return gnutls_assert_val (GNUTLS_E_MPI_SCAN_FAILED);
- 	}
- 
--	ret = rsa_sec_decrypt(&pub, &priv, NULL, rnd_nonce_func,
-+	ret = nettle_rsa_sec_decrypt(&pub, &priv, NULL, rnd_nonce_func,
- 			     plaintext_size, plaintext, TOMPZ(c));
- 	/* after this point, any conditional on failure that cause differences
- 	 * in execution may create a timing or cache access pattern side
-@@ -1464,7 +1463,6 @@ int _gnutls_ecdh_generate_key(gnutls_ecc_curve_t curve,
- 			      gnutls_datum_t *x, gnutls_datum_t *y,
- 			      gnutls_datum_t *k);
- 
--
- int _gnutls_dh_generate_key(gnutls_dh_params_t dh_params,
- 			    gnutls_datum_t *priv_key, gnutls_datum_t *pub_key)
- {
-@@ -1669,7 +1667,6 @@ int _gnutls_ecdh_compute_key(gnutls_ecc_curve_t curve,
- 		goto cleanup;
- 	}
- 
--
- 	priv.params_nr = 3;
- 	priv.algo = GNUTLS_PK_ECDSA;
- 	priv.curve = curve;
-@@ -2170,7 +2167,6 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo,
- 				goto ecc_fail;
- 			}
- 
--
- 			ret = _gnutls_mpi_init_multi(&params->params[GOST_X], &params->params[GOST_Y],
- 					&params->params[GOST_K], NULL);
- 			if (ret < 0) {
-@@ -2258,7 +2254,6 @@ wrap_nettle_pk_generate_keys(gnutls_pk_algorithm_t algo,
- 	return ret;
- }
- 
--
- static int
- wrap_nettle_pk_verify_priv_params(gnutls_pk_algorithm_t algo,
- 			     const gnutls_pk_params_st * params)
-@@ -2703,7 +2698,6 @@ fail:
- 	return ret;
- }
- 
--
- static int
- wrap_nettle_pk_fixup(gnutls_pk_algorithm_t algo,
- 		     gnutls_direction_t direction,
-diff --git a/lib/priority.c b/lib/priority.c
-index 900bbf7..5f158f3 100644
---- a/lib/priority.c
-+++ b/lib/priority.c
-@@ -337,7 +337,6 @@ static const int cipher_priority_normal_fips[] = {
- 	0
- };
- 
--
- static const int _cipher_priority_suiteb128[] = {
- 	GNUTLS_CIPHER_AES_256_GCM,
- 	GNUTLS_CIPHER_AES_128_GCM,
-@@ -351,7 +350,6 @@ static const int _cipher_priority_suiteb192[] = {
- };
- static const int* cipher_priority_suiteb192 = _cipher_priority_suiteb192;
- 
--
- static const int _cipher_priority_secure128[] = {
- 	GNUTLS_CIPHER_AES_256_GCM,
- 	GNUTLS_CIPHER_CHACHA20_POLY1305,
-@@ -365,7 +363,6 @@ static const int _cipher_priority_secure128[] = {
- };
- static const int *cipher_priority_secure128 = _cipher_priority_secure128;
- 
--
- static const int _cipher_priority_secure192[] = {
- 	GNUTLS_CIPHER_AES_256_GCM,
- 	GNUTLS_CIPHER_CHACHA20_POLY1305,
-@@ -566,7 +563,6 @@ static void prio_add(priority_st * priority_list, unsigned int algo)
- 	return;
- }
- 
--
- /**
-  * gnutls_priority_set:
-  * @session: is a #gnutls_session_t type.
-@@ -630,7 +626,6 @@ gnutls_priority_set(gnutls_session_t session, gnutls_priority_t priority)
- 	return 0;
- }
- 
--
- #define LEVEL_NONE "NONE"
- #define LEVEL_NORMAL "NORMAL"
- #define LEVEL_PFS "PFS"
-@@ -993,7 +988,6 @@ static char *system_priority_buf = NULL;
- static size_t system_priority_buf_size = 0;
- static time_t system_priority_last_mod = 0;
- 
--
- static void _gnutls_update_system_priorities(void)
- {
- #ifdef HAVE_FMEMOPEN
-@@ -1293,7 +1287,6 @@ static int set_ciphersuite_list(gnutls_priority_t priority_cache)
- 	if ((!tlsmax || !tlsmin) && (!dtlsmax || !dtlsmin))
- 		return gnutls_assert_val(GNUTLS_E_NO_PRIORITIES_WERE_SET);
- 
--
- 	priority_cache->have_psk = have_psk;
- 
- 	/* if we are have TLS1.3+ do not enable any key exchange algorithms,
-@@ -1923,7 +1916,6 @@ void gnutls_priority_deinit(gnutls_priority_t priority_cache)
- 	}
- }
- 
--
- /**
-  * gnutls_priority_set_direct:
-  * @session: is a #gnutls_session_t type.
-diff --git a/lib/system/fastopen.c b/lib/system/fastopen.c
-index 8d8409e..0118d77 100644
---- a/lib/system/fastopen.c
-+++ b/lib/system/fastopen.c
-@@ -26,7 +26,11 @@
- #include "errors.h"
- 
- #include <sys/socket.h>
--#include <netinet/in.h> /* IPPROTO_TCP */
-+#ifndef _WIN32
-+# include <netinet/in.h> /* IPPROTO_TCP */
-+#else
-+# include <winsock.h> /* IPPROTO_TCP */
-+#endif
- #include <errno.h>
- #include <sys/stat.h>
- #include <sys/types.h>
-@@ -191,7 +195,7 @@ tfo_read(gnutls_transport_ptr_t ptr, void *data, size_t data_size)
-  * Note: This function overrides all the transport callback functions.
-  * If this is undesirable, TCP Fast Open must be implemented on the user
-  * callback functions without calling this function. When using
-- * this function, transport callbacks must not be set, and 
-+ * this function, transport callbacks must not be set, and
-  * gnutls_transport_set_ptr() or gnutls_transport_set_int()
-  * must not be called.
-  *
-@@ -238,4 +242,3 @@ gnutls_transport_set_fastopen(gnutls_session_t session,
- 	gnutls_transport_set_vec_push_function(session, tfo_writev);
- #endif
- }
--
-diff --git a/lib/x509/common.c b/lib/x509/common.c
-index 4669d37..39986ea 100644
---- a/lib/x509/common.c
-+++ b/lib/x509/common.c
-@@ -274,7 +274,7 @@ const char *gnutls_x509_dn_oid_name(const char *oid, unsigned int flags)
- 	unsigned len = strlen(oid);
- 
- 	do {
--		if ((_oid2str[i].oid_size == len) && 
-+		if ((_oid2str[i].oid_size == len) &&
- 			strcmp(_oid2str[i].oid, oid) == 0 && _oid2str[i].ldap_desc != NULL)
- 			return _oid2str[i].ldap_desc;
- 		i++;
-@@ -428,7 +428,6 @@ decode_complex_string(const struct oid_to_string *oentry, void *value,
- 	return 0;
- }
- 
--
- /* This function will convert an attribute value, specified by the OID,
-  * to a string. The result will be a null terminated string.
-  *
-@@ -684,7 +683,6 @@ _gnutls_x509_decode_string(unsigned int etype,
- 	return ret;
- }
- 
--
- /* Reads a value from an ASN1 tree, and puts the output
-  * in an allocated variable in the given datum.
-  *
-@@ -972,7 +970,7 @@ _gnutls_x509_der_encode_and_copy(ASN1_TYPE src, const char *src_name,
- 	return 0;
- }
- 
--/* Writes the value of the datum in the given ASN1_TYPE. 
-+/* Writes the value of the datum in the given ASN1_TYPE.
-  */
- int
- _gnutls_x509_write_value(ASN1_TYPE c, const char *root,
-@@ -991,7 +989,7 @@ _gnutls_x509_write_value(ASN1_TYPE c, const char *root,
- 	return 0;
- }
- 
--/* Writes the value of the datum in the given ASN1_TYPE as a string. 
-+/* Writes the value of the datum in the given ASN1_TYPE as a string.
-  */
- int
- _gnutls_x509_write_string(ASN1_TYPE c, const char *root,
-@@ -1034,8 +1032,6 @@ _asnstr_append_name(char *name, size_t name_size, const char *part1,
- 				part2 + 1 /* remove initial dot */ );
- }
- 
--
--
- /* Encodes and copies the private key parameters into a
-  * subjectPublicKeyInfo structure.
-  *
-@@ -1182,7 +1178,7 @@ _gnutls_x509_get_pk_algorithm(ASN1_TYPE src, const char *src_name,
- 		return algo;
- 	}
- 
--	/* Now read the parameters' bits 
-+	/* Now read the parameters' bits
- 	 */
- 	if (lcurve != GNUTLS_ECC_CURVE_INVALID) { /* curve present */
- 		bits[0] = gnutls_ecc_curve_get_size(lcurve)*8;
-@@ -1307,7 +1303,6 @@ _gnutls_x509_get_signature_algorithm(ASN1_TYPE src, const char *src_name)
- 	return result;
- }
- 
--
- /* Reads the DER signature from the certificate and allocates space and
-  * returns them into signed_data.
-  */
-@@ -1321,7 +1316,7 @@ _gnutls_x509_get_signature(ASN1_TYPE src, const char *src_name,
- 	signature->data = NULL;
- 	signature->size = 0;
- 
--	/* Read the signature 
-+	/* Read the signature
- 	 */
- 	len = 0;
- 	result = asn1_read_value(src, src_name, NULL, &len);
-@@ -1445,7 +1440,6 @@ static int write_complex_string(ASN1_TYPE asn_struct, const char *where,
- 	return result;
- }
- 
--
- /* This will encode and write the AttributeTypeAndValue field.
-  * 'multi' must be (0) if writing an AttributeTypeAndValue, and 1 if Attribute.
-  * In all cases only one value is written.
-diff --git a/lib/x509/hostname-verify.c b/lib/x509/hostname-verify.c
-index 967d9b8..d3b6968 100644
---- a/lib/x509/hostname-verify.c
-+++ b/lib/x509/hostname-verify.c
-@@ -26,8 +26,14 @@
- #include <common.h>
- #include "errors.h"
- #include <system.h>
--#include <netinet/in.h>
--#include <arpa/inet.h>
-+#ifndef _WIN32
-+# include <netinet/in.h> /* IPPROTO_TCP */
-+#else
-+# include <winsock.h> /* IPPROTO_TCP */
-+#endif
-+#ifdef HAVE_INET_NTOP
-+# include <arpa/inet.h>
-+#endif
- 
- /**
-  * gnutls_x509_crt_check_hostname:
-@@ -100,7 +106,7 @@ static int has_embedded_null(const char *str, unsigned size)
-  * @ip_size: the number of bytes in ip (4 or 16)
-  * @flags: should be zero
-  *
-- * This function will check if the IP allowed IP addresses in 
-+ * This function will check if the IP allowed IP addresses in
-  * the certificate's subject alternative name match the provided
-  * IP address.
-  *
-diff --git a/lib/x509/ip.c b/lib/x509/ip.c
-index c4cb008..b359d27 100644
---- a/lib/x509/ip.c
-+++ b/lib/x509/ip.c
-@@ -24,7 +24,10 @@
- #include "gnutls_int.h"
- #include "ip.h"
- #include <gnutls/x509.h>
--#include <arpa/inet.h>
-+
-+#ifdef HAVE_INET_NTOP
-+# include <arpa/inet.h>
-+#endif
- 
- /*-
-  * _gnutls_mask_to_prefix:
--- 
-2.7.4
-
diff --git a/contrib/src/gnutls/gnutls-3.6.7-win32-vs-support.patch b/contrib/src/gnutls/gnutls-3.6.7-win32-vs-support.patch
deleted file mode 100644
index 537ffbd204..0000000000
--- a/contrib/src/gnutls/gnutls-3.6.7-win32-vs-support.patch
+++ /dev/null
@@ -1,56920 +0,0 @@
-From 14ea482521f9fcba7ade4837a67eba45ab08d3fb Mon Sep 17 00:00:00 2001
-From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
-Date: Fri, 21 Jun 2019 16:10:36 -0400
-Subject: [PATCH] gnutls-3.6.7-win32-vs-support
-
----
- SMP/.gitattributes                                 |    4 +
- SMP/.gitignore                                     |   28 +
- SMP/appveyor.yml                                   |  142 +
- SMP/byteswap.h                                     |   36 +
- SMP/config.h                                       | 2273 ++++++
- SMP/dirent.h                                       |  757 ++
- SMP/gnutls/gnutls.h                                | 3329 ++++++++
- SMP/lib/accelerated/x86/coff/aes-ssse3-x86.asm     |  643 ++
- SMP/lib/accelerated/x86/coff/aes-ssse3-x86_64.asm  | 1137 +++
- SMP/lib/accelerated/x86/coff/aesni-gcm-x86_64.asm  |  986 +++
- SMP/lib/accelerated/x86/coff/aesni-x86.asm         | 3204 ++++++++
- SMP/lib/accelerated/x86/coff/aesni-x86_64.asm      | 4994 ++++++++++++
- SMP/lib/accelerated/x86/coff/cpuid-x86.asm         |   54 +
- SMP/lib/accelerated/x86/coff/cpuid-x86_64.asm      |   53 +
- SMP/lib/accelerated/x86/coff/e_padlock-x86.asm     | 1015 +++
- SMP/lib/accelerated/x86/coff/e_padlock-x86_64.asm  | 1171 +++
- SMP/lib/accelerated/x86/coff/ghash-x86.asm         |  692 ++
- SMP/lib/accelerated/x86/coff/ghash-x86_64.asm      | 2018 +++++
- SMP/lib/accelerated/x86/coff/sha1-ssse3-x86.asm    | 1386 ++++
- SMP/lib/accelerated/x86/coff/sha1-ssse3-x86_64.asm | 5714 ++++++++++++++
- SMP/lib/accelerated/x86/coff/sha256-avx-x86_64.asm | 8209 ++++++++++++++++++++
- SMP/lib/accelerated/x86/coff/sha256-ssse3-x86.asm  | 3356 ++++++++
- .../accelerated/x86/coff/sha256-ssse3-x86_64.asm   | 5634 ++++++++++++++
- SMP/lib/priority_options.h                         |  179 +
- SMP/lib/unistring/unictype.h                       | 1060 +++
- SMP/lib/unistring/unictype/categ_byname.h          |  622 ++
- SMP/lib/unistring/uninorm.h                        |  258 +
- SMP/lib/unistring/unistr.h                         |  756 ++
- SMP/lib/unistring/unitypes.h                       |   56 +
- SMP/lib/unused-parameter.h                         |   36 +
- SMP/libgnutls.def                                  | 1056 +++
- SMP/libgnutls.sln                                  |   57 +
- SMP/libgnutls.vcxproj                              | 2811 +++++++
- SMP/libgnutls.vcxproj.filters                      | 1804 +++++
- SMP/libgnutls_deps.sln                             |  195 +
- SMP/project_get_dependencies.bat                   |  161 +
- SMP/readme.txt                                     |   16 +
- SMP/stdio.h                                        |  147 +
- SMP/string.h                                       |  130 +
- SMP/sys/socket.h                                   |   35 +
- SMP/sys/stat.h                                     |  103 +
- SMP/sys/time.h                                     |   72 +
- SMP/test.bat                                       |    6 +
- SMP/time.h                                         |   47 +
- SMP/unistd.h                                       |   78 +
- SMP/version.h                                      |    5 +
- 46 files changed, 56525 insertions(+)
- create mode 100644 SMP/.gitattributes
- create mode 100644 SMP/.gitignore
- create mode 100644 SMP/appveyor.yml
- create mode 100644 SMP/byteswap.h
- create mode 100644 SMP/config.h
- create mode 100644 SMP/dirent.h
- create mode 100644 SMP/gnutls/gnutls.h
- create mode 100644 SMP/lib/accelerated/x86/coff/aes-ssse3-x86.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/aes-ssse3-x86_64.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/aesni-gcm-x86_64.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/aesni-x86.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/aesni-x86_64.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/cpuid-x86.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/cpuid-x86_64.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/e_padlock-x86.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/e_padlock-x86_64.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/ghash-x86.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/ghash-x86_64.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/sha1-ssse3-x86.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/sha1-ssse3-x86_64.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/sha256-avx-x86_64.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/sha256-ssse3-x86.asm
- create mode 100644 SMP/lib/accelerated/x86/coff/sha256-ssse3-x86_64.asm
- create mode 100644 SMP/lib/priority_options.h
- create mode 100644 SMP/lib/unistring/unictype.h
- create mode 100644 SMP/lib/unistring/unictype/categ_byname.h
- create mode 100644 SMP/lib/unistring/uninorm.h
- create mode 100644 SMP/lib/unistring/unistr.h
- create mode 100644 SMP/lib/unistring/unitypes.h
- create mode 100644 SMP/lib/unused-parameter.h
- create mode 100644 SMP/libgnutls.def
- create mode 100644 SMP/libgnutls.sln
- create mode 100644 SMP/libgnutls.vcxproj
- create mode 100644 SMP/libgnutls.vcxproj.filters
- create mode 100644 SMP/libgnutls_deps.sln
- create mode 100644 SMP/project_get_dependencies.bat
- create mode 100644 SMP/readme.txt
- create mode 100644 SMP/stdio.h
- create mode 100644 SMP/string.h
- create mode 100644 SMP/sys/socket.h
- create mode 100644 SMP/sys/stat.h
- create mode 100644 SMP/sys/time.h
- create mode 100644 SMP/test.bat
- create mode 100644 SMP/time.h
- create mode 100644 SMP/unistd.h
- create mode 100644 SMP/version.h
-
-diff --git a/SMP/.gitattributes b/SMP/.gitattributes
-new file mode 100644
-index 0000000..c25326f
---- /dev/null
-+++ b/SMP/.gitattributes
-@@ -0,0 +1,4 @@
-+*.sln              text=auto
-+*.vcxproj          text=auto
-+*.vcxproj.filters  text=auto
-+*.bat              text=auto
-\ No newline at end of file
-diff --git a/SMP/.gitignore b/SMP/.gitignore
-new file mode 100644
-index 0000000..46bcf6a
---- /dev/null
-+++ b/SMP/.gitignore
-@@ -0,0 +1,28 @@
-+*.obj
-+*.lib
-+*.log
-+*.tlog
-+*.pdb
-+*.ildb
-+*.pgd
-+*.pch
-+*.manifest
-+*.suo
-+*.user
-+*.sdf
-+*.opensdf
-+[Oo]bj/
-+*.exe
-+!*.h
-+!*.c
-+!*.asm
-+!*.def
-+!*.rc
-+*.sbr
-+*.iobj
-+*.ipdb
-+.vs/
-+*.VC.db
-+*.opendb
-+*.ilk
-+[Bb]in/
-\ No newline at end of file
-diff --git a/SMP/appveyor.yml b/SMP/appveyor.yml
-new file mode 100644
-index 0000000..b86a17c
---- /dev/null
-+++ b/SMP/appveyor.yml
-@@ -0,0 +1,142 @@
-+version: '{build}'
-+
-+branches:
-+  only:
-+  - master
-+skip_non_tags: true
-+clone_depth: 10
-+
-+configuration: Release+ReleaseDLLStaticDeps
-+
-+platform: x86+x64
-+
-+environment:
-+  GITHUBTOKEN:
-+    secure: aiTcAD/YitqgwuiBdC3ImXiUlHfIIDD7ayjCs3Y3aAO5vEm1gA7flCZpUZ60a5am
-+  matrix:
-+  - MSVC_VER: 12
-+    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
-+  - MSVC_VER: 14
-+    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
-+  - MSVC_VER: 15
-+    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
-+
-+install:
-+# Install GitLink
-+- cmd: nuget install gitlink -Version 2.4.0
-+- cmd: for /f "tokens=*" %%f in ('dir /s /b gitlink.exe') do copy /b %%f .\
-+
-+before_build:
-+# Backup platform so it is not affected by vcvars
-+- cmd: SET PLATFORMBACK=%PLATFORM%
-+
-+# Setup msvc environment for required compiler version (specified by MSVC_VER)
-+- ps: >-
-+    if ($env:MSVC_VER -eq 15) {
-+        $env:VCVARS="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat"
-+    } else {
-+        $env:VSCOMNTOOLS=(Get-Content ("env:VS" + "$env:MSVC_VER" + "0COMNTOOLS"))
-+        $env:VCVARS="%VSCOMNTOOLS%\..\..\VC\vcvarsall.bat"
-+    }
-+
-+- cmd: call "%VCVARS%" amd64
-+
-+# Detect latest available windows sdk version
-+- ps: >-
-+    if ($env:MSVC_VER -eq 12) {
-+        $env:WindowsSDKVersion=8.1
-+    } else {
-+        $env:WindowsSDKVersion=$env:WindowsSDKVersion.TrimEnd('\')
-+    }
-+
-+# Reset platform
-+- cmd: SET PLATFORM=%PLATFORMBACK%
-+
-+# Create build project to compile all configurations and platforms at once
-+- ps: >-
-+    $script = @'
-+
-+    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="GitLink" ToolsVersion="APPVEYOR_MSVC_VER.0">
-+      <ItemGroup>
-+        <ConfigurationList Condition="'@(ConfigurationList)' == '' and $(Configuration) != ''" Include="$(Configuration.Split('+'))" />
-+        <ConfigurationList Condition="'@(ConfigurationList)' == ''" Include="Release" />
-+        <PlatformList Condition="'@(PlatformList)' == '' and $(Platform) != ''" Include="$(Platform.Split('+'))" />
-+        <PlatformList Condition="'@(PlatformList)' == ''" Include="x64;x86" />
-+      </ItemGroup>
-+      <Target Name="List" Outputs="%(PlatformList.Identity)">
-+        <PropertyGroup>
-+          <CurrentPlatform>%(PlatformList.Identity)</CurrentPlatform>
-+        </PropertyGroup>
-+        <ItemGroup>
-+          <ProjectToBuild Include="SMP/APPVEYOR_PROJECT_NAME.sln">
-+            <Properties>Configuration=%(ConfigurationList.Identity);Platform=$(CurrentPlatform);OutDir=$(MSBuildThisFileDirectory)build_out\;WindowsTargetPlatformVersion=SDK_VER</Properties>
-+          </ProjectToBuild>
-+        </ItemGroup>
-+      </Target>
-+      <Target Name="Build" DependsOnTargets="List">
-+        <MSBuild Projects="@(ProjectToBuild)" BuildInParallel="true" />
-+      </Target>
-+      <Target Name="GitLink" DependsOnTargets="Build" Outputs="%(PlatformList.Identity)">
-+        <PropertyGroup>
-+          <CurrentPlatform>%(PlatformList.Identity)</CurrentPlatform>
-+        </PropertyGroup>
-+        <Exec Command="GitLink . -f SMP/APPVEYOR_PROJECT_NAME.sln -c %(ConfigurationList.Identity) -p $(CurrentPlatform) -d $(MSBuildThisFileDirectory)build_out\lib\$(CurrentPlatform) -u https://github.com/APPVEYOR_REPO_NAME.git -s APPVEYOR_REPO_COMMIT -errorsaswarnings"/>
-+      </Target>
-+    </Project>
-+
-+    '@
-+
-+
-+    $script = $script -replace "APPVEYOR_PROJECT_NAME", "$env:APPVEYOR_PROJECT_NAME"
-+
-+    $script = $script -replace "APPVEYOR_REPO_NAME", "$env:APPVEYOR_REPO_NAME"
-+
-+    $script = $script -replace "APPVEYOR_REPO_COMMIT", "$env:APPVEYOR_REPO_COMMIT"
-+
-+    $script = $script -replace "APPVEYOR_MSVC_VER", "$env:MSVC_VER"
-+
-+    $script = $script -replace "SDK_VER", "$env:WindowsSDKVersion"
-+
-+    $script | Out-File build.vcxproj
-+
-+# Set Targets path so that gitlink works correctly
-+- ps: $env:MSBUILDDIR=((Get-Command msbuild.exe).Path | Split-Path -parent)
-+- ps: >-
-+    if ($env:MSVC_VER -eq 15) {
-+        $env:VCTargetsPath="$env:MSBUILDDIR\..\..\..\Common7\IDE\VC\VCTargets"
-+    } else {
-+        $env:VCTargetsPath="$env:MSBUILDDIR\..\..\..\Microsoft.Cpp\v4.0\V${env:MSVC_VER}0"
-+    }
-+
-+# Download and install yasm integration
-+- ps: (New-Object Net.WebClient).DownloadFile('https://github.com/ShiftMediaProject/VSYASM/releases/download/0.1/VSYASM.zip', "$pwd\yasm.zip")
-+- ps: Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory("$pwd\yasm.zip", "$pwd\TempYASMUnpack")
-+- cmd: call ".\TempYASMUnpack\install_script.bat"
-+# Additional yasm location in order to fix gitlink error
-+- ps: if ($env:MSVC_VER -ne 15) { Copy-Item -Force "TempYASMUnpack\*.*" "$env:VCTargetsPath\..\BuildCustomizations" }
-+
-+# Use project supplied script to download all required dependency libraries
-+- cmd: call "%APPVEYOR_BUILD_FOLDER%\SMP\project_get_dependencies.bat"
-+
-+build:
-+  project: build.vcxproj
-+  parallel: true
-+  verbosity: minimal
-+
-+after_build:
-+# Copy licenses for dependencies
-+- cmd: copy /y %APPVEYOR_BUILD_FOLDER%\..\prebuilt\licenses\*.* %APPVEYOR_BUILD_FOLDER%\build_out\licenses\
-+
-+artifacts:
-+- path: build_out
-+  name: $(APPVEYOR_PROJECT_NAME)_$(APPVEYOR_REPO_TAG_NAME)_msvc$(MSVC_VER)
-+  type: zip
-+
-+deploy:
-+- provider: GitHub
-+  tag: $(APPVEYOR_REPO_TAG_NAME)
-+  description: Pre-built static and shared libraries in 32b and 64b for $(APPVEYOR_PROJECT_NAME) $(APPVEYOR_REPO_TAG_NAME)
-+  auth_token:
-+    secure: aiTcAD/YitqgwuiBdC3ImXiUlHfIIDD7ayjCs3Y3aAO5vEm1gA7flCZpUZ60a5am
-+  artifact: $(APPVEYOR_PROJECT_NAME)_$(APPVEYOR_REPO_TAG_NAME)_msvc$(MSVC_VER)
-+  force_update: true
-\ No newline at end of file
-diff --git a/SMP/byteswap.h b/SMP/byteswap.h
-new file mode 100644
-index 0000000..db77db3
---- /dev/null
-+++ b/SMP/byteswap.h
-@@ -0,0 +1,36 @@
-+/*
-+ * MSVC byteswap.h compatibility header.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+#ifndef SMP_BYTESWAP_H
-+#define SMP_BYTESWAP_H
-+
-+#ifndef _MSC_VER
-+#   include_next <byteswap.h>
-+#else
-+
-+#define bswap_16 _byteswap_ushort
-+#define bswap_32 _byteswap_ulong
-+#define bswap_64 _byteswap_uint64
-+
-+#endif /* _MSC_VER */
-+
-+#endif /* SMP_BYTESWAP_H */
-diff --git a/SMP/config.h b/SMP/config.h
-new file mode 100644
-index 0000000..911fa49
---- /dev/null
-+++ b/SMP/config.h
-@@ -0,0 +1,2273 @@
-+
-+/* Define if building universal (internal helper macro) */
-+/* #undef AC_APPLE_UNIVERSAL_BUILD */
-+
-+/* Define to the number of bits in type 'ptrdiff_t'. */
-+/* #undef BITSIZEOF_PTRDIFF_T */
-+
-+/* Define to the number of bits in type 'sig_atomic_t'. */
-+/* #undef BITSIZEOF_SIG_ATOMIC_T */
-+
-+/* Define to the number of bits in type 'size_t'. */
-+/* #undef BITSIZEOF_SIZE_T */
-+
-+/* Define to the number of bits in type 'wchar_t'. */
-+/* #undef BITSIZEOF_WCHAR_T */
-+
-+/* Define to the number of bits in type 'wint_t'. */
-+/* #undef BITSIZEOF_WINT_T */
-+
-+/* C99 macros are supported */
-+#define C99_MACROS 1
-+
-+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-+   systems. This function is required for `alloca.c' support on those systems.
-+   */
-+/* #undef CRAY_STACKSEG_END */
-+
-+/* Define to 1 if using `alloca.c'. */
-+/* #undef C_ALLOCA */
-+
-+/* Define as the bit index in the word where to find bit 0 of the exponent of
-+   'double'. */
-+#define DBL_EXPBIT0_BIT 20
-+
-+/* Define as the word index where to find the exponent of 'double'. */
-+#define DBL_EXPBIT0_WORD 1
-+
-+/* use the given certificate blacklist file */
-+/* #undef DEFAULT_BLACKLIST_FILE */
-+
-+/* use the given CRL file */
-+/* #undef DEFAULT_CRL_FILE */
-+
-+/* The default priority string */
-+#define DEFAULT_PRIORITY_STRING "NORMAL"
-+
-+/* use the given directory as default trust store */
-+/* #undef DEFAULT_TRUST_STORE_DIR */
-+
-+/* use the given file default trust store */
-+/* #undef DEFAULT_TRUST_STORE_FILE */
-+
-+/* use the given pkcs11 uri as default trust store */
-+/* #undef DEFAULT_TRUST_STORE_PKCS11 */
-+
-+/* Define to 1 if // is a file system root distinct from /. */
-+/* #undef DOUBLE_SLASH_IS_DISTINCT_ROOT */
-+
-+/* enable ALPN support */
-+#define ENABLE_ALPN 1
-+
-+/* enable anonymous authentication */
-+#define ENABLE_ANON 1
-+
-+/* Enable cryptodev support */
-+/* #undef ENABLE_CRYPTODEV */
-+
-+/* enable DHE */
-+#define ENABLE_DHE 1
-+
-+/* enable DTLS-SRTP support */
-+/* #undef ENABLE_DTLS_SRTP */
-+
-+/* enable DHE */
-+#define ENABLE_ECDHE 1
-+
-+/* Enable FIPS140-2 mode */
-+/* #undef ENABLE_FIPS140 */
-+
-+/* enable GOST */
-+#define ENABLE_GOST 1
-+
-+/* enable heartbeat support */
-+#define ENABLE_HEARTBEAT 1
-+
-+/* nls support in libopts */
-+/* #undef ENABLE_NLS */
-+
-+/* Enable all curves */
-+#define ENABLE_NON_SUITEB_CURVES 1
-+
-+/* enable OCSP support */
-+#define ENABLE_OCSP 1
-+
-+/* use openpgp authentication */
-+#define ENABLE_OPENPGP 1
-+
-+/* Enable padlock acceleration */
-+#define ENABLE_PADLOCK 1
-+
-+/* Build PKCS#11 support */
-+/* #undef ENABLE_PKCS11 */
-+
-+/* enable PSK authentication */
-+#define ENABLE_PSK 1
-+
-+/* Self checks are included in the library */
-+/* #undef ENABLE_SELF_CHECKS */
-+
-+/* enable session tickets support */
-+#define ENABLE_SESSION_TICKETS 1
-+
-+/* enable SRP authentication */
-+#define ENABLE_SRP 1
-+
-+/* enable SSL2.0 support for client hello */
-+#define ENABLE_SSL2 1
-+
-+/* enable SSL3.0 support */
-+#define ENABLE_SSL3 1
-+
-+/* The FIPS140-2 integrity key */
-+/* #undef FIPS_KEY */
-+
-+/* Define to nothing if C supports flexible array members, and to 1 if it does
-+   not. That way, with a declaration like 'struct s { int n; double
-+   d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99
-+   compilers. When computing the size of such an object, don't use 'sizeof
-+   (struct s)' as it overestimates the size. Use 'offsetof (struct s, d)'
-+   instead. Don't use 'offsetof (struct s, d[0])', as this doesn't work with
-+   MSVC and with C++ compilers. */
-+#define FLEXIBLE_ARRAY_MEMBER /**/
-+
-+/* fopen(3) accepts a 'b' in the mode flag */
-+/* #undef FOPEN_BINARY_FLAG */
-+
-+/* fopen(3) accepts a 't' in the mode flag */
-+/* #undef FOPEN_TEXT_FLAG */
-+
-+/* Define to 1 if the system's ftello function has the Solaris bug. */
-+/* #undef FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE */
-+
-+/* Define to 1 if ungetc is broken when used on arbitrary bytes. */
-+/* #undef FUNC_UNGETC_BROKEN */
-+
-+/* Define if gettimeofday clobbers the localtime buffer. */
-+/* #undef GETTIMEOFDAY_CLOBBERS_LOCALTIME */
-+
-+/* Define this to 'void' or 'struct timezone' to match the system's
-+   declaration of the second argument to gettimeofday. */
-+#define GETTIMEOFDAY_TIMEZONE struct timezone
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module fscanf shall be considered present. */
-+#define GNULIB_FSCANF 1
-+
-+/* Define to 1 if printf and friends should be labeled with attribute
-+   "__gnu_printf__" instead of "__printf__" */
-+/* #undef GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU */
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module scanf shall be considered present. */
-+#define GNULIB_SCANF 1
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module snprintf shall be considered present. */
-+#define GNULIB_SNPRINTF 1
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module strerror shall be considered present. */
-+#define GNULIB_STRERROR 1
-+
-+/* Define to 1 when the gnulib module accept should be tested. */
-+#define GNULIB_TEST_ACCEPT 1
-+
-+/* Define to 1 when the gnulib module bind should be tested. */
-+#define GNULIB_TEST_BIND 1
-+
-+/* Define to 1 when the gnulib module close should be tested. */
-+#define GNULIB_TEST_CLOSE 1
-+
-+/* Define to 1 when the gnulib module connect should be tested. */
-+#define GNULIB_TEST_CONNECT 1
-+
-+/* Define to 1 when the gnulib module dup2 should be tested. */
-+#define GNULIB_TEST_DUP2 1
-+
-+/* Define to 1 when the gnulib module environ should be tested. */
-+#define GNULIB_TEST_ENVIRON 1
-+
-+/* Define to 1 when the gnulib module fdopen should be tested. */
-+#define GNULIB_TEST_FDOPEN 1
-+
-+/* Define to 1 when the gnulib module fseek should be tested. */
-+#define GNULIB_TEST_FSEEK 1
-+
-+/* Define to 1 when the gnulib module fseeko should be tested. */
-+#define GNULIB_TEST_FSEEKO 1
-+
-+/* Define to 1 when the gnulib module fstat should be tested. */
-+#define GNULIB_TEST_FSTAT 1
-+
-+/* Define to 1 when the gnulib module ftell should be tested. */
-+#define GNULIB_TEST_FTELL 1
-+
-+/* Define to 1 when the gnulib module ftello should be tested. */
-+#define GNULIB_TEST_FTELLO 1
-+
-+/* Define to 1 when the gnulib module getaddrinfo should be tested. */
-+#define GNULIB_TEST_GETADDRINFO 1
-+
-+/* Define to 1 when the gnulib module getdelim should be tested. */
-+#define GNULIB_TEST_GETDELIM 1
-+
-+/* Define to 1 when the gnulib module getline should be tested. */
-+#define GNULIB_TEST_GETLINE 1
-+
-+/* Define to 1 when the gnulib module getpagesize should be tested. */
-+#define GNULIB_TEST_GETPAGESIZE 1
-+
-+/* Define to 1 when the gnulib module getpeername should be tested. */
-+#define GNULIB_TEST_GETPEERNAME 1
-+
-+/* Define to 1 when the gnulib module gettimeofday should be tested. */
-+#define GNULIB_TEST_GETTIMEOFDAY 1
-+
-+/* Define to 1 when the gnulib module listen should be tested. */
-+#define GNULIB_TEST_LISTEN 1
-+
-+/* Define to 1 when the gnulib module lseek should be tested. */
-+#define GNULIB_TEST_LSEEK 1
-+
-+/* Define to 1 when the gnulib module malloc-posix should be tested. */
-+#define GNULIB_TEST_MALLOC_POSIX 1
-+
-+/* Define to 1 when the gnulib module memchr should be tested. */
-+#define GNULIB_TEST_MEMCHR 1
-+
-+/* Define to 1 when the gnulib module memmem should be tested. */
-+#define GNULIB_TEST_MEMMEM 1
-+
-+/* Define to 1 when the gnulib module mktime should be tested. */
-+#define GNULIB_TEST_MKTIME 1
-+
-+/* Define to 1 when the gnulib module realloc-posix should be tested. */
-+#define GNULIB_TEST_REALLOC_POSIX 1
-+
-+/* Define to 1 when the gnulib module recv should be tested. */
-+#define GNULIB_TEST_RECV 1
-+
-+/* Define to 1 when the gnulib module recvfrom should be tested. */
-+#define GNULIB_TEST_RECVFROM 1
-+
-+/* Define to 1 when the gnulib module secure_getenv should be tested. */
-+#define GNULIB_TEST_SECURE_GETENV 1
-+
-+/* Define to 1 when the gnulib module select should be tested. */
-+#define GNULIB_TEST_SELECT 1
-+
-+/* Define to 1 when the gnulib module send should be tested. */
-+#define GNULIB_TEST_SEND 1
-+
-+/* Define to 1 when the gnulib module sendto should be tested. */
-+#define GNULIB_TEST_SENDTO 1
-+
-+/* Define to 1 when the gnulib module setenv should be tested. */
-+#define GNULIB_TEST_SETENV 1
-+
-+/* Define to 1 when the gnulib module setsockopt should be tested. */
-+#define GNULIB_TEST_SETSOCKOPT 1
-+
-+/* Define to 1 when the gnulib module shutdown should be tested. */
-+#define GNULIB_TEST_SHUTDOWN 1
-+
-+/* Define to 1 when the gnulib module snprintf should be tested. */
-+#define GNULIB_TEST_SNPRINTF 1
-+
-+/* Define to 1 when the gnulib module socket should be tested. */
-+#define GNULIB_TEST_SOCKET 1
-+
-+/* Define to 1 when the gnulib module strdup should be tested. */
-+#define GNULIB_TEST_STRDUP 1
-+
-+/* Define to 1 when the gnulib module strerror should be tested. */
-+#define GNULIB_TEST_STRERROR 1
-+
-+/* Define to 1 when the gnulib module strndup should be tested. */
-+#define GNULIB_TEST_STRNDUP 1
-+
-+/* Define to 1 when the gnulib module strnlen should be tested. */
-+#define GNULIB_TEST_STRNLEN 1
-+
-+/* Define to 1 when the gnulib module strtok_r should be tested. */
-+#define GNULIB_TEST_STRTOK_R 1
-+
-+/* Define to 1 when the gnulib module strverscmp should be tested. */
-+#define GNULIB_TEST_STRVERSCMP 1
-+
-+/* Define to 1 when the gnulib module timegm should be tested. */
-+#define GNULIB_TEST_TIMEGM 1
-+
-+/* Define to 1 when the gnulib module time_r should be tested. */
-+#define GNULIB_TEST_TIME_R 1
-+
-+/* Define to 1 when the gnulib module time_rz should be tested. */
-+#define GNULIB_TEST_TIME_RZ 1
-+
-+/* Define to 1 when the gnulib module uninorm/u16-normalize should be tested.
-+   */
-+#define GNULIB_TEST_UNINORM_U16_NORMALIZE 1
-+
-+/* Define to 1 when the gnulib module uninorm/u32-normalize should be tested.
-+   */
-+#define GNULIB_TEST_UNINORM_U32_NORMALIZE 1
-+
-+/* Define to 1 when the gnulib module uninorm/u8-normalize should be tested.
-+   */
-+#define GNULIB_TEST_UNINORM_U8_NORMALIZE 1
-+
-+/* Define to 1 when the gnulib module unsetenv should be tested. */
-+#define GNULIB_TEST_UNSETENV 1
-+
-+/* Define to 1 when the gnulib module vasprintf should be tested. */
-+#define GNULIB_TEST_VASPRINTF 1
-+
-+/* Define to 1 when the gnulib module vsnprintf should be tested. */
-+#define GNULIB_TEST_VSNPRINTF 1
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module unistr/u16-mbtoucr shall be considered present.
-+   */
-+#define GNULIB_UNISTR_U16_MBTOUCR 1
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module unistr/u16-mbtouc-unsafe shall be considered
-+   present. */
-+#define GNULIB_UNISTR_U16_MBTOUC_UNSAFE 1
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module unistr/u16-uctomb shall be considered present. */
-+#define GNULIB_UNISTR_U16_UCTOMB 1
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module unistr/u32-mbtouc-unsafe shall be considered
-+   present. */
-+#define GNULIB_UNISTR_U32_MBTOUC_UNSAFE 1
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module unistr/u32-uctomb shall be considered present. */
-+#define GNULIB_UNISTR_U32_UCTOMB 1
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module unistr/u8-mbtoucr shall be considered present. */
-+#define GNULIB_UNISTR_U8_MBTOUCR 1
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module unistr/u8-mbtouc-unsafe shall be considered
-+   present. */
-+#define GNULIB_UNISTR_U8_MBTOUC_UNSAFE 1
-+
-+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
-+   whether the gnulib module unistr/u8-uctomb shall be considered present. */
-+#define GNULIB_UNISTR_U8_UCTOMB 1
-+
-+/* Make sure we don't use old features in code. */
-+#define GNUTLS_COMPAT_H 1
-+
-+/* We allow temporarily usage of deprecated functions - until they are
-+   removed. */
-+#define GNUTLS_INTERNAL_BUILD 1
-+
-+/* Additional cast to bring void* to a type castable to int. */
-+#define GNUTLS_POINTER_TO_INT_CAST (long)
-+
-+/* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
-+   may be supplied by this distribution. */
-+#define HAVE_ALLOCA 1
-+
-+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-+   */
-+/* #undef HAVE_ALLOCA_H */
-+
-+/* Define to 1 if you have the <arpa/inet.h> header file. */
-+/* #undef HAVE_ARPA_INET_H */
-+
-+/* Define to 1 if you have the <bp-sym.h> header file. */
-+/* #undef HAVE_BP_SYM_H */
-+
-+/* Define to 1 if you have the <byteswap.h> header file. */
-+/* #undef HAVE_BYTESWAP_H */
-+
-+/* Define to 1 if you have the `canonicalize_file_name' function. */
-+/* #undef HAVE_CANONICALIZE_FILE_NAME */
-+
-+/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the
-+   CoreFoundation framework. */
-+/* #undef HAVE_CFLOCALECOPYCURRENT */
-+
-+/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in
-+   the CoreFoundation framework. */
-+/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */
-+
-+/* Define to 1 if you have the `chmod' function. */
-+/* #undef HAVE_CHMOD */
-+
-+/* Define to 1 if you have the `clock_gettime' function. */
-+/* #undef HAVE_CLOCK_GETTIME */
-+
-+/* Define to 1 if you have the `clock_settime' function. */
-+/* #undef HAVE_CLOCK_SETTIME */
-+
-+/* Define if you have compound literals. */
-+#define HAVE_COMPOUND_LITERALS 1
-+
-+/* Define to 1 if you have the <cpuid.h> header file. */
-+#define HAVE_CPUID_H 1
-+
-+/* Define to 1 if you have the `daemon' function. */
-+/* #undef HAVE_DAEMON */
-+
-+/* Enable the DANE library */
-+/* #undef HAVE_DANE */
-+
-+/* Define if the GNU dcgettext() function is already present or preinstalled.
-+   */
-+/* #undef HAVE_DCGETTEXT */
-+
-+/* Define to 1 if you have the declaration of `alarm', and to 0 if you don't.
-+   */
-+#define HAVE_DECL_ALARM 0
-+
-+/* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
-+   you don't. */
-+#define HAVE_DECL_FFLUSH_UNLOCKED 0
-+
-+/* Define to 1 if you have the declaration of `flockfile', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_FLOCKFILE 0
-+
-+/* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
-+   you don't. */
-+#define HAVE_DECL_FPUTS_UNLOCKED 0
-+
-+/* Define to 1 if you have the declaration of `freeaddrinfo', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_FREEADDRINFO 1
-+
-+/* Define to 1 if you have the declaration of `fseeko', and to 0 if you don't.
-+   */
-+#define HAVE_DECL_FSEEKO 1
-+
-+/* Define to 1 if you have the declaration of `ftello', and to 0 if you don't.
-+   */
-+#define HAVE_DECL_FTELLO 1
-+
-+/* Define to 1 if you have the declaration of `funlockfile', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_FUNLOCKFILE 0
-+
-+/* Define to 1 if you have the declaration of `gai_strerror', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_GAI_STRERROR 1
-+
-+/* Define to 1 if you have the declaration of `gai_strerrorA', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_GAI_STRERRORA 0
-+
-+/* Define to 1 if you have the declaration of `getaddrinfo', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_GETADDRINFO 1
-+
-+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_GETC_UNLOCKED 0
-+
-+/* Define to 1 if you have the declaration of `getdelim', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_GETDELIM 0
-+
-+/* Define to 1 if you have the declaration of `getline', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_GETLINE 0
-+
-+/* Define to 1 if you have the declaration of `getnameinfo', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_GETNAMEINFO 1
-+
-+/* Define to 1 if you have the declaration of `getpass', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_GETPASS 0
-+
-+/* Define to 1 if you have the declaration of `inet_ntop', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_INET_NTOP 0
-+
-+/* Define to 1 if you have the declaration of `inet_pton', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_INET_PTON 0
-+
-+/* Define to 1 if you have the declaration of `localtime_r', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_LOCALTIME_R 0
-+
-+/* Define to 1 if you have the declaration of `memmem', and to 0 if you don't.
-+   */
-+#define HAVE_DECL_MEMMEM 0
-+
-+/* Define to 1 if you have the declaration of `program_invocation_name', and
-+   to 0 if you don't. */
-+#define HAVE_DECL_PROGRAM_INVOCATION_NAME 0
-+
-+/* Define to 1 if you have the declaration of `program_invocation_short_name',
-+   and to 0 if you don't. */
-+#define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME 0
-+
-+/* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_PUTC_UNLOCKED 0
-+
-+/* Define to 1 if you have the declaration of `setenv', and to 0 if you don't.
-+   */
-+#define HAVE_DECL_SETENV 0
-+
-+/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_SNPRINTF 1
-+
-+/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't.
-+   */
-+#define HAVE_DECL_STRDUP 1
-+
-+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_STRERROR_R 0
-+
-+/* Define to 1 if you have the declaration of `strncasecmp', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_STRNCASECMP 1
-+
-+/* Define to 1 if you have the declaration of `strndup', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_STRNDUP 0
-+
-+/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_STRNLEN 1
-+
-+/* Define to 1 if you have the declaration of `strtok_r', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_STRTOK_R 0
-+
-+/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
-+   */
-+#define HAVE_DECL_TZNAME 1
-+
-+/* Define to 1 if you have the declaration of `unsetenv', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_UNSETENV 0
-+
-+/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
-+   don't. */
-+#define HAVE_DECL_VSNPRINTF 1
-+
-+/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
-+   don't. */
-+#define HAVE_DECL__SNPRINTF 1
-+
-+/* Define to 1 if you have the declaration of `__argv', and to 0 if you don't.
-+   */
-+#define HAVE_DECL___ARGV 0
-+
-+/* Define to 1 if you have the declaration of `__fsetlocking', and to 0 if you
-+   don't. */
-+#define HAVE_DECL___FSETLOCKING 0
-+
-+/* Define this if /dev/zero is readable device */
-+/* #undef HAVE_DEV_ZERO */
-+
-+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
-+   */
-+/* #undef HAVE_DIRENT_H */
-+
-+/* Define to 1 if you have the <dlfcn.h> header file. */
-+/* #undef HAVE_DLFCN_H */
-+
-+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-+/* #undef HAVE_DOPRNT */
-+
-+/* Define to 1 if you have the 'dup2' function. */
-+#define HAVE_DUP2 1
-+
-+/* Define if you have the declaration of environ. */
-+#define HAVE_ENVIRON_DECL 1
-+
-+/* Define to 1 if you have the <errno.h> header file. */
-+/* #undef HAVE_ERRNO_H */
-+
-+/* Define to 1 if you have the `fchmod' function. */
-+/* #undef HAVE_FCHMOD */
-+
-+/* Define to 1 if you have the <fcntl.h> header file. */
-+/* #undef HAVE_FCNTL_H */
-+
-+/* Define to 1 if you have the <features.h> header file. */
-+/* #undef HAVE_FEATURES_H */
-+
-+/* Define to 1 if you have the `flockfile' function. */
-+/* #undef HAVE_FLOCKFILE */
-+
-+/* Define to 1 if you have the `fmemopen' function. */
-+/* #undef HAVE_FMEMOPEN */
-+
-+/* Define to 1 if you have the `fork' function. */
-+/* #undef HAVE_FORK */
-+
-+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
-+#define HAVE_FSEEKO 1
-+
-+/* Define to 1 if you have the `fstat' function. */
-+/* #undef HAVE_FSTAT */
-+
-+/* Define to 1 if you have the `funlockfile' function. */
-+/* #undef HAVE_FUNLOCKFILE */
-+
-+/* Define to 1 if you have the `getdelim' function. */
-+/* #undef HAVE_GETDELIM */
-+
-+/* Define to 1 if you have the `getegid' function. */
-+/* #undef HAVE_GETEGID */
-+
-+/* Enable the OpenBSD getentropy function */
-+/* #undef HAVE_GETENTROPY */
-+
-+/* Define to 1 if you have the `geteuid' function. */
-+/* #undef HAVE_GETEUID */
-+
-+/* Define to 1 if you have the `getexecname' function. */
-+/* #undef HAVE_GETEXECNAME */
-+
-+/* Define to 1 if you have the `getgid' function. */
-+/* #undef HAVE_GETGID */
-+
-+/* Define to 1 if you have the `gethostbyname' function. */
-+/* #undef HAVE_GETHOSTBYNAME */
-+
-+/* Define to 1 if you have the `getpagesize' function. */
-+#define HAVE_GETPAGESIZE 1
-+
-+/* Define to 1 if you have the `getpass' function. */
-+/* #undef HAVE_GETPASS */
-+
-+/* Define to 1 if you have the `getpid' function. */
-+/* #undef HAVE_GETPID */
-+
-+/* Define to 1 if you have the `getprogname' function. */
-+/* #undef HAVE_GETPROGNAME */
-+
-+/* Define to 1 if you have the `getpwuid_r' function. */
-+/* #undef HAVE_GETPWUID_R */
-+
-+/* Define to 1 if you have the `getrusage' function. */
-+/* #undef HAVE_GETRUSAGE */
-+
-+/* Define to 1 if you have the `getservbyname' function. */
-+/* #undef HAVE_GETSERVBYNAME */
-+
-+/* Define if the GNU gettext() function is already present or preinstalled. */
-+/* #undef HAVE_GETTEXT */
-+
-+/* Define to 1 if you have the `gettimeofday' function. */
-+#define HAVE_GETTIMEOFDAY 1
-+
-+/* Define to 1 if you have the `getuid' function. */
-+/* #undef HAVE_GETUID */
-+
-+/* Define if you have the iconv() function and it works. */
-+/* #undef HAVE_ICONV */
-+
-+/* Define to 1 if you have the `inet_ntop' function. */
-+/* #undef HAVE_INET_NTOP */
-+
-+/* Define to 1 if you have the `inet_pton' function. */
-+/* #undef HAVE_INET_PTON */
-+
-+/* Define to 1 if the compiler supports one of the keywords 'inline',
-+   '__inline__', '__inline' and effectively inlines functions marked as such.
-+   */
-+#define HAVE_INLINE 1
-+
-+/* Define to 1 if the system has the type `int16_t'. */
-+#define HAVE_INT16_T 1
-+
-+/* Define to 1 if the system has the type `int32_t'. */
-+#define HAVE_INT32_T 1
-+
-+/* Define to 1 if the system has the type `int8_t'. */
-+#define HAVE_INT8_T 1
-+
-+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
-+#define HAVE_INTMAX_T 1
-+
-+/* Define to 1 if the system has the type `intptr_t'. */
-+#define HAVE_INTPTR_T 1
-+
-+/* Define to 1 if you have the <inttypes.h> header file. */
-+#define HAVE_INTTYPES_H 1
-+
-+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
-+   declares uintmax_t. */
-+#define HAVE_INTTYPES_H_WITH_UINTMAX 1
-+
-+/* Define to 1 if <sys/socket.h> defines AF_INET. */
-+#define HAVE_IPV4 1
-+
-+/* Define to 1 if <sys/socket.h> defines AF_INET6. */
-+#define HAVE_IPV6 1
-+
-+/* Define to 1 if you have the `issetugid' function. */
-+/* #undef HAVE_ISSETUGID */
-+
-+/* Define if you have the libcrypto library. */
-+/* #undef HAVE_LIBCRYPTO */
-+
-+/* Define if you have the libdl library. */
-+/* #undef HAVE_LIBDL */
-+
-+/* Define to 1 if you have the `gen' library (-lgen). */
-+/* #undef HAVE_LIBGEN */
-+
-+/* Define to 1 if you have the <libgen.h> header file. */
-+/* #undef HAVE_LIBGEN_H */
-+
-+/* Build IDNA support */
-+/* #undef HAVE_LIBIDN */
-+
-+/* Define if IDNA 2008 support is enabled. */
-+/* #undef HAVE_LIBIDN2 */
-+
-+/* Define to 1 if you have the `intl' library (-lintl). */
-+/* #undef HAVE_LIBINTL */
-+
-+/* Define to 1 if you have the <libintl.h> header file. */
-+/* #undef HAVE_LIBINTL_H */
-+
-+/* nettle is enabled */
-+#define HAVE_LIBNETTLE 1
-+
-+/* Define if you have the libnsl library. */
-+/* #undef HAVE_LIBNSL */
-+
-+/* Define if you have the libpthread library. */
-+/* #undef HAVE_LIBPTHREAD */
-+
-+/* Define if you have the librt library. */
-+/* #undef HAVE_LIBRT */
-+
-+/* Define if you have the libseccomp library. */
-+/* #undef HAVE_LIBSECCOMP */
-+
-+/* Define if you have the libunistring library. */
-+/* #undef HAVE_LIBUNISTRING */
-+
-+/* Define if you have the libz library. */
-+#define HAVE_LIBZ 1
-+
-+/* Define to 1 if you have the <limits.h> header file. */
-+#define HAVE_LIMITS_H 1
-+
-+/* Enable the Linux getrandom function */
-+/* #undef HAVE_GETRANDOM */
-+
-+/* Define to 1 if you have the `localtime' function. */
-+#define HAVE_LOCALTIME 1
-+
-+/* Define to 1 if you have the `localtime_r' function. */
-+/* #undef HAVE_LOCALTIME_R */
-+
-+/* Define to 1 if the system has the type 'long long int'. */
-+#define HAVE_LONG_LONG_INT 1
-+
-+/* Define if the 'malloc' function is POSIX compliant. */
-+/* #undef HAVE_MALLOC_POSIX */
-+
-+/* Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
-+   config.h and <sys/mman.h>. */
-+/* #undef HAVE_MAP_ANONYMOUS */
-+
-+/* Define to 1 if you have the `mbrtowc' function. */
-+#define HAVE_MBRTOWC 1
-+
-+/* Define to 1 if you have the `memmem' function. */
-+/* #undef HAVE_MEMMEM */
-+
-+/* Define to 1 if you have the <memory.h> header file. */
-+#define HAVE_MEMORY_H 1
-+
-+/* Define to 1 if <limits.h> defines the MIN and MAX macros. */
-+/* #undef HAVE_MINMAX_IN_LIMITS_H */
-+
-+/* Define to 1 if <sys/param.h> defines the MIN and MAX macros. */
-+/* #undef HAVE_MINMAX_IN_SYS_PARAM_H */
-+
-+/* Define to 1 if you have the `mmap' function. */
-+/* #undef HAVE_MMAP */
-+
-+/* Define to 1 if you have the `mprotect' function. */
-+#define HAVE_MPROTECT 1
-+
-+/* Define to 1 on MSVC platforms that have the "invalid parameter handler"
-+   concept. */
-+#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1
-+
-+/* Define to 1 if you have the `nanosleep' function. */
-+/* #undef HAVE_NANOSLEEP */
-+
-+/* Define to 1 if you have the `nanotime' function. */
-+/* #undef HAVE_NANOTIME */
-+
-+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-+/* #undef HAVE_NDIR_H */
-+
-+/* Define to 1 if you have the <netdb.h> header file. */
-+/* #undef HAVE_NETDB_H */
-+
-+/* Define to 1 if you have the <netinet/in.h> header file. */
-+/* #undef HAVE_NETINET_IN_H */
-+
-+/* Define to 1 if you have the <netinet/tcp.h> header file. */
-+/* #undef HAVE_NETINET_TCP_H */
-+
-+/* Define to 1 if you have the <OS.h> header file. */
-+/* #undef HAVE_OS_H */
-+
-+/* Define this if pathfind(3) works */
-+/* #undef HAVE_PATHFIND */
-+
-+/* Define to 1 if the system has the type `pid_t'. */
-+#define HAVE_PID_T 1
-+
-+/* Define to 1 if you have the `pthread_mutex_lock' function. */
-+/* #undef HAVE_PTHREAD_MUTEX_LOCK */
-+
-+/* Define to 1 if the system has the type `ptrdiff_t'. */
-+#define HAVE_PTRDIFF_T 1
-+
-+/* Define to 1 if accept is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_ACCEPT */
-+
-+/* Define to 1 if accept4 is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_ACCEPT4 */
-+
-+/* Define to 1 if atoll is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_ATOLL 1
-+
-+/* Define to 1 if bind is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_BIND */
-+
-+/* Define to 1 if btowc is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_BTOWC 1
-+
-+/* Define to 1 if canonicalize_file_name is declared even after undefining
-+   macros. */
-+/* #undef HAVE_RAW_DECL_CANONICALIZE_FILE_NAME */
-+
-+/* Define to 1 if chdir is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_CHDIR 1
-+
-+/* Define to 1 if chown is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_CHOWN */
-+
-+/* Define to 1 if connect is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_CONNECT */
-+
-+/* Define to 1 if dprintf is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_DPRINTF */
-+
-+/* Define to 1 if dup is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_DUP 1
-+
-+/* Define to 1 if dup2 is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_DUP2 1
-+
-+/* Define to 1 if dup3 is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_DUP3 */
-+
-+/* Define to 1 if endusershell is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_ENDUSERSHELL */
-+
-+/* Define to 1 if environ is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_ENVIRON */
-+
-+/* Define to 1 if euidaccess is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_EUIDACCESS */
-+
-+/* Define to 1 if faccessat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FACCESSAT */
-+
-+/* Define to 1 if fchdir is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FCHDIR */
-+
-+/* Define to 1 if fchmodat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FCHMODAT */
-+
-+/* Define to 1 if fchownat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FCHOWNAT */
-+
-+/* Define to 1 if fcntl is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FCNTL */
-+
-+/* Define to 1 if fdatasync is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FDATASYNC */
-+
-+/* Define to 1 if ffs is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FFS */
-+
-+/* Define to 1 if ffsl is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FFSL */
-+
-+/* Define to 1 if ffsll is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FFSLL */
-+
-+/* Define to 1 if fpurge is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FPURGE */
-+
-+/* Define to 1 if freeaddrinfo is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FREEADDRINFO */
-+
-+/* Define to 1 if fseeko is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_FSEEKO 1
-+
-+/* Define to 1 if fstat is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_FSTAT 1
-+
-+/* Define to 1 if fstatat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FSTATAT */
-+
-+/* Define to 1 if fsync is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FSYNC */
-+
-+/* Define to 1 if ftello is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_FTELLO 1
-+
-+/* Define to 1 if ftruncate is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_FTRUNCATE 1
-+
-+/* Define to 1 if futimens is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_FUTIMENS */
-+
-+/* Define to 1 if gai_strerror is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GAI_STRERROR */
-+
-+/* Define to 1 if getaddrinfo is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETADDRINFO */
-+
-+/* Define to 1 if getcwd is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_GETCWD 1
-+
-+/* Define to 1 if getdelim is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETDELIM */
-+
-+/* Define to 1 if getdomainname is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETDOMAINNAME */
-+
-+/* Define to 1 if getdtablesize is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETDTABLESIZE */
-+
-+/* Define to 1 if getgroups is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETGROUPS */
-+
-+/* Define to 1 if gethostname is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETHOSTNAME */
-+
-+/* Define to 1 if getline is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETLINE */
-+
-+/* Define to 1 if getloadavg is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETLOADAVG */
-+
-+/* Define to 1 if getlogin is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETLOGIN */
-+
-+/* Define to 1 if getlogin_r is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETLOGIN_R */
-+
-+/* Define to 1 if getnameinfo is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETNAMEINFO */
-+
-+/* Define to 1 if getpagesize is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETPAGESIZE */
-+
-+/* Define to 1 if getpeername is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETPEERNAME */
-+
-+/* Define to 1 if gets is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_GETS 1
-+
-+/* Define to 1 if getsockname is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETSOCKNAME */
-+
-+/* Define to 1 if getsockopt is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETSOCKOPT */
-+
-+/* Define to 1 if getsubopt is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETSUBOPT */
-+
-+/* Define to 1 if gettimeofday is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_GETTIMEOFDAY 1
-+
-+/* Define to 1 if getusershell is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GETUSERSHELL */
-+
-+/* Define to 1 if grantpt is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GRANTPT */
-+
-+/* Define to 1 if group_member is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_GROUP_MEMBER */
-+
-+/* Define to 1 if imaxabs is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_IMAXABS 1
-+
-+/* Define to 1 if imaxdiv is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_IMAXDIV 1
-+
-+/* Define to 1 if inet_ntop is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_INET_NTOP */
-+
-+/* Define to 1 if inet_pton is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_INET_PTON */
-+
-+/* Define to 1 if initstate is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_INITSTATE */
-+
-+/* Define to 1 if initstate_r is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_INITSTATE_R */
-+
-+/* Define to 1 if isatty is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_ISATTY 1
-+
-+/* Define to 1 if isblank is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_ISBLANK 1
-+
-+/* Define to 1 if lchmod is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_LCHMOD */
-+
-+/* Define to 1 if lchown is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_LCHOWN */
-+
-+/* Define to 1 if link is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_LINK */
-+
-+/* Define to 1 if linkat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_LINKAT */
-+
-+/* Define to 1 if listen is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_LISTEN */
-+
-+/* Define to 1 if lseek is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_LSEEK 1
-+
-+/* Define to 1 if lstat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_LSTAT */
-+
-+/* Define to 1 if mbrlen is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_MBRLEN 1
-+
-+/* Define to 1 if mbrtowc is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_MBRTOWC 1
-+
-+/* Define to 1 if mbsinit is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_MBSINIT 1
-+
-+/* Define to 1 if mbsnrtowcs is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MBSNRTOWCS */
-+
-+/* Define to 1 if mbsrtowcs is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_MBSRTOWCS 1
-+
-+/* Define to 1 if memmem is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MEMMEM */
-+
-+/* Define to 1 if mempcpy is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_MEMPCPY 1
-+
-+/* Define to 1 if memrchr is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MEMRCHR */
-+
-+/* Define to 1 if mkdirat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MKDIRAT */
-+
-+/* Define to 1 if mkdtemp is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MKDTEMP */
-+
-+/* Define to 1 if mkfifo is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MKFIFO */
-+
-+/* Define to 1 if mkfifoat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MKFIFOAT */
-+
-+/* Define to 1 if mknod is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MKNOD */
-+
-+/* Define to 1 if mknodat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MKNODAT */
-+
-+/* Define to 1 if mkostemp is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MKOSTEMP */
-+
-+/* Define to 1 if mkostemps is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MKOSTEMPS */
-+
-+/* Define to 1 if mkstemp is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MKSTEMP */
-+
-+/* Define to 1 if mkstemps is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_MKSTEMPS */
-+
-+/* Define to 1 if openat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_OPENAT */
-+
-+/* Define to 1 if pclose is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_PCLOSE */
-+
-+/* Define to 1 if pipe is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_PIPE */
-+
-+/* Define to 1 if pipe2 is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_PIPE2 */
-+
-+/* Define to 1 if popen is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_POPEN */
-+
-+/* Define to 1 if posix_openpt is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_POSIX_OPENPT */
-+
-+/* Define to 1 if pread is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_PREAD */
-+
-+/* Define to 1 if pselect is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_PSELECT */
-+
-+/* Define to 1 if pthread_sigmask is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_PTHREAD_SIGMASK */
-+
-+/* Define to 1 if ptsname is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_PTSNAME */
-+
-+/* Define to 1 if ptsname_r is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_PTSNAME_R */
-+
-+/* Define to 1 if pwrite is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_PWRITE */
-+
-+/* Define to 1 if random is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_RANDOM */
-+
-+/* Define to 1 if random_r is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_RANDOM_R */
-+
-+/* Define to 1 if rawmemchr is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_RAWMEMCHR */
-+
-+/* Define to 1 if readlink is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_READLINK */
-+
-+/* Define to 1 if readlinkat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_READLINKAT */
-+
-+/* Define to 1 if realpath is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_REALPATH */
-+
-+/* Define to 1 if recv is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_RECV */
-+
-+/* Define to 1 if recvfrom is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_RECVFROM */
-+
-+/* Define to 1 if renameat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_RENAMEAT */
-+
-+/* Define to 1 if rmdir is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_RMDIR 1
-+
-+/* Define to 1 if rpmatch is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_RPMATCH */
-+
-+/* Define to 1 if secure_getenv is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SECURE_GETENV */
-+
-+/* Define to 1 if select is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SELECT */
-+
-+/* Define to 1 if send is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SEND */
-+
-+/* Define to 1 if sendto is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SENDTO */
-+
-+/* Define to 1 if setenv is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SETENV */
-+
-+/* Define to 1 if sethostname is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SETHOSTNAME */
-+
-+/* Define to 1 if setsockopt is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SETSOCKOPT */
-+
-+/* Define to 1 if setstate is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SETSTATE */
-+
-+/* Define to 1 if setstate_r is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SETSTATE_R */
-+
-+/* Define to 1 if setusershell is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SETUSERSHELL */
-+
-+/* Define to 1 if shutdown is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SHUTDOWN */
-+
-+/* Define to 1 if sigaction is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SIGACTION */
-+
-+/* Define to 1 if sigaddset is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SIGADDSET */
-+
-+/* Define to 1 if sigdelset is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SIGDELSET */
-+
-+/* Define to 1 if sigemptyset is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SIGEMPTYSET */
-+
-+/* Define to 1 if sigfillset is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SIGFILLSET */
-+
-+/* Define to 1 if sigismember is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SIGISMEMBER */
-+
-+/* Define to 1 if sigpending is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SIGPENDING */
-+
-+/* Define to 1 if sigprocmask is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SIGPROCMASK */
-+
-+/* Define to 1 if sleep is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_SLEEP 1
-+
-+/* Define to 1 if snprintf is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_SNPRINTF 1
-+
-+/* Define to 1 if socket is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SOCKET */
-+
-+/* Define to 1 if srandom is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SRANDOM */
-+
-+/* Define to 1 if srandom_r is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SRANDOM_R */
-+
-+/* Define to 1 if stat is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STAT 1
-+
-+/* Define to 1 if stpcpy is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_STPCPY */
-+
-+/* Define to 1 if stpncpy is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_STPNCPY */
-+
-+/* Define to 1 if strcasecmp is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRCASECMP 1
-+
-+/* Define to 1 if strcasestr is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_STRCASESTR */
-+
-+/* Define to 1 if strchrnul is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_STRCHRNUL */
-+
-+/* Define to 1 if strdup is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRDUP 1
-+
-+/* Define to 1 if strerror_r is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_STRERROR_R */
-+
-+/* Define to 1 if strncasecmp is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRNCASECMP 1
-+
-+/* Define to 1 if strncat is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRNCAT 1
-+
-+/* Define to 1 if strndup is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_STRNDUP */
-+
-+/* Define to 1 if strnlen is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRNLEN 1
-+
-+/* Define to 1 if strpbrk is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRPBRK 1
-+
-+/* Define to 1 if strsep is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_STRSEP */
-+
-+/* Define to 1 if strsignal is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_STRSIGNAL */
-+
-+/* Define to 1 if strtod is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRTOD 1
-+
-+/* Define to 1 if strtoimax is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRTOIMAX 1
-+
-+/* Define to 1 if strtok_r is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_STRTOK_R */
-+
-+/* Define to 1 if strtoll is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRTOLL 1
-+
-+/* Define to 1 if strtoull is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRTOULL 1
-+
-+/* Define to 1 if strtoumax is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_STRTOUMAX 1
-+
-+/* Define to 1 if strverscmp is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_STRVERSCMP */
-+
-+/* Define to 1 if symlink is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SYMLINK */
-+
-+/* Define to 1 if symlinkat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_SYMLINKAT */
-+
-+/* Define to 1 if tmpfile is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_TMPFILE 1
-+
-+/* Define to 1 if ttyname_r is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_TTYNAME_R */
-+
-+/* Define to 1 if unlink is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_UNLINK 1
-+
-+/* Define to 1 if unlinkat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_UNLINKAT */
-+
-+/* Define to 1 if unlockpt is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_UNLOCKPT */
-+
-+/* Define to 1 if unsetenv is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_UNSETENV */
-+
-+/* Define to 1 if usleep is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_USLEEP 1
-+
-+/* Define to 1 if utimensat is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_UTIMENSAT */
-+
-+/* Define to 1 if vdprintf is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_VDPRINTF */
-+
-+/* Define to 1 if vsnprintf is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_VSNPRINTF 1
-+
-+/* Define to 1 if wcpcpy is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_WCPCPY */
-+
-+/* Define to 1 if wcpncpy is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_WCPNCPY */
-+
-+/* Define to 1 if wcrtomb is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCRTOMB 1
-+
-+/* Define to 1 if wcscasecmp is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_WCSCASECMP */
-+
-+/* Define to 1 if wcscat is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSCAT 1
-+
-+/* Define to 1 if wcschr is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSCHR 1
-+
-+/* Define to 1 if wcscmp is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSCMP 1
-+
-+/* Define to 1 if wcscoll is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSCOLL 1
-+
-+/* Define to 1 if wcscpy is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSCPY 1
-+
-+/* Define to 1 if wcscspn is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSCSPN 1
-+
-+/* Define to 1 if wcsdup is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSDUP 1
-+
-+/* Define to 1 if wcslen is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSLEN 1
-+
-+/* Define to 1 if wcsncasecmp is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_WCSNCASECMP */
-+
-+/* Define to 1 if wcsncat is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSNCAT 1
-+
-+/* Define to 1 if wcsncmp is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSNCMP 1
-+
-+/* Define to 1 if wcsncpy is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSNCPY 1
-+
-+/* Define to 1 if wcsnlen is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSNLEN 1
-+
-+/* Define to 1 if wcsnrtombs is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_WCSNRTOMBS */
-+
-+/* Define to 1 if wcspbrk is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSPBRK 1
-+
-+/* Define to 1 if wcsrchr is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSRCHR 1
-+
-+/* Define to 1 if wcsrtombs is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSRTOMBS 1
-+
-+/* Define to 1 if wcsspn is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSSPN 1
-+
-+/* Define to 1 if wcsstr is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSSTR 1
-+
-+/* Define to 1 if wcstok is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSTOK 1
-+
-+/* Define to 1 if wcswidth is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_WCSWIDTH */
-+
-+/* Define to 1 if wcsxfrm is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCSXFRM 1
-+
-+/* Define to 1 if wctob is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WCTOB 1
-+
-+/* Define to 1 if wcwidth is declared even after undefining macros. */
-+/* #undef HAVE_RAW_DECL_WCWIDTH */
-+
-+/* Define to 1 if wmemchr is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WMEMCHR 1
-+
-+/* Define to 1 if wmemcmp is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WMEMCMP 1
-+
-+/* Define to 1 if wmemcpy is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WMEMCPY 1
-+
-+/* Define to 1 if wmemmove is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WMEMMOVE 1
-+
-+/* Define to 1 if wmemset is declared even after undefining macros. */
-+#define HAVE_RAW_DECL_WMEMSET 1
-+
-+/* Define to 1 if _Exit is declared even after undefining macros. */
-+#define HAVE_RAW_DECL__EXIT 1
-+
-+/* Define if the 'realloc' function is POSIX compliant. */
-+/* #undef HAVE_REALLOC_POSIX */
-+
-+/* Define this if we have a functional realpath(3C) */
-+/* #undef HAVE_REALPATH */
-+
-+/* Define to 1 if you have the <runetype.h> header file. */
-+/* #undef HAVE_RUNETYPE_H */
-+
-+/* Define to 1 if the system has the type `sa_family_t'. */
-+/* #undef HAVE_SA_FAMILY_T */
-+
-+/* Define to 1 if you have the `scm_gc_malloc_pointerless' function. */
-+/* #undef HAVE_SCM_GC_MALLOC_POINTERLESS */
-+
-+/* Define to 1 if you have the <search.h> header file. */
-+#define HAVE_SEARCH_H 1
-+
-+/* Define to 1 if you have the `secure_getenv' function. */
-+/* #undef HAVE_SECURE_GETENV */
-+
-+/* Define to 1 if you have the `setdtablesize' function. */
-+/* #undef HAVE_SETDTABLESIZE */
-+
-+/* Define to 1 if you have the `setenv' function. */
-+/* #undef HAVE_SETENV */
-+
-+/* Define to 1 if you have the `setitimer' function. */
-+/* #undef HAVE_SETITIMER */
-+
-+/* Define to 1 if you have the <setjmp.h> header file. */
-+/* #undef HAVE_SETJMP_H */
-+
-+/* Define to 1 if you have the `shutdown' function. */
-+/* #undef HAVE_SHUTDOWN */
-+
-+/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
-+/* #undef HAVE_SIGNED_SIG_ATOMIC_T */
-+
-+/* Define to 1 if 'wchar_t' is a signed integer type. */
-+/* #undef HAVE_SIGNED_WCHAR_T */
-+
-+/* Define to 1 if 'wint_t' is a signed integer type. */
-+/* #undef HAVE_SIGNED_WINT_T */
-+
-+/* Define to 1 if the system has the type `sigset_t'. */
-+/* #undef HAVE_SIGSET_T */
-+
-+/* Define to 1 if the system has the type `size_t'. */
-+#define HAVE_SIZE_T 1
-+
-+/* Define to 1 if you have the `sleep' function. */
-+#define HAVE_SLEEP 1
-+
-+/* Define to 1 if you have the `snprintf' function. */
-+#define HAVE_SNPRINTF 1
-+
-+/* Define if the return value of the snprintf function is the number of of
-+   bytes (excluding the terminating NUL) that would have been produced if the
-+   buffer had been large enough. */
-+#define HAVE_SNPRINTF_RETVAL_C99 1
-+
-+/* Define to 1 if you have the <stdarg.h> header file. */
-+#define HAVE_STDARG_H 1
-+
-+/* Define to 1 if you have the <stdatomic.h> header file. */
-+/* #undef HAVE_STDATOMIC_H */
-+
-+/* Define to 1 if you have the <stdbool.h> header file. */
-+#define HAVE_STDBOOL_H 1
-+
-+/* Define to 1 if you have the <stdint.h> header file. */
-+#define HAVE_STDINT_H 1
-+
-+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
-+   uintmax_t. */
-+#define HAVE_STDINT_H_WITH_UINTMAX 1
-+
-+/* Define to 1 if you have the <stdio_ext.h> header file. */
-+/* #undef HAVE_STDIO_EXT_H */
-+
-+/* Define to 1 if you have the <stdlib.h> header file. */
-+#define HAVE_STDLIB_H 1
-+
-+/* Define to 1 if you have the `strcasecmp' function. */
-+#define HAVE_STRCASECMP 1
-+
-+/* Define to 1 if you have the `strchr' function. */
-+#define HAVE_STRCHR 1
-+
-+/* Define to 1 if you have the `strdup' function. */
-+#define HAVE_STRDUP 1
-+
-+/* Define to 1 if you have the `strerror_r' function. */
-+/* #undef HAVE_STRERROR_R */
-+
-+/* Define this if strftime() works */
-+/* #undef HAVE_STRFTIME */
-+
-+/* Define to 1 if you have the <strings.h> header file. */
-+#define HAVE_STRINGS_H 1
-+
-+/* Define to 1 if you have the <string.h> header file. */
-+#define HAVE_STRING_H 1
-+
-+/* Define to 1 if you have the `strncasecmp' function. */
-+#define HAVE_STRNCASECMP 1
-+
-+/* Define to 1 if you have the `strndup' function. */
-+/* #undef HAVE_STRNDUP */
-+
-+/* Define to 1 if you have the `strnlen' function. */
-+#define HAVE_STRNLEN 1
-+
-+/* Define to 1 if you have the `strrchr' function. */
-+/* #undef HAVE_STRRCHR */
-+
-+/* Define to 1 if you have the `strsignal' function. */
-+/* #undef HAVE_STRSIGNAL */
-+
-+/* Define to 1 if you have the `strtok_r' function. */
-+/* #undef HAVE_STRTOK_R */
-+
-+/* Define to 1 if the system has the type `struct addrinfo'. */
-+#define HAVE_STRUCT_ADDRINFO 1
-+
-+/* Define to 1 if `iov_basea' is a member of `struct iovec'. */
-+/* #undef HAVE_STRUCT_IOVEC_IOV_BASEA */
-+
-+/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */
-+/* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */
-+
-+/* Define to 1 if the system has the type `struct sockaddr_storage'. */
-+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
-+
-+/* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */
-+#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1
-+
-+/* Define to 1 if `tm_zone' is a member of `struct tm'. */
-+/* #undef HAVE_STRUCT_TM_TM_ZONE */
-+
-+/* Define to 1 if you have the `strverscmp' function. */
-+/* #undef HAVE_STRVERSCMP */
-+
-+/* Define to 1 if you have the `symlink' function. */
-+/* #undef HAVE_SYMLINK */
-+
-+/* Define to 1 if you have the <sysexits.h> header file. */
-+/* #undef HAVE_SYSEXITS_H */
-+
-+/* Define to 1 if you have the <sys/bitypes.h> header file. */
-+/* #undef HAVE_SYS_BITYPES_H */
-+
-+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
-+   */
-+/* #undef HAVE_SYS_DIR_H */
-+
-+/* Define to 1 if you have the <sys/inttypes.h> header file. */
-+/* #undef HAVE_SYS_INTTYPES_H */
-+
-+/* Define to 1 if you have the <sys/limits.h> header file. */
-+/* #undef HAVE_SYS_LIMITS_H */
-+
-+/* Define to 1 if you have the <sys/mman.h> header file. */
-+/* #undef HAVE_SYS_MMAN_H */
-+
-+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
-+   */
-+/* #undef HAVE_SYS_NDIR_H */
-+
-+/* Define to 1 if you have the <sys/param.h> header file. */
-+/* #undef HAVE_SYS_PARAM_H */
-+
-+/* Define to 1 if you have the <sys/poll.h> header file. */
-+/* #undef HAVE_SYS_POLL_H */
-+
-+/* Define to 1 if you have the <sys/procset.h> header file. */
-+/* #undef HAVE_SYS_PROCSET_H */
-+
-+/* Define to 1 if you have the <sys/select.h> header file. */
-+/* #undef HAVE_SYS_SELECT_H */
-+
-+/* Define to 1 if you have the <sys/socket.h> header file. */
-+/* #undef HAVE_SYS_SOCKET_H */
-+
-+/* Define to 1 if you have the <sys/stat.h> header file. */
-+#define HAVE_SYS_STAT_H 1
-+
-+/* Define to 1 if you have the <sys/stropts.h> header file. */
-+/* #undef HAVE_SYS_STROPTS_H */
-+
-+/* Define to 1 if you have the <sys/timeb.h> header file. */
-+/* #undef HAVE_SYS_TIMEB_H */
-+
-+/* Define to 1 if you have the <sys/time.h> header file. */
-+#define HAVE_SYS_TIME_H 1
-+
-+/* Define to 1 if you have the <sys/types.h> header file. */
-+#define HAVE_SYS_TYPES_H 1
-+
-+/* Define to 1 if you have the <sys/uio.h> header file. */
-+/* #undef HAVE_SYS_UIO_H */
-+
-+/* Define to 1 if you have the <sys/un.h> header file. */
-+/* #undef HAVE_SYS_UN_H */
-+
-+/* Define to 1 if you have the <sys/wait.h> header file. */
-+/* #undef HAVE_SYS_WAIT_H */
-+
-+/* Define to 1 if you have the `tcgetattr' function. */
-+/* #undef HAVE_TCGETATTR */
-+
-+/* Define to 1 if you have the `tcsetattr' function. */
-+/* #undef HAVE_TCSETATTR */
-+
-+/* Define to 1 if you have the <termios.h> header file. */
-+/* #undef HAVE_TERMIOS_H */
-+
-+/* Define to 1 if you have the `timegm' function. */
-+#define HAVE_TIMEGM 1
-+
-+/* Define to 1 if the system has the type `timezone_t'. */
-+/* #undef HAVE_TIMEZONE_T */
-+
-+/* Define if struct tm has the tm_gmtoff member. */
-+/* #undef HAVE_TM_GMTOFF */
-+
-+/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
-+   `HAVE_STRUCT_TM_TM_ZONE' instead. */
-+/* #undef HAVE_TM_ZONE */
-+
-+/* Enable TPM */
-+/* #undef HAVE_TROUSERS */
-+
-+/* Define to 1 if you have the `tsearch' function. */
-+#define HAVE_TSEARCH 1
-+
-+/* Define to 1 if you don't have `tm_zone' but do have the external array
-+   `tzname'. */
-+#define HAVE_TZNAME 1
-+
-+/* Define to 1 if you have the `tzset' function. */
-+#define HAVE_TZSET 1
-+
-+/* Define to 1 if the system has the type `uint16_t'. */
-+#define HAVE_UINT16_T 1
-+
-+/* Define to 1 if the system has the type `uint32_t'. */
-+#define HAVE_UINT32_T 1
-+
-+/* Define to 1 if the system has the type `uint8_t'. */
-+#define HAVE_UINT8_T 1
-+
-+/* Define to 1 if the system has the type `uintptr_t'. */
-+#define HAVE_UINTPTR_T 1
-+
-+/* Define to 1 if the system has the type `uint_t'. */
-+#define HAVE_UINT_T 1
-+
-+/* Define to 1 if you have the <unistd.h> header file. */
-+#define HAVE_UNISTD_H 1
-+
-+/* Define to 1 if you have the `unsetenv' function. */
-+/* #undef HAVE_UNSETENV */
-+
-+/* Define to 1 if the system has the type 'unsigned long long int'. */
-+#define HAVE_UNSIGNED_LONG_LONG_INT 1
-+
-+/* Define to 1 if you have the <utime.h> header file. */
-+/* #undef HAVE_UTIME_H */
-+
-+/* Define to 1 if you have the <values.h> header file. */
-+/* #undef HAVE_VALUES_H */
-+
-+/* Define to 1 if you have the <varargs.h> header file. */
-+/* #undef HAVE_VARARGS_H */
-+
-+/* Define if you have a global __progname variable */
-+/* #undef HAVE_VAR___PROGNAME */
-+
-+/* Define to 1 if you have the `vasnprintf' function. */
-+/* #undef HAVE_VASNPRINTF */
-+
-+/* Define to 1 if you have the `vasprintf' function. */
-+#define HAVE_VASPRINTF 1
-+
-+/* Have va_copy() */
-+/* #undef HAVE_VA_COPY */
-+
-+/* Define to 1 if you have the `vfork' function. */
-+/* #undef HAVE_VFORK */
-+
-+/* Define to 1 if you have the <vfork.h> header file. */
-+/* #undef HAVE_VFORK_H */
-+
-+/* Define to 1 if you have the `vprintf' function. */
-+/* #undef HAVE_VPRINTF */
-+
-+/* Define to 1 if you have the `vsnprintf' function. */
-+#define HAVE_VSNPRINTF 1
-+
-+/* Define to 1 if you have the <wchar.h> header file. */
-+#define HAVE_WCHAR_H 1
-+
-+/* Define to 1 if the system has the type `wchar_t'. */
-+#define HAVE_WCHAR_T 1
-+
-+/* Define to 1 if you have the `wcrtomb' function. */
-+#define HAVE_WCRTOMB 1
-+
-+/* Define to 1 if you have the `wcslen' function. */
-+#define HAVE_WCSLEN 1
-+
-+/* Define to 1 if you have the `wcsnlen' function. */
-+#define HAVE_WCSNLEN 1
-+
-+/* Define to 1 if you have the <winsock2.h> header file. */
-+#define HAVE_WINSOCK2_H 1
-+
-+/* Define to 1 if the system has the type `wint_t'. */
-+#define HAVE_WINT_T 1
-+
-+/* Define to 1 if `fork' works. */
-+/* #undef HAVE_WORKING_FORK */
-+
-+/* Define to 1 if O_NOATIME works. */
-+#define HAVE_WORKING_O_NOATIME 0
-+
-+/* Define to 1 if O_NOFOLLOW works. */
-+#define HAVE_WORKING_O_NOFOLLOW 0
-+
-+/* Define to 1 if `vfork' works. */
-+/* #undef HAVE_WORKING_VFORK */
-+
-+/* Define to 1 if you have the <ws2tcpip.h> header file. */
-+#define HAVE_WS2TCPIP_H 1
-+
-+/* Define to 1 if the system has the type `_Bool'. */
-+#define HAVE__BOOL 1
-+
-+/* Define to 1 if you have the `_fseeki64' function. */
-+#define HAVE__FSEEKI64 1
-+
-+/* Define to 1 if you have the `_ftelli64' function. */
-+#define HAVE__FTELLI64 1
-+
-+/* Define to 1 if you have the `_ftime' function. */
-+#define HAVE__FTIME 1
-+
-+/* Define to 1 if you have the `_set_invalid_parameter_handler' function. */
-+#define HAVE__SET_INVALID_PARAMETER_HANDLER 1
-+
-+/* Define to 1 if you have the `__fsetlocking' function. */
-+/* #undef HAVE___FSETLOCKING */
-+
-+/* Define to 1 if you have the `__register_atfork' function. */
-+/* #undef HAVE___REGISTER_ATFORK */
-+
-+/* Define to 1 if you have the `__secure_getenv' function. */
-+/* #undef HAVE___SECURE_GETENV */
-+
-+/* Have __va_copy() */
-+/* #undef HAVE___VA_COPY */
-+
-+/* Define to 1 if lseek does not detect pipes. */
-+#define LSEEK_PIPE_BROKEN 1
-+
-+/* Define to the sub-directory where libtool stores uninstalled libraries. */
-+#define LT_OBJDIR ".libs/"
-+
-+/* If malloc(0) is != NULL, define this to 1. Otherwise define this to 0. */
-+#define MALLOC_0_IS_NONNULL 1
-+
-+/* Define to a substitute value for mmap()'s MAP_ANONYMOUS flag. */
-+/* #undef MAP_ANONYMOUS */
-+
-+/* Define this if optional arguments are disallowed */
-+/* #undef NO_OPTIONAL_OPT_ARGS */
-+
-+/* no ssize_t type was found */
-+/* #undef NO_SSIZE_T */
-+
-+/* Name of package */
-+#define PACKAGE "gnutls"
-+
-+/* Define to the address where bug reports for this package should be sent. */
-+#define PACKAGE_BUGREPORT "bugs@gnutls.org"
-+
-+/* Define to the full name of this package. */
-+#define PACKAGE_NAME "GnuTLS"
-+
-+/* Define to the full name and version of this package. */
-+#define PACKAGE_STRING "GnuTLS 3.6.7"
-+
-+/* Define to the one symbol short name of this package. */
-+#define PACKAGE_TARNAME "gnutls"
-+
-+/* Define to the home page for this package. */
-+#define PACKAGE_URL ""
-+
-+/* Define to the version of this package. */
-+#define PACKAGE_VERSION "3.6.7"
-+
-+/* define to a working POSIX compliant shell */
-+#define POSIX_SHELL "/bin/bash"
-+
-+/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
-+/* #undef PRI_MACROS_BROKEN */
-+
-+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
-+   'ptrdiff_t'. */
-+/* #undef PTRDIFF_T_SUFFIX */
-+
-+/* name of regex header file */
-+/* #undef REGEX_HEADER */
-+
-+/* Define to 1 if strerror(0) does not return a message implying success. */
-+/* #undef REPLACE_STRERROR_0 */
-+
-+/* Define if vasnprintf exists but is overridden by gnulib. */
-+/* #undef REPLACE_VASNPRINTF */
-+
-+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
-+   'sig_atomic_t'. */
-+/* #undef SIG_ATOMIC_T_SUFFIX */
-+
-+/* The size of `char*', as computed by sizeof. */
-+#if defined(__x86_64) || defined(_M_X64)
-+#define SIZEOF_CHARP 8
-+#else
-+#define SIZEOF_CHARP 4
-+#endif
-+
-+/* The size of `int', as computed by sizeof. */
-+#define SIZEOF_INT 4
-+
-+/* The size of `long', as computed by sizeof. */
-+#define SIZEOF_LONG 4
-+
-+/* The size of `long long', as computed by sizeof. */
-+#define SIZEOF_LONG_LONG 8
-+
-+/* The size of `short', as computed by sizeof. */
-+#define SIZEOF_SHORT 2
-+
-+/* The size of `unsigned int', as computed by sizeof. */
-+#define SIZEOF_UNSIGNED_INT 4
-+
-+/* The size of `unsigned long int', as computed by sizeof. */
-+#define SIZEOF_UNSIGNED_LONG_INT 4
-+
-+/* The size of `void *', as computed by sizeof. */
-+#if defined(__x86_64) || defined(_M_X64)
-+#define SIZEOF_VOID_P 8
-+#else
-+#define SIZEOF_VOID_P 4
-+#endif
-+
-+/* Define as the maximum value of type 'size_t', if the system doesn't define
-+   it. */
-+#ifndef SIZE_MAX
-+/* # undef SIZE_MAX */
-+#endif
-+
-+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
-+   'size_t'. */
-+/* #undef SIZE_T_SUFFIX */
-+
-+/* If using the C implementation of alloca, define if you know the
-+   direction of stack growth for your system; otherwise it will be
-+   automatically deduced at runtime.
-+	STACK_DIRECTION > 0 => grows toward higher addresses
-+	STACK_DIRECTION < 0 => grows toward lower addresses
-+	STACK_DIRECTION = 0 => direction of growth unknown */
-+/* #undef STACK_DIRECTION */
-+
-+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-+/* #undef STAT_MACROS_BROKEN */
-+
-+/* Define to 1 if you have the ANSI C header files. */
-+#define STDC_HEADERS 1
-+
-+/* Define to 1 if strerror_r returns char *. */
-+/* #undef STRERROR_R_CHAR_P */
-+
-+/* The system priority file */
-+#define SYSTEM_PRIORITY_FILE "/etc/gnutls/default-priorities"
-+
-+/* Define to 1 if all 'time_t' values fit in a 'long int'. */
-+/* #undef TIME_T_FITS_IN_LONG_INT */
-+
-+/* Define to 1 if time_t is signed. */
-+#define TIME_T_IS_SIGNED 1
-+
-+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-+/* #undef TM_IN_SYS_TIME */
-+
-+/* the location of the trousers library */
-+#define TROUSERS_LIB ""
-+
-+/* The DNSSEC root key file */
-+#define UNBOUND_ROOT_KEY_FILE "C:\Program Files\Unbound\root.key"
-+
-+/* Enable extensions on AIX 3, Interix.  */
-+#ifndef _ALL_SOURCE
-+# define _ALL_SOURCE 1
-+#endif
-+/* Enable general extensions on macOS.  */
-+#ifndef _DARWIN_C_SOURCE
-+# define _DARWIN_C_SOURCE 1
-+#endif
-+/* Enable GNU extensions on systems that have them.  */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-+/* Use GNU style printf and scanf.  */
-+#ifndef __USE_MINGW_ANSI_STDIO
-+# define __USE_MINGW_ANSI_STDIO 1
-+#endif
-+/* Enable threading extensions on Solaris.  */
-+#ifndef _POSIX_PTHREAD_SEMANTICS
-+# define _POSIX_PTHREAD_SEMANTICS 1
-+#endif
-+/* Enable extensions on HP NonStop.  */
-+#ifndef _TANDEM_SOURCE
-+# define _TANDEM_SOURCE 1
-+#endif
-+/* Enable X/Open extensions if necessary.  HP-UX 11.11 defines
-+   mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of
-+   whether compiling with -Ae or -D_HPUX_SOURCE=1.  */
-+#ifndef _XOPEN_SOURCE
-+/* # undef _XOPEN_SOURCE */
-+#endif
-+/* Enable general extensions on Solaris.  */
-+#ifndef __EXTENSIONS__
-+# define __EXTENSIONS__ 1
-+#endif
-+
-+#include "version.h"
-+
-+/* Define to 1 if unsetenv returns void instead of int. */
-+/* #undef VOID_UNSETENV */
-+
-+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
-+   'wchar_t'. */
-+/* #undef WCHAR_T_SUFFIX */
-+
-+/* Define if WSAStartup is needed. */
-+#define WINDOWS_SOCKETS 1
-+
-+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
-+   'wint_t'. */
-+/* #undef WINT_T_SUFFIX */
-+
-+/* Define this if a working libregex can be found */
-+/* #undef WITH_LIBREGEX */
-+
-+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
-+   significant byte first (like Motorola and SPARC, unlike Intel). */
-+#if defined AC_APPLE_UNIVERSAL_BUILD
-+# if defined __BIG_ENDIAN__
-+#  define WORDS_BIGENDIAN 1
-+# endif
-+#else
-+# ifndef WORDS_BIGENDIAN
-+/* #  undef WORDS_BIGENDIAN */
-+# endif
-+#endif
-+
-+/* Enable large inode numbers on Mac OS X 10.5. */
-+#define _DARWIN_USE_64_BIT_INODE 1
-+
-+/* Number of bits in a file offset, on hosts where this is settable. */
-+#define _FILE_OFFSET_BITS 64
-+
-+/* Define to 1 if Gnulib overrides 'struct stat' on Windows so that struct
-+   stat.st_size becomes 64-bit. */
-+#define _GL_WINDOWS_64_BIT_ST_SIZE 1
-+
-+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
-+/* #undef _LARGEFILE_SOURCE */
-+
-+/* Define for large files, on AIX-style hosts. */
-+/* #undef _LARGE_FILES */
-+
-+/* Define to 1 if on MINIX. */
-+/* #undef _MINIX */
-+
-+/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */
-+/* #undef _NETBSD_SOURCE */
-+
-+/* The _Noreturn keyword of C11.  */
-+#if ! (defined _Noreturn \
-+       || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
-+# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
-+      || 0x5110 <= __SUNPRO_C)
-+#  define _Noreturn __attribute__ ((__noreturn__))
-+# elif defined _MSC_VER && 1200 <= _MSC_VER
-+#  define _Noreturn __declspec (noreturn)
-+# else
-+#  define _Noreturn
-+# endif
-+#endif
-+
-+/* Define to 2 if the system does not provide POSIX.1 features except with
-+   this defined. */
-+/* #undef _POSIX_1_SOURCE */
-+
-+/* Define to 1 in order to get the POSIX compatible declarations of socket
-+   functions. */
-+/* #undef _POSIX_PII_SOCKET */
-+
-+/* Define to 1 if you need to in order for 'stat' and other things to work. */
-+/* #undef _POSIX_SOURCE */
-+
-+/* Define to 1 if the system <stdint.h> predates C++11. */
-+/* #undef __STDC_CONSTANT_MACROS */
-+
-+/* Define to 1 if the system <stdint.h> predates C++11. */
-+/* #undef __STDC_LIMIT_MACROS */
-+
-+/* Define as a replacement for the ISO C99 __func__ variable. */
-+/* #undef __func__ */
-+
-+/* Please see the Gnulib manual for how to use these macros.
-+
-+   Suppress extern inline with HP-UX cc, as it appears to be broken; see
-+   <http://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>.
-+
-+   Suppress extern inline with Sun C in standards-conformance mode, as it
-+   mishandles inline functions that call each other.  E.g., for 'inline void f
-+   (void) { } inline void g (void) { f (); }', c99 incorrectly complains
-+   'reference to static identifier "f" in extern inline function'.
-+   This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
-+
-+   Suppress the use of extern inline on problematic Apple configurations.
-+   OS X 10.8 and earlier mishandle it; see, e.g.,
-+   <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
-+   OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
-+   for clang but remains for g++; see <http://trac.macports.org/ticket/41033>.
-+   Perhaps Apple will fix this some day.  */
-+#if (defined __APPLE__ \
-+     && (defined __header_inline \
-+         ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
-+            && ! defined __clang__) \
-+         : ((! defined _DONT_USE_CTYPE_INLINE_ \
-+             && (defined __GNUC__ || defined __cplusplus)) \
-+            || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
-+                && defined __GNUC__ && ! defined __cplusplus))))
-+# define _GL_EXTERN_INLINE_APPLE_BUG
-+#endif
-+#if ((__GNUC__ \
-+      ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
-+      : (199901L <= __STDC_VERSION__ \
-+         && !defined __HP_cc \
-+         && !(defined __SUNPRO_C && __STDC__))) \
-+     && !defined _GL_EXTERN_INLINE_APPLE_BUG)
-+# define _GL_INLINE inline
-+# define _GL_EXTERN_INLINE extern inline
-+# define _GL_EXTERN_INLINE_IN_USE
-+#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
-+       && !defined _GL_EXTERN_INLINE_APPLE_BUG)
-+# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
-+   /* __gnu_inline__ suppresses a GCC 4.2 diagnostic.  */
-+#  define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
-+# else
-+#  define _GL_INLINE extern inline
-+# endif
-+# define _GL_EXTERN_INLINE extern
-+# define _GL_EXTERN_INLINE_IN_USE
-+#else
-+# define _GL_INLINE static _GL_UNUSED
-+# define _GL_EXTERN_INLINE static _GL_UNUSED
-+#endif
-+
-+#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
-+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
-+#  define _GL_INLINE_HEADER_CONST_PRAGMA
-+# else
-+#  define _GL_INLINE_HEADER_CONST_PRAGMA \
-+     _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
-+# endif
-+  /* Suppress GCC's bogus "no previous prototype for 'FOO'"
-+     and "no previous declaration for 'FOO'"  diagnostics,
-+     when FOO is an inline function in the header; see
-+     <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.  */
-+# define _GL_INLINE_HEADER_BEGIN \
-+    _Pragma ("GCC diagnostic push") \
-+    _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
-+    _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
-+    _GL_INLINE_HEADER_CONST_PRAGMA
-+# define _GL_INLINE_HEADER_END \
-+    _Pragma ("GCC diagnostic pop")
-+#else
-+# define _GL_INLINE_HEADER_BEGIN
-+# define _GL_INLINE_HEADER_END
-+#endif
-+
-+/* static lib rename */
-+#define fread_file _gnutls_fread_file
-+
-+/* Define to `int' if <sys/types.h> doesn't define. */
-+#define gid_t int
-+
-+/* Define to `__inline__' or `__inline' if that's what the C compiler
-+   calls it, or to nothing if 'inline' is not supported under any name.  */
-+#ifndef __cplusplus
-+/* #undef inline */
-+#endif
-+
-+/* Define to long or long long if <stdint.h> and <inttypes.h> don't define. */
-+/* #undef intmax_t */
-+
-+/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
-+   the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
-+   earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
-+   __APPLE__ && __MACH__ test for Mac OS X.
-+   __APPLE_CC__ tests for the Apple compiler and its version.
-+   __STDC_VERSION__ tests for the C99 mode.  */
-+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
-+# define __GNUC_STDC_INLINE__ 1
-+#endif
-+
-+/* Define to the real name of the mktime_internal function. */
-+/* #undef mktime_internal */
-+
-+/* Define to `int' if <sys/types.h> does not define. */
-+/* #undef mode_t */
-+
-+/* Define to the name of the strftime replacement function. */
-+#define my_strftime nstrftime
-+
-+/* Define to the type of st_nlink in struct stat, or a supertype. */
-+#define nlink_t int
-+
-+/* Define to `int' if <sys/types.h> does not define. */
-+/* #undef pid_t */
-+
-+/* Define as the type of the result of subtracting two pointers, if the system
-+   doesn't define it. */
-+/* #undef ptrdiff_t */
-+
-+/* static lib rename */
-+#define read_binary_file _gnutls_read_binary_file
-+
-+/* static lib rename */
-+#define read_file _gnutls_read_file
-+
-+/* Define to the equivalent of the C99 'restrict' keyword, or to
-+   nothing if this is not supported.  Do not define if restrict is
-+   supported directly.  */
-+#define restrict //__restrict
-+/* Work around a bug in Sun C++: it does not support _Restrict or
-+   __restrict__, even though the corresponding Sun C compiler ends up with
-+   "#define restrict _Restrict" or "#define restrict __restrict__" in the
-+   previous line.  Perhaps some future version of Sun C++ will work with
-+   restrict; if so, hopefully it defines __RESTRICT like Sun C does.  */
-+#if defined __SUNPRO_CC && !defined __RESTRICT
-+# define _Restrict
-+# define __restrict__
-+#endif
-+
-+/* Define to `unsigned int' if <sys/types.h> does not define. */
-+/* #undef size_t */
-+
-+/* type to use in place of socklen_t if not defined */
-+/* #undef socklen_t */
-+
-+/* Define as a signed type of the same size as size_t. */
-+/* #undef ssize_t */
-+
-+/* Define to `int' if <sys/types.h> doesn't define. */
-+#define uid_t int
-+
-+/* Define as a marker that can be attached to declarations that might not
-+    be used.  This helps to reduce warnings, such as from
-+    GCC -Wunused-parameter.  */
-+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
-+# define _GL_UNUSED __attribute__ ((__unused__))
-+#else
-+# define _GL_UNUSED
-+#endif
-+/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
-+   is a misnomer outside of parameter lists.  */
-+#define _UNUSED_PARAMETER_ _GL_UNUSED
-+
-+/* gcc supports the "unused" attribute on possibly unused labels, and
-+   g++ has since version 4.5.  Note to support C++ as well as C,
-+   _GL_UNUSED_LABEL should be used with a trailing ;  */
-+#if !defined __cplusplus || __GNUC__ > 4 \
-+    || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
-+# define _GL_UNUSED_LABEL _GL_UNUSED
-+#else
-+# define _GL_UNUSED_LABEL
-+#endif
-+
-+/* The __pure__ attribute was added in gcc 2.96.  */
-+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-+#else
-+# define _GL_ATTRIBUTE_PURE /* empty */
-+#endif
-+
-+/* The __const__ attribute was added in gcc 2.95.  */
-+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-+# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-+#else
-+# define _GL_ATTRIBUTE_CONST /* empty */
-+#endif
-+
-+/* Define as `fork' if `vfork' does not work. */
-+/* #undef vfork */
-diff --git a/SMP/dirent.h b/SMP/dirent.h
-new file mode 100644
-index 0000000..5fc402e
---- /dev/null
-+++ b/SMP/dirent.h
-@@ -0,0 +1,757 @@
-+/*
-+* MSVC dirent.h compatibility header.
-+*
-+* Permission is hereby granted, free of charge, to any person obtaining a copy
-+* of this software and associated documentation files (the "Software"), to deal
-+* in the Software without restriction, including without limitation the rights
-+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+* copies of the Software, and to permit persons to whom the Software is
-+* furnished to do so, subject to the following conditions:
-+*
-+* The above copyright notice and this permission notice shall be included in
-+* all copies or substantial portions of the Software.
-+*
-+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+* THE SOFTWARE.
-+*/
-+
-+#ifndef SMP_DIRENT_H
-+#define SMP_DIRENT_H
-+
-+#ifndef _MSC_VER
-+#   include_next <dirent.h>
-+#else
-+
-+#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_IX86)
-+#   define _X86_
-+#endif
-+#include <stdio.h>
-+#include <stdarg.h>
-+#include <wtypes.h>
-+#include <windef.h>
-+#include <winbase.h>
-+#include <wchar.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <malloc.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <errno.h>
-+
-+/* Indicates that d_type field is available in dirent structure */
-+#define _DIRENT_HAVE_D_TYPE
-+
-+/* Indicates that d_namlen field is available in dirent structure */
-+#define _DIRENT_HAVE_D_NAMLEN
-+
-+/* Entries missing from MSVC 6.0 */
-+#if !defined(FILE_ATTRIBUTE_DEVICE)
-+#   define FILE_ATTRIBUTE_DEVICE 0x40
-+#endif
-+
-+/* File type and permission flags for stat() */
-+#if !defined(S_IFMT)
-+#   define S_IFMT   _S_IFMT                     /* File type mask */
-+#endif
-+#if !defined(S_IFDIR)
-+#   define S_IFDIR  _S_IFDIR                    /* Directory */
-+#endif
-+#if !defined(S_IFCHR)
-+#   define S_IFCHR  _S_IFCHR                    /* Character device */
-+#endif
-+#if !defined(S_IFFIFO)
-+#   define S_IFFIFO _S_IFFIFO                   /* Pipe */
-+#endif
-+#if !defined(S_IFREG)
-+#   define S_IFREG  _S_IFREG                    /* Regular file */
-+#endif
-+#if !defined(S_IREAD)
-+#   define S_IREAD  _S_IREAD                    /* Read permission */
-+#endif
-+#if !defined(S_IWRITE)
-+#   define S_IWRITE _S_IWRITE                   /* Write permission */
-+#endif
-+#if !defined(S_IEXEC)
-+#   define S_IEXEC  _S_IEXEC                    /* Execute permission */
-+#endif
-+#if !defined(S_IFIFO)
-+#   define S_IFIFO _S_IFIFO                     /* Pipe */
-+#endif
-+#if !defined(S_IFBLK)
-+#   define S_IFBLK   0                          /* Block device */
-+#endif
-+#if !defined(S_IFLNK)
-+#   define S_IFLNK   0                          /* Link */
-+#endif
-+#if !defined(S_IFSOCK)
-+#   define S_IFSOCK  0                          /* Socket */
-+#endif
-+
-+#if defined(_MSC_VER)
-+#if !defined(S_IRUSR)
-+#   define S_IRUSR  S_IREAD                     /* Read user */
-+#endif
-+#if !defined(S_IWUSR)
-+#   define S_IWUSR  S_IWRITE                    /* Write user */
-+#endif
-+#if !defined(S_IXUSR)
-+#   define S_IXUSR  0                           /* Execute user */
-+#endif
-+#if !defined(S_IRGRP)
-+#   define S_IRGRP  0                           /* Read group */
-+#endif
-+#if !defined(S_IWGRP)
-+#   define S_IWGRP  0                           /* Write group */
-+#endif
-+#if !defined(S_IXGRP)
-+#   define S_IXGRP  0                           /* Execute group */
-+#endif
-+#if !defined(S_IROTH)
-+#   define S_IROTH  0                           /* Read others */
-+#endif
-+#if !defined(S_IWOTH)
-+#   define S_IWOTH  0                           /* Write others */
-+#endif
-+#if !defined(S_IXOTH)
-+#   define S_IXOTH  0                           /* Execute others */
-+#endif
-+#endif
-+
-+/* Maximum length of file name */
-+#if !defined(PATH_MAX)
-+#   define PATH_MAX MAX_PATH
-+#endif
-+#if !defined(FILENAME_MAX)
-+#   define FILENAME_MAX MAX_PATH
-+#endif
-+#if !defined(NAME_MAX)
-+#   define NAME_MAX FILENAME_MAX
-+#endif
-+
-+/* File type flags for d_type */
-+#define DT_UNKNOWN  0
-+#define DT_REG      S_IFREG
-+#define DT_DIR      S_IFDIR
-+#define DT_FIFO     S_IFIFO
-+#define DT_SOCK     S_IFSOCK
-+#define DT_CHR      S_IFCHR
-+#define DT_BLK      S_IFBLK
-+#define DT_LNK      S_IFLNK
-+
-+/* Macros for converting between st_mode and d_type */
-+#define IFTODT(mode) ((mode) & S_IFMT)
-+#define DTTOIF(type) (type)
-+
-+/*
-+ * File type macros.  Note that block devices, sockets and links cannot be
-+ * distinguished on Windows and the macros S_ISBLK, S_ISSOCK and S_ISLNK are
-+ * only defined for compatibility.  These macros should always return false
-+ * on Windows.
-+ */
-+#define	S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)
-+#define	S_ISDIR(mode)  (((mode) & S_IFMT) == S_IFDIR)
-+#define	S_ISREG(mode)  (((mode) & S_IFMT) == S_IFREG)
-+#define	S_ISLNK(mode)  (((mode) & S_IFMT) == S_IFLNK)
-+#define	S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
-+#define	S_ISCHR(mode)  (((mode) & S_IFMT) == S_IFCHR)
-+#define	S_ISBLK(mode)  (((mode) & S_IFMT) == S_IFBLK)
-+
-+/* Return the exact length of d_namlen without zero terminator */
-+#define _D_EXACT_NAMLEN(p) ((p)->d_namlen)
-+
-+/* Return number of bytes needed to store d_namlen */
-+#define _D_ALLOC_NAMLEN(p) (PATH_MAX + 1)
-+
-+/* Wide-character version */
-+struct _wdirent
-+{
-+    long d_ino;                                 /* Always zero */
-+    unsigned short d_reclen;                    /* Structure size */
-+    size_t d_namlen;                            /* Length of name without \0 */
-+    int d_type;                                 /* File type */
-+    wchar_t d_name[PATH_MAX + 1];               /* File name */
-+};
-+typedef struct _wdirent _wdirent;
-+
-+struct _WDIR
-+{
-+    struct _wdirent ent;                        /* Current directory entry */
-+    WIN32_FIND_DATAW data;                      /* Private file data */
-+    int cached;                                 /* True if data is valid */
-+    HANDLE handle;                              /* Win32 search handle */
-+    wchar_t *patt;                              /* Initial directory name */
-+};
-+typedef struct _WDIR _WDIR;
-+
-+static _WDIR *_wopendir(const wchar_t *dirname);
-+static struct _wdirent *_wreaddir(_WDIR *dirp);
-+static int _wclosedir(_WDIR *dirp);
-+static void _wrewinddir(_WDIR* dirp);
-+
-+/* For compatibility with Symbian */
-+#define wdirent _wdirent
-+#define WDIR _WDIR
-+#define wopendir _wopendir
-+#define wreaddir _wreaddir
-+#define wclosedir _wclosedir
-+#define wrewinddir _wrewinddir
-+
-+/* Multi-byte character versions */
-+struct dirent
-+{
-+    long d_ino;                                 /* Always zero */
-+    unsigned short d_reclen;                    /* Structure size */
-+    size_t d_namlen;                            /* Length of name without \0 */
-+    int d_type;                                 /* File type */
-+    char d_name[PATH_MAX + 1];                  /* File name */
-+};
-+typedef struct dirent dirent;
-+
-+struct DIR
-+{
-+    struct dirent ent;
-+    struct _WDIR *wdirp;
-+};
-+typedef struct DIR DIR;
-+
-+static DIR *opendir(const char *dirname);
-+static struct dirent *readdir(DIR *dirp);
-+static int closedir(DIR *dirp);
-+static void rewinddir(DIR* dirp);
-+
-+/* Internal utility functions */
-+static WIN32_FIND_DATAW *dirent_first(_WDIR *dirp);
-+static WIN32_FIND_DATAW *dirent_next(_WDIR *dirp);
-+
-+static int dirent_mbstowcs_s(
-+    size_t *pReturnValue,
-+    wchar_t *wcstr,
-+    size_t sizeInWords,
-+    const char *mbstr,
-+    size_t count);
-+
-+static int dirent_wcstombs_s(
-+    size_t *pReturnValue,
-+    char *mbstr,
-+    size_t sizeInBytes,
-+    const wchar_t *wcstr,
-+    size_t count);
-+
-+static void dirent_set_errno(int error);
-+
-+/*
-+ * Open directory stream DIRNAME for read and return a pointer to the
-+ * internal working area that is used to retrieve individual directory
-+ * entries.
-+ */
-+static __inline _WDIR* _wopendir(const wchar_t *dirname)
-+{
-+    _WDIR *dirp = NULL;
-+    int error;
-+
-+    /* Must have directory name */
-+    if (dirname == NULL || dirname[0] == '\0') {
-+        dirent_set_errno(ENOENT);
-+        return NULL;
-+    }
-+
-+    /* Allocate new _WDIR structure */
-+    dirp = (_WDIR*)malloc(sizeof(struct _WDIR));
-+    if (dirp != NULL) {
-+        DWORD n;
-+
-+        /* Reset _WDIR structure */
-+        dirp->handle = INVALID_HANDLE_VALUE;
-+        dirp->patt = NULL;
-+        dirp->cached = 0;
-+
-+        /* Compute the length of full path plus zero terminator */
-+        n = GetFullPathNameW(dirname, 0, NULL, NULL);
-+
-+        /* Allocate room for absolute directory name and search pattern */
-+        dirp->patt = (wchar_t*)malloc(sizeof(wchar_t) * n + 16);
-+        if (dirp->patt) {
-+            /*
-+             * Convert relative directory name to an absolute one.  This
-+             * allows rewinddir() to function correctly even when current
-+             * working directory is changed between opendir() and rewinddir().
-+             */
-+            n = GetFullPathNameW(dirname, n, dirp->patt, NULL);
-+            if (n > 0) {
-+                wchar_t *p;
-+
-+                /* Append search pattern \* to the directory name */
-+                p = dirp->patt + n;
-+                if (dirp->patt < p) {
-+                    switch (p[-1]) {
-+                        case '\\':
-+                        case '/':
-+                        case ':':
-+                            /* Directory ends in path separator, e.g. c:\temp\ */
-+                            /*NOP*/;
-+                            break;
-+
-+                        default:
-+                            /* Directory name doesn't end in path separator */
-+                            *p++ = '\\';
-+                    }
-+                }
-+                *p++ = '*';
-+                *p = '\0';
-+
-+                /* Open directory stream and retrieve the first entry */
-+                if (dirent_first(dirp)) {
-+                    /* Directory stream opened successfully */
-+                    error = 0;
-+                } else {
-+                    /* Cannot retrieve first entry */
-+                    error = 1;
-+                    dirent_set_errno(ENOENT);
-+                }
-+            } else {
-+                /* Cannot retrieve full path name */
-+                dirent_set_errno(ENOENT);
-+                error = 1;
-+            }
-+        } else {
-+            /* Cannot allocate memory for search pattern */
-+            error = 1;
-+        }
-+    } else {
-+        /* Cannot allocate _WDIR structure */
-+        error = 1;
-+    }
-+
-+    /* Clean up in case of error */
-+    if (error  &&  dirp) {
-+        _wclosedir(dirp);
-+        dirp = NULL;
-+    }
-+
-+    return dirp;
-+}
-+
-+/*
-+ * Read next directory entry.  The directory entry is returned in dirent
-+ * structure in the d_name field.  Individual directory entries returned by
-+ * this function include regular files, sub-directories, pseudo-directories
-+ * "." and ".." as well as volume labels, hidden files and system files.
-+ */
-+static __inline struct _wdirent* _wreaddir(_WDIR *dirp)
-+{
-+    WIN32_FIND_DATAW *datap;
-+    struct _wdirent *entp;
-+
-+    /* Read next directory entry */
-+    datap = dirent_next(dirp);
-+    if (datap) {
-+        size_t n;
-+        DWORD attr;
-+
-+        /* Pointer to directory entry to return */
-+        entp = &dirp->ent;
-+
-+        /*
-+         * Copy file name as wide-character string.  If the file name is too
-+         * long to fit in to the destination buffer, then truncate file name
-+         * to PATH_MAX characters and zero-terminate the buffer.
-+         */
-+        n = 0;
-+        while (n < PATH_MAX  &&  datap->cFileName[n] != 0) {
-+            entp->d_name[n] = datap->cFileName[n];
-+            n++;
-+        }
-+        dirp->ent.d_name[n] = 0;
-+
-+        /* Length of file name excluding zero terminator */
-+        entp->d_namlen = n;
-+
-+        /* File type */
-+        attr = datap->dwFileAttributes;
-+        if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) {
-+            entp->d_type = DT_CHR;
-+        } else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) {
-+            entp->d_type = DT_DIR;
-+        } else {
-+            entp->d_type = DT_REG;
-+        }
-+
-+        /* Reset dummy fields */
-+        entp->d_ino = 0;
-+        entp->d_reclen = sizeof(struct _wdirent);
-+    } else {
-+        /* Last directory entry read */
-+        entp = NULL;
-+    }
-+
-+    return entp;
-+}
-+
-+/*
-+ * Close directory stream opened by opendir() function.  This invalidates the
-+ * DIR structure as well as any directory entry read previously by
-+ * _wreaddir().
-+ */
-+static __inline int _wclosedir(_WDIR *dirp)
-+{
-+    int ok;
-+    if (dirp) {
-+        /* Release search handle */
-+        if (dirp->handle != INVALID_HANDLE_VALUE) {
-+            FindClose(dirp->handle);
-+            dirp->handle = INVALID_HANDLE_VALUE;
-+        }
-+
-+        /* Release search pattern */
-+        if (dirp->patt) {
-+            free(dirp->patt);
-+            dirp->patt = NULL;
-+        }
-+
-+        /* Release directory structure */
-+        free(dirp);
-+        ok = /*success*/0;
-+    } else {
-+        /* Invalid directory stream */
-+        dirent_set_errno(EBADF);
-+        ok = /*failure*/-1;
-+    }
-+    return ok;
-+}
-+
-+/*
-+ * Rewind directory stream such that _wreaddir() returns the very first
-+ * file name again.
-+ */
-+static __inline void _wrewinddir(_WDIR* dirp)
-+{
-+    if (dirp) {
-+        /* Release existing search handle */
-+        if (dirp->handle != INVALID_HANDLE_VALUE) {
-+            FindClose(dirp->handle);
-+        }
-+
-+        /* Open new search handle */
-+        dirent_first(dirp);
-+    }
-+}
-+
-+/* Get first directory entry (internal) */
-+static __inline WIN32_FIND_DATAW* dirent_first(_WDIR *dirp)
-+{
-+    WIN32_FIND_DATAW *datap;
-+
-+    /* Open directory and retrieve the first entry */
-+    dirp->handle = FindFirstFileW(dirp->patt, &dirp->data);
-+    if (dirp->handle != INVALID_HANDLE_VALUE) {
-+        /* a directory entry is now waiting in memory */
-+        datap = &dirp->data;
-+        dirp->cached = 1;
-+    } else {
-+        /* Failed to re-open directory: no directory entry in memory */
-+        dirp->cached = 0;
-+        datap = NULL;
-+    }
-+    return datap;
-+}
-+
-+/* Get next directory entry (internal) */
-+static __inline WIN32_FIND_DATAW* dirent_next(_WDIR *dirp)
-+{
-+    WIN32_FIND_DATAW *p;
-+
-+    /* Get next directory entry */
-+    if (dirp->cached != 0) {
-+        /* A valid directory entry already in memory */
-+        p = &dirp->data;
-+        dirp->cached = 0;
-+    } else if (dirp->handle != INVALID_HANDLE_VALUE) {
-+        /* Get the next directory entry from stream */
-+        if (FindNextFileW(dirp->handle, &dirp->data) != FALSE) {
-+            /* Got a file */
-+            p = &dirp->data;
-+        } else {
-+            /* The very last entry has been processed or an error occured */
-+            FindClose(dirp->handle);
-+            dirp->handle = INVALID_HANDLE_VALUE;
-+            p = NULL;
-+        }
-+    } else {
-+        /* End of directory stream reached */
-+        p = NULL;
-+    }
-+    return p;
-+}
-+
-+/*
-+ * Open directory stream using plain old C-string.
-+ */
-+static __inline DIR* opendir(const char *dirname)
-+{
-+    struct DIR *dirp;
-+    int error;
-+
-+    /* Must have directory name */
-+    if (dirname == NULL || dirname[0] == '\0') {
-+        dirent_set_errno(ENOENT);
-+        return NULL;
-+    }
-+
-+    /* Allocate memory for DIR structure */
-+    dirp = (DIR*)malloc(sizeof(struct DIR));
-+    if (dirp) {
-+        wchar_t wname[PATH_MAX + 1];
-+        size_t n;
-+
-+        /* Convert directory name to wide-character string */
-+        error = dirent_mbstowcs_s(
-+            &n, wname, PATH_MAX + 1, dirname, PATH_MAX);
-+        if (!error) {
-+            /* Open directory stream using wide-character name */
-+            dirp->wdirp = _wopendir(wname);
-+            if (dirp->wdirp) {
-+                /* Directory stream opened */
-+                error = 0;
-+            } else {
-+                /* Failed to open directory stream */
-+                error = 1;
-+            }
-+        } else {
-+            /*
-+             * Cannot convert file name to wide-character string.  This
-+             * occurs if the string contains invalid multi-byte sequences or
-+             * the output buffer is too small to contain the resulting
-+             * string.
-+             */
-+            error = 1;
-+        }
-+    } else {
-+        /* Cannot allocate DIR structure */
-+        error = 1;
-+    }
-+
-+    /* Clean up in case of error */
-+    if (error  &&  dirp) {
-+        free(dirp);
-+        dirp = NULL;
-+    }
-+
-+    return dirp;
-+}
-+
-+/*
-+ * Read next directory entry.
-+ *
-+ * When working with text consoles, please note that file names returned by
-+ * readdir() are represented in the default ANSI code page while any output to
-+ * console is typically formatted on another code page.  Thus, non-ASCII
-+ * characters in file names will not usually display correctly on console.  The
-+ * problem can be fixed in two ways: (1) change the character set of console
-+ * to 1252 using chcp utility and use Lucida Console font, or (2) use
-+ * _cprintf function when writing to console.  The _cprinf() will re-encode
-+ * ANSI strings to the console code page so many non-ASCII characters will
-+ * display correcly.
-+ */
-+static __inline struct dirent* readdir(DIR *dirp)
-+{
-+    WIN32_FIND_DATAW *datap;
-+    struct dirent *entp;
-+
-+    /* Read next directory entry */
-+    datap = dirent_next(dirp->wdirp);
-+    if (datap) {
-+        size_t n;
-+        int error;
-+
-+        /* Attempt to convert file name to multi-byte string */
-+        error = dirent_wcstombs_s(
-+            &n, dirp->ent.d_name, MAX_PATH + 1, datap->cFileName, MAX_PATH);
-+
-+        /*
-+         * If the file name cannot be represented by a multi-byte string,
-+         * then attempt to use old 8+3 file name.  This allows traditional
-+         * Unix-code to access some file names despite of unicode
-+         * characters, although file names may seem unfamiliar to the user.
-+         *
-+         * Be ware that the code below cannot come up with a short file
-+         * name unless the file system provides one.  At least
-+         * VirtualBox shared folders fail to do this.
-+         */
-+        if (error  &&  datap->cAlternateFileName[0] != '\0') {
-+            error = dirent_wcstombs_s(
-+                &n, dirp->ent.d_name, MAX_PATH + 1, datap->cAlternateFileName,
-+                sizeof(datap->cAlternateFileName) /
-+                sizeof(datap->cAlternateFileName[0]));
-+        }
-+
-+        if (!error) {
-+            DWORD attr;
-+
-+            /* Initialize directory entry for return */
-+            entp = &dirp->ent;
-+
-+            /* Length of file name excluding zero terminator */
-+            entp->d_namlen = n - 1;
-+
-+            /* File attributes */
-+            attr = datap->dwFileAttributes;
-+            if ((attr & FILE_ATTRIBUTE_DEVICE) != 0) {
-+                entp->d_type = DT_CHR;
-+            } else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) {
-+                entp->d_type = DT_DIR;
-+            } else {
-+                entp->d_type = DT_REG;
-+            }
-+
-+            /* Reset dummy fields */
-+            entp->d_ino = 0;
-+            entp->d_reclen = sizeof(struct dirent);
-+        } else {
-+            /*
-+             * Cannot convert file name to multi-byte string so construct
-+             * an errornous directory entry and return that.  Note that
-+             * we cannot return NULL as that would stop the processing
-+             * of directory entries completely.
-+             */
-+            entp = &dirp->ent;
-+            entp->d_name[0] = '?';
-+            entp->d_name[1] = '\0';
-+            entp->d_namlen = 1;
-+            entp->d_type = DT_UNKNOWN;
-+            entp->d_ino = 0;
-+            entp->d_reclen = 0;
-+        }
-+    } else {
-+        /* No more directory entries */
-+        entp = NULL;
-+    }
-+
-+    return entp;
-+}
-+
-+/*
-+ * Close directory stream.
-+ */
-+static __inline int closedir(DIR *dirp)
-+{
-+    int ok;
-+    if (dirp) {
-+        /* Close wide-character directory stream */
-+        ok = _wclosedir(dirp->wdirp);
-+        dirp->wdirp = NULL;
-+
-+        /* Release multi-byte character version */
-+        free(dirp);
-+    } else {
-+        /* Invalid directory stream */
-+        dirent_set_errno(EBADF);
-+        ok = /*failure*/-1;
-+    }
-+    return ok;
-+}
-+
-+/*
-+ * Rewind directory stream to beginning.
-+ */
-+static __inline void rewinddir(DIR* dirp)
-+{
-+    /* Rewind wide-character string directory stream */
-+    _wrewinddir(dirp->wdirp);
-+}
-+
-+/* Convert multi-byte string to wide character string */
-+static __inline int dirent_mbstowcs_s(
-+    size_t *pReturnValue,
-+    wchar_t *wcstr,
-+    size_t sizeInWords,
-+    const char *mbstr,
-+    size_t count)
-+{
-+    int error;
-+
-+#if _MSC_VER >= 1400
-+    /* Microsoft Visual Studio 2005 or later */
-+    error = mbstowcs_s(pReturnValue, wcstr, sizeInWords, mbstr, count);
-+#else
-+    /* Older Visual Studio or non-Microsoft compiler */
-+    size_t n;
-+
-+    /* Convert to wide-character string */
-+    n = mbstowcs(wcstr, mbstr, count);
-+    if (n < sizeInWords) {
-+        /* Zero-terminate output buffer */
-+        if (wcstr) {
-+            wcstr[n] = 0;
-+        }
-+
-+        /* Length of resuting multi-byte string WITH zero terminator */
-+        if (pReturnValue) {
-+            *pReturnValue = n + 1;
-+        }
-+
-+        /* Success */
-+        error = 0;
-+    } else {
-+        /* Could not convert string */
-+        error = 1;
-+    }
-+#endif
-+    return error;
-+}
-+
-+/* Convert wide-character string to multi-byte string */
-+static __inline int dirent_wcstombs_s(
-+    size_t *pReturnValue,
-+    char *mbstr,
-+    size_t sizeInBytes,
-+    const wchar_t *wcstr,
-+    size_t count)
-+{
-+    int error;
-+
-+#if _MSC_VER >= 1400
-+    /* Microsoft Visual Studio 2005 or later */
-+    error = wcstombs_s(pReturnValue, mbstr, sizeInBytes, wcstr, count);
-+#else
-+    /* Older Visual Studio or non-Microsoft compiler */
-+    size_t n;
-+
-+    /* Convert to multi-byte string */
-+    n = wcstombs(mbstr, wcstr, count);
-+    if (n < sizeInBytes) {
-+        /* Zero-terminate output buffer */
-+        if (mbstr) {
-+            mbstr[n] = '\0';
-+        }
-+
-+        /* Lenght of resulting multi-bytes string WITH zero-terminator */
-+        if (pReturnValue) {
-+            *pReturnValue = n + 1;
-+        }
-+
-+        /* Success */
-+        error = 0;
-+    } else {
-+        /* Cannot convert string */
-+        error = 1;
-+    }
-+#endif
-+
-+    return error;
-+}
-+
-+/* Set errno variable */
-+static __inline void dirent_set_errno(int error)
-+{
-+    /* Microsoft Visual Studio */
-+    _set_errno(error);
-+}
-+
-+#endif /* _MSC_VER */
-+
-+#endif /*SMP_DIRENT_H*/
-diff --git a/SMP/gnutls/gnutls.h b/SMP/gnutls/gnutls.h
-new file mode 100644
-index 0000000..11e8af8
---- /dev/null
-+++ b/SMP/gnutls/gnutls.h
-@@ -0,0 +1,3329 @@
-+/* -*- c -*-
-+ * Copyright (C) 2000-2016 Free Software Foundation, Inc.
-+ * Copyright (C) 2015-2016 Red Hat, Inc.
-+ *
-+ * Author: Nikos Mavrogiannopoulos
-+ *
-+ * This file is part of GnuTLS.
-+ *
-+ * The GnuTLS is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public License
-+ * as published by the Free Software Foundation; either version 2.1 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This library is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public License
-+ * along with this program.  If not, see <https://www.gnu.org/licenses/>
-+ *
-+ */
-+
-+/* This file contains the types and prototypes for all the
-+ * high level functionality of the gnutls main library.
-+ *
-+ * If the optional C++ binding was built, it is available in
-+ * gnutls/gnutlsxx.h.
-+ *
-+ * The openssl compatibility layer (which is under the GNU GPL
-+ * license) is in gnutls/openssl.h.
-+ *
-+ * The low level cipher functionality is in gnutls/crypto.h.
-+ */
-+
-+#ifndef GNUTLS_H
-+#define GNUTLS_H
-+
-+/* Get size_t. */
-+#include <stddef.h>
-+/* Get ssize_t. */
-+#ifndef HAVE_SSIZE_T
-+#define HAVE_SSIZE_T
-+/* *INDENT-OFF* */
-+#include <sys/types.h>
-+#include <BaseTsd.h>
-+typedef SSIZE_T ssize_t;
-+/* *INDENT-ON* */
-+#endif
-+/* Get time_t. */
-+#include <time.h>
-+
-+/* *INDENT-OFF* */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+/* *INDENT-ON* */
-+
-+#define GNUTLS_VERSION "3.6.7"
-+
-+#define GNUTLS_VERSION_MAJOR 3
-+#define GNUTLS_VERSION_MINOR 6
-+#define GNUTLS_VERSION_PATCH 7
-+
-+#define GNUTLS_VERSION_NUMBER 0x030607
-+
-+#define GNUTLS_CIPHER_RIJNDAEL_128_CBC GNUTLS_CIPHER_AES_128_CBC
-+#define GNUTLS_CIPHER_RIJNDAEL_256_CBC GNUTLS_CIPHER_AES_256_CBC
-+#define GNUTLS_CIPHER_RIJNDAEL_CBC GNUTLS_CIPHER_AES_128_CBC
-+#define GNUTLS_CIPHER_ARCFOUR GNUTLS_CIPHER_ARCFOUR_128
-+
-+#if !defined(GNUTLS_INTERNAL_BUILD) && defined(_WIN32)
-+# define _SYM_EXPORT __declspec(dllimport)
-+#else
-+# define _SYM_EXPORT
-+#endif
-+
-+#ifdef __GNUC__
-+# define __GNUTLS_CONST__  __attribute__((const))
-+# define __GNUTLS_PURE__  __attribute__((pure))
-+#else
-+# define __GNUTLS_CONST__
-+# define __GNUTLS_PURE__
-+#endif
-+
-+/* Use the following definition globally in your program to disable
-+ * implicit initialization of gnutls. */
-+#define GNUTLS_SKIP_GLOBAL_INIT int _gnutls_global_init_skip(void); \
-+    int _gnutls_global_init_skip(void) {return 1;}
-+
-+/**
-+ * gnutls_cipher_algorithm_t:
-+ * @GNUTLS_CIPHER_UNKNOWN: Value to identify an unknown/unsupported algorithm.
-+ * @GNUTLS_CIPHER_NULL: The NULL (identity) encryption algorithm.
-+ * @GNUTLS_CIPHER_ARCFOUR_128: ARCFOUR stream cipher with 128-bit keys.
-+ * @GNUTLS_CIPHER_3DES_CBC: 3DES in CBC mode.
-+ * @GNUTLS_CIPHER_AES_128_CBC: AES in CBC mode with 128-bit keys.
-+ * @GNUTLS_CIPHER_AES_192_CBC: AES in CBC mode with 192-bit keys.
-+ * @GNUTLS_CIPHER_AES_256_CBC: AES in CBC mode with 256-bit keys.
-+ * @GNUTLS_CIPHER_AES_128_CFB8: AES in CFB8 mode with 128-bit keys.
-+ * @GNUTLS_CIPHER_AES_192_CFB8: AES in CFB8 mode with 192-bit keys.
-+ * @GNUTLS_CIPHER_AES_256_CFB8: AES in CFB8 mode with 256-bit keys.
-+ * @GNUTLS_CIPHER_ARCFOUR_40: ARCFOUR stream cipher with 40-bit keys.
-+ * @GNUTLS_CIPHER_CAMELLIA_128_CBC: Camellia in CBC mode with 128-bit keys.
-+ * @GNUTLS_CIPHER_CAMELLIA_192_CBC: Camellia in CBC mode with 192-bit keys.
-+ * @GNUTLS_CIPHER_CAMELLIA_256_CBC: Camellia in CBC mode with 256-bit keys.
-+ * @GNUTLS_CIPHER_RC2_40_CBC: RC2 in CBC mode with 40-bit keys.
-+ * @GNUTLS_CIPHER_DES_CBC: DES in CBC mode (56-bit keys).
-+ * @GNUTLS_CIPHER_AES_128_GCM: AES in GCM mode with 128-bit keys.
-+ * @GNUTLS_CIPHER_AES_256_GCM: AES in GCM mode with 256-bit keys.
-+ * @GNUTLS_CIPHER_AES_128_CCM: AES in CCM mode with 128-bit keys.
-+ * @GNUTLS_CIPHER_AES_256_CCM: AES in CCM mode with 256-bit keys.
-+ * @GNUTLS_CIPHER_AES_128_CCM_8: AES in CCM mode with 64-bit tag and 128-bit keys.
-+ * @GNUTLS_CIPHER_AES_256_CCM_8: AES in CCM mode with 64-bit tag and 256-bit keys.
-+ * @GNUTLS_CIPHER_CAMELLIA_128_GCM: CAMELLIA in GCM mode with 128-bit keys.
-+ * @GNUTLS_CIPHER_CAMELLIA_256_GCM: CAMELLIA in GCM mode with 256-bit keys.
-+ * @GNUTLS_CIPHER_SALSA20_256: Salsa20 with 256-bit keys.
-+ * @GNUTLS_CIPHER_ESTREAM_SALSA20_256: Estream's Salsa20 variant with 256-bit keys.
-+ * @GNUTLS_CIPHER_CHACHA20_POLY1305: The Chacha20 cipher with the Poly1305 authenticator (AEAD).
-+ * @GNUTLS_CIPHER_GOST28147_TC26Z_CFB: GOST 28147-89 (Magma) cipher in CFB mode with TC26 Z S-box.
-+ * @GNUTLS_CIPHER_GOST28147_CPA_CFB: GOST 28147-89 (Magma) cipher in CFB mode with CryptoPro A S-box.
-+ * @GNUTLS_CIPHER_GOST28147_CPB_CFB: GOST 28147-89 (Magma) cipher in CFB mode with CryptoPro B S-box.
-+ * @GNUTLS_CIPHER_GOST28147_CPC_CFB: GOST 28147-89 (Magma) cipher in CFB mode with CryptoPro C S-box.
-+ * @GNUTLS_CIPHER_GOST28147_CPD_CFB: GOST 28147-89 (Magma) cipher in CFB mode with CryptoPro D S-box.
-+ * @GNUTLS_CIPHER_IDEA_PGP_CFB: IDEA in CFB mode (placeholder - unsupported).
-+ * @GNUTLS_CIPHER_3DES_PGP_CFB: 3DES in CFB mode (placeholder - unsupported).
-+ * @GNUTLS_CIPHER_CAST5_PGP_CFB: CAST5 in CFB mode (placeholder - unsupported).
-+ * @GNUTLS_CIPHER_BLOWFISH_PGP_CFB: Blowfish in CFB mode (placeholder - unsupported).
-+ * @GNUTLS_CIPHER_SAFER_SK128_PGP_CFB: Safer-SK in CFB mode with 128-bit keys (placeholder - unsupported).
-+ * @GNUTLS_CIPHER_AES128_PGP_CFB: AES in CFB mode with 128-bit keys (placeholder - unsupported).
-+ * @GNUTLS_CIPHER_AES192_PGP_CFB: AES in CFB mode with 192-bit keys (placeholder - unsupported).
-+ * @GNUTLS_CIPHER_AES256_PGP_CFB: AES in CFB mode with 256-bit keys (placeholder - unsupported).
-+ * @GNUTLS_CIPHER_TWOFISH_PGP_CFB: Twofish in CFB mode (placeholder - unsupported).
-+ *
-+ * Enumeration of different symmetric encryption algorithms.
-+ */
-+typedef enum gnutls_cipher_algorithm {
-+	GNUTLS_CIPHER_UNKNOWN = 0,
-+	GNUTLS_CIPHER_NULL = 1,
-+	GNUTLS_CIPHER_ARCFOUR_128 = 2,
-+	GNUTLS_CIPHER_3DES_CBC = 3,
-+	GNUTLS_CIPHER_AES_128_CBC = 4,
-+	GNUTLS_CIPHER_AES_256_CBC = 5,
-+	GNUTLS_CIPHER_ARCFOUR_40 = 6,
-+	GNUTLS_CIPHER_CAMELLIA_128_CBC = 7,
-+	GNUTLS_CIPHER_CAMELLIA_256_CBC = 8,
-+	GNUTLS_CIPHER_AES_192_CBC = 9,
-+	GNUTLS_CIPHER_AES_128_GCM = 10,
-+	GNUTLS_CIPHER_AES_256_GCM = 11,
-+	GNUTLS_CIPHER_CAMELLIA_192_CBC = 12,
-+	GNUTLS_CIPHER_SALSA20_256 = 13,
-+	GNUTLS_CIPHER_ESTREAM_SALSA20_256 = 14,
-+	GNUTLS_CIPHER_CAMELLIA_128_GCM = 15,
-+	GNUTLS_CIPHER_CAMELLIA_256_GCM = 16,
-+	GNUTLS_CIPHER_RC2_40_CBC = 17,
-+	GNUTLS_CIPHER_DES_CBC = 18,
-+	GNUTLS_CIPHER_AES_128_CCM = 19,
-+	GNUTLS_CIPHER_AES_256_CCM = 20,
-+	GNUTLS_CIPHER_AES_128_CCM_8 = 21,
-+	GNUTLS_CIPHER_AES_256_CCM_8 = 22,
-+	GNUTLS_CIPHER_CHACHA20_POLY1305 = 23,
-+	GNUTLS_CIPHER_GOST28147_TC26Z_CFB = 24,
-+	GNUTLS_CIPHER_GOST28147_CPA_CFB = 25,
-+	GNUTLS_CIPHER_GOST28147_CPB_CFB = 26,
-+	GNUTLS_CIPHER_GOST28147_CPC_CFB = 27,
-+	GNUTLS_CIPHER_GOST28147_CPD_CFB = 28,
-+	GNUTLS_CIPHER_AES_128_CFB8 = 29,
-+	GNUTLS_CIPHER_AES_192_CFB8 = 30,
-+	GNUTLS_CIPHER_AES_256_CFB8 = 31,
-+
-+	/* used only for PGP internals. Ignored in TLS/SSL
-+	 */
-+	GNUTLS_CIPHER_IDEA_PGP_CFB = 200,
-+	GNUTLS_CIPHER_3DES_PGP_CFB = 201,
-+	GNUTLS_CIPHER_CAST5_PGP_CFB = 202,
-+	GNUTLS_CIPHER_BLOWFISH_PGP_CFB = 203,
-+	GNUTLS_CIPHER_SAFER_SK128_PGP_CFB = 204,
-+	GNUTLS_CIPHER_AES128_PGP_CFB = 205,
-+	GNUTLS_CIPHER_AES192_PGP_CFB = 206,
-+	GNUTLS_CIPHER_AES256_PGP_CFB = 207,
-+	GNUTLS_CIPHER_TWOFISH_PGP_CFB = 208
-+} gnutls_cipher_algorithm_t;
-+
-+/**
-+ * gnutls_kx_algorithm_t:
-+ * @GNUTLS_KX_UNKNOWN: Unknown key-exchange algorithm.
-+ * @GNUTLS_KX_RSA: RSA key-exchange algorithm.
-+ * @GNUTLS_KX_DHE_DSS: DHE-DSS key-exchange algorithm.
-+ * @GNUTLS_KX_DHE_RSA: DHE-RSA key-exchange algorithm.
-+ * @GNUTLS_KX_ECDHE_RSA: ECDHE-RSA key-exchange algorithm.
-+ * @GNUTLS_KX_ECDHE_ECDSA: ECDHE-ECDSA key-exchange algorithm.
-+ * @GNUTLS_KX_ANON_DH: Anon-DH key-exchange algorithm.
-+ * @GNUTLS_KX_ANON_ECDH: Anon-ECDH key-exchange algorithm.
-+ * @GNUTLS_KX_SRP: SRP key-exchange algorithm.
-+ * @GNUTLS_KX_RSA_EXPORT: RSA-EXPORT key-exchange algorithm (defunc).
-+ * @GNUTLS_KX_SRP_RSA: SRP-RSA key-exchange algorithm.
-+ * @GNUTLS_KX_SRP_DSS: SRP-DSS key-exchange algorithm.
-+ * @GNUTLS_KX_PSK: PSK key-exchange algorithm.
-+ * @GNUTLS_KX_DHE_PSK: DHE-PSK key-exchange algorithm.
-+ * @GNUTLS_KX_ECDHE_PSK: ECDHE-PSK key-exchange algorithm.
-+ * @GNUTLS_KX_RSA_PSK: RSA-PSK key-exchange algorithm.
-+ *
-+ * Enumeration of different key exchange algorithms.
-+ */
-+typedef enum {
-+	GNUTLS_KX_UNKNOWN = 0,
-+	GNUTLS_KX_RSA = 1,
-+	GNUTLS_KX_DHE_DSS = 2,
-+	GNUTLS_KX_DHE_RSA = 3,
-+	GNUTLS_KX_ANON_DH = 4,
-+	GNUTLS_KX_SRP = 5,
-+	GNUTLS_KX_RSA_EXPORT = 6,
-+	GNUTLS_KX_SRP_RSA = 7,
-+	GNUTLS_KX_SRP_DSS = 8,
-+	GNUTLS_KX_PSK = 9,
-+	GNUTLS_KX_DHE_PSK = 10,
-+	GNUTLS_KX_ANON_ECDH = 11,
-+	GNUTLS_KX_ECDHE_RSA = 12,
-+	GNUTLS_KX_ECDHE_ECDSA = 13,
-+	GNUTLS_KX_ECDHE_PSK = 14,
-+	GNUTLS_KX_RSA_PSK = 15
-+} gnutls_kx_algorithm_t;
-+
-+/**
-+ * gnutls_params_type_t:
-+ * @GNUTLS_PARAMS_RSA_EXPORT: Session RSA-EXPORT parameters (defunc).
-+ * @GNUTLS_PARAMS_DH: Session Diffie-Hellman parameters.
-+ * @GNUTLS_PARAMS_ECDH: Session Elliptic-Curve Diffie-Hellman parameters.
-+ *
-+ * Enumeration of different TLS session parameter types.
-+ */
-+typedef enum {
-+	GNUTLS_PARAMS_RSA_EXPORT = 1,
-+	GNUTLS_PARAMS_DH = 2,
-+	GNUTLS_PARAMS_ECDH = 3
-+} gnutls_params_type_t;
-+
-+/**
-+ * gnutls_credentials_type_t:
-+ * @GNUTLS_CRD_CERTIFICATE: Certificate credential.
-+ * @GNUTLS_CRD_ANON: Anonymous credential.
-+ * @GNUTLS_CRD_SRP: SRP credential.
-+ * @GNUTLS_CRD_PSK: PSK credential.
-+ * @GNUTLS_CRD_IA: IA credential.
-+ *
-+ * Enumeration of different credential types.
-+ */
-+typedef enum {
-+	GNUTLS_CRD_CERTIFICATE = 1,
-+	GNUTLS_CRD_ANON,
-+	GNUTLS_CRD_SRP,
-+	GNUTLS_CRD_PSK,
-+	GNUTLS_CRD_IA
-+} gnutls_credentials_type_t;
-+
-+#define GNUTLS_MAC_SHA GNUTLS_MAC_SHA1
-+#define GNUTLS_DIG_SHA GNUTLS_DIG_SHA1
-+
-+/**
-+ * gnutls_mac_algorithm_t:
-+ * @GNUTLS_MAC_UNKNOWN: Unknown MAC algorithm.
-+ * @GNUTLS_MAC_NULL: NULL MAC algorithm (empty output).
-+ * @GNUTLS_MAC_MD5: HMAC-MD5 algorithm.
-+ * @GNUTLS_MAC_SHA1: HMAC-SHA-1 algorithm.
-+ * @GNUTLS_MAC_RMD160: HMAC-RMD160 algorithm.
-+ * @GNUTLS_MAC_MD2: HMAC-MD2 algorithm.
-+ * @GNUTLS_MAC_SHA256: HMAC-SHA-256 algorithm.
-+ * @GNUTLS_MAC_SHA384: HMAC-SHA-384 algorithm.
-+ * @GNUTLS_MAC_SHA512: HMAC-SHA-512 algorithm.
-+ * @GNUTLS_MAC_SHA224: HMAC-SHA-224 algorithm.
-+ * @GNUTLS_MAC_MD5_SHA1: Combined MD5+SHA1 MAC placeholder.
-+ * @GNUTLS_MAC_GOSTR_94: HMAC GOST R 34.11-94 algorithm.
-+ * @GNUTLS_MAC_STREEBOG_256: HMAC GOST R 34.11-2001 (Streebog) algorithm, 256 bit.
-+ * @GNUTLS_MAC_STREEBOG_512: HMAC GOST R 34.11-2001 (Streebog) algorithm, 512 bit.
-+ * @GNUTLS_MAC_AEAD: MAC implicit through AEAD cipher.
-+ * @GNUTLS_MAC_UMAC_96: The UMAC-96 MAC algorithm.
-+ * @GNUTLS_MAC_UMAC_128: The UMAC-128 MAC algorithm.
-+ * @GNUTLS_MAC_AES_CMAC_128: The AES-CMAC-128 MAC algorithm.
-+ * @GNUTLS_MAC_AES_CMAC_256: The AES-CMAC-256 MAC algorithm.
-+ * @GNUTLS_MAC_SHA3_224: Reserved; unimplemented.
-+ * @GNUTLS_MAC_SHA3_256: Reserved; unimplemented.
-+ * @GNUTLS_MAC_SHA3_384: Reserved; unimplemented.
-+ * @GNUTLS_MAC_SHA3_512: Reserved; unimplemented.
-+ *
-+ * Enumeration of different Message Authentication Code (MAC)
-+ * algorithms.
-+ */
-+typedef enum {
-+	GNUTLS_MAC_UNKNOWN = 0,
-+	GNUTLS_MAC_NULL = 1,
-+	GNUTLS_MAC_MD5 = 2,
-+	GNUTLS_MAC_SHA1 = 3,
-+	GNUTLS_MAC_RMD160 = 4,
-+	GNUTLS_MAC_MD2 = 5,
-+	GNUTLS_MAC_SHA256 = 6,
-+	GNUTLS_MAC_SHA384 = 7,
-+	GNUTLS_MAC_SHA512 = 8,
-+	GNUTLS_MAC_SHA224 = 9,
-+	GNUTLS_MAC_SHA3_224 = 10, /* reserved: no implementation */
-+	GNUTLS_MAC_SHA3_256 = 11, /* reserved: no implementation */
-+	GNUTLS_MAC_SHA3_384 = 12, /* reserved: no implementation */
-+	GNUTLS_MAC_SHA3_512 = 13, /* reserved: no implementation */
-+	GNUTLS_MAC_MD5_SHA1 = 14, /* reserved: no implementation */
-+	GNUTLS_MAC_GOSTR_94 = 15,
-+	GNUTLS_MAC_STREEBOG_256 = 16,
-+	GNUTLS_MAC_STREEBOG_512 = 17,
-+	/* If you add anything here, make sure you align with
-+	   gnutls_digest_algorithm_t. */
-+	GNUTLS_MAC_AEAD = 200,	/* indicates that MAC is on the cipher */
-+	GNUTLS_MAC_UMAC_96 = 201,
-+	GNUTLS_MAC_UMAC_128 = 202,
-+	GNUTLS_MAC_AES_CMAC_128 = 203,
-+	GNUTLS_MAC_AES_CMAC_256 = 204,
-+} gnutls_mac_algorithm_t;
-+
-+/**
-+ * gnutls_digest_algorithm_t:
-+ * @GNUTLS_DIG_UNKNOWN: Unknown hash algorithm.
-+ * @GNUTLS_DIG_NULL: NULL hash algorithm (empty output).
-+ * @GNUTLS_DIG_MD5: MD5 algorithm.
-+ * @GNUTLS_DIG_SHA1: SHA-1 algorithm.
-+ * @GNUTLS_DIG_RMD160: RMD160 algorithm.
-+ * @GNUTLS_DIG_MD2: MD2 algorithm.
-+ * @GNUTLS_DIG_SHA256: SHA-256 algorithm.
-+ * @GNUTLS_DIG_SHA384: SHA-384 algorithm.
-+ * @GNUTLS_DIG_SHA512: SHA-512 algorithm.
-+ * @GNUTLS_DIG_SHA224: SHA-224 algorithm.
-+ * @GNUTLS_DIG_SHA3_224: SHA3-224 algorithm.
-+ * @GNUTLS_DIG_SHA3_256: SHA3-256 algorithm.
-+ * @GNUTLS_DIG_SHA3_384: SHA3-384 algorithm.
-+ * @GNUTLS_DIG_SHA3_512: SHA3-512 algorithm.
-+ * @GNUTLS_DIG_MD5_SHA1: Combined MD5+SHA1 algorithm.
-+ * @GNUTLS_DIG_GOSTR_94: GOST R 34.11-94 algorithm.
-+ * @GNUTLS_DIG_STREEBOG_256: GOST R 34.11-2001 (Streebog) algorithm, 256 bit.
-+ * @GNUTLS_DIG_STREEBOG_512: GOST R 34.11-2001 (Streebog) algorithm, 512 bit.
-+ *
-+ * Enumeration of different digest (hash) algorithms.
-+ */
-+typedef enum {
-+	GNUTLS_DIG_UNKNOWN = GNUTLS_MAC_UNKNOWN,
-+	GNUTLS_DIG_NULL = GNUTLS_MAC_NULL,
-+	GNUTLS_DIG_MD5 = GNUTLS_MAC_MD5,
-+	GNUTLS_DIG_SHA1 = GNUTLS_MAC_SHA1,
-+	GNUTLS_DIG_RMD160 = GNUTLS_MAC_RMD160,
-+	GNUTLS_DIG_MD2 = GNUTLS_MAC_MD2,
-+	GNUTLS_DIG_SHA256 = GNUTLS_MAC_SHA256,
-+	GNUTLS_DIG_SHA384 = GNUTLS_MAC_SHA384,
-+	GNUTLS_DIG_SHA512 = GNUTLS_MAC_SHA512,
-+	GNUTLS_DIG_SHA224 = GNUTLS_MAC_SHA224,
-+	GNUTLS_DIG_SHA3_224 = GNUTLS_MAC_SHA3_224,
-+	GNUTLS_DIG_SHA3_256 = GNUTLS_MAC_SHA3_256,
-+	GNUTLS_DIG_SHA3_384 = GNUTLS_MAC_SHA3_384,
-+	GNUTLS_DIG_SHA3_512 = GNUTLS_MAC_SHA3_512,
-+	GNUTLS_DIG_MD5_SHA1 = GNUTLS_MAC_MD5_SHA1,
-+	GNUTLS_DIG_GOSTR_94 = GNUTLS_MAC_GOSTR_94,
-+	GNUTLS_DIG_STREEBOG_256 = GNUTLS_MAC_STREEBOG_256,
-+	GNUTLS_DIG_STREEBOG_512 = GNUTLS_MAC_STREEBOG_512
-+	    /* If you add anything here, make sure you align with
-+	       gnutls_mac_algorithm_t. */
-+} gnutls_digest_algorithm_t;
-+
-+  /* exported for other gnutls headers. This is the maximum number of
-+   * algorithms (ciphers, kx or macs).
-+   */
-+#define GNUTLS_MAX_ALGORITHM_NUM 64
-+#define GNUTLS_MAX_SESSION_ID_SIZE 32
-+
-+/**
-+ * gnutls_compression_method_t:
-+ * @GNUTLS_COMP_UNKNOWN: Unknown compression method.
-+ * @GNUTLS_COMP_NULL: The NULL compression method (no compression).
-+ * @GNUTLS_COMP_DEFLATE: The DEFLATE compression method from zlib.
-+ * @GNUTLS_COMP_ZLIB: Same as %GNUTLS_COMP_DEFLATE.
-+ *
-+ * Enumeration of different TLS compression methods.
-+ */
-+typedef enum {
-+	GNUTLS_COMP_UNKNOWN = 0,
-+	GNUTLS_COMP_NULL = 1,
-+	GNUTLS_COMP_DEFLATE = 2,
-+	GNUTLS_COMP_ZLIB = GNUTLS_COMP_DEFLATE
-+} gnutls_compression_method_t;
-+
-+/**
-+ * gnutls_init_flags_t:
-+ *
-+ * @GNUTLS_SERVER: Connection end is a server.
-+ * @GNUTLS_CLIENT: Connection end is a client.
-+ * @GNUTLS_DATAGRAM: Connection is datagram oriented (DTLS). Since 3.0.0.
-+ * @GNUTLS_NONBLOCK: Connection should not block. Since 3.0.0.
-+ * @GNUTLS_NO_SIGNAL: In systems where SIGPIPE is delivered on send, it will be disabled. That flag has effect in systems which support the MSG_NOSIGNAL sockets flag (since 3.4.2).
-+ * @GNUTLS_NO_EXTENSIONS: Do not enable any TLS extensions by default (since 3.1.2). As TLS 1.2 and later require extensions this option is considered obsolete and should not be used.
-+ * @GNUTLS_NO_REPLAY_PROTECTION: Disable any replay protection in DTLS. This must only be used if  replay protection is achieved using other means. Since 3.2.2.
-+ * @GNUTLS_ALLOW_ID_CHANGE: Allow the peer to replace its certificate, or change its ID during a rehandshake. This change is often used in attacks and thus prohibited by default. Since 3.5.0.
-+ * @GNUTLS_ENABLE_FALSE_START: Enable the TLS false start on client side if the negotiated ciphersuites allow it. This will enable sending data prior to the handshake being complete, and may introduce a risk of crypto failure when combined with certain key exchanged; for that GnuTLS may not enable that option in ciphersuites that are known to be not safe for false start. Since 3.5.0.
-+ * @GNUTLS_ENABLE_EARLY_START: Under TLS1.3 allow the server to return earlier than the full handshake
-+ *   finish; similarly to false start the handshake will be completed once data are received by the
-+ *   client, while the server is able to transmit sooner. This is not enabled by default as it could
-+ *   break certain existing server assumptions and use-cases. Since 3.6.4.
-+ * @GNUTLS_ENABLE_EARLY_DATA: Under TLS1.3 allow the server to receive early data sent as part of the initial ClientHello (0-RTT). This is not enabled by default as early data has weaker security properties than other data. Since 3.6.5.
-+ * @GNUTLS_FORCE_CLIENT_CERT: When in client side and only a single cert is specified, send that certificate irrespective of the issuers expected by the server. Since 3.5.0.
-+ * @GNUTLS_NO_TICKETS: Flag to indicate that the session should not use resumption with session tickets.
-+ * @GNUTLS_KEY_SHARE_TOP3: Generate key shares for the top-3 different groups which are enabled.
-+ *   That is, as each group is associated with a key type (EC, finite field, x25519), generate
-+ *   three keys using %GNUTLS_PK_DH, %GNUTLS_PK_EC, %GNUTLS_PK_ECDH_X25519 if all of them are enabled.
-+ * @GNUTLS_KEY_SHARE_TOP2: Generate key shares for the top-2 different groups which are enabled.
-+ *   For example (ECDH + x25519). This is the default.
-+ * @GNUTLS_KEY_SHARE_TOP: Generate key share for the first group which is enabled.
-+ *   For example x25519. This option is the most performant for client (less CPU spent
-+ *   generating keys), but if the server doesn't support the advertized option it may
-+ *   result to more roundtrips needed to discover the server's choice.
-+ * @GNUTLS_NO_AUTO_REKEY: Disable auto-rekeying under TLS1.3. If this option is not specified
-+ *   gnutls will force a rekey after 2^24 records have been sent.
-+ * @GNUTLS_POST_HANDSHAKE_AUTH: Enable post handshake authentication for server and client. When set and
-+ *   a server requests authentication after handshake %GNUTLS_E_REAUTH_REQUEST will be returned
-+ *   by gnutls_record_recv(). A client should then call gnutls_reauth() to re-authenticate.
-+ * @GNUTLS_SAFE_PADDING_CHECK: Flag to indicate that the TLS 1.3 padding check will be done in a
-+ *   safe way which doesn't leak the pad size based on GnuTLS processing time. This is of use to
-+ *   applications which hide the length of transferred data via the TLS1.3 padding mechanism and
-+ *   are already taking steps to hide the data processing time. This comes at a performance
-+ *   penalty.
-+ * @GNUTLS_AUTO_REAUTH: Enable transparent re-authentication in client side when the server
-+ *    requests to. That is, reauthentication is handled within gnutls_record_recv(), and
-+ *    the %GNUTLS_E_REHANDSHAKE or %GNUTLS_E_REAUTH_REQUEST are not returned. This must be
-+ *    enabled with %GNUTLS_POST_HANDSHAKE_AUTH for TLS1.3. Enabling this flag requires to restore
-+ *    interrupted calls to gnutls_record_recv() based on the output of gnutls_record_get_direction(),
-+ *    since gnutls_record_recv() could be interrupted when sending when this flag is enabled.
-+ *    Note this flag may not be used if you are using the same session for sending and receiving
-+ *    in different threads.
-+ * @GNUTLS_ENABLE_EARLY_DATA: Under TLS1.3 allow the server to receive early data sent as part of the initial ClientHello (0-RTT).
-+ *    This is not enabled by default as early data has weaker security properties than other data. Since 3.6.5.
-+ * @GNUTLS_ENABLE_RAWPK: Allows raw public-keys to be negotiated during the handshake. Since 3.6.6.
-+ *
-+ * Enumeration of different flags for gnutls_init() function. All the flags
-+ * can be combined except @GNUTLS_SERVER and @GNUTLS_CLIENT which are mutually
-+ * exclusive.
-+ *
-+ * The key share options relate to the TLS 1.3 key share extension
-+ * which is a speculative key generation expecting that the server
-+ * would support the generated key.
-+ */
-+typedef enum {
-+	GNUTLS_SERVER = 1,
-+	GNUTLS_CLIENT = (1<<1),
-+	GNUTLS_DATAGRAM = (1<<2),
-+	GNUTLS_NONBLOCK = (1<<3),
-+	GNUTLS_NO_EXTENSIONS = (1<<4),
-+	GNUTLS_NO_REPLAY_PROTECTION = (1<<5),
-+	GNUTLS_NO_SIGNAL = (1<<6),
-+	GNUTLS_ALLOW_ID_CHANGE = (1<<7),
-+	GNUTLS_ENABLE_FALSE_START = (1<<8),
-+	GNUTLS_FORCE_CLIENT_CERT = (1<<9),
-+	GNUTLS_NO_TICKETS = (1<<10),
-+	GNUTLS_KEY_SHARE_TOP = (1<<11),
-+	GNUTLS_KEY_SHARE_TOP2 = (1<<12),
-+	GNUTLS_KEY_SHARE_TOP3 = (1<<13),
-+	GNUTLS_POST_HANDSHAKE_AUTH = (1<<14),
-+	GNUTLS_NO_AUTO_REKEY = (1<<15),
-+	GNUTLS_SAFE_PADDING_CHECK = (1<<16),
-+	GNUTLS_ENABLE_EARLY_START = (1<<17),
-+	GNUTLS_ENABLE_RAWPK = (1<<18),
-+	GNUTLS_AUTO_REAUTH = (1<<19),
-+	GNUTLS_ENABLE_EARLY_DATA = (1<<20)
-+} gnutls_init_flags_t;
-+
-+/* compatibility defines (previous versions of gnutls
-+ * used defines instead of enumerated values). */
-+#define GNUTLS_SERVER (1)
-+#define GNUTLS_CLIENT (1<<1)
-+#define GNUTLS_DATAGRAM (1<<2)
-+#define GNUTLS_NONBLOCK (1<<3)
-+#define GNUTLS_NO_EXTENSIONS (1<<4)
-+#define GNUTLS_NO_REPLAY_PROTECTION (1<<5)
-+#define GNUTLS_NO_SIGNAL (1<<6)
-+#define GNUTLS_ALLOW_ID_CHANGE (1<<7)
-+#define GNUTLS_ENABLE_FALSE_START (1<<8)
-+#define GNUTLS_FORCE_CLIENT_CERT (1<<9)
-+#define GNUTLS_NO_TICKETS (1<<10)
-+#define GNUTLS_ENABLE_CERT_TYPE_NEG 0
-+	// Here for compatibility reasons
-+
-+/**
-+ * gnutls_alert_level_t:
-+ * @GNUTLS_AL_WARNING: Alert of warning severity.
-+ * @GNUTLS_AL_FATAL: Alert of fatal severity.
-+ *
-+ * Enumeration of different TLS alert severities.
-+ */
-+typedef enum {
-+	GNUTLS_AL_WARNING = 1,
-+	GNUTLS_AL_FATAL
-+} gnutls_alert_level_t;
-+
-+/**
-+ * gnutls_alert_description_t:
-+ * @GNUTLS_A_CLOSE_NOTIFY: Close notify.
-+ * @GNUTLS_A_UNEXPECTED_MESSAGE: Unexpected message.
-+ * @GNUTLS_A_BAD_RECORD_MAC: Bad record MAC.
-+ * @GNUTLS_A_DECRYPTION_FAILED: Decryption failed.
-+ * @GNUTLS_A_RECORD_OVERFLOW: Record overflow.
-+ * @GNUTLS_A_DECOMPRESSION_FAILURE: Decompression failed.
-+ * @GNUTLS_A_HANDSHAKE_FAILURE: Handshake failed.
-+ * @GNUTLS_A_SSL3_NO_CERTIFICATE: No certificate.
-+ * @GNUTLS_A_BAD_CERTIFICATE: Certificate is bad.
-+ * @GNUTLS_A_UNSUPPORTED_CERTIFICATE: Certificate is not supported.
-+ * @GNUTLS_A_CERTIFICATE_REVOKED: Certificate was revoked.
-+ * @GNUTLS_A_CERTIFICATE_EXPIRED: Certificate is expired.
-+ * @GNUTLS_A_CERTIFICATE_UNKNOWN: Unknown certificate.
-+ * @GNUTLS_A_ILLEGAL_PARAMETER: Illegal parameter.
-+ * @GNUTLS_A_UNKNOWN_CA: CA is unknown.
-+ * @GNUTLS_A_ACCESS_DENIED: Access was denied.
-+ * @GNUTLS_A_DECODE_ERROR: Decode error.
-+ * @GNUTLS_A_DECRYPT_ERROR: Decrypt error.
-+ * @GNUTLS_A_EXPORT_RESTRICTION: Export restriction.
-+ * @GNUTLS_A_PROTOCOL_VERSION: Error in protocol version.
-+ * @GNUTLS_A_INSUFFICIENT_SECURITY: Insufficient security.
-+ * @GNUTLS_A_INTERNAL_ERROR: Internal error.
-+ * @GNUTLS_A_INAPPROPRIATE_FALLBACK: Inappropriate fallback,
-+ * @GNUTLS_A_USER_CANCELED: User canceled.
-+ * @GNUTLS_A_NO_RENEGOTIATION: No renegotiation is allowed.
-+ * @GNUTLS_A_MISSING_EXTENSION: An extension was expected but was not seen
-+ * @GNUTLS_A_UNSUPPORTED_EXTENSION: An unsupported extension was
-+ *   sent.
-+ * @GNUTLS_A_CERTIFICATE_UNOBTAINABLE: Could not retrieve the
-+ *   specified certificate.
-+ * @GNUTLS_A_UNRECOGNIZED_NAME: The server name sent was not
-+ *   recognized.
-+ * @GNUTLS_A_UNKNOWN_PSK_IDENTITY: The SRP/PSK username is missing
-+ *   or not known.
-+ * @GNUTLS_A_CERTIFICATE_REQUIRED: Certificate is required.
-+ * @GNUTLS_A_NO_APPLICATION_PROTOCOL: The ALPN protocol requested is
-+ *   not supported by the peer.
-+ *
-+ * Enumeration of different TLS alerts.
-+ */
-+typedef enum {
-+	GNUTLS_A_CLOSE_NOTIFY,
-+	GNUTLS_A_UNEXPECTED_MESSAGE = 10,
-+	GNUTLS_A_BAD_RECORD_MAC = 20,
-+	GNUTLS_A_DECRYPTION_FAILED,
-+	GNUTLS_A_RECORD_OVERFLOW,
-+	GNUTLS_A_DECOMPRESSION_FAILURE = 30,
-+	GNUTLS_A_HANDSHAKE_FAILURE = 40,
-+	GNUTLS_A_SSL3_NO_CERTIFICATE = 41,
-+	GNUTLS_A_BAD_CERTIFICATE = 42,
-+	GNUTLS_A_UNSUPPORTED_CERTIFICATE,
-+	GNUTLS_A_CERTIFICATE_REVOKED,
-+	GNUTLS_A_CERTIFICATE_EXPIRED,
-+	GNUTLS_A_CERTIFICATE_UNKNOWN,
-+	GNUTLS_A_ILLEGAL_PARAMETER,
-+	GNUTLS_A_UNKNOWN_CA,
-+	GNUTLS_A_ACCESS_DENIED,
-+	GNUTLS_A_DECODE_ERROR = 50,
-+	GNUTLS_A_DECRYPT_ERROR,
-+	GNUTLS_A_EXPORT_RESTRICTION = 60,
-+	GNUTLS_A_PROTOCOL_VERSION = 70,
-+	GNUTLS_A_INSUFFICIENT_SECURITY,
-+	GNUTLS_A_INTERNAL_ERROR = 80,
-+	GNUTLS_A_INAPPROPRIATE_FALLBACK = 86,
-+	GNUTLS_A_USER_CANCELED = 90,
-+	GNUTLS_A_NO_RENEGOTIATION = 100,
-+	GNUTLS_A_MISSING_EXTENSION = 109,
-+	GNUTLS_A_UNSUPPORTED_EXTENSION = 110,
-+	GNUTLS_A_CERTIFICATE_UNOBTAINABLE = 111,
-+	GNUTLS_A_UNRECOGNIZED_NAME = 112,
-+	GNUTLS_A_UNKNOWN_PSK_IDENTITY = 115,
-+	GNUTLS_A_CERTIFICATE_REQUIRED = 116,
-+	GNUTLS_A_NO_APPLICATION_PROTOCOL = 120,
-+	GNUTLS_A_MAX = GNUTLS_A_NO_APPLICATION_PROTOCOL
-+} gnutls_alert_description_t;
-+
-+/**
-+ * gnutls_handshake_description_t:
-+ * @GNUTLS_HANDSHAKE_HELLO_REQUEST: Hello request.
-+ * @GNUTLS_HANDSHAKE_HELLO_VERIFY_REQUEST: DTLS Hello verify request.
-+ * @GNUTLS_HANDSHAKE_CLIENT_HELLO: Client hello.
-+ * @GNUTLS_HANDSHAKE_SERVER_HELLO: Server hello.
-+ * @GNUTLS_HANDSHAKE_END_OF_EARLY_DATA: End of early data.
-+ * @GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST: Hello retry request.
-+ * @GNUTLS_HANDSHAKE_NEW_SESSION_TICKET: New session ticket.
-+ * @GNUTLS_HANDSHAKE_CERTIFICATE_PKT: Certificate packet.
-+ * @GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE: Server key exchange.
-+ * @GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST: Certificate request.
-+ * @GNUTLS_HANDSHAKE_SERVER_HELLO_DONE: Server hello done.
-+ * @GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY: Certificate verify.
-+ * @GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE: Client key exchange.
-+ * @GNUTLS_HANDSHAKE_FINISHED: Finished.
-+ * @GNUTLS_HANDSHAKE_CERTIFICATE_STATUS: Certificate status (OCSP).
-+ * @GNUTLS_HANDSHAKE_KEY_UPDATE: TLS1.3 key update message.
-+ * @GNUTLS_HANDSHAKE_SUPPLEMENTAL: Supplemental.
-+ * @GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC: Change Cipher Spec.
-+ * @GNUTLS_HANDSHAKE_CLIENT_HELLO_V2: SSLv2 Client Hello.
-+ * @GNUTLS_HANDSHAKE_ENCRYPTED_EXTENSIONS: Encrypted extensions message.
-+ *
-+ * Enumeration of different TLS handshake packets.
-+ */
-+typedef enum {
-+	GNUTLS_HANDSHAKE_HELLO_REQUEST = 0,
-+	GNUTLS_HANDSHAKE_CLIENT_HELLO = 1,
-+	GNUTLS_HANDSHAKE_SERVER_HELLO = 2,
-+	GNUTLS_HANDSHAKE_HELLO_VERIFY_REQUEST = 3,
-+	GNUTLS_HANDSHAKE_NEW_SESSION_TICKET = 4,
-+	GNUTLS_HANDSHAKE_END_OF_EARLY_DATA = 5,
-+	GNUTLS_HANDSHAKE_ENCRYPTED_EXTENSIONS = 8,
-+	GNUTLS_HANDSHAKE_CERTIFICATE_PKT = 11,
-+	GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE = 12,
-+	GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST = 13,
-+	GNUTLS_HANDSHAKE_SERVER_HELLO_DONE = 14,
-+	GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY = 15,
-+	GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE = 16,
-+	GNUTLS_HANDSHAKE_FINISHED = 20,
-+	GNUTLS_HANDSHAKE_CERTIFICATE_STATUS = 22,
-+	GNUTLS_HANDSHAKE_SUPPLEMENTAL = 23,
-+	GNUTLS_HANDSHAKE_KEY_UPDATE = 24,
-+	GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC = 254,
-+	GNUTLS_HANDSHAKE_CLIENT_HELLO_V2 = 1024,
-+	GNUTLS_HANDSHAKE_HELLO_RETRY_REQUEST = 1025,
-+} gnutls_handshake_description_t;
-+
-+#define GNUTLS_HANDSHAKE_ANY ((unsigned int)-1)
-+
-+const char
-+    *gnutls_handshake_description_get_name(gnutls_handshake_description_t
-+					   type);
-+
-+/**
-+ * gnutls_certificate_status_t:
-+ * @GNUTLS_CERT_INVALID: The certificate is not signed by one of the
-+ *   known authorities or the signature is invalid (deprecated by the flags
-+ *   %GNUTLS_CERT_SIGNATURE_FAILURE and %GNUTLS_CERT_SIGNER_NOT_FOUND).
-+ * @GNUTLS_CERT_SIGNATURE_FAILURE: The signature verification failed.
-+ * @GNUTLS_CERT_REVOKED: Certificate is revoked by its authority.  In X.509 this will be
-+ *   set only if CRLs are checked.
-+ * @GNUTLS_CERT_SIGNER_NOT_FOUND: The certificate's issuer is not known.
-+ *   This is the case if the issuer is not included in the trusted certificate list.
-+ * @GNUTLS_CERT_SIGNER_NOT_CA: The certificate's signer was not a CA. This
-+ *   may happen if this was a version 1 certificate, which is common with
-+ *   some CAs, or a version 3 certificate without the basic constrains extension.
-+ * @GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE: The certificate's signer constraints were
-+ *   violated.
-+ * @GNUTLS_CERT_INSECURE_ALGORITHM:  The certificate was signed using an insecure
-+ *   algorithm such as MD2 or MD5. These algorithms have been broken and
-+ *   should not be trusted.
-+ * @GNUTLS_CERT_NOT_ACTIVATED: The certificate is not yet activated.
-+ * @GNUTLS_CERT_EXPIRED: The certificate has expired.
-+ * @GNUTLS_CERT_REVOCATION_DATA_SUPERSEDED: The revocation data are old and have been superseded.
-+ * @GNUTLS_CERT_REVOCATION_DATA_ISSUED_IN_FUTURE: The revocation data have a future issue date.
-+ * @GNUTLS_CERT_UNEXPECTED_OWNER: The owner is not the expected one.
-+ * @GNUTLS_CERT_MISMATCH: The certificate presented isn't the expected one (TOFU)
-+ * @GNUTLS_CERT_PURPOSE_MISMATCH: The certificate or an intermediate does not match the intended purpose (extended key usage).
-+ * @GNUTLS_CERT_MISSING_OCSP_STATUS: The certificate requires the server to send the certifiate status, but no status was received.
-+ * @GNUTLS_CERT_INVALID_OCSP_STATUS: The received OCSP status response is invalid.
-+ * @GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS: The certificate has extensions marked as critical which are not supported.
-+ *
-+ * Enumeration of certificate status codes.  Note that the status
-+ * bits may have different meanings in OpenPGP keys and X.509
-+ * certificate verification.
-+ */
-+typedef enum {
-+	GNUTLS_CERT_INVALID = 1 << 1,
-+	GNUTLS_CERT_REVOKED = 1 << 5,
-+	GNUTLS_CERT_SIGNER_NOT_FOUND = 1 << 6,
-+	GNUTLS_CERT_SIGNER_NOT_CA = 1 << 7,
-+	GNUTLS_CERT_INSECURE_ALGORITHM = 1 << 8,
-+	GNUTLS_CERT_NOT_ACTIVATED = 1 << 9,
-+	GNUTLS_CERT_EXPIRED = 1 << 10,
-+	GNUTLS_CERT_SIGNATURE_FAILURE = 1 << 11,
-+	GNUTLS_CERT_REVOCATION_DATA_SUPERSEDED = 1 << 12,
-+	GNUTLS_CERT_UNEXPECTED_OWNER = 1 << 14,
-+	GNUTLS_CERT_REVOCATION_DATA_ISSUED_IN_FUTURE = 1 << 15,
-+	GNUTLS_CERT_SIGNER_CONSTRAINTS_FAILURE = 1 << 16,
-+	GNUTLS_CERT_MISMATCH = 1 << 17,
-+	GNUTLS_CERT_PURPOSE_MISMATCH = 1 << 18,
-+	GNUTLS_CERT_MISSING_OCSP_STATUS = 1 << 19,
-+	GNUTLS_CERT_INVALID_OCSP_STATUS = 1 << 20,
-+	GNUTLS_CERT_UNKNOWN_CRIT_EXTENSIONS = 1 << 21
-+} gnutls_certificate_status_t;
-+
-+/**
-+ * gnutls_certificate_request_t:
-+ * @GNUTLS_CERT_IGNORE: Ignore certificate.
-+ * @GNUTLS_CERT_REQUEST: Request certificate.
-+ * @GNUTLS_CERT_REQUIRE: Require certificate.
-+ *
-+ * Enumeration of certificate request types.
-+ */
-+typedef enum {
-+	GNUTLS_CERT_IGNORE = 0,
-+	GNUTLS_CERT_REQUEST = 1,
-+	GNUTLS_CERT_REQUIRE = 2
-+} gnutls_certificate_request_t;
-+
-+/**
-+ * gnutls_openpgp_crt_status_t:
-+ * @GNUTLS_OPENPGP_CERT: Send entire certificate.
-+ * @GNUTLS_OPENPGP_CERT_FINGERPRINT: Send only certificate fingerprint.
-+ *
-+ * Enumeration of ways to send OpenPGP certificate.
-+ */
-+typedef enum {
-+	GNUTLS_OPENPGP_CERT = 0,
-+	GNUTLS_OPENPGP_CERT_FINGERPRINT = 1
-+} gnutls_openpgp_crt_status_t;
-+
-+/**
-+ * gnutls_close_request_t:
-+ * @GNUTLS_SHUT_RDWR: Disallow further receives/sends.
-+ * @GNUTLS_SHUT_WR: Disallow further sends.
-+ *
-+ * Enumeration of how TLS session should be terminated.  See gnutls_bye().
-+ */
-+typedef enum {
-+	GNUTLS_SHUT_RDWR = 0,
-+	GNUTLS_SHUT_WR = 1
-+} gnutls_close_request_t;
-+
-+/**
-+ * gnutls_protocol_t:
-+ * @GNUTLS_SSL3: SSL version 3.0.
-+ * @GNUTLS_TLS1_0: TLS version 1.0.
-+ * @GNUTLS_TLS1: Same as %GNUTLS_TLS1_0.
-+ * @GNUTLS_TLS1_1: TLS version 1.1.
-+ * @GNUTLS_TLS1_2: TLS version 1.2.
-+ * @GNUTLS_TLS1_3: TLS version 1.3.
-+ * @GNUTLS_DTLS1_0: DTLS version 1.0.
-+ * @GNUTLS_DTLS1_2: DTLS version 1.2.
-+ * @GNUTLS_DTLS0_9: DTLS version 0.9 (Cisco AnyConnect / OpenSSL 0.9.8e).
-+ * @GNUTLS_TLS_VERSION_MAX: Maps to the highest supported TLS version.
-+ * @GNUTLS_DTLS_VERSION_MAX: Maps to the highest supported DTLS version.
-+ * @GNUTLS_VERSION_UNKNOWN: Unknown SSL/TLS version.
-+ *
-+ * Enumeration of different SSL/TLS protocol versions.
-+ */
-+typedef enum {
-+	GNUTLS_SSL3 = 1,
-+	GNUTLS_TLS1_0 = 2,
-+	GNUTLS_TLS1 = GNUTLS_TLS1_0,
-+	GNUTLS_TLS1_1 = 3,
-+	GNUTLS_TLS1_2 = 4,
-+	GNUTLS_TLS1_3 = 5,
-+
-+	GNUTLS_DTLS0_9 = 200,
-+	GNUTLS_DTLS1_0 = 201,	/* 201 */
-+	GNUTLS_DTLS1_2 = 202,
-+	GNUTLS_DTLS_VERSION_MIN = GNUTLS_DTLS0_9,
-+	GNUTLS_DTLS_VERSION_MAX = GNUTLS_DTLS1_2,
-+	GNUTLS_TLS_VERSION_MAX = GNUTLS_TLS1_3,
-+	GNUTLS_VERSION_UNKNOWN = 0xff	/* change it to 0xffff */
-+} gnutls_protocol_t;
-+
-+/**
-+ * gnutls_certificate_type_t:
-+ * @GNUTLS_CRT_UNKNOWN: Unknown certificate type.
-+ * @GNUTLS_CRT_X509: X.509 Certificate.
-+ * @GNUTLS_CRT_OPENPGP: OpenPGP certificate.
-+ * @GNUTLS_CRT_RAWPK: Raw public-key (SubjectPublicKeyInfo)
-+ *
-+ * Enumeration of different certificate types.
-+ */
-+typedef enum {
-+	GNUTLS_CRT_UNKNOWN = 0,
-+	GNUTLS_CRT_X509 = 1,
-+	GNUTLS_CRT_OPENPGP = 2,
-+	GNUTLS_CRT_RAWPK = 3,
-+	GNUTLS_CRT_MAX = GNUTLS_CRT_RAWPK
-+} gnutls_certificate_type_t;
-+
-+/**
-+ * gnutls_x509_crt_fmt_t:
-+ * @GNUTLS_X509_FMT_DER: X.509 certificate in DER format (binary).
-+ * @GNUTLS_X509_FMT_PEM: X.509 certificate in PEM format (text).
-+ *
-+ * Enumeration of different certificate encoding formats.
-+ */
-+typedef enum {
-+	GNUTLS_X509_FMT_DER = 0,
-+	GNUTLS_X509_FMT_PEM = 1
-+} gnutls_x509_crt_fmt_t;
-+
-+/**
-+ * gnutls_certificate_print_formats_t:
-+ * @GNUTLS_CRT_PRINT_FULL: Full information about certificate.
-+ * @GNUTLS_CRT_PRINT_FULL_NUMBERS: Full information about certificate and include easy to parse public key parameters.
-+ * @GNUTLS_CRT_PRINT_COMPACT: Information about certificate name in one line, plus identification of the public key.
-+ * @GNUTLS_CRT_PRINT_ONELINE: Information about certificate in one line.
-+ * @GNUTLS_CRT_PRINT_UNSIGNED_FULL: All info for an unsigned certificate.
-+ *
-+ * Enumeration of different certificate printing variants.
-+ */
-+typedef enum gnutls_certificate_print_formats {
-+	GNUTLS_CRT_PRINT_FULL = 0,
-+	GNUTLS_CRT_PRINT_ONELINE = 1,
-+	GNUTLS_CRT_PRINT_UNSIGNED_FULL = 2,
-+	GNUTLS_CRT_PRINT_COMPACT = 3,
-+	GNUTLS_CRT_PRINT_FULL_NUMBERS = 4
-+} gnutls_certificate_print_formats_t;
-+
-+#define GNUTLS_PK_ECC GNUTLS_PK_ECDSA
-+#define GNUTLS_PK_EC GNUTLS_PK_ECDSA
-+
-+#define GNUTLS_PK_ECDHX GNUTLS_PK_ECDH_X25519
-+/**
-+ * gnutls_pk_algorithm_t:
-+ * @GNUTLS_PK_UNKNOWN: Unknown public-key algorithm.
-+ * @GNUTLS_PK_RSA: RSA public-key algorithm.
-+ * @GNUTLS_PK_RSA_PSS: RSA public-key algorithm, with PSS padding.
-+ * @GNUTLS_PK_DSA: DSA public-key algorithm.
-+ * @GNUTLS_PK_DH: Diffie-Hellman algorithm. Used to generate parameters.
-+ * @GNUTLS_PK_ECDSA: Elliptic curve algorithm. These parameters are compatible with the ECDSA and ECDH algorithm.
-+ * @GNUTLS_PK_ECDH_X25519: Elliptic curve algorithm, restricted to ECDH as per rfc7748.
-+ * @GNUTLS_PK_EDDSA_ED25519: Edwards curve Digital signature algorithm. Used with SHA512 on signatures.
-+ * @GNUTLS_PK_GOST_01: GOST R 34.10-2001 algorithm per rfc5832.
-+ * @GNUTLS_PK_GOST_12_256: GOST R 34.10-2012 algorithm, 256-bit key per rfc7091.
-+ * @GNUTLS_PK_GOST_12_512: GOST R 34.10-2012 algorithm, 512-bit key per rfc7091.
-+ *
-+ * Enumeration of different public-key algorithms.
-+ */
-+typedef enum {
-+	GNUTLS_PK_UNKNOWN = 0,
-+	GNUTLS_PK_RSA = 1,
-+	GNUTLS_PK_DSA = 2,
-+	GNUTLS_PK_DH = 3,
-+	GNUTLS_PK_ECDSA = 4,
-+	GNUTLS_PK_ECDH_X25519 = 5,
-+	GNUTLS_PK_RSA_PSS = 6,
-+	GNUTLS_PK_EDDSA_ED25519 = 7,
-+	GNUTLS_PK_GOST_01 = 8,
-+	GNUTLS_PK_GOST_12_256 = 9,
-+	GNUTLS_PK_GOST_12_512 = 10,
-+	GNUTLS_PK_MAX = GNUTLS_PK_GOST_12_512
-+} gnutls_pk_algorithm_t;
-+
-+const char *gnutls_pk_algorithm_get_name(gnutls_pk_algorithm_t algorithm);
-+
-+/**
-+ * gnutls_sign_algorithm_t:
-+ * @GNUTLS_SIGN_UNKNOWN: Unknown signature algorithm.
-+ * @GNUTLS_SIGN_RSA_RAW: Digital signature algorithm RSA with DigestInfo formatted data
-+ * @GNUTLS_SIGN_RSA_SHA1: Digital signature algorithm RSA with SHA-1
-+ * @GNUTLS_SIGN_RSA_SHA: Same as %GNUTLS_SIGN_RSA_SHA1.
-+ * @GNUTLS_SIGN_DSA_SHA1: Digital signature algorithm DSA with SHA-1
-+ * @GNUTLS_SIGN_DSA_SHA224: Digital signature algorithm DSA with SHA-224
-+ * @GNUTLS_SIGN_DSA_SHA256: Digital signature algorithm DSA with SHA-256
-+ * @GNUTLS_SIGN_DSA_SHA384: Digital signature algorithm DSA with SHA-384
-+ * @GNUTLS_SIGN_DSA_SHA512: Digital signature algorithm DSA with SHA-512
-+ * @GNUTLS_SIGN_DSA_SHA: Same as %GNUTLS_SIGN_DSA_SHA1.
-+ * @GNUTLS_SIGN_RSA_MD5: Digital signature algorithm RSA with MD5.
-+ * @GNUTLS_SIGN_RSA_MD2: Digital signature algorithm RSA with MD2.
-+ * @GNUTLS_SIGN_RSA_RMD160: Digital signature algorithm RSA with RMD-160.
-+ * @GNUTLS_SIGN_RSA_SHA256: Digital signature algorithm RSA with SHA-256.
-+ * @GNUTLS_SIGN_RSA_SHA384: Digital signature algorithm RSA with SHA-384.
-+ * @GNUTLS_SIGN_RSA_SHA512: Digital signature algorithm RSA with SHA-512.
-+ * @GNUTLS_SIGN_RSA_SHA224: Digital signature algorithm RSA with SHA-224.
-+ * @GNUTLS_SIGN_ECDSA_SHA1: ECDSA with SHA1.
-+ * @GNUTLS_SIGN_ECDSA_SHA224: Digital signature algorithm ECDSA with SHA-224.
-+ * @GNUTLS_SIGN_ECDSA_SHA256: Digital signature algorithm ECDSA with SHA-256.
-+ * @GNUTLS_SIGN_ECDSA_SHA384: Digital signature algorithm ECDSA with SHA-384.
-+ * @GNUTLS_SIGN_ECDSA_SHA512: Digital signature algorithm ECDSA with SHA-512.
-+ * @GNUTLS_SIGN_ECDSA_SECP256R1_SHA256: Digital signature algorithm ECDSA-SECP256R1 with SHA-256 (used in TLS 1.3 but not PKIX).
-+ * @GNUTLS_SIGN_ECDSA_SECP384R1_SHA384: Digital signature algorithm ECDSA-SECP384R1 with SHA-384 (used in TLS 1.3 but not PKIX).
-+ * @GNUTLS_SIGN_ECDSA_SECP521R1_SHA512: Digital signature algorithm ECDSA-SECP521R1 with SHA-512 (used in TLS 1.3 but not PKIX).
-+ * @GNUTLS_SIGN_ECDSA_SHA3_224: Digital signature algorithm ECDSA with SHA3-224.
-+ * @GNUTLS_SIGN_ECDSA_SHA3_256: Digital signature algorithm ECDSA with SHA3-256.
-+ * @GNUTLS_SIGN_ECDSA_SHA3_384: Digital signature algorithm ECDSA with SHA3-384.
-+ * @GNUTLS_SIGN_ECDSA_SHA3_512: Digital signature algorithm ECDSA with SHA3-512.
-+ * @GNUTLS_SIGN_DSA_SHA3_224: Digital signature algorithm DSA with SHA3-224.
-+ * @GNUTLS_SIGN_DSA_SHA3_256: Digital signature algorithm DSA with SHA3-256.
-+ * @GNUTLS_SIGN_DSA_SHA3_384: Digital signature algorithm DSA with SHA3-384.
-+ * @GNUTLS_SIGN_DSA_SHA3_512: Digital signature algorithm DSA with SHA3-512.
-+ * @GNUTLS_SIGN_RSA_SHA3_224: Digital signature algorithm RSA with SHA3-224.
-+ * @GNUTLS_SIGN_RSA_SHA3_256: Digital signature algorithm RSA with SHA3-256.
-+ * @GNUTLS_SIGN_RSA_SHA3_384: Digital signature algorithm RSA with SHA3-384.
-+ * @GNUTLS_SIGN_RSA_SHA3_512: Digital signature algorithm RSA with SHA3-512.
-+ * @GNUTLS_SIGN_RSA_PSS_RSAE_SHA256: Digital signature algorithm RSA with SHA-256,
-+ *      with PSS padding (RSA PKCS#1 1.5 certificate). This signature is identical
-+ *      to #GNUTLS_SIGN_RSA_PSS_SHA256, but they are distinct as the TLS1.3 protocol
-+ *      treats them differently.
-+ * @GNUTLS_SIGN_RSA_PSS_RSAE_SHA384: Digital signature algorithm RSA with SHA-384,
-+ *      with PSS padding (RSA PKCS#1 1.5 certificate). This signature is identical
-+ *      to #GNUTLS_SIGN_RSA_PSS_SHA384, but they are distinct as the TLS1.3 protocol
-+ *      treats them differently.
-+ * @GNUTLS_SIGN_RSA_PSS_RSAE_SHA512: Digital signature algorithm RSA with SHA-512,
-+ *      with PSS padding (RSA PKCS#1 1.5 certificate). This signature is identical
-+ *      to #GNUTLS_SIGN_RSA_PSS_SHA512, but they are distinct as the TLS1.3 protocol
-+ *      treats them differently.
-+ * @GNUTLS_SIGN_RSA_PSS_SHA256: Digital signature algorithm RSA with SHA-256, with PSS padding (RSA-PSS certificate).
-+ * @GNUTLS_SIGN_RSA_PSS_SHA384: Digital signature algorithm RSA with SHA-384, with PSS padding (RSA-PSS certificate).
-+ * @GNUTLS_SIGN_RSA_PSS_SHA512: Digital signature algorithm RSA with SHA-512, with PSS padding (RSA-PSS certificate).
-+ * @GNUTLS_SIGN_EDDSA_ED25519: Digital signature algorithm EdDSA with Ed25519 curve.
-+ * @GNUTLS_SIGN_GOST_94: Digital signature algorithm GOST R 34.10-2001 with GOST R 34.11-94
-+ * @GNUTLS_SIGN_GOST_256: Digital signature algorithm GOST R 34.10-2012 with GOST R 34.11-2012 256 bit
-+ * @GNUTLS_SIGN_GOST_512: Digital signature algorithm GOST R 34.10-2012 with GOST R 34.11-2012 512 bit
-+ *
-+ * Enumeration of different digital signature algorithms.
-+ */
-+typedef enum {
-+	GNUTLS_SIGN_UNKNOWN = 0,
-+	GNUTLS_SIGN_RSA_SHA1 = 1,
-+	GNUTLS_SIGN_RSA_SHA = GNUTLS_SIGN_RSA_SHA1,
-+	GNUTLS_SIGN_DSA_SHA1 = 2,
-+	GNUTLS_SIGN_DSA_SHA = GNUTLS_SIGN_DSA_SHA1,
-+	GNUTLS_SIGN_RSA_MD5 = 3,
-+	GNUTLS_SIGN_RSA_MD2 = 4,
-+	GNUTLS_SIGN_RSA_RMD160 = 5,
-+	GNUTLS_SIGN_RSA_SHA256 = 6,
-+	GNUTLS_SIGN_RSA_SHA384 = 7,
-+	GNUTLS_SIGN_RSA_SHA512 = 8,
-+	GNUTLS_SIGN_RSA_SHA224 = 9,
-+	GNUTLS_SIGN_DSA_SHA224 = 10,
-+	GNUTLS_SIGN_DSA_SHA256 = 11,
-+	GNUTLS_SIGN_ECDSA_SHA1 = 12,
-+	GNUTLS_SIGN_ECDSA_SHA224 = 13,
-+	GNUTLS_SIGN_ECDSA_SHA256 = 14,
-+	GNUTLS_SIGN_ECDSA_SHA384 = 15,
-+	GNUTLS_SIGN_ECDSA_SHA512 = 16,
-+	GNUTLS_SIGN_DSA_SHA384 = 17,
-+	GNUTLS_SIGN_DSA_SHA512 = 18,
-+	GNUTLS_SIGN_ECDSA_SHA3_224 = 20,
-+	GNUTLS_SIGN_ECDSA_SHA3_256 = 21,
-+	GNUTLS_SIGN_ECDSA_SHA3_384 = 22,
-+	GNUTLS_SIGN_ECDSA_SHA3_512 = 23,
-+
-+	GNUTLS_SIGN_DSA_SHA3_224 = 24,
-+	GNUTLS_SIGN_DSA_SHA3_256 = 25,
-+	GNUTLS_SIGN_DSA_SHA3_384 = 26,
-+	GNUTLS_SIGN_DSA_SHA3_512 = 27,
-+	GNUTLS_SIGN_RSA_SHA3_224 = 28,
-+	GNUTLS_SIGN_RSA_SHA3_256 = 29,
-+	GNUTLS_SIGN_RSA_SHA3_384 = 30,
-+	GNUTLS_SIGN_RSA_SHA3_512 = 31,
-+
-+	GNUTLS_SIGN_RSA_PSS_SHA256 = 32,
-+	GNUTLS_SIGN_RSA_PSS_SHA384 = 33,
-+	GNUTLS_SIGN_RSA_PSS_SHA512 = 34,
-+	GNUTLS_SIGN_EDDSA_ED25519 = 35,
-+	GNUTLS_SIGN_RSA_RAW = 36,
-+
-+	GNUTLS_SIGN_ECDSA_SECP256R1_SHA256 = 37,
-+	GNUTLS_SIGN_ECDSA_SECP384R1_SHA384 = 38,
-+	GNUTLS_SIGN_ECDSA_SECP521R1_SHA512 = 39,
-+
-+	GNUTLS_SIGN_RSA_PSS_RSAE_SHA256 = 40,
-+	GNUTLS_SIGN_RSA_PSS_RSAE_SHA384 = 41,
-+	GNUTLS_SIGN_RSA_PSS_RSAE_SHA512 = 42,
-+
-+	GNUTLS_SIGN_GOST_94 = 43,
-+	GNUTLS_SIGN_GOST_256 = 44,
-+	GNUTLS_SIGN_GOST_512 = 45,
-+	GNUTLS_SIGN_MAX = GNUTLS_SIGN_GOST_512
-+} gnutls_sign_algorithm_t;
-+
-+/**
-+ * gnutls_ecc_curve_t:
-+ * @GNUTLS_ECC_CURVE_INVALID: Cannot be known
-+ * @GNUTLS_ECC_CURVE_SECP192R1: the SECP192R1 curve
-+ * @GNUTLS_ECC_CURVE_SECP224R1: the SECP224R1 curve
-+ * @GNUTLS_ECC_CURVE_SECP256R1: the SECP256R1 curve
-+ * @GNUTLS_ECC_CURVE_SECP384R1: the SECP384R1 curve
-+ * @GNUTLS_ECC_CURVE_SECP521R1: the SECP521R1 curve
-+ * @GNUTLS_ECC_CURVE_X25519: the X25519 curve (ECDH only)
-+ * @GNUTLS_ECC_CURVE_ED25519: the Ed25519 curve
-+ * @GNUTLS_ECC_CURVE_GOST256CPA: GOST R 34.10 CryptoPro 256 A curve
-+ * @GNUTLS_ECC_CURVE_GOST256CPB: GOST R 34.10 CryptoPro 256 B curve
-+ * @GNUTLS_ECC_CURVE_GOST256CPC: GOST R 34.10 CryptoPro 256 C curve
-+ * @GNUTLS_ECC_CURVE_GOST256CPXA: GOST R 34.10 CryptoPro 256 XchA curve
-+ * @GNUTLS_ECC_CURVE_GOST256CPXB: GOST R 34.10 CryptoPro 256 XchB curve
-+ * @GNUTLS_ECC_CURVE_GOST512A: GOST R 34.10 TC26 512 A curve
-+ * @GNUTLS_ECC_CURVE_GOST512B: GOST R 34.10 TC26 512 B curve
-+ *
-+ * Enumeration of ECC curves.
-+ */
-+typedef enum {
-+	GNUTLS_ECC_CURVE_INVALID = 0,
-+	GNUTLS_ECC_CURVE_SECP224R1,
-+	GNUTLS_ECC_CURVE_SECP256R1,
-+	GNUTLS_ECC_CURVE_SECP384R1,
-+	GNUTLS_ECC_CURVE_SECP521R1,
-+	GNUTLS_ECC_CURVE_SECP192R1,
-+	GNUTLS_ECC_CURVE_X25519,
-+	GNUTLS_ECC_CURVE_ED25519,
-+	GNUTLS_ECC_CURVE_GOST256CPA,
-+	GNUTLS_ECC_CURVE_GOST256CPB,
-+	GNUTLS_ECC_CURVE_GOST256CPC,
-+	GNUTLS_ECC_CURVE_GOST256CPXA,
-+	GNUTLS_ECC_CURVE_GOST256CPXB,
-+	GNUTLS_ECC_CURVE_GOST512A,
-+	GNUTLS_ECC_CURVE_GOST512B,
-+	GNUTLS_ECC_CURVE_MAX = GNUTLS_ECC_CURVE_GOST512B
-+} gnutls_ecc_curve_t;
-+
-+/**
-+ * gnutls_group_t:
-+ * @GNUTLS_GROUP_INVALID: Indicates unknown/invalid group
-+ * @GNUTLS_GROUP_SECP192R1: the SECP192R1 curve group (legacy, only for TLS 1.2 compatibility)
-+ * @GNUTLS_GROUP_SECP224R1: the SECP224R1 curve group (legacy, only for TLS 1.2 compatibility)
-+ * @GNUTLS_GROUP_SECP256R1: the SECP256R1 curve group
-+ * @GNUTLS_GROUP_SECP384R1: the SECP384R1 curve group
-+ * @GNUTLS_GROUP_SECP521R1: the SECP521R1 curve group
-+ * @GNUTLS_GROUP_X25519: the X25519 curve group
-+ * @GNUTLS_GROUP_FFDHE2048: the FFDHE2048 group
-+ * @GNUTLS_GROUP_FFDHE3072: the FFDHE3072 group
-+ * @GNUTLS_GROUP_FFDHE4096: the FFDHE4096 group
-+ * @GNUTLS_GROUP_FFDHE6144: the FFDHE6144 group
-+ * @GNUTLS_GROUP_FFDHE8192: the FFDHE8192 group
-+ *
-+ * Enumeration of supported groups. It is intended to be backwards
-+ * compatible with the enumerations in %gnutls_ecc_curve_t for the groups
-+ * which are valid elliptic curves.
-+ */
-+typedef enum {
-+	GNUTLS_GROUP_INVALID = 0,
-+	GNUTLS_GROUP_SECP192R1 = GNUTLS_ECC_CURVE_SECP192R1,
-+	GNUTLS_GROUP_SECP224R1 = GNUTLS_ECC_CURVE_SECP224R1,
-+	GNUTLS_GROUP_SECP256R1 = GNUTLS_ECC_CURVE_SECP256R1,
-+	GNUTLS_GROUP_SECP384R1 = GNUTLS_ECC_CURVE_SECP384R1,
-+	GNUTLS_GROUP_SECP521R1 = GNUTLS_ECC_CURVE_SECP521R1,
-+	GNUTLS_GROUP_X25519 = GNUTLS_ECC_CURVE_X25519,
-+
-+	GNUTLS_GROUP_FFDHE2048 = 256,
-+	GNUTLS_GROUP_FFDHE3072,
-+	GNUTLS_GROUP_FFDHE4096,
-+	GNUTLS_GROUP_FFDHE8192,
-+	GNUTLS_GROUP_FFDHE6144,
-+	GNUTLS_GROUP_MAX = GNUTLS_GROUP_FFDHE6144,
-+} gnutls_group_t;
-+
-+/* macros to allow specifying a specific curve in gnutls_privkey_generate()
-+ * and gnutls_x509_privkey_generate() */
-+#define GNUTLS_CURVE_TO_BITS(curve) (unsigned int)(((unsigned int)1<<31)|((unsigned int)(curve)))
-+#define GNUTLS_BITS_TO_CURVE(bits) (((unsigned int)(bits)) & 0x7FFFFFFF)
-+#define GNUTLS_BITS_ARE_CURVE(bits) (((unsigned int)(bits)) & 0x80000000)
-+
-+/**
-+ * gnutls_sec_param_t:
-+ * @GNUTLS_SEC_PARAM_UNKNOWN: Cannot be known
-+ * @GNUTLS_SEC_PARAM_INSECURE: Less than 42 bits of security
-+ * @GNUTLS_SEC_PARAM_EXPORT: 42 bits of security
-+ * @GNUTLS_SEC_PARAM_VERY_WEAK: 64 bits of security
-+ * @GNUTLS_SEC_PARAM_WEAK: 72 bits of security
-+ * @GNUTLS_SEC_PARAM_LOW: 80 bits of security
-+ * @GNUTLS_SEC_PARAM_LEGACY: 96 bits of security
-+ * @GNUTLS_SEC_PARAM_MEDIUM: 112 bits of security (used to be %GNUTLS_SEC_PARAM_NORMAL)
-+ * @GNUTLS_SEC_PARAM_HIGH: 128 bits of security
-+ * @GNUTLS_SEC_PARAM_ULTRA: 192 bits of security
-+ * @GNUTLS_SEC_PARAM_FUTURE: 256 bits of security
-+ *
-+ * Enumeration of security parameters for passive attacks.
-+ */
-+typedef enum {
-+	GNUTLS_SEC_PARAM_UNKNOWN = 0,
-+	GNUTLS_SEC_PARAM_INSECURE = 5,
-+	GNUTLS_SEC_PARAM_EXPORT = 10,
-+	GNUTLS_SEC_PARAM_VERY_WEAK = 15,
-+	GNUTLS_SEC_PARAM_WEAK = 20,
-+	GNUTLS_SEC_PARAM_LOW = 25,
-+	GNUTLS_SEC_PARAM_LEGACY = 30,
-+	GNUTLS_SEC_PARAM_MEDIUM = 35,
-+	GNUTLS_SEC_PARAM_HIGH = 40,
-+	GNUTLS_SEC_PARAM_ULTRA = 45,
-+	GNUTLS_SEC_PARAM_FUTURE = 50,
-+	GNUTLS_SEC_PARAM_MAX = GNUTLS_SEC_PARAM_FUTURE
-+} gnutls_sec_param_t;
-+
-+/* old name */
-+#define GNUTLS_SEC_PARAM_NORMAL GNUTLS_SEC_PARAM_MEDIUM
-+
-+/**
-+ * gnutls_channel_binding_t:
-+ * @GNUTLS_CB_TLS_UNIQUE: "tls-unique" (RFC 5929) channel binding
-+ *
-+ * Enumeration of support channel binding types.
-+ */
-+typedef enum {
-+	GNUTLS_CB_TLS_UNIQUE
-+} gnutls_channel_binding_t;
-+
-+/**
-+ * gnutls_gost_paramset_t:
-+ * @GNUTLS_GOST_PARAMSET_UNKNOWN: Unknown/default parameter set
-+ * @GNUTLS_GOST_PARAMSET_TC26_Z: Specified by TC26, see rfc7836
-+ * @GNUTLS_GOST_PARAMSET_CP_A: CryptoPro-A, see rfc4357
-+ * @GNUTLS_GOST_PARAMSET_CP_B: CryptoPro-B, see rfc4357
-+ * @GNUTLS_GOST_PARAMSET_CP_C: CryptoPro-C, see rfc4357
-+ * @GNUTLS_GOST_PARAMSET_CP_D: CryptoPro-D, see rfc4357
-+ *
-+ * Enumeration of different GOST 28147 parameter sets.
-+ */
-+typedef enum {
-+	GNUTLS_GOST_PARAMSET_UNKNOWN = 0,
-+	GNUTLS_GOST_PARAMSET_TC26_Z,
-+	GNUTLS_GOST_PARAMSET_CP_A,
-+	GNUTLS_GOST_PARAMSET_CP_B,
-+	GNUTLS_GOST_PARAMSET_CP_C,
-+	GNUTLS_GOST_PARAMSET_CP_D
-+} gnutls_gost_paramset_t;
-+
-+/**
-+ * gnutls_ctype_target_t:
-+ * @GNUTLS_CTYPE_CLIENT: for requesting client certificate type values.
-+ * @GNUTLS_CTYPE_SERVER: for requesting server certificate type values.
-+ * @GNUTLS_CTYPE_OURS: for requesting our certificate type values.
-+ * @GNUTLS_CTYPE_PEERS: for requesting the peers' certificate type values.
-+ *
-+ * Enumeration of certificate type targets with respect to asymmetric
-+ * certificate types as specified in RFC7250 and P2P connection set up
-+ * as specified in draft-vanrein-tls-symmetry-02.
-+ */
-+typedef enum {
-+	GNUTLS_CTYPE_CLIENT,
-+	GNUTLS_CTYPE_SERVER,
-+	GNUTLS_CTYPE_OURS,
-+	GNUTLS_CTYPE_PEERS
-+} gnutls_ctype_target_t;
-+
-+/* If you want to change this, then also change the define in
-+ * gnutls_int.h, and recompile.
-+ */
-+typedef void *gnutls_transport_ptr_t;
-+
-+struct gnutls_session_int;
-+typedef struct gnutls_session_int *gnutls_session_t;
-+
-+struct gnutls_dh_params_int;
-+typedef struct gnutls_dh_params_int *gnutls_dh_params_t;
-+
-+  /* XXX ugly. */
-+struct gnutls_x509_privkey_int;
-+typedef struct gnutls_x509_privkey_int *gnutls_rsa_params_t;
-+
-+struct gnutls_priority_st;
-+typedef struct gnutls_priority_st *gnutls_priority_t;
-+
-+typedef struct {
-+	unsigned char *data;
-+	unsigned int size;
-+} gnutls_datum_t;
-+
-+typedef struct gnutls_params_st {
-+	gnutls_params_type_t type;
-+	union params {
-+		gnutls_dh_params_t dh;
-+		gnutls_rsa_params_t rsa_export;
-+	} params;
-+	int deinit;
-+} gnutls_params_st;
-+
-+typedef int gnutls_params_function(gnutls_session_t, gnutls_params_type_t,
-+				   gnutls_params_st *);
-+
-+/* internal functions */
-+
-+int gnutls_init(gnutls_session_t * session, unsigned int flags);
-+void gnutls_deinit(gnutls_session_t session);
-+#define _gnutls_deinit(x) gnutls_deinit(x)
-+
-+int gnutls_bye(gnutls_session_t session, gnutls_close_request_t how);
-+
-+int gnutls_handshake(gnutls_session_t session);
-+
-+int gnutls_reauth(gnutls_session_t session, unsigned int flags);
-+
-+#define GNUTLS_DEFAULT_HANDSHAKE_TIMEOUT ((unsigned int)-1)
-+#define GNUTLS_INDEFINITE_TIMEOUT ((unsigned int)-2)
-+void gnutls_handshake_set_timeout(gnutls_session_t session,
-+				  unsigned int ms);
-+int gnutls_rehandshake(gnutls_session_t session);
-+
-+#define GNUTLS_KU_PEER 1
-+int gnutls_session_key_update(gnutls_session_t session, unsigned flags);
-+
-+gnutls_alert_description_t gnutls_alert_get(gnutls_session_t session);
-+int gnutls_alert_send(gnutls_session_t session,
-+		      gnutls_alert_level_t level,
-+		      gnutls_alert_description_t desc);
-+int gnutls_alert_send_appropriate(gnutls_session_t session, int err);
-+const char *gnutls_alert_get_name(gnutls_alert_description_t alert);
-+const char *gnutls_alert_get_strname(gnutls_alert_description_t alert);
-+
-+gnutls_sec_param_t gnutls_pk_bits_to_sec_param(gnutls_pk_algorithm_t algo,
-+					       unsigned int bits);
-+const char *gnutls_sec_param_get_name(gnutls_sec_param_t param);
-+unsigned int gnutls_sec_param_to_pk_bits(gnutls_pk_algorithm_t algo,
-+					 gnutls_sec_param_t param);
-+unsigned int
-+	gnutls_sec_param_to_symmetric_bits(gnutls_sec_param_t param) __GNUTLS_CONST__;
-+
-+/* Elliptic curves */
-+const char *
-+	gnutls_ecc_curve_get_name(gnutls_ecc_curve_t curve) __GNUTLS_CONST__;
-+const char *
-+	gnutls_ecc_curve_get_oid(gnutls_ecc_curve_t curve) __GNUTLS_CONST__;
-+
-+const char *
-+	gnutls_group_get_name(gnutls_group_t group) __GNUTLS_CONST__;
-+
-+int
-+	gnutls_ecc_curve_get_size(gnutls_ecc_curve_t curve) __GNUTLS_CONST__;
-+gnutls_ecc_curve_t gnutls_ecc_curve_get(gnutls_session_t session);
-+
-+gnutls_group_t gnutls_group_get(gnutls_session_t session);
-+
-+/* get information on the current session */
-+gnutls_cipher_algorithm_t gnutls_cipher_get(gnutls_session_t session);
-+gnutls_kx_algorithm_t gnutls_kx_get(gnutls_session_t session);
-+gnutls_mac_algorithm_t gnutls_mac_get(gnutls_session_t session);
-+gnutls_certificate_type_t
-+gnutls_certificate_type_get(gnutls_session_t session);
-+gnutls_certificate_type_t
-+gnutls_certificate_type_get2(gnutls_session_t session,
-+								gnutls_ctype_target_t target);
-+
-+int gnutls_sign_algorithm_get(gnutls_session_t session);
-+int gnutls_sign_algorithm_get_client(gnutls_session_t session);
-+
-+int gnutls_sign_algorithm_get_requested(gnutls_session_t session,
-+					size_t indx,
-+					gnutls_sign_algorithm_t * algo);
-+
-+/* the name of the specified algorithms */
-+const char *
-+	gnutls_cipher_get_name(gnutls_cipher_algorithm_t algorithm) __GNUTLS_CONST__;
-+const char *
-+	gnutls_mac_get_name(gnutls_mac_algorithm_t algorithm) __GNUTLS_CONST__;
-+
-+const char *
-+	gnutls_digest_get_name(gnutls_digest_algorithm_t algorithm) __GNUTLS_CONST__;
-+const char *
-+	gnutls_digest_get_oid(gnutls_digest_algorithm_t algorithm) __GNUTLS_CONST__;
-+
-+const char *
-+	gnutls_kx_get_name(gnutls_kx_algorithm_t algorithm) __GNUTLS_CONST__;
-+const char *
-+	gnutls_certificate_type_get_name(gnutls_certificate_type_t
-+					     type) __GNUTLS_CONST__;
-+const char *
-+	gnutls_pk_get_name(gnutls_pk_algorithm_t algorithm) __GNUTLS_CONST__;
-+const char *
-+	gnutls_pk_get_oid(gnutls_pk_algorithm_t algorithm) __GNUTLS_CONST__;
-+
-+const char *
-+	gnutls_sign_get_name(gnutls_sign_algorithm_t algorithm) __GNUTLS_CONST__;
-+
-+const char *gnutls_sign_get_oid(gnutls_sign_algorithm_t sign) __GNUTLS_CONST__;
-+
-+const char *
-+	gnutls_gost_paramset_get_name(gnutls_gost_paramset_t param) __GNUTLS_CONST__;
-+const char *
-+	gnutls_gost_paramset_get_oid(gnutls_gost_paramset_t param) __GNUTLS_CONST__;
-+
-+size_t
-+	gnutls_cipher_get_key_size(gnutls_cipher_algorithm_t algorithm) __GNUTLS_CONST__;
-+size_t
-+	gnutls_mac_get_key_size(gnutls_mac_algorithm_t algorithm) __GNUTLS_CONST__;
-+
-+unsigned gnutls_sign_is_secure(gnutls_sign_algorithm_t algorithm) __GNUTLS_CONST__;
-+
-+/* It is possible that a signature algorithm is ok to use for short-lived
-+ * data (e.g., to sign a TLS session), but not for data that are long-lived
-+ * like certificates. This flag is about checking the security of the algorithm
-+ * for long-lived data. */
-+#define GNUTLS_SIGN_FLAG_SECURE_FOR_CERTS 1
-+unsigned gnutls_sign_is_secure2(gnutls_sign_algorithm_t algorithm, unsigned int flags) __GNUTLS_CONST__;
-+
-+gnutls_digest_algorithm_t
-+	gnutls_sign_get_hash_algorithm(gnutls_sign_algorithm_t sign) __GNUTLS_CONST__;
-+gnutls_pk_algorithm_t
-+	gnutls_sign_get_pk_algorithm(gnutls_sign_algorithm_t sign) __GNUTLS_CONST__;
-+gnutls_sign_algorithm_t
-+	gnutls_pk_to_sign(gnutls_pk_algorithm_t pk,
-+		  gnutls_digest_algorithm_t hash) __GNUTLS_CONST__;
-+
-+unsigned
-+gnutls_sign_supports_pk_algorithm(gnutls_sign_algorithm_t sign, gnutls_pk_algorithm_t pk) __GNUTLS_CONST__;
-+
-+#define gnutls_sign_algorithm_get_name gnutls_sign_get_name
-+
-+gnutls_mac_algorithm_t gnutls_mac_get_id(const char *name) __GNUTLS_CONST__;
-+gnutls_digest_algorithm_t gnutls_digest_get_id(const char *name) __GNUTLS_CONST__;
-+
-+gnutls_cipher_algorithm_t
-+	gnutls_cipher_get_id(const char *name) __GNUTLS_CONST__;
-+
-+gnutls_kx_algorithm_t
-+	gnutls_kx_get_id(const char *name) __GNUTLS_CONST__;
-+gnutls_protocol_t
-+	gnutls_protocol_get_id(const char *name) __GNUTLS_CONST__;
-+gnutls_certificate_type_t
-+	gnutls_certificate_type_get_id(const char *name) __GNUTLS_CONST__;
-+gnutls_pk_algorithm_t
-+	gnutls_pk_get_id(const char *name) __GNUTLS_CONST__;
-+gnutls_sign_algorithm_t
-+	gnutls_sign_get_id(const char *name) __GNUTLS_CONST__;
-+gnutls_ecc_curve_t gnutls_ecc_curve_get_id(const char *name)  __GNUTLS_CONST__;
-+gnutls_pk_algorithm_t gnutls_ecc_curve_get_pk(gnutls_ecc_curve_t curve) __GNUTLS_CONST__;
-+gnutls_group_t gnutls_group_get_id(const char *name);
-+
-+gnutls_digest_algorithm_t
-+	gnutls_oid_to_digest(const char *oid)  __GNUTLS_CONST__;
-+gnutls_mac_algorithm_t
-+	gnutls_oid_to_mac(const char *oid)  __GNUTLS_CONST__;
-+gnutls_pk_algorithm_t
-+	gnutls_oid_to_pk(const char *oid) __GNUTLS_CONST__;
-+gnutls_sign_algorithm_t
-+	gnutls_oid_to_sign(const char *oid) __GNUTLS_CONST__;
-+gnutls_ecc_curve_t
-+	gnutls_oid_to_ecc_curve(const char *oid) __GNUTLS_CONST__;
-+gnutls_gost_paramset_t
-+	gnutls_oid_to_gost_paramset(const char *oid) __GNUTLS_CONST__;
-+
-+  /* list supported algorithms */
-+const gnutls_ecc_curve_t *
-+	gnutls_ecc_curve_list(void)  __GNUTLS_PURE__;
-+const gnutls_group_t *
-+	gnutls_group_list(void)  __GNUTLS_PURE__;
-+const gnutls_cipher_algorithm_t *
-+	gnutls_cipher_list(void) __GNUTLS_PURE__;
-+const gnutls_mac_algorithm_t *
-+	gnutls_mac_list(void) __GNUTLS_PURE__;
-+const gnutls_digest_algorithm_t *
-+	gnutls_digest_list(void) __GNUTLS_PURE__;
-+const gnutls_protocol_t *
-+	gnutls_protocol_list(void) __GNUTLS_PURE__;
-+const gnutls_certificate_type_t *
-+	gnutls_certificate_type_list(void) __GNUTLS_PURE__;
-+const gnutls_kx_algorithm_t *
-+	gnutls_kx_list(void) __GNUTLS_PURE__;
-+const gnutls_pk_algorithm_t *
-+	gnutls_pk_list(void) __GNUTLS_PURE__;
-+const gnutls_sign_algorithm_t *
-+	gnutls_sign_list(void) __GNUTLS_PURE__;
-+const char *
-+	gnutls_cipher_suite_info(size_t idx,
-+			         unsigned char *cs_id,
-+				 gnutls_kx_algorithm_t * kx,
-+				 gnutls_cipher_algorithm_t * cipher,
-+				 gnutls_mac_algorithm_t * mac,
-+				 gnutls_protocol_t * min_version);
-+
-+  /* error functions */
-+int gnutls_error_is_fatal(int error) __GNUTLS_CONST__;
-+int gnutls_error_to_alert(int err, int *level);
-+
-+void gnutls_perror(int error);
-+const char * gnutls_strerror(int error) __GNUTLS_CONST__;
-+const char * gnutls_strerror_name(int error) __GNUTLS_CONST__;
-+
-+/* Semi-internal functions.
-+ */
-+void gnutls_handshake_set_private_extensions(gnutls_session_t session,
-+					     int allow);
-+int gnutls_handshake_set_random(gnutls_session_t session,
-+				const gnutls_datum_t * random);
-+
-+gnutls_handshake_description_t
-+gnutls_handshake_get_last_out(gnutls_session_t session);
-+gnutls_handshake_description_t
-+gnutls_handshake_get_last_in(gnutls_session_t session);
-+
-+/* Record layer functions.
-+ */
-+#define GNUTLS_HEARTBEAT_WAIT 1
-+int gnutls_heartbeat_ping(gnutls_session_t session, size_t data_size,
-+			  unsigned int max_tries, unsigned int flags);
-+int gnutls_heartbeat_pong(gnutls_session_t session, unsigned int flags);
-+
-+void gnutls_record_set_timeout(gnutls_session_t session, unsigned int ms);
-+void gnutls_record_disable_padding(gnutls_session_t session);
-+
-+void gnutls_record_cork(gnutls_session_t session);
-+#define GNUTLS_RECORD_WAIT 1
-+int gnutls_record_uncork(gnutls_session_t session, unsigned int flags);
-+size_t gnutls_record_discard_queued(gnutls_session_t session);
-+
-+int
-+gnutls_record_get_state(gnutls_session_t session,
-+			unsigned read,
-+			gnutls_datum_t *mac_key,
-+			gnutls_datum_t *IV,
-+			gnutls_datum_t *cipher_key,
-+			unsigned char seq_number[8]);
-+
-+int
-+gnutls_record_set_state(gnutls_session_t session,
-+			unsigned read,
-+			unsigned char seq_number[8]);
-+
-+typedef struct {
-+	size_t low;
-+	size_t high;
-+} gnutls_range_st;
-+
-+int gnutls_range_split(gnutls_session_t session,
-+		       const gnutls_range_st * orig,
-+		       gnutls_range_st * small_range,
-+		       gnutls_range_st * rem_range);
-+
-+ssize_t gnutls_record_send(gnutls_session_t session, const void *data,
-+			   size_t data_size);
-+ssize_t gnutls_record_send2(gnutls_session_t session, const void *data,
-+			   size_t data_size, size_t pad, unsigned flags);
-+ssize_t gnutls_record_send_range(gnutls_session_t session,
-+				 const void *data, size_t data_size,
-+				 const gnutls_range_st * range);
-+ssize_t gnutls_record_recv(gnutls_session_t session, void *data,
-+			   size_t data_size);
-+
-+typedef struct mbuffer_st *gnutls_packet_t;
-+
-+ssize_t
-+gnutls_record_recv_packet(gnutls_session_t session,
-+			  gnutls_packet_t *packet);
-+
-+void gnutls_packet_get(gnutls_packet_t packet, gnutls_datum_t *data, unsigned char *sequence);
-+void gnutls_packet_deinit(gnutls_packet_t packet);
-+
-+#define gnutls_read gnutls_record_recv
-+#define gnutls_write gnutls_record_send
-+ssize_t gnutls_record_recv_seq(gnutls_session_t session, void *data,
-+			       size_t data_size, unsigned char *seq);
-+
-+size_t gnutls_record_overhead_size(gnutls_session_t session);
-+
-+size_t
-+	gnutls_est_record_overhead_size(gnutls_protocol_t version,
-+				        gnutls_cipher_algorithm_t cipher,
-+				        gnutls_mac_algorithm_t mac,
-+				        gnutls_compression_method_t comp,
-+				        unsigned int flags) __GNUTLS_CONST__;
-+
-+void gnutls_session_enable_compatibility_mode(gnutls_session_t session);
-+#define gnutls_record_set_max_empty_records(session, x)
-+
-+int gnutls_record_can_use_length_hiding(gnutls_session_t session);
-+
-+int gnutls_record_get_direction(gnutls_session_t session);
-+
-+size_t gnutls_record_get_max_size(gnutls_session_t session);
-+ssize_t gnutls_record_set_max_size(gnutls_session_t session, size_t size);
-+
-+size_t gnutls_record_check_pending(gnutls_session_t session);
-+size_t gnutls_record_check_corked(gnutls_session_t session);
-+
-+size_t gnutls_record_get_max_early_data_size(gnutls_session_t session);
-+int gnutls_record_set_max_early_data_size(gnutls_session_t session, size_t size);
-+ssize_t gnutls_record_send_early_data(gnutls_session_t session,
-+				      const void *data,
-+				      size_t length);
-+ssize_t gnutls_record_recv_early_data(gnutls_session_t session,
-+				      void *data,
-+				      size_t data_size);
-+
-+void gnutls_session_force_valid(gnutls_session_t session);
-+
-+int gnutls_prf(gnutls_session_t session,
-+	       size_t label_size, const char *label,
-+	       int server_random_first,
-+	       size_t extra_size, const char *extra,
-+	       size_t outsize, char *out);
-+int gnutls_prf_rfc5705(gnutls_session_t session,
-+	       size_t label_size, const char *label,
-+	       size_t context_size, const char *context,
-+	       size_t outsize, char *out);
-+
-+int gnutls_prf_raw(gnutls_session_t session,
-+		   size_t label_size, const char *label,
-+		   size_t seed_size, const char *seed,
-+		   size_t outsize, char *out);
-+
-+/**
-+ * gnutls_server_name_type_t:
-+ * @GNUTLS_NAME_DNS: Domain Name System name type.
-+ *
-+ * Enumeration of different server name types.
-+ */
-+typedef enum {
-+	GNUTLS_NAME_DNS = 1
-+} gnutls_server_name_type_t;
-+
-+int gnutls_server_name_set(gnutls_session_t session,
-+			   gnutls_server_name_type_t type,
-+			   const void *name, size_t name_length);
-+
-+int gnutls_server_name_get(gnutls_session_t session,
-+			   void *data, size_t * data_length,
-+			   unsigned int *type, unsigned int indx);
-+
-+unsigned int gnutls_heartbeat_get_timeout(gnutls_session_t session);
-+void gnutls_heartbeat_set_timeouts(gnutls_session_t session,
-+				   unsigned int retrans_timeout,
-+				   unsigned int total_timeout);
-+
-+#define GNUTLS_HB_PEER_ALLOWED_TO_SEND (1)
-+#define GNUTLS_HB_PEER_NOT_ALLOWED_TO_SEND (1<<1)
-+
-+  /* Heartbeat */
-+void gnutls_heartbeat_enable(gnutls_session_t session, unsigned int type);
-+
-+#define GNUTLS_HB_LOCAL_ALLOWED_TO_SEND (1<<2)
-+unsigned gnutls_heartbeat_allowed(gnutls_session_t session, unsigned int type);
-+
-+  /* Safe renegotiation */
-+unsigned gnutls_safe_renegotiation_status(gnutls_session_t session);
-+unsigned gnutls_session_ext_master_secret_status(gnutls_session_t session);
-+unsigned gnutls_session_etm_status(gnutls_session_t session);
-+
-+/**
-+ * gnutls_session_flags_t:
-+ * @GNUTLS_SFLAGS_SAFE_RENEGOTIATION: Safe renegotiation (RFC5746) was used
-+ * @GNUTLS_SFLAGS_EXT_MASTER_SECRET: The extended master secret (RFC7627) extension was used
-+ * @GNUTLS_SFLAGS_ETM: The encrypt then MAC (RFC7366) extension was used
-+ * @GNUTLS_SFLAGS_RFC7919: The RFC7919 Diffie-Hellman parameters were negotiated
-+ * @GNUTLS_SFLAGS_HB_LOCAL_SEND: The heartbeat negotiation allows the local side to send heartbeat messages
-+ * @GNUTLS_SFLAGS_HB_PEER_SEND: The heartbeat negotiation allows the peer to send heartbeat messages
-+ * @GNUTLS_SFLAGS_FALSE_START: False start was used in this client session.
-+ * @GNUTLS_SFLAGS_SESSION_TICKET: A session ticket has been received by the server.
-+ * @GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH: Indicates client capability for post-handshake auth; set only on server side.
-+ * @GNUTLS_SFLAGS_EARLY_START: The TLS1.3 server session returned early.
-+ * @GNUTLS_SFLAGS_EARLY_DATA: The TLS1.3 early data has been received by the server.
-+ *
-+ * Enumeration of different session parameters.
-+ */
-+typedef enum {
-+	GNUTLS_SFLAGS_SAFE_RENEGOTIATION = 1,
-+	GNUTLS_SFLAGS_EXT_MASTER_SECRET = 1<<1,
-+	GNUTLS_SFLAGS_ETM = 1<<2,
-+	GNUTLS_SFLAGS_HB_LOCAL_SEND = 1<<3,
-+	GNUTLS_SFLAGS_HB_PEER_SEND = 1<<4,
-+	GNUTLS_SFLAGS_FALSE_START = 1<<5,
-+	GNUTLS_SFLAGS_RFC7919 = 1<<6,
-+	GNUTLS_SFLAGS_SESSION_TICKET = 1<<7,
-+	GNUTLS_SFLAGS_POST_HANDSHAKE_AUTH = 1<<8,
-+	GNUTLS_SFLAGS_EARLY_START = 1<<9,
-+	GNUTLS_SFLAGS_EARLY_DATA = 1<<10
-+} gnutls_session_flags_t;
-+
-+unsigned gnutls_session_get_flags(gnutls_session_t session);
-+
-+/**
-+ * gnutls_supplemental_data_format_type_t:
-+ * @GNUTLS_SUPPLEMENTAL_UNKNOWN: Unknown data format
-+ *
-+ * Enumeration of different supplemental data types (RFC 4680).
-+ */
-+typedef enum {
-+	GNUTLS_SUPPLEMENTAL_UNKNOWN = 0,
-+} gnutls_supplemental_data_format_type_t;
-+
-+const char
-+*gnutls_supplemental_get_name(gnutls_supplemental_data_format_type_t type);
-+
-+  /* SessionTicket, RFC 5077. */
-+int gnutls_session_ticket_key_generate(gnutls_datum_t * key);
-+int gnutls_session_ticket_enable_client(gnutls_session_t session);
-+int gnutls_session_ticket_enable_server(gnutls_session_t session,
-+					const gnutls_datum_t * key);
-+
-+int gnutls_session_ticket_send(gnutls_session_t session, unsigned nr, unsigned flags);
-+
-+  /* SRTP, RFC 5764 */
-+
-+/**
-+ * gnutls_srtp_profile_t:
-+ * @GNUTLS_SRTP_AES128_CM_HMAC_SHA1_80: 128 bit AES with a 80 bit HMAC-SHA1
-+ * @GNUTLS_SRTP_AES128_CM_HMAC_SHA1_32: 128 bit AES with a 32 bit HMAC-SHA1
-+ * @GNUTLS_SRTP_NULL_HMAC_SHA1_80: NULL cipher with a 80 bit HMAC-SHA1
-+ * @GNUTLS_SRTP_NULL_HMAC_SHA1_32: NULL cipher with a 32 bit HMAC-SHA1
-+ *
-+ * Enumeration of different SRTP protection profiles.
-+ */
-+typedef enum {
-+	GNUTLS_SRTP_AES128_CM_HMAC_SHA1_80 = 0x0001,
-+	GNUTLS_SRTP_AES128_CM_HMAC_SHA1_32 = 0x0002,
-+	GNUTLS_SRTP_NULL_HMAC_SHA1_80 = 0x0005,
-+	GNUTLS_SRTP_NULL_HMAC_SHA1_32 = 0x0006
-+} gnutls_srtp_profile_t;
-+
-+int gnutls_srtp_set_profile(gnutls_session_t session,
-+			    gnutls_srtp_profile_t profile);
-+int gnutls_srtp_set_profile_direct(gnutls_session_t session,
-+				   const char *profiles,
-+				   const char **err_pos);
-+int gnutls_srtp_get_selected_profile(gnutls_session_t session,
-+				     gnutls_srtp_profile_t * profile);
-+
-+const char *gnutls_srtp_get_profile_name(gnutls_srtp_profile_t profile);
-+int gnutls_srtp_get_profile_id(const char *name,
-+			       gnutls_srtp_profile_t * profile);
-+int gnutls_srtp_get_keys(gnutls_session_t session,
-+			 void *key_material,
-+			 unsigned int key_material_size,
-+			 gnutls_datum_t * client_key,
-+			 gnutls_datum_t * client_salt,
-+			 gnutls_datum_t * server_key,
-+			 gnutls_datum_t * server_salt);
-+
-+int gnutls_srtp_set_mki(gnutls_session_t session,
-+			const gnutls_datum_t * mki);
-+int gnutls_srtp_get_mki(gnutls_session_t session, gnutls_datum_t * mki);
-+
-+/* ALPN TLS extension */
-+
-+/**
-+ * gnutls_alpn_flags_t:
-+ * @GNUTLS_ALPN_MANDATORY: Require ALPN negotiation. The connection will be
-+ *   aborted if no matching ALPN protocol is found.
-+ * @GNUTLS_ALPN_SERVER_PRECEDENCE: The choices set by the server
-+ *   will take precedence over the client's.
-+ *
-+ * Enumeration of different ALPN flags. These are used by gnutls_alpn_set_protocols().
-+ */
-+typedef enum {
-+	GNUTLS_ALPN_MANDATORY = 1,
-+	GNUTLS_ALPN_SERVER_PRECEDENCE = (1<<1)
-+} gnutls_alpn_flags_t;
-+
-+#define GNUTLS_ALPN_MAND GNUTLS_ALPN_MANDATORY
-+int gnutls_alpn_get_selected_protocol(gnutls_session_t session,
-+				      gnutls_datum_t * protocol);
-+int gnutls_alpn_set_protocols(gnutls_session_t session,
-+			      const gnutls_datum_t * protocols,
-+			      unsigned protocols_size, unsigned flags);
-+
-+int gnutls_key_generate(gnutls_datum_t * key, unsigned int key_size);
-+
-+#define GNUTLS_PRIORITY_INIT_DEF_APPEND 1
-+int gnutls_priority_init(gnutls_priority_t * priority_cache,
-+			 const char *priorities, const char **err_pos);
-+int gnutls_priority_init2(gnutls_priority_t * priority_cache,
-+			  const char *priorities, const char **err_pos,
-+			  unsigned flags);
-+void gnutls_priority_deinit(gnutls_priority_t priority_cache);
-+int gnutls_priority_get_cipher_suite_index(gnutls_priority_t pcache,
-+					   unsigned int idx,
-+					   unsigned int *sidx);
-+
-+#define GNUTLS_PRIORITY_LIST_INIT_KEYWORDS 1
-+#define GNUTLS_PRIORITY_LIST_SPECIAL 2
-+const char *
-+gnutls_priority_string_list(unsigned iter, unsigned int flags);
-+
-+int gnutls_priority_set(gnutls_session_t session,
-+			gnutls_priority_t priority);
-+
-+int gnutls_priority_set_direct(gnutls_session_t session,
-+			       const char *priorities,
-+			       const char **err_pos);
-+
-+int gnutls_priority_certificate_type_list(gnutls_priority_t pcache,
-+					  const unsigned int **list);
-+int gnutls_priority_certificate_type_list2(gnutls_priority_t pcache,
-+					  const unsigned int **list,
-+					  gnutls_ctype_target_t target);
-+int gnutls_priority_sign_list(gnutls_priority_t pcache,
-+			      const unsigned int **list);
-+int gnutls_priority_protocol_list(gnutls_priority_t pcache,
-+				  const unsigned int **list);
-+int gnutls_priority_ecc_curve_list(gnutls_priority_t pcache,
-+				   const unsigned int **list);
-+int
-+gnutls_priority_group_list(gnutls_priority_t pcache,
-+			   const unsigned int **list);
-+
-+int gnutls_priority_kx_list(gnutls_priority_t pcache,
-+			    const unsigned int **list);
-+int gnutls_priority_cipher_list(gnutls_priority_t pcache,
-+				const unsigned int **list);
-+int gnutls_priority_mac_list(gnutls_priority_t pcache,
-+			     const unsigned int **list);
-+
-+int gnutls_set_default_priority(gnutls_session_t session);
-+int gnutls_set_default_priority_append(gnutls_session_t session,
-+				       const char *add_prio,
-+				       const char **err_pos,
-+				       unsigned flags);
-+
-+/* Returns the name of a cipher suite */
-+const char *
-+	gnutls_cipher_suite_get_name(gnutls_kx_algorithm_t kx_algorithm,
-+				     gnutls_cipher_algorithm_t cipher_algorithm,
-+				     gnutls_mac_algorithm_t mac_algorithm) __GNUTLS_CONST__;
-+
-+/* get the currently used protocol version */
-+gnutls_protocol_t gnutls_protocol_get_version(gnutls_session_t session);
-+
-+const char *
-+	gnutls_protocol_get_name(gnutls_protocol_t version) __GNUTLS_CONST__;
-+
-+/* get/set session
-+ */
-+int gnutls_session_set_data(gnutls_session_t session,
-+			    const void *session_data,
-+			    size_t session_data_size);
-+int gnutls_session_get_data(gnutls_session_t session, void *session_data,
-+			    size_t * session_data_size);
-+int gnutls_session_get_data2(gnutls_session_t session,
-+			     gnutls_datum_t * data);
-+void gnutls_session_get_random(gnutls_session_t session,
-+			       gnutls_datum_t * client,
-+			       gnutls_datum_t * server);
-+
-+void gnutls_session_get_master_secret(gnutls_session_t session,
-+			              gnutls_datum_t * secret);
-+
-+char *gnutls_session_get_desc(gnutls_session_t session);
-+
-+typedef int gnutls_certificate_verify_function(gnutls_session_t);
-+void gnutls_session_set_verify_function(gnutls_session_t session, gnutls_certificate_verify_function * func);
-+
-+/**
-+ * gnutls_vdata_types_t:
-+ * @GNUTLS_DT_UNKNOWN: Unknown data type.
-+ * @GNUTLS_DT_DNS_HOSTNAME: The data contain a null-terminated DNS hostname; the hostname will be
-+ *   matched using the RFC6125 rules. If the data contain a textual IP (v4 or v6) address it will
-+ *   be marched against the IPAddress Alternative name, unless the verification flag %GNUTLS_VERIFY_DO_NOT_ALLOW_IP_MATCHES
-+ *   is specified.
-+ * @GNUTLS_DT_IP_ADDRESS: The data contain a raw IP address (4 or 16 bytes). If will be matched
-+ *   against the IPAddress Alternative name; option available since 3.6.0.
-+ * @GNUTLS_DT_RFC822NAME: The data contain a null-terminated email address; the email will be
-+ *   matched against the RFC822Name Alternative name of the certificate, or the EMAIL DN component if the
-+ *   former isn't available. Prior to matching the email address will be converted to ACE
-+ *   (ASCII-compatible-encoding).
-+ * @GNUTLS_DT_KEY_PURPOSE_OID: The data contain a null-terminated key purpose OID. It will be matched
-+ *   against the certificate's Extended Key Usage extension.
-+ *
-+ * Enumeration of different typed-data options. They are used as input to certificate
-+ * verification functions to provide information about the name and purpose of the
-+ * certificate. Only a single option of a type can be provided to the relevant functions
-+ * (i.e., options %GNUTLS_DT_DNS_HOSTNAME, %GNUTLS_DT_IP_ADDRESS and
-+ * %GNUTLS_DT_RFC822NAME cannot be combined).
-+ */
-+typedef enum {
-+	GNUTLS_DT_UNKNOWN = 0,
-+	GNUTLS_DT_DNS_HOSTNAME = 1,
-+	GNUTLS_DT_KEY_PURPOSE_OID = 2,
-+	GNUTLS_DT_RFC822NAME = 3,
-+	GNUTLS_DT_IP_ADDRESS = 4
-+} gnutls_vdata_types_t;
-+
-+typedef struct {
-+	gnutls_vdata_types_t type;
-+	unsigned char *data;
-+	unsigned int size;
-+} gnutls_typed_vdata_st;
-+
-+void gnutls_session_set_verify_cert(gnutls_session_t session,
-+			       const char *hostname, unsigned flags);
-+
-+void
-+gnutls_session_set_verify_cert2(gnutls_session_t session,
-+				gnutls_typed_vdata_st * data,
-+				unsigned elements, unsigned flags);
-+
-+unsigned int gnutls_session_get_verify_cert_status(gnutls_session_t);
-+
-+int gnutls_session_set_premaster(gnutls_session_t session,
-+				 unsigned int entity,
-+				 gnutls_protocol_t version,
-+				 gnutls_kx_algorithm_t kx,
-+				 gnutls_cipher_algorithm_t cipher,
-+				 gnutls_mac_algorithm_t mac,
-+				 gnutls_compression_method_t comp,
-+				 const gnutls_datum_t * master,
-+				 const gnutls_datum_t * session_id);
-+
-+/* returns the session ID */
-+#define GNUTLS_MAX_SESSION_ID 32
-+int gnutls_session_get_id(gnutls_session_t session, void *session_id,
-+			  size_t * session_id_size);
-+int gnutls_session_get_id2(gnutls_session_t session,
-+			   gnutls_datum_t * session_id);
-+
-+int gnutls_session_set_id(gnutls_session_t session,
-+			  const gnutls_datum_t * sid);
-+
-+int gnutls_session_channel_binding(gnutls_session_t session,
-+				   gnutls_channel_binding_t cbtype,
-+				   gnutls_datum_t * cb);
-+
-+/* checks if this session is a resumed one
-+ */
-+int gnutls_session_is_resumed(gnutls_session_t session);
-+int gnutls_session_resumption_requested(gnutls_session_t session);
-+
-+typedef int (*gnutls_db_store_func) (void *, gnutls_datum_t key,
-+				     gnutls_datum_t data);
-+typedef int (*gnutls_db_remove_func) (void *, gnutls_datum_t key);
-+typedef gnutls_datum_t(*gnutls_db_retr_func) (void *, gnutls_datum_t key);
-+
-+void gnutls_db_set_cache_expiration(gnutls_session_t session, int seconds);
-+unsigned gnutls_db_get_default_cache_expiration(void);
-+
-+void gnutls_db_remove_session(gnutls_session_t session);
-+void gnutls_db_set_retrieve_function(gnutls_session_t session,
-+				     gnutls_db_retr_func retr_func);
-+void gnutls_db_set_remove_function(gnutls_session_t session,
-+				   gnutls_db_remove_func rem_func);
-+void gnutls_db_set_store_function(gnutls_session_t session,
-+				  gnutls_db_store_func store_func);
-+void gnutls_db_set_ptr(gnutls_session_t session, void *ptr);
-+void *gnutls_db_get_ptr(gnutls_session_t session);
-+int gnutls_db_check_entry(gnutls_session_t session,
-+			  gnutls_datum_t session_entry);
-+time_t gnutls_db_check_entry_time(gnutls_datum_t * entry);
-+time_t gnutls_db_check_entry_expire_time(gnutls_datum_t * entry);
-+
-+  /**
-+   * gnutls_handshake_hook_func:
-+   * @session: the current session
-+   * @htype: the type of the handshake message (%gnutls_handshake_description_t)
-+   * @when: non zero if this is a post-process/generation call and zero otherwise
-+   * @incoming: non zero if this is an incoming message and zero if this is an outgoing message
-+   * @msg: the (const) data of the handshake message without the handshake headers.
-+   *
-+   * Function prototype for handshake hooks. It is set using
-+   * gnutls_handshake_set_hook_function().
-+   *
-+   * Returns: Non zero on error.
-+   */
-+#define GNUTLS_HOOK_POST (1)
-+#define GNUTLS_HOOK_PRE (0)
-+#define GNUTLS_HOOK_BOTH (-1)
-+
-+typedef int (*gnutls_handshake_hook_func) (gnutls_session_t,
-+					   unsigned int htype,
-+					   unsigned when,
-+					   unsigned int incoming,
-+					   const gnutls_datum_t *msg);
-+void gnutls_handshake_set_hook_function(gnutls_session_t session,
-+					unsigned int htype, int when,
-+					gnutls_handshake_hook_func func);
-+
-+#define gnutls_handshake_post_client_hello_func gnutls_handshake_simple_hook_func
-+typedef int (*gnutls_handshake_simple_hook_func) (gnutls_session_t);
-+void
-+gnutls_handshake_set_post_client_hello_function(gnutls_session_t session,
-+						gnutls_handshake_simple_hook_func func);
-+
-+void gnutls_handshake_set_max_packet_length(gnutls_session_t session,
-+					    size_t max);
-+
-+/* returns libgnutls version (call it with a NULL argument)
-+ */
-+const char * gnutls_check_version(const char *req_version) __GNUTLS_CONST__;
-+
-+/* A macro which will allow optimizing out calls to gnutls_check_version()
-+ * when the version being compiled with is sufficient.
-+ * Used as:
-+ *   if (gnutls_check_version_numerc(3,3,16)) {
-+ */
-+#define gnutls_check_version_numeric(a,b,c) \
-+	((GNUTLS_VERSION_MAJOR >= (a)) &&  \
-+	 ((GNUTLS_VERSION_NUMBER >= ( ((a) << 16) + ((b) << 8) + (c) )) || \
-+	 gnutls_check_version(#a "." #b "." #c)))
-+
-+/* Functions for setting/clearing credentials
-+ */
-+void gnutls_credentials_clear(gnutls_session_t session);
-+
-+/* cred is a structure defined by the kx algorithm
-+ */
-+int gnutls_credentials_set(gnutls_session_t session,
-+			   gnutls_credentials_type_t type, void *cred);
-+int gnutls_credentials_get(gnutls_session_t session,
-+			   gnutls_credentials_type_t type, void **cred);
-+#define gnutls_cred_set	gnutls_credentials_set
-+
-+/* x.509 types */
-+
-+struct gnutls_pubkey_st;
-+typedef struct gnutls_pubkey_st *gnutls_pubkey_t;
-+
-+struct gnutls_privkey_st;
-+typedef struct gnutls_privkey_st *gnutls_privkey_t;
-+
-+struct gnutls_x509_privkey_int;
-+typedef struct gnutls_x509_privkey_int *gnutls_x509_privkey_t;
-+
-+struct gnutls_x509_crl_int;
-+typedef struct gnutls_x509_crl_int *gnutls_x509_crl_t;
-+
-+struct gnutls_x509_crt_int;
-+typedef struct gnutls_x509_crt_int *gnutls_x509_crt_t;
-+
-+struct gnutls_x509_crq_int;
-+typedef struct gnutls_x509_crq_int *gnutls_x509_crq_t;
-+
-+struct gnutls_openpgp_keyring_int;
-+typedef struct gnutls_openpgp_keyring_int *gnutls_openpgp_keyring_t;
-+
-+/* Credential structures - used in gnutls_credentials_set(); */
-+
-+struct gnutls_certificate_credentials_st;
-+typedef struct gnutls_certificate_credentials_st
-+*gnutls_certificate_credentials_t;
-+typedef gnutls_certificate_credentials_t
-+    gnutls_certificate_server_credentials;
-+typedef gnutls_certificate_credentials_t
-+    gnutls_certificate_client_credentials;
-+
-+typedef struct gnutls_anon_server_credentials_st
-+*gnutls_anon_server_credentials_t;
-+typedef struct gnutls_anon_client_credentials_st
-+*gnutls_anon_client_credentials_t;
-+
-+void gnutls_anon_free_server_credentials(gnutls_anon_server_credentials_t
-+					 sc);
-+int
-+gnutls_anon_allocate_server_credentials(gnutls_anon_server_credentials_t
-+					* sc);
-+
-+void gnutls_anon_set_server_dh_params(gnutls_anon_server_credentials_t res,
-+				      gnutls_dh_params_t dh_params);
-+
-+int
-+gnutls_anon_set_server_known_dh_params(gnutls_anon_server_credentials_t res,
-+					gnutls_sec_param_t sec_param);
-+
-+void
-+gnutls_anon_set_server_params_function(gnutls_anon_server_credentials_t
-+				       res, gnutls_params_function * func);
-+
-+void
-+gnutls_anon_free_client_credentials(gnutls_anon_client_credentials_t sc);
-+int
-+gnutls_anon_allocate_client_credentials(gnutls_anon_client_credentials_t
-+					* sc);
-+
-+/* CERTFILE is an x509 certificate in PEM form.
-+ * KEYFILE is a pkcs-1 private key in PEM form (for RSA keys).
-+ */
-+void
-+gnutls_certificate_free_credentials(gnutls_certificate_credentials_t sc);
-+int
-+gnutls_certificate_allocate_credentials(gnutls_certificate_credentials_t
-+					* res);
-+
-+int
-+gnutls_certificate_get_issuer(gnutls_certificate_credentials_t sc,
-+			      gnutls_x509_crt_t cert,
-+			      gnutls_x509_crt_t * issuer,
-+			      unsigned int flags);
-+
-+int gnutls_certificate_get_crt_raw(gnutls_certificate_credentials_t sc,
-+				   unsigned idx1, unsigned idx2,
-+				   gnutls_datum_t * cert);
-+
-+void gnutls_certificate_free_keys(gnutls_certificate_credentials_t sc);
-+void gnutls_certificate_free_cas(gnutls_certificate_credentials_t sc);
-+void gnutls_certificate_free_ca_names(gnutls_certificate_credentials_t sc);
-+void gnutls_certificate_free_crls(gnutls_certificate_credentials_t sc);
-+
-+void gnutls_certificate_set_dh_params(gnutls_certificate_credentials_t res,
-+				      gnutls_dh_params_t dh_params);
-+
-+int gnutls_certificate_set_known_dh_params(gnutls_certificate_credentials_t res,
-+					   gnutls_sec_param_t sec_param);
-+void gnutls_certificate_set_verify_flags(gnutls_certificate_credentials_t
-+					 res, unsigned int flags);
-+unsigned int
-+gnutls_certificate_get_verify_flags(gnutls_certificate_credentials_t res);
-+
-+/**
-+ * gnutls_certificate_flags:
-+ * @GNUTLS_CERTIFICATE_SKIP_KEY_CERT_MATCH: Skip the key and certificate matching check.
-+ * @GNUTLS_CERTIFICATE_API_V2: If set the gnutls_certificate_set_*key* functions will return an index of the added key pair instead of zero.
-+ * @GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK: If set, the gnutls_certificate_set_ocsp_status_request_file
-+ *    function, will not check whether the response set matches any of the certificates.
-+ * @GNUTLS_CERTIFICATE_VERIFY_CRLS: This will enable CRL verification when added in the certificate structure.
-+ *    When used, it requires CAs to be added before CRLs.
-+ *
-+ * Enumeration of different certificate credentials flags.
-+ */
-+typedef enum gnutls_certificate_flags {
-+	GNUTLS_CERTIFICATE_SKIP_KEY_CERT_MATCH = 1,
-+	GNUTLS_CERTIFICATE_API_V2 = (1<<1),
-+	GNUTLS_CERTIFICATE_SKIP_OCSP_RESPONSE_CHECK = (1<<2),
-+	GNUTLS_CERTIFICATE_VERIFY_CRLS = (1<<3)
-+} gnutls_certificate_flags;
-+
-+void gnutls_certificate_set_flags(gnutls_certificate_credentials_t,
-+				  unsigned flags);
-+
-+void gnutls_certificate_set_verify_limits(gnutls_certificate_credentials_t
-+					  res, unsigned int max_bits,
-+					  unsigned int max_depth);
-+
-+int
-+gnutls_certificate_set_x509_system_trust(gnutls_certificate_credentials_t
-+					 cred);
-+
-+int
-+gnutls_certificate_set_x509_trust_file(gnutls_certificate_credentials_t
-+				       cred, const char *cafile,
-+				       gnutls_x509_crt_fmt_t type);
-+int
-+gnutls_certificate_set_x509_trust_dir(gnutls_certificate_credentials_t cred,
-+				      const char *ca_dir,
-+				      gnutls_x509_crt_fmt_t type);
-+
-+int gnutls_certificate_set_x509_trust_mem(gnutls_certificate_credentials_t
-+					  res, const gnutls_datum_t * ca,
-+					  gnutls_x509_crt_fmt_t type);
-+
-+int
-+gnutls_certificate_set_x509_crl_file(gnutls_certificate_credentials_t
-+				     res, const char *crlfile,
-+				     gnutls_x509_crt_fmt_t type);
-+int gnutls_certificate_set_x509_crl_mem(gnutls_certificate_credentials_t
-+					res, const gnutls_datum_t * CRL,
-+					gnutls_x509_crt_fmt_t type);
-+
-+int
-+gnutls_certificate_set_x509_key_file(gnutls_certificate_credentials_t
-+				     res, const char *certfile,
-+				     const char *keyfile,
-+				     gnutls_x509_crt_fmt_t type);
-+
-+int
-+gnutls_certificate_set_x509_key_file2(gnutls_certificate_credentials_t
-+				      res, const char *certfile,
-+				      const char *keyfile,
-+				      gnutls_x509_crt_fmt_t type,
-+				      const char *pass,
-+				      unsigned int flags);
-+
-+int gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials_t
-+					res, const gnutls_datum_t * cert,
-+					const gnutls_datum_t * key,
-+					gnutls_x509_crt_fmt_t type);
-+
-+int gnutls_certificate_set_x509_key_mem2(gnutls_certificate_credentials_t
-+					 res, const gnutls_datum_t * cert,
-+					 const gnutls_datum_t * key,
-+					 gnutls_x509_crt_fmt_t type,
-+					 const char *pass,
-+					 unsigned int flags);
-+
-+void gnutls_certificate_send_x509_rdn_sequence(gnutls_session_t session,
-+					       int status);
-+
-+int
-+gnutls_certificate_set_x509_simple_pkcs12_file
-+(gnutls_certificate_credentials_t res, const char *pkcs12file,
-+ gnutls_x509_crt_fmt_t type, const char *password);
-+int
-+gnutls_certificate_set_x509_simple_pkcs12_mem
-+(gnutls_certificate_credentials_t res, const gnutls_datum_t * p12blob,
-+ gnutls_x509_crt_fmt_t type, const char *password);
-+
-+/* New functions to allow setting already parsed X.509 stuff.
-+ */
-+
-+int gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res,
-+				    gnutls_x509_crt_t * cert_list,
-+				    int cert_list_size,
-+				    gnutls_x509_privkey_t key);
-+int gnutls_certificate_set_x509_trust(gnutls_certificate_credentials_t res,
-+				      gnutls_x509_crt_t * ca_list,
-+				      int ca_list_size);
-+int gnutls_certificate_set_x509_crl(gnutls_certificate_credentials_t res,
-+				    gnutls_x509_crl_t * crl_list,
-+				    int crl_list_size);
-+
-+int gnutls_certificate_get_x509_key(gnutls_certificate_credentials_t res,
-+                                    unsigned index,
-+                                    gnutls_x509_privkey_t *key);
-+int gnutls_certificate_get_x509_crt(gnutls_certificate_credentials_t res,
-+                                    unsigned index,
-+                                    gnutls_x509_crt_t **crt_list,
-+                                    unsigned *crt_list_size);
-+
-+  /* OCSP status request extension, RFC 6066 */
-+typedef int (*gnutls_status_request_ocsp_func)
-+ (gnutls_session_t session, void *ptr, gnutls_datum_t *ocsp_response);
-+
-+void
-+gnutls_certificate_set_ocsp_status_request_function
-+(gnutls_certificate_credentials_t res,
-+gnutls_status_request_ocsp_func ocsp_func, void *ptr);
-+
-+int
-+gnutls_certificate_set_ocsp_status_request_function2
-+(gnutls_certificate_credentials_t res, unsigned idx,
-+gnutls_status_request_ocsp_func ocsp_func, void *ptr);
-+
-+int
-+gnutls_certificate_set_ocsp_status_request_file
-+(gnutls_certificate_credentials_t res, const char *response_file,
-+ unsigned idx);
-+
-+int
-+gnutls_certificate_set_ocsp_status_request_file2
-+(gnutls_certificate_credentials_t res, const char *response_file,
-+ unsigned idx, gnutls_x509_crt_fmt_t fmt);
-+
-+int
-+gnutls_certificate_set_ocsp_status_request_mem
-+(gnutls_certificate_credentials_t res, const gnutls_datum_t *resp,
-+ unsigned idx, gnutls_x509_crt_fmt_t fmt);
-+
-+typedef struct gnutls_ocsp_data_st {
-+	unsigned int version; /* must be zero */
-+	gnutls_datum_t response;
-+	time_t exptime;
-+	unsigned char padding[32];
-+} gnutls_ocsp_data_st;
-+
-+time_t
-+gnutls_certificate_get_ocsp_expiration(gnutls_certificate_credentials_t sc,
-+				       unsigned idx,
-+				       int oidx,
-+				       unsigned flags);
-+
-+int gnutls_ocsp_status_request_enable_client(gnutls_session_t session,
-+					     gnutls_datum_t * responder_id,
-+					     size_t responder_id_size,
-+					     gnutls_datum_t *
-+					     request_extensions);
-+
-+int gnutls_ocsp_status_request_get(gnutls_session_t session,
-+				   gnutls_datum_t * response);
-+
-+#define GNUTLS_OCSP_SR_IS_AVAIL 1
-+int gnutls_ocsp_status_request_is_checked(gnutls_session_t session,
-+					  unsigned int flags);
-+
-+int
-+gnutls_ocsp_status_request_get2(gnutls_session_t session,
-+			        unsigned idx,
-+			        gnutls_datum_t * response);
-+
-+/* RAW public key functions (RFC7250) */
-+int gnutls_certificate_set_rawpk_key_mem(gnutls_certificate_credentials_t cred,
-+				    const gnutls_datum_t* spki,
-+				    const gnutls_datum_t* pkey,
-+				    gnutls_x509_crt_fmt_t format,
-+				    const char* pass,
-+				    unsigned int key_usage,
-+				    const char **names,
-+				    unsigned int names_length,
-+				    unsigned int flags);
-+
-+int gnutls_certificate_set_rawpk_key_file(gnutls_certificate_credentials_t cred,
-+				      const char* rawpkfile,
-+				      const char* privkeyfile,
-+				      gnutls_x509_crt_fmt_t format,
-+				      const char *pass,
-+				      unsigned int key_usage,
-+				      const char **names,
-+				      unsigned int names_length,
-+				      unsigned int privkey_flags,
-+				      unsigned int pkcs11_flags);
-+
-+/* global state functions
-+ */
-+int gnutls_global_init(void);
-+void gnutls_global_deinit(void);
-+
-+  /**
-+   * gnutls_time_func:
-+   * @t: where to store time.
-+   *
-+   * Function prototype for time()-like function.  Set with
-+   * gnutls_global_set_time_function().
-+   *
-+   * Returns: Number of seconds since the epoch, or (time_t)-1 on errors.
-+   */
-+typedef time_t(*gnutls_time_func) (time_t * t);
-+
-+typedef int (*mutex_init_func) (void **mutex);
-+typedef int (*mutex_lock_func) (void **mutex);
-+typedef int (*mutex_unlock_func) (void **mutex);
-+typedef int (*mutex_deinit_func) (void **mutex);
-+
-+void gnutls_global_set_mutex(mutex_init_func init,
-+			     mutex_deinit_func deinit,
-+			     mutex_lock_func lock,
-+			     mutex_unlock_func unlock);
-+
-+typedef void *(*gnutls_alloc_function) (size_t);
-+typedef void *(*gnutls_calloc_function) (size_t, size_t);
-+typedef int (*gnutls_is_secure_function) (const void *);
-+typedef void (*gnutls_free_function) (void *);
-+typedef void *(*gnutls_realloc_function) (void *, size_t);
-+
-+void gnutls_global_set_time_function(gnutls_time_func time_func);
-+
-+/* For use in callbacks */
-+extern _SYM_EXPORT gnutls_alloc_function gnutls_malloc;
-+extern _SYM_EXPORT gnutls_realloc_function gnutls_realloc;
-+extern _SYM_EXPORT gnutls_calloc_function gnutls_calloc;
-+extern _SYM_EXPORT gnutls_free_function gnutls_free;
-+
-+#ifdef GNUTLS_INTERNAL_BUILD
-+#define gnutls_free(a) gnutls_free((void *) (a)), a=NULL
-+#endif
-+
-+extern _SYM_EXPORT char *(*gnutls_strdup) (const char *);
-+
-+/* a variant of memset that doesn't get optimized out */
-+void gnutls_memset(void *data, int c, size_t size);
-+
-+/* constant time memcmp */
-+int gnutls_memcmp(const void *s1, const void *s2, size_t n);
-+
-+typedef void (*gnutls_log_func) (int, const char *);
-+typedef void (*gnutls_audit_log_func) (gnutls_session_t, const char *);
-+void gnutls_global_set_log_function(gnutls_log_func log_func);
-+void gnutls_global_set_audit_log_function(gnutls_audit_log_func log_func);
-+void gnutls_global_set_log_level(int level);
-+
-+/* Diffie-Hellman parameter handling.
-+ */
-+int gnutls_dh_params_init(gnutls_dh_params_t * dh_params);
-+void gnutls_dh_params_deinit(gnutls_dh_params_t dh_params);
-+int gnutls_dh_params_import_raw(gnutls_dh_params_t dh_params,
-+				const gnutls_datum_t * prime,
-+				const gnutls_datum_t * generator);
-+int gnutls_dh_params_import_dsa(gnutls_dh_params_t dh_params, gnutls_x509_privkey_t key);
-+int gnutls_dh_params_import_raw2(gnutls_dh_params_t dh_params,
-+				 const gnutls_datum_t * prime,
-+				 const gnutls_datum_t * generator,
-+				 unsigned key_bits);
-+int gnutls_dh_params_import_pkcs3(gnutls_dh_params_t params,
-+				  const gnutls_datum_t * pkcs3_params,
-+				  gnutls_x509_crt_fmt_t format);
-+int gnutls_dh_params_generate2(gnutls_dh_params_t params,
-+			       unsigned int bits);
-+int gnutls_dh_params_export_pkcs3(gnutls_dh_params_t params,
-+				  gnutls_x509_crt_fmt_t format,
-+				  unsigned char *params_data,
-+				  size_t * params_data_size);
-+int gnutls_dh_params_export2_pkcs3(gnutls_dh_params_t params,
-+				   gnutls_x509_crt_fmt_t format,
-+				   gnutls_datum_t * out);
-+int gnutls_dh_params_export_raw(gnutls_dh_params_t params,
-+				gnutls_datum_t * prime,
-+				gnutls_datum_t * generator,
-+				unsigned int *bits);
-+int gnutls_dh_params_cpy(gnutls_dh_params_t dst, gnutls_dh_params_t src);
-+
-+/* Session stuff
-+ */
-+typedef struct {
-+    void *iov_base;
-+    size_t iov_len;
-+} giovec_t;
-+
-+typedef ssize_t(*gnutls_pull_func) (gnutls_transport_ptr_t, void *,
-+				    size_t);
-+typedef ssize_t(*gnutls_push_func) (gnutls_transport_ptr_t, const void *,
-+				    size_t);
-+
-+int gnutls_system_recv_timeout(gnutls_transport_ptr_t ptr, unsigned int ms);
-+typedef int (*gnutls_pull_timeout_func) (gnutls_transport_ptr_t,
-+					 unsigned int ms);
-+
-+typedef ssize_t(*gnutls_vec_push_func) (gnutls_transport_ptr_t,
-+					const giovec_t * iov, int iovcnt);
-+
-+typedef int (*gnutls_errno_func) (gnutls_transport_ptr_t);
-+
-+#if 0
-+ /* This will be defined as macro. */
-+  void gnutls_transport_set_int (gnutls_session_t session, int r);
-+#endif
-+
-+void gnutls_transport_set_int2(gnutls_session_t session, int r, int s);
-+#define gnutls_transport_set_int(s, i) gnutls_transport_set_int2(s, i, i)
-+
-+void gnutls_transport_get_int2(gnutls_session_t session, int *r, int *s);
-+int gnutls_transport_get_int(gnutls_session_t session);
-+
-+void gnutls_transport_set_ptr(gnutls_session_t session,
-+			      gnutls_transport_ptr_t ptr);
-+void gnutls_transport_set_ptr2(gnutls_session_t session,
-+			       gnutls_transport_ptr_t recv_ptr,
-+			       gnutls_transport_ptr_t send_ptr);
-+
-+gnutls_transport_ptr_t gnutls_transport_get_ptr(gnutls_session_t session);
-+void gnutls_transport_get_ptr2(gnutls_session_t session,
-+			       gnutls_transport_ptr_t * recv_ptr,
-+			       gnutls_transport_ptr_t * send_ptr);
-+
-+void gnutls_transport_set_vec_push_function(gnutls_session_t session,
-+					    gnutls_vec_push_func vec_func);
-+void gnutls_transport_set_push_function(gnutls_session_t session,
-+					gnutls_push_func push_func);
-+void gnutls_transport_set_pull_function(gnutls_session_t session,
-+					gnutls_pull_func pull_func);
-+
-+void gnutls_transport_set_pull_timeout_function(gnutls_session_t session,
-+						gnutls_pull_timeout_func
-+						func);
-+
-+void gnutls_transport_set_errno_function(gnutls_session_t session,
-+					 gnutls_errno_func errno_func);
-+
-+void gnutls_transport_set_errno(gnutls_session_t session, int err);
-+
-+/* session specific
-+ */
-+void gnutls_session_set_ptr(gnutls_session_t session, void *ptr);
-+void *gnutls_session_get_ptr(gnutls_session_t session);
-+
-+void gnutls_openpgp_send_cert(gnutls_session_t session,
-+			      gnutls_openpgp_crt_status_t status);
-+
-+/* This function returns the hash of the given data.
-+ */
-+int gnutls_fingerprint(gnutls_digest_algorithm_t algo,
-+		       const gnutls_datum_t * data, void *result,
-+		       size_t * result_size);
-+
-+  /**
-+   * gnutls_random_art_t:
-+   * @GNUTLS_RANDOM_ART_OPENSSH: OpenSSH-style random art.
-+   *
-+   * Enumeration of different random art types.
-+   */
-+typedef enum gnutls_random_art {
-+	GNUTLS_RANDOM_ART_OPENSSH = 1
-+} gnutls_random_art_t;
-+
-+int gnutls_random_art(gnutls_random_art_t type,
-+		      const char *key_type, unsigned int key_size,
-+		      void *fpr, size_t fpr_size, gnutls_datum_t * art);
-+
-+/* IDNA */
-+#define GNUTLS_IDNA_FORCE_2008 (1<<1)
-+int gnutls_idna_map(const char * input, unsigned ilen, gnutls_datum_t *out, unsigned flags);
-+int gnutls_idna_reverse_map(const char *input, unsigned ilen, gnutls_datum_t *out, unsigned flags);
-+
-+/* SRP
-+ */
-+
-+typedef struct gnutls_srp_server_credentials_st
-+*gnutls_srp_server_credentials_t;
-+typedef struct gnutls_srp_client_credentials_st
-+*gnutls_srp_client_credentials_t;
-+
-+void
-+gnutls_srp_free_client_credentials(gnutls_srp_client_credentials_t sc);
-+int
-+gnutls_srp_allocate_client_credentials(gnutls_srp_client_credentials_t *
-+				       sc);
-+int gnutls_srp_set_client_credentials(gnutls_srp_client_credentials_t res,
-+				      const char *username,
-+				      const char *password);
-+
-+void
-+gnutls_srp_free_server_credentials(gnutls_srp_server_credentials_t sc);
-+int
-+gnutls_srp_allocate_server_credentials(gnutls_srp_server_credentials_t *
-+				       sc);
-+int gnutls_srp_set_server_credentials_file(gnutls_srp_server_credentials_t
-+					   res, const char *password_file,
-+					   const char *password_conf_file);
-+
-+const char *gnutls_srp_server_get_username(gnutls_session_t session);
-+
-+void gnutls_srp_set_prime_bits(gnutls_session_t session,
-+                               unsigned int bits);
-+
-+int gnutls_srp_verifier(const char *username,
-+			const char *password,
-+			const gnutls_datum_t * salt,
-+			const gnutls_datum_t * generator,
-+			const gnutls_datum_t * prime,
-+			gnutls_datum_t * res);
-+
-+/* The static parameters defined in draft-ietf-tls-srp-05
-+ * Those should be used as input to gnutls_srp_verifier().
-+ */
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_8192_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_8192_group_generator;
-+
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_4096_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_4096_group_generator;
-+
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_3072_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_3072_group_generator;
-+
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_2048_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_2048_group_generator;
-+
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_1536_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_1536_group_generator;
-+
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_1024_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_srp_1024_group_generator;
-+
-+/* The static parameters defined in rfc7919
-+ */
-+
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_8192_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_8192_group_generator;
-+extern _SYM_EXPORT const unsigned int gnutls_ffdhe_8192_key_bits;
-+
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_6144_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_6144_group_generator;
-+extern _SYM_EXPORT const unsigned int gnutls_ffdhe_6144_key_bits;
-+
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_4096_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_4096_group_generator;
-+extern _SYM_EXPORT const unsigned int gnutls_ffdhe_4096_key_bits;
-+
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_3072_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_3072_group_generator;
-+extern _SYM_EXPORT const unsigned int gnutls_ffdhe_3072_key_bits;
-+
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_2048_group_prime;
-+extern _SYM_EXPORT const gnutls_datum_t gnutls_ffdhe_2048_group_generator;
-+extern _SYM_EXPORT const unsigned int gnutls_ffdhe_2048_key_bits;
-+
-+typedef int gnutls_srp_server_credentials_function(gnutls_session_t,
-+						   const char *username,
-+						   gnutls_datum_t * salt,
-+						   gnutls_datum_t *
-+						   verifier,
-+						   gnutls_datum_t *
-+						   generator,
-+						   gnutls_datum_t * prime);
-+void
-+gnutls_srp_set_server_credentials_function(gnutls_srp_server_credentials_t
-+					   cred,
-+					   gnutls_srp_server_credentials_function
-+					   * func);
-+
-+typedef int gnutls_srp_client_credentials_function(gnutls_session_t,
-+						   char **, char **);
-+void
-+gnutls_srp_set_client_credentials_function(gnutls_srp_client_credentials_t
-+					   cred,
-+					   gnutls_srp_client_credentials_function
-+					   * func);
-+
-+int gnutls_srp_base64_encode(const gnutls_datum_t * data, char *result,
-+			     size_t * result_size);
-+int gnutls_srp_base64_encode2(const gnutls_datum_t * data,
-+				   gnutls_datum_t * result);
-+
-+int gnutls_srp_base64_decode(const gnutls_datum_t * b64_data, char *result,
-+			     size_t * result_size);
-+int gnutls_srp_base64_decode2(const gnutls_datum_t * b64_data,
-+				   gnutls_datum_t * result);
-+
-+#define gnutls_srp_base64_encode_alloc gnutls_srp_base64_encode2
-+#define gnutls_srp_base64_decode_alloc gnutls_srp_base64_decode2
-+
-+void
-+gnutls_srp_set_server_fake_salt_seed(gnutls_srp_server_credentials_t
-+				     sc,
-+				     const gnutls_datum_t * seed,
-+				     unsigned int salt_length);
-+
-+/* PSK stuff */
-+typedef struct gnutls_psk_server_credentials_st
-+*gnutls_psk_server_credentials_t;
-+typedef struct gnutls_psk_client_credentials_st
-+*gnutls_psk_client_credentials_t;
-+
-+/**
-+ * gnutls_psk_key_flags:
-+ * @GNUTLS_PSK_KEY_RAW: PSK-key in raw format.
-+ * @GNUTLS_PSK_KEY_HEX: PSK-key in hex format.
-+ *
-+ * Enumeration of different PSK key flags.
-+ */
-+typedef enum gnutls_psk_key_flags {
-+	GNUTLS_PSK_KEY_RAW = 0,
-+	GNUTLS_PSK_KEY_HEX
-+} gnutls_psk_key_flags;
-+
-+void
-+gnutls_psk_free_client_credentials(gnutls_psk_client_credentials_t sc);
-+int
-+gnutls_psk_allocate_client_credentials(gnutls_psk_client_credentials_t *
-+				       sc);
-+int gnutls_psk_set_client_credentials(gnutls_psk_client_credentials_t res,
-+				      const char *username,
-+				      const gnutls_datum_t * key,
-+				      gnutls_psk_key_flags flags);
-+
-+void
-+gnutls_psk_free_server_credentials(gnutls_psk_server_credentials_t sc);
-+int
-+gnutls_psk_allocate_server_credentials(gnutls_psk_server_credentials_t *
-+				       sc);
-+int gnutls_psk_set_server_credentials_file(gnutls_psk_server_credentials_t
-+					   res, const char *password_file);
-+
-+int
-+gnutls_psk_set_server_credentials_hint(gnutls_psk_server_credentials_t
-+				       res, const char *hint);
-+
-+const char *gnutls_psk_server_get_username(gnutls_session_t session);
-+const char *gnutls_psk_client_get_hint(gnutls_session_t session);
-+
-+typedef int gnutls_psk_server_credentials_function(gnutls_session_t,
-+						   const char *username,
-+						   gnutls_datum_t * key);
-+void
-+gnutls_psk_set_server_credentials_function(gnutls_psk_server_credentials_t
-+					   cred,
-+					   gnutls_psk_server_credentials_function
-+					   * func);
-+
-+typedef int gnutls_psk_client_credentials_function(gnutls_session_t,
-+						   char **username,
-+						   gnutls_datum_t * key);
-+void
-+gnutls_psk_set_client_credentials_function(gnutls_psk_client_credentials_t
-+					   cred,
-+					   gnutls_psk_client_credentials_function
-+					   * func);
-+
-+int gnutls_hex_encode(const gnutls_datum_t * data, char *result,
-+		      size_t * result_size);
-+int gnutls_hex_decode(const gnutls_datum_t * hex_data, void *result,
-+		      size_t * result_size);
-+
-+int gnutls_hex_encode2(const gnutls_datum_t * data, gnutls_datum_t *result);
-+int gnutls_hex_decode2(const gnutls_datum_t * data, gnutls_datum_t *result);
-+
-+void
-+gnutls_psk_set_server_dh_params(gnutls_psk_server_credentials_t res,
-+				gnutls_dh_params_t dh_params);
-+
-+int
-+gnutls_psk_set_server_known_dh_params(gnutls_psk_server_credentials_t res,
-+				      gnutls_sec_param_t sec_param);
-+
-+void
-+gnutls_psk_set_server_params_function(gnutls_psk_server_credentials_t
-+				      res, gnutls_params_function * func);
-+
-+/**
-+ * gnutls_x509_subject_alt_name_t:
-+ * @GNUTLS_SAN_DNSNAME: DNS-name SAN.
-+ * @GNUTLS_SAN_RFC822NAME: E-mail address SAN.
-+ * @GNUTLS_SAN_URI: URI SAN.
-+ * @GNUTLS_SAN_IPADDRESS: IP address SAN.
-+ * @GNUTLS_SAN_OTHERNAME: OtherName SAN.
-+ * @GNUTLS_SAN_DN: DN SAN.
-+ * @GNUTLS_SAN_OTHERNAME_XMPP: Virtual SAN, used by certain functions for convenience.
-+ * @GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL: Virtual SAN, used by certain functions for convenience.
-+ *
-+ * Enumeration of different subject alternative names types.
-+ */
-+typedef enum gnutls_x509_subject_alt_name_t {
-+	GNUTLS_SAN_DNSNAME = 1,
-+	GNUTLS_SAN_RFC822NAME = 2,
-+	GNUTLS_SAN_URI = 3,
-+	GNUTLS_SAN_IPADDRESS = 4,
-+	GNUTLS_SAN_OTHERNAME = 5,
-+	GNUTLS_SAN_DN = 6,
-+	GNUTLS_SAN_MAX = GNUTLS_SAN_DN,
-+	/* The following are "virtual" subject alternative name types, in
-+	   that they are represented by an otherName value and an OID.
-+	   Used by gnutls_x509_crt_get_subject_alt_othername_oid.  */
-+	GNUTLS_SAN_OTHERNAME_XMPP = 1000,
-+	GNUTLS_SAN_OTHERNAME_KRB5PRINCIPAL
-+} gnutls_x509_subject_alt_name_t;
-+
-+struct gnutls_openpgp_crt_int;
-+typedef struct gnutls_openpgp_crt_int *gnutls_openpgp_crt_t;
-+
-+struct gnutls_openpgp_privkey_int;
-+typedef struct gnutls_openpgp_privkey_int *gnutls_openpgp_privkey_t;
-+
-+struct gnutls_pkcs11_privkey_st;
-+typedef struct gnutls_pkcs11_privkey_st *gnutls_pkcs11_privkey_t;
-+
-+/**
-+ * gnutls_privkey_type_t:
-+ * @GNUTLS_PRIVKEY_X509: X.509 private key, #gnutls_x509_privkey_t.
-+ * @GNUTLS_PRIVKEY_OPENPGP: OpenPGP private key, #gnutls_openpgp_privkey_t.
-+ * @GNUTLS_PRIVKEY_PKCS11: PKCS11 private key, #gnutls_pkcs11_privkey_t.
-+ * @GNUTLS_PRIVKEY_EXT: External private key, operating using callbacks.
-+ *
-+ * Enumeration of different private key types.
-+ */
-+typedef enum {
-+	GNUTLS_PRIVKEY_X509,
-+	GNUTLS_PRIVKEY_OPENPGP,
-+	GNUTLS_PRIVKEY_PKCS11,
-+	GNUTLS_PRIVKEY_EXT
-+} gnutls_privkey_type_t;
-+
-+typedef struct gnutls_retr2_st {
-+	gnutls_certificate_type_t cert_type;
-+	gnutls_privkey_type_t key_type;
-+
-+	union {
-+		gnutls_x509_crt_t *x509;
-+		gnutls_openpgp_crt_t pgp;
-+	} cert;
-+	unsigned int ncerts;	/* one for pgp keys */
-+
-+	union {
-+		gnutls_x509_privkey_t x509;
-+		gnutls_openpgp_privkey_t pgp;
-+		gnutls_pkcs11_privkey_t pkcs11;
-+	} key;
-+
-+	unsigned int deinit_all;	/* if non zero all keys will be deinited */
-+} gnutls_retr2_st;
-+
-+  /* Functions that allow auth_info_t structures handling
-+   */
-+
-+gnutls_credentials_type_t gnutls_auth_get_type(gnutls_session_t session);
-+gnutls_credentials_type_t
-+gnutls_auth_server_get_type(gnutls_session_t session);
-+gnutls_credentials_type_t
-+gnutls_auth_client_get_type(gnutls_session_t session);
-+
-+  /* DH */
-+
-+void gnutls_dh_set_prime_bits(gnutls_session_t session, unsigned int bits);
-+int gnutls_dh_get_secret_bits(gnutls_session_t session);
-+int gnutls_dh_get_peers_public_bits(gnutls_session_t session);
-+int gnutls_dh_get_prime_bits(gnutls_session_t session);
-+
-+int gnutls_dh_get_group(gnutls_session_t session, gnutls_datum_t * raw_gen,
-+			gnutls_datum_t * raw_prime);
-+int gnutls_dh_get_pubkey(gnutls_session_t session,
-+			 gnutls_datum_t * raw_key);
-+
-+  /* X509PKI */
-+
-+  /* These are set on the credentials structure.
-+   */
-+
-+  /* use gnutls_certificate_set_retrieve_function2() in abstract.h
-+   * instead. It's much more efficient.
-+   */
-+
-+typedef int gnutls_certificate_retrieve_function(gnutls_session_t,
-+						 const
-+						 gnutls_datum_t *
-+						 req_ca_rdn,
-+						 int nreqs,
-+						 const
-+						 gnutls_pk_algorithm_t
-+						 * pk_algos,
-+						 int
-+						 pk_algos_length,
-+						 gnutls_retr2_st *);
-+
-+void
-+gnutls_certificate_set_retrieve_function(gnutls_certificate_credentials_t
-+					 cred,
-+					 gnutls_certificate_retrieve_function
-+					 * func);
-+
-+void
-+gnutls_certificate_set_verify_function(gnutls_certificate_credentials_t
-+				       cred,
-+				       gnutls_certificate_verify_function
-+				       * func);
-+
-+void
-+gnutls_certificate_server_set_request(gnutls_session_t session,
-+				      gnutls_certificate_request_t req);
-+
-+  /* get data from the session
-+   */
-+const gnutls_datum_t *gnutls_certificate_get_peers(gnutls_session_t
-+						   session, unsigned int
-+						   *list_size);
-+const gnutls_datum_t *gnutls_certificate_get_ours(gnutls_session_t
-+						  session);
-+
-+int gnutls_certificate_get_peers_subkey_id(gnutls_session_t session,
-+					   gnutls_datum_t * id);
-+
-+time_t gnutls_certificate_activation_time_peers(gnutls_session_t session);
-+time_t gnutls_certificate_expiration_time_peers(gnutls_session_t session);
-+
-+unsigned gnutls_certificate_client_get_request_status(gnutls_session_t session);
-+int gnutls_certificate_verify_peers2(gnutls_session_t session,
-+				     unsigned int *status);
-+int gnutls_certificate_verify_peers3(gnutls_session_t session,
-+				     const char *hostname,
-+				     unsigned int *status);
-+
-+int
-+gnutls_certificate_verify_peers(gnutls_session_t session,
-+				gnutls_typed_vdata_st * data,
-+				unsigned int elements,
-+				unsigned int *status);
-+
-+int gnutls_certificate_verification_status_print(unsigned int status,
-+						 gnutls_certificate_type_t
-+						 type,
-+						 gnutls_datum_t * out,
-+						 unsigned int flags);
-+
-+int gnutls_pem_base64_encode(const char *msg, const gnutls_datum_t * data,
-+			     char *result, size_t * result_size);
-+int gnutls_pem_base64_decode(const char *header,
-+			     const gnutls_datum_t * b64_data,
-+			     unsigned char *result, size_t * result_size);
-+
-+int gnutls_pem_base64_encode2(const char *msg,
-+				   const gnutls_datum_t * data,
-+				   gnutls_datum_t * result);
-+int gnutls_pem_base64_decode2(const char *header,
-+				   const gnutls_datum_t * b64_data,
-+				   gnutls_datum_t * result);
-+
-+#define gnutls_pem_base64_encode_alloc gnutls_pem_base64_encode2
-+#define gnutls_pem_base64_decode_alloc gnutls_pem_base64_decode2
-+
-+  /* key_usage will be an OR of the following values:
-+   */
-+
-+  /* when the key is to be used for signing: */
-+#define GNUTLS_KEY_DIGITAL_SIGNATURE	128
-+#define GNUTLS_KEY_NON_REPUDIATION	64
-+  /* when the key is to be used for encryption: */
-+#define GNUTLS_KEY_KEY_ENCIPHERMENT	32
-+#define GNUTLS_KEY_DATA_ENCIPHERMENT	16
-+#define GNUTLS_KEY_KEY_AGREEMENT	8
-+#define GNUTLS_KEY_KEY_CERT_SIGN	4
-+#define GNUTLS_KEY_CRL_SIGN		2
-+#define GNUTLS_KEY_ENCIPHER_ONLY	1
-+#define GNUTLS_KEY_DECIPHER_ONLY	32768
-+
-+void
-+gnutls_certificate_set_params_function(gnutls_certificate_credentials_t
-+				       res, gnutls_params_function * func);
-+void gnutls_anon_set_params_function(gnutls_anon_server_credentials_t res,
-+				     gnutls_params_function * func);
-+void gnutls_psk_set_params_function(gnutls_psk_server_credentials_t res,
-+				    gnutls_params_function * func);
-+
-+int gnutls_hex2bin(const char *hex_data, size_t hex_size,
-+		   void *bin_data, size_t * bin_size);
-+
-+  /* Trust on first use (or ssh like) functions */
-+
-+  /* stores the provided information to a database
-+   */
-+typedef int (*gnutls_tdb_store_func) (const char *db_name,
-+				      const char *host,
-+				      const char *service,
-+				      time_t expiration,
-+				      const gnutls_datum_t * pubkey);
-+
-+typedef int (*gnutls_tdb_store_commitment_func) (const char *db_name,
-+						 const char *host,
-+						 const char *service,
-+						 time_t expiration,
-+						 gnutls_digest_algorithm_t
-+						 hash_algo,
-+						 const gnutls_datum_t *
-+						 hash);
-+
-+  /* searches for the provided host/service pair that match the
-+   * provided public key in the database. */
-+typedef int (*gnutls_tdb_verify_func) (const char *db_name,
-+				       const char *host,
-+				       const char *service,
-+				       const gnutls_datum_t * pubkey);
-+
-+struct gnutls_tdb_int;
-+typedef struct gnutls_tdb_int *gnutls_tdb_t;
-+
-+int gnutls_tdb_init(gnutls_tdb_t * tdb);
-+void gnutls_tdb_set_store_func(gnutls_tdb_t tdb,
-+			       gnutls_tdb_store_func store);
-+void gnutls_tdb_set_store_commitment_func(gnutls_tdb_t tdb,
-+					  gnutls_tdb_store_commitment_func
-+					  cstore);
-+void gnutls_tdb_set_verify_func(gnutls_tdb_t tdb,
-+				gnutls_tdb_verify_func verify);
-+void gnutls_tdb_deinit(gnutls_tdb_t tdb);
-+
-+int gnutls_verify_stored_pubkey(const char *db_name,
-+				gnutls_tdb_t tdb,
-+				const char *host,
-+				const char *service,
-+				gnutls_certificate_type_t cert_type,
-+				const gnutls_datum_t * cert,
-+				unsigned int flags);
-+
-+#define GNUTLS_SCOMMIT_FLAG_ALLOW_BROKEN 1
-+int gnutls_store_commitment(const char *db_name,
-+			    gnutls_tdb_t tdb,
-+			    const char *host,
-+			    const char *service,
-+			    gnutls_digest_algorithm_t hash_algo,
-+			    const gnutls_datum_t * hash,
-+			    time_t expiration, unsigned int flags);
-+
-+int gnutls_store_pubkey(const char *db_name,
-+			gnutls_tdb_t tdb,
-+			const char *host,
-+			const char *service,
-+			gnutls_certificate_type_t cert_type,
-+			const gnutls_datum_t * cert,
-+			time_t expiration, unsigned int flags);
-+
-+  /* Other helper functions */
-+int gnutls_load_file(const char *filename, gnutls_datum_t * data);
-+
-+unsigned gnutls_url_is_supported(const char *url);
-+
-+  /* PIN callback */
-+
-+/**
-+ * gnutls_pin_flag_t:
-+ * @GNUTLS_PIN_USER: The PIN for the user.
-+ * @GNUTLS_PIN_SO: The PIN for the security officer (admin).
-+ * @GNUTLS_PIN_CONTEXT_SPECIFIC: The PIN is for a specific action and key like signing.
-+ * @GNUTLS_PIN_FINAL_TRY: This is the final try before blocking.
-+ * @GNUTLS_PIN_COUNT_LOW: Few tries remain before token blocks.
-+ * @GNUTLS_PIN_WRONG: Last given PIN was not correct.
-+ *
-+ * Enumeration of different flags that are input to the PIN function.
-+ */
-+typedef enum {
-+	GNUTLS_PIN_USER = (1 << 0),
-+	GNUTLS_PIN_SO = (1 << 1),
-+	GNUTLS_PIN_FINAL_TRY = (1 << 2),
-+	GNUTLS_PIN_COUNT_LOW = (1 << 3),
-+	GNUTLS_PIN_CONTEXT_SPECIFIC = (1 << 4),
-+	GNUTLS_PIN_WRONG = (1 << 5)
-+} gnutls_pin_flag_t;
-+
-+#define GNUTLS_PKCS11_PIN_USER GNUTLS_PIN_USER
-+#define GNUTLS_PKCS11_PIN_SO GNUTLS_PIN_SO
-+#define GNUTLS_PKCS11_PIN_FINAL_TRY GNUTLS_PIN_FINAL_TRY
-+#define GNUTLS_PKCS11_PIN_COUNT_LOW  GNUTLS_PIN_COUNT_LOW
-+#define GNUTLS_PKCS11_PIN_CONTEXT_SPECIFIC GNUTLS_PIN_CONTEXT_SPECIFIC
-+#define GNUTLS_PKCS11_PIN_WRONG GNUTLS_PIN_WRONG
-+
-+/**
-+ * gnutls_pin_callback_t:
-+ * @userdata: user-controlled data from gnutls_pkcs11_set_pin_function().
-+ * @attempt: pin-attempt counter, initially 0.
-+ * @token_url: URL of token.
-+ * @token_label: label of token.
-+ * @flags: a #gnutls_pin_flag_t flag.
-+ * @pin: buffer to hold PIN, of size @pin_max.
-+ * @pin_max: size of @pin buffer.
-+ *
-+ * Callback function type for PKCS#11 or TPM PIN entry.  It is set by
-+ * functions like gnutls_pkcs11_set_pin_function().
-+ *
-+ * The callback should provides the PIN code to unlock the token with
-+ * label @token_label, specified by the URL @token_url.
-+ *
-+ * The PIN code, as a NUL-terminated ASCII string, should be copied
-+ * into the @pin buffer (of maximum size @pin_max), and return 0 to
-+ * indicate success.  Alternatively, the callback may return a
-+ * negative gnutls error code to indicate failure and cancel PIN entry
-+ * (in which case, the contents of the @pin parameter are ignored).
-+ *
-+ * When a PIN is required, the callback will be invoked repeatedly
-+ * (and indefinitely) until either the returned PIN code is correct,
-+ * the callback returns failure, or the token refuses login (e.g. when
-+ * the token is locked due to too many incorrect PINs!).  For the
-+ * first such invocation, the @attempt counter will have value zero;
-+ * it will increase by one for each subsequent attempt.
-+ *
-+ * Returns: %GNUTLS_E_SUCCESS (0) on success or a negative error code on error.
-+ *
-+ * Since: 2.12.0
-+ **/
-+typedef int (*gnutls_pin_callback_t) (void *userdata, int attempt,
-+				      const char *token_url,
-+				      const char *token_label,
-+				      unsigned int flags,
-+				      char *pin, size_t pin_max);
-+
-+void gnutls_certificate_set_pin_function(gnutls_certificate_credentials_t,
-+					 gnutls_pin_callback_t fn,
-+					 void *userdata);
-+
-+/* Public string related functions */
-+typedef struct gnutls_buffer_st *gnutls_buffer_t;
-+
-+int gnutls_buffer_append_data(gnutls_buffer_t, const void *data, size_t data_size);
-+
-+#define GNUTLS_UTF8_IGNORE_ERRS 1
-+int gnutls_utf8_password_normalize(const unsigned char *password, unsigned password_len,
-+				   gnutls_datum_t *out, unsigned flags);
-+
-+/* Public extensions related functions */
-+
-+typedef void *gnutls_ext_priv_data_t;
-+
-+void gnutls_ext_set_data(gnutls_session_t session, unsigned type,
-+			 gnutls_ext_priv_data_t);
-+int gnutls_ext_get_data(gnutls_session_t session, unsigned type,
-+			gnutls_ext_priv_data_t *);
-+
-+unsigned gnutls_ext_get_current_msg(gnutls_session_t session);
-+
-+typedef int (*gnutls_ext_recv_func) (gnutls_session_t session,
-+				     const unsigned char *data,
-+				     size_t len);
-+
-+typedef int (*gnutls_ext_send_func) (gnutls_session_t session,
-+				     gnutls_buffer_t extdata);
-+
-+typedef void (*gnutls_ext_deinit_data_func) (gnutls_ext_priv_data_t data);
-+
-+typedef int (*gnutls_ext_pack_func) (gnutls_ext_priv_data_t data,
-+				     gnutls_buffer_t packed_data);
-+
-+typedef int (*gnutls_ext_unpack_func) (gnutls_buffer_t packed_data,
-+				       gnutls_ext_priv_data_t *data);
-+
-+#define GNUTLS_EXT_RAW_FLAG_TLS_CLIENT_HELLO 1
-+#define GNUTLS_EXT_RAW_FLAG_DTLS_CLIENT_HELLO (1<<1)
-+typedef int (*gnutls_ext_raw_process_func)(void *ctx, unsigned tls_id, const unsigned char *data, unsigned data_size);
-+int gnutls_ext_raw_parse(void *ctx, gnutls_ext_raw_process_func cb,
-+			 const gnutls_datum_t *data, unsigned int flags);
-+
-+/**
-+ * gnutls_ext_parse_type_t:
-+ * @GNUTLS_EXT_NONE: Never to be parsed
-+ * @GNUTLS_EXT_ANY: Any extension type (should not be used as it is used only internally).
-+ * @GNUTLS_EXT_VERSION_NEG: Extensions to be parsed first for TLS version negotiation.
-+ * @GNUTLS_EXT_MANDATORY: Parsed after @GNUTLS_EXT_VERSION_NEG and even when resuming.
-+ * @GNUTLS_EXT_APPLICATION: Parsed after @GNUTLS_EXT_MANDATORY
-+ * @GNUTLS_EXT_TLS: TLS-internal extensions, parsed after @GNUTLS_EXT_APPLICATION.
-+ *
-+ * Enumeration of different TLS extension parsing phases.  The @gnutls_ext_parse_type_t
-+ * indicates the time/phase an extension is parsed during Client or Server hello parsing.
-+ *
-+ */
-+typedef enum {
-+  GNUTLS_EXT_ANY = 0,
-+  GNUTLS_EXT_APPLICATION = 1,
-+  GNUTLS_EXT_TLS = 2,
-+  GNUTLS_EXT_MANDATORY = 3,
-+  GNUTLS_EXT_NONE = 4,
-+  GNUTLS_EXT_VERSION_NEG = 5
-+} gnutls_ext_parse_type_t;
-+
-+/**
-+ * gnutls_ext_flags_t:
-+ * @GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL: If specified the extension registered will override the internal; this does not work with extensions existing prior to 3.6.0.
-+ * @GNUTLS_EXT_FLAG_CLIENT_HELLO: This extension can be present in a client hello
-+ * @GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO: This extension can be present in a TLS1.2 or earlier server hello
-+ * @GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO: This extension can be present in a TLS1.3 server hello
-+ * @GNUTLS_EXT_FLAG_EE: This extension can be present in encrypted extensions message
-+ * @GNUTLS_EXT_FLAG_HRR: This extension can be present in hello retry request message
-+ * @GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST: When flag is present, this extension will be send even if the client didn't advertise it. An extension of this type is the Cookie TLS1.3 extension.
-+ * @GNUTLS_EXT_FLAG_DTLS: This extension can be present under DTLS; otherwise ignored.
-+ * @GNUTLS_EXT_FLAG_TLS: This extension can be present under TLS; otherwise ignored.
-+ *
-+ * Enumeration of different TLS extension registration flags.
-+ */
-+typedef enum {
-+  GNUTLS_EXT_FLAG_OVERRIDE_INTERNAL = 1,
-+  GNUTLS_EXT_FLAG_CLIENT_HELLO = (1<<1),
-+  GNUTLS_EXT_FLAG_TLS12_SERVER_HELLO = (1<<2),
-+  GNUTLS_EXT_FLAG_TLS13_SERVER_HELLO = (1<<3),
-+  GNUTLS_EXT_FLAG_EE = (1<<4), /* ENCRYPTED */
-+  GNUTLS_EXT_FLAG_HRR = (1<<5),
-+  GNUTLS_EXT_FLAG_IGNORE_CLIENT_REQUEST = (1<<6),
-+  GNUTLS_EXT_FLAG_TLS = (1<<7),
-+  GNUTLS_EXT_FLAG_DTLS = (1<<8)
-+} gnutls_ext_flags_t;
-+
-+/* Register a custom tls extension
-+ */
-+int gnutls_ext_register(const char *name, int type, gnutls_ext_parse_type_t parse_type,
-+				gnutls_ext_recv_func recv_func, gnutls_ext_send_func send_func,
-+				gnutls_ext_deinit_data_func deinit_func, gnutls_ext_pack_func pack_func,
-+				gnutls_ext_unpack_func unpack_func);
-+
-+int gnutls_session_ext_register(gnutls_session_t, const char *name, int type, gnutls_ext_parse_type_t parse_type,
-+				gnutls_ext_recv_func recv_func, gnutls_ext_send_func send_func,
-+				gnutls_ext_deinit_data_func deinit_func, gnutls_ext_pack_func pack_func,
-+				gnutls_ext_unpack_func unpack_func, unsigned flags);
-+
-+const char *gnutls_ext_get_name(unsigned int ext);
-+
-+/* Public supplemental data related functions */
-+
-+typedef int (*gnutls_supp_recv_func) (gnutls_session_t session,
-+			       const unsigned char * data, size_t data_size);
-+typedef int (*gnutls_supp_send_func) (gnutls_session_t session,
-+			       gnutls_buffer_t buf);
-+
-+int gnutls_supplemental_register(const char *name,
-+				gnutls_supplemental_data_format_type_t type,
-+				gnutls_supp_recv_func supp_recv_func,
-+				gnutls_supp_send_func supp_send_func);
-+
-+int gnutls_session_supplemental_register(gnutls_session_t session, const char *name,
-+				gnutls_supplemental_data_format_type_t type,
-+				gnutls_supp_recv_func supp_recv_func,
-+				gnutls_supp_send_func supp_send_func,
-+				unsigned int flags);
-+
-+void gnutls_supplemental_recv(gnutls_session_t session, unsigned do_recv_supplemental);
-+
-+void gnutls_supplemental_send(gnutls_session_t session, unsigned do_send_supplemental);
-+
-+/* Anti-replay related functions */
-+
-+typedef struct gnutls_anti_replay_st *gnutls_anti_replay_t;
-+
-+int gnutls_anti_replay_init(gnutls_anti_replay_t *anti_replay);
-+void gnutls_anti_replay_deinit(gnutls_anti_replay_t anti_replay);
-+void gnutls_anti_replay_set_window(gnutls_anti_replay_t anti_replay,
-+				   unsigned int window);
-+void gnutls_anti_replay_enable(gnutls_session_t session,
-+			       gnutls_anti_replay_t anti_replay);
-+
-+typedef int (*gnutls_db_add_func) (void *, time_t exp_time, const gnutls_datum_t *key,
-+				   const gnutls_datum_t *data);
-+
-+void gnutls_anti_replay_set_add_function(gnutls_anti_replay_t,
-+					 gnutls_db_add_func add_func);
-+
-+void gnutls_anti_replay_set_ptr(gnutls_anti_replay_t, void *ptr);
-+
-+/* FIPS140-2 related functions */
-+unsigned gnutls_fips140_mode_enabled(void);
-+
-+/**
-+ * gnutls_fips_mode_t:
-+ * @GNUTLS_FIPS140_DISABLED: The FIPS140-2 mode is disabled.
-+ * @GNUTLS_FIPS140_STRICT: The default mode; all forbidden operations will cause an
-+ *                         operation failure via error code.
-+ * @GNUTLS_FIPS140_LAX: The library still uses the FIPS140-2 relevant algorithms but all
-+ *                      forbidden by FIPS140-2 operations are allowed; this is useful when the
-+ *                      application is aware of the followed security policy, and needs
-+ *                      to utilize disallowed operations for other reasons (e.g., compatibility).
-+ * @GNUTLS_FIPS140_LOG: Similarly to %GNUTLS_FIPS140_LAX, it allows forbidden operations; any use of them results
-+ *                      to a message to the audit callback functions.
-+ * @GNUTLS_FIPS140_SELFTESTS: A transient state during library initialization. That state
-+ *			cannot be set or seen by applications.
-+ *
-+ * Enumeration of different operational modes under FIPS140-2.
-+ */
-+typedef enum gnutls_fips_mode_t {
-+  GNUTLS_FIPS140_DISABLED = 0,
-+  GNUTLS_FIPS140_STRICT = 1,
-+  GNUTLS_FIPS140_SELFTESTS = 2,
-+  GNUTLS_FIPS140_LAX = 3,
-+  GNUTLS_FIPS140_LOG = 4
-+} gnutls_fips_mode_t;
-+
-+#define GNUTLS_FIPS140_SET_MODE_THREAD 1
-+
-+void gnutls_fips140_set_mode(gnutls_fips_mode_t mode, unsigned flags);
-+
-+#define GNUTLS_FIPS140_SET_LAX_MODE() do { \
-+	if (gnutls_fips140_mode_enabled()) \
-+		gnutls_fips140_set_mode(GNUTLS_FIPS140_LAX, GNUTLS_FIPS140_SET_MODE_THREAD); \
-+	} while(0)
-+
-+#define GNUTLS_FIPS140_SET_STRICT_MODE() do { \
-+	if (gnutls_fips140_mode_enabled()) \
-+		gnutls_fips140_set_mode(GNUTLS_FIPS140_STRICT, GNUTLS_FIPS140_SET_MODE_THREAD); \
-+	} while(0)
-+
-+  /* Gnutls error codes. The mapping to a TLS alert is also shown in
-+   * comments.
-+   */
-+
-+#define GNUTLS_E_SUCCESS 0
-+#define	GNUTLS_E_UNKNOWN_COMPRESSION_ALGORITHM -3
-+#define	GNUTLS_E_UNKNOWN_CIPHER_TYPE -6
-+#define	GNUTLS_E_LARGE_PACKET -7
-+#define GNUTLS_E_UNSUPPORTED_VERSION_PACKET -8	/* GNUTLS_A_PROTOCOL_VERSION */
-+#define GNUTLS_E_TLS_PACKET_DECODING_ERROR GNUTLS_E_UNEXPECTED_PACKET_LENGTH
-+#define GNUTLS_E_UNEXPECTED_PACKET_LENGTH -9	/* GNUTLS_A_DECODE_ERROR */
-+#define GNUTLS_E_INVALID_SESSION -10
-+#define GNUTLS_E_FATAL_ALERT_RECEIVED -12
-+#define GNUTLS_E_UNEXPECTED_PACKET -15	/* GNUTLS_A_UNEXPECTED_MESSAGE */
-+#define GNUTLS_E_WARNING_ALERT_RECEIVED -16
-+#define GNUTLS_E_ERROR_IN_FINISHED_PACKET -18
-+#define GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET -19
-+#define	GNUTLS_E_UNKNOWN_CIPHER_SUITE -21	/* GNUTLS_A_HANDSHAKE_FAILURE */
-+#define	GNUTLS_E_UNWANTED_ALGORITHM -22
-+#define	GNUTLS_E_MPI_SCAN_FAILED -23
-+#define GNUTLS_E_DECRYPTION_FAILED -24	/* GNUTLS_A_DECRYPTION_FAILED, GNUTLS_A_BAD_RECORD_MAC */
-+#define GNUTLS_E_MEMORY_ERROR -25
-+#define GNUTLS_E_DECOMPRESSION_FAILED -26	/* GNUTLS_A_DECOMPRESSION_FAILURE */
-+#define GNUTLS_E_COMPRESSION_FAILED -27
-+#define GNUTLS_E_AGAIN -28
-+#define GNUTLS_E_EXPIRED -29
-+#define GNUTLS_E_DB_ERROR -30
-+#define GNUTLS_E_SRP_PWD_ERROR GNUTLS_E_KEYFILE_ERROR
-+#define GNUTLS_E_KEYFILE_ERROR -31
-+#define GNUTLS_E_INSUFFICIENT_CREDENTIALS -32
-+#define GNUTLS_E_INSUFICIENT_CREDENTIALS GNUTLS_E_INSUFFICIENT_CREDENTIALS	/* for backwards compatibility only */
-+#define GNUTLS_E_INSUFFICIENT_CRED GNUTLS_E_INSUFFICIENT_CREDENTIALS
-+#define GNUTLS_E_INSUFICIENT_CRED GNUTLS_E_INSUFFICIENT_CREDENTIALS	/* for backwards compatibility only */
-+
-+#define GNUTLS_E_HASH_FAILED -33
-+#define GNUTLS_E_BASE64_DECODING_ERROR -34
-+
-+#define	GNUTLS_E_MPI_PRINT_FAILED -35
-+#define GNUTLS_E_REHANDSHAKE -37	/* GNUTLS_A_NO_RENEGOTIATION */
-+#define GNUTLS_E_GOT_APPLICATION_DATA -38
-+#define GNUTLS_E_RECORD_LIMIT_REACHED -39
-+#define GNUTLS_E_ENCRYPTION_FAILED -40
-+
-+#define GNUTLS_E_PK_ENCRYPTION_FAILED -44
-+#define GNUTLS_E_PK_DECRYPTION_FAILED -45
-+#define GNUTLS_E_PK_SIGN_FAILED -46
-+#define GNUTLS_E_X509_UNSUPPORTED_CRITICAL_EXTENSION -47
-+#define GNUTLS_E_KEY_USAGE_VIOLATION -48
-+#define GNUTLS_E_NO_CERTIFICATE_FOUND -49	/* GNUTLS_A_BAD_CERTIFICATE */
-+#define GNUTLS_E_INVALID_REQUEST -50
-+#define GNUTLS_E_SHORT_MEMORY_BUFFER -51
-+#define GNUTLS_E_INTERRUPTED -52
-+#define GNUTLS_E_PUSH_ERROR -53
-+#define GNUTLS_E_PULL_ERROR -54
-+#define GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER -55	/* GNUTLS_A_ILLEGAL_PARAMETER */
-+#define GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE -56
-+#define GNUTLS_E_PKCS1_WRONG_PAD -57
-+#define GNUTLS_E_RECEIVED_ILLEGAL_EXTENSION -58
-+#define GNUTLS_E_INTERNAL_ERROR -59
-+#define GNUTLS_E_DH_PRIME_UNACCEPTABLE -63
-+#define GNUTLS_E_FILE_ERROR -64
-+#define GNUTLS_E_TOO_MANY_EMPTY_PACKETS -78
-+#define GNUTLS_E_UNKNOWN_PK_ALGORITHM -80
-+#define GNUTLS_E_TOO_MANY_HANDSHAKE_PACKETS -81
-+#define GNUTLS_E_RECEIVED_DISALLOWED_NAME -82 /* GNUTLS_A_ILLEGAL_PARAMETER */
-+#define GNUTLS_E_CERTIFICATE_REQUIRED -112 /* GNUTLS_A_CERTIFICATE_REQUIRED */
-+
-+  /* returned if you need to generate temporary RSA
-+   * parameters. These are needed for export cipher suites.
-+   */
-+#define GNUTLS_E_NO_TEMPORARY_RSA_PARAMS -84
-+
-+#define GNUTLS_E_NO_COMPRESSION_ALGORITHMS -86
-+#define GNUTLS_E_NO_CIPHER_SUITES -87
-+
-+#define GNUTLS_E_OPENPGP_GETKEY_FAILED -88
-+#define GNUTLS_E_PK_SIG_VERIFY_FAILED -89
-+
-+#define GNUTLS_E_ILLEGAL_SRP_USERNAME -90
-+#define GNUTLS_E_SRP_PWD_PARSING_ERROR GNUTLS_E_KEYFILE_PARSING_ERROR
-+#define GNUTLS_E_KEYFILE_PARSING_ERROR -91
-+#define GNUTLS_E_NO_TEMPORARY_DH_PARAMS -93
-+
-+  /* For certificate and key stuff
-+   */
-+#define GNUTLS_E_ASN1_ELEMENT_NOT_FOUND -67
-+#define GNUTLS_E_ASN1_IDENTIFIER_NOT_FOUND -68
-+#define GNUTLS_E_ASN1_DER_ERROR -69
-+#define GNUTLS_E_ASN1_VALUE_NOT_FOUND -70
-+#define GNUTLS_E_ASN1_GENERIC_ERROR -71
-+#define GNUTLS_E_ASN1_VALUE_NOT_VALID -72
-+#define GNUTLS_E_ASN1_TAG_ERROR -73
-+#define GNUTLS_E_ASN1_TAG_IMPLICIT -74
-+#define GNUTLS_E_ASN1_TYPE_ANY_ERROR -75
-+#define GNUTLS_E_ASN1_SYNTAX_ERROR -76
-+#define GNUTLS_E_ASN1_DER_OVERFLOW -77
-+#define GNUTLS_E_OPENPGP_UID_REVOKED -79
-+#define GNUTLS_E_CERTIFICATE_ERROR -43
-+#define GNUTLS_E_X509_CERTIFICATE_ERROR GNUTLS_E_CERTIFICATE_ERROR
-+#define GNUTLS_E_CERTIFICATE_KEY_MISMATCH -60
-+#define GNUTLS_E_UNSUPPORTED_CERTIFICATE_TYPE -61	/* GNUTLS_A_UNSUPPORTED_CERTIFICATE */
-+#define GNUTLS_E_X509_UNKNOWN_SAN -62
-+#define GNUTLS_E_OPENPGP_FINGERPRINT_UNSUPPORTED -94
-+#define GNUTLS_E_X509_UNSUPPORTED_ATTRIBUTE -95
-+#define GNUTLS_E_UNKNOWN_HASH_ALGORITHM -96
-+#define GNUTLS_E_UNKNOWN_PKCS_CONTENT_TYPE -97
-+#define GNUTLS_E_UNKNOWN_PKCS_BAG_TYPE -98
-+#define GNUTLS_E_INVALID_PASSWORD -99
-+#define GNUTLS_E_MAC_VERIFY_FAILED -100	/* for PKCS #12 MAC */
-+#define GNUTLS_E_CONSTRAINT_ERROR -101
-+
-+#define GNUTLS_E_WARNING_IA_IPHF_RECEIVED -102
-+#define GNUTLS_E_WARNING_IA_FPHF_RECEIVED -103
-+
-+#define GNUTLS_E_IA_VERIFY_FAILED -104
-+#define GNUTLS_E_UNKNOWN_ALGORITHM -105
-+#define GNUTLS_E_UNSUPPORTED_SIGNATURE_ALGORITHM -106
-+#define GNUTLS_E_SAFE_RENEGOTIATION_FAILED -107
-+#define GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED -108
-+#define GNUTLS_E_UNKNOWN_SRP_USERNAME -109
-+#define GNUTLS_E_PREMATURE_TERMINATION -110
-+
-+#define GNUTLS_E_MALFORMED_CIDR -111
-+
-+#define GNUTLS_E_BASE64_ENCODING_ERROR -201
-+#define GNUTLS_E_INCOMPATIBLE_GCRYPT_LIBRARY -202	/* obsolete */
-+#define GNUTLS_E_INCOMPATIBLE_CRYPTO_LIBRARY -202
-+#define GNUTLS_E_INCOMPATIBLE_LIBTASN1_LIBRARY -203
-+
-+#define GNUTLS_E_OPENPGP_KEYRING_ERROR -204
-+#define GNUTLS_E_X509_UNSUPPORTED_OID -205
-+
-+#define GNUTLS_E_RANDOM_FAILED -206
-+#define GNUTLS_E_BASE64_UNEXPECTED_HEADER_ERROR -207
-+
-+#define GNUTLS_E_OPENPGP_SUBKEY_ERROR -208
-+
-+#define GNUTLS_E_CRYPTO_ALREADY_REGISTERED GNUTLS_E_ALREADY_REGISTERED
-+#define GNUTLS_E_ALREADY_REGISTERED -209
-+
-+#define GNUTLS_E_HANDSHAKE_TOO_LARGE -210
-+
-+#define GNUTLS_E_CRYPTODEV_IOCTL_ERROR -211
-+#define GNUTLS_E_CRYPTODEV_DEVICE_ERROR -212
-+
-+#define GNUTLS_E_CHANNEL_BINDING_NOT_AVAILABLE -213
-+#define GNUTLS_E_BAD_COOKIE -214
-+#define GNUTLS_E_OPENPGP_PREFERRED_KEY_ERROR -215
-+#define GNUTLS_E_INCOMPAT_DSA_KEY_WITH_TLS_PROTOCOL -216
-+#define GNUTLS_E_INSUFFICIENT_SECURITY -217
-+
-+#define GNUTLS_E_HEARTBEAT_PONG_RECEIVED -292
-+#define GNUTLS_E_HEARTBEAT_PING_RECEIVED -293
-+
-+#define GNUTLS_E_UNRECOGNIZED_NAME -294
-+
-+/* PKCS11 related */
-+#define GNUTLS_E_PKCS11_ERROR -300
-+#define GNUTLS_E_PKCS11_LOAD_ERROR -301
-+#define GNUTLS_E_PARSING_ERROR -302
-+#define GNUTLS_E_PKCS11_PIN_ERROR -303
-+
-+#define GNUTLS_E_PKCS11_SLOT_ERROR -305
-+#define GNUTLS_E_LOCKING_ERROR -306
-+#define GNUTLS_E_PKCS11_ATTRIBUTE_ERROR -307
-+#define GNUTLS_E_PKCS11_DEVICE_ERROR -308
-+#define GNUTLS_E_PKCS11_DATA_ERROR -309
-+#define GNUTLS_E_PKCS11_UNSUPPORTED_FEATURE_ERROR -310
-+#define GNUTLS_E_PKCS11_KEY_ERROR -311
-+#define GNUTLS_E_PKCS11_PIN_EXPIRED -312
-+#define GNUTLS_E_PKCS11_PIN_LOCKED -313
-+#define GNUTLS_E_PKCS11_SESSION_ERROR -314
-+#define GNUTLS_E_PKCS11_SIGNATURE_ERROR -315
-+#define GNUTLS_E_PKCS11_TOKEN_ERROR -316
-+#define GNUTLS_E_PKCS11_USER_ERROR -317
-+
-+#define GNUTLS_E_CRYPTO_INIT_FAILED -318
-+#define GNUTLS_E_TIMEDOUT -319
-+#define GNUTLS_E_USER_ERROR -320
-+#define GNUTLS_E_ECC_NO_SUPPORTED_CURVES -321
-+#define GNUTLS_E_ECC_UNSUPPORTED_CURVE -322
-+#define GNUTLS_E_PKCS11_REQUESTED_OBJECT_NOT_AVAILBLE -323
-+#define GNUTLS_E_CERTIFICATE_LIST_UNSORTED -324
-+#define GNUTLS_E_ILLEGAL_PARAMETER -325 /* GNUTLS_A_ILLEGAL_PARAMETER */
-+#define GNUTLS_E_NO_PRIORITIES_WERE_SET -326
-+#define GNUTLS_E_X509_UNSUPPORTED_EXTENSION -327
-+#define GNUTLS_E_SESSION_EOF -328
-+
-+#define GNUTLS_E_TPM_ERROR -329
-+#define GNUTLS_E_TPM_KEY_PASSWORD_ERROR -330
-+#define GNUTLS_E_TPM_SRK_PASSWORD_ERROR -331
-+#define GNUTLS_E_TPM_SESSION_ERROR -332
-+#define GNUTLS_E_TPM_KEY_NOT_FOUND -333
-+#define GNUTLS_E_TPM_UNINITIALIZED -334
-+#define GNUTLS_E_TPM_NO_LIB -335
-+
-+#define GNUTLS_E_NO_CERTIFICATE_STATUS -340
-+#define GNUTLS_E_OCSP_RESPONSE_ERROR -341
-+#define GNUTLS_E_RANDOM_DEVICE_ERROR -342
-+#define GNUTLS_E_AUTH_ERROR -343
-+#define GNUTLS_E_NO_APPLICATION_PROTOCOL -344
-+#define GNUTLS_E_SOCKETS_INIT_ERROR -345
-+#define GNUTLS_E_KEY_IMPORT_FAILED -346
-+#define GNUTLS_E_INAPPROPRIATE_FALLBACK -347 /*GNUTLS_A_INAPPROPRIATE_FALLBACK*/
-+#define GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR -348
-+#define GNUTLS_E_PRIVKEY_VERIFICATION_ERROR -349
-+#define GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH -350 /*GNUTLS_A_DECODE_ERROR*/
-+#define GNUTLS_E_ASN1_EMBEDDED_NULL_IN_STRING -351
-+
-+#define GNUTLS_E_SELF_TEST_ERROR -400
-+#define GNUTLS_E_NO_SELF_TEST -401
-+#define GNUTLS_E_LIB_IN_ERROR_STATE -402
-+#define GNUTLS_E_PK_GENERATION_ERROR -403
-+#define GNUTLS_E_IDNA_ERROR -404
-+
-+#define GNUTLS_E_NEED_FALLBACK -405
-+#define GNUTLS_E_SESSION_USER_ID_CHANGED -406
-+#define GNUTLS_E_HANDSHAKE_DURING_FALSE_START -407
-+#define GNUTLS_E_UNAVAILABLE_DURING_HANDSHAKE -408
-+#define GNUTLS_E_PK_INVALID_PUBKEY -409
-+#define GNUTLS_E_PK_INVALID_PRIVKEY -410
-+#define GNUTLS_E_NOT_YET_ACTIVATED -411
-+#define GNUTLS_E_INVALID_UTF8_STRING -412
-+#define GNUTLS_E_NO_EMBEDDED_DATA -413
-+#define GNUTLS_E_INVALID_UTF8_EMAIL -414
-+#define GNUTLS_E_INVALID_PASSWORD_STRING -415
-+#define GNUTLS_E_CERTIFICATE_TIME_ERROR -416
-+#define GNUTLS_E_RECORD_OVERFLOW -417	/* GNUTLS_A_RECORD_OVERFLOW */
-+#define GNUTLS_E_ASN1_TIME_ERROR -418
-+#define GNUTLS_E_INCOMPATIBLE_SIG_WITH_KEY -419
-+#define GNUTLS_E_PK_INVALID_PUBKEY_PARAMS -420
-+#define GNUTLS_E_PK_NO_VALIDATION_PARAMS -421
-+#define GNUTLS_E_OCSP_MISMATCH_WITH_CERTS -422
-+
-+#define GNUTLS_E_NO_COMMON_KEY_SHARE -423
-+#define GNUTLS_E_REAUTH_REQUEST -424
-+#define GNUTLS_E_TOO_MANY_MATCHES -425
-+#define GNUTLS_E_CRL_VERIFICATION_ERROR -426
-+#define GNUTLS_E_MISSING_EXTENSION -427
-+#define GNUTLS_E_DB_ENTRY_EXISTS -428
-+#define GNUTLS_E_EARLY_DATA_REJECTED -429
-+
-+#define GNUTLS_E_UNIMPLEMENTED_FEATURE -1250
-+
-+/* Internal errors of the library; will never be returned
-+ * to a calling application */
-+#define GNUTLS_E_INT_RET_0 -1251
-+#define GNUTLS_E_INT_CHECK_AGAIN -1252
-+
-+#define GNUTLS_E_APPLICATION_ERROR_MAX -65000
-+#define GNUTLS_E_APPLICATION_ERROR_MIN -65500
-+
-+/* *INDENT-OFF* */
-+#ifdef __cplusplus
-+}
-+#endif
-+/* *INDENT-ON* */
-+
-+#include <gnutls/compat.h>
-+
-+#endif				/* GNUTLS_H */
-diff --git a/SMP/lib/accelerated/x86/coff/aes-ssse3-x86.asm b/SMP/lib/accelerated/x86/coff/aes-ssse3-x86.asm
-new file mode 100644
-index 0000000..aa84848
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/aes-ssse3-x86.asm
-@@ -0,0 +1,643 @@
-+%ifidn __OUTPUT_FORMAT__,obj
-+section	code	use32 class=code align=64
-+%elifidn __OUTPUT_FORMAT__,win32
-+%ifndef __YASM_VER__
-+$@feat.00 equ 1
-+%endif
-+section	.text	code align=64
-+%else
-+section	.text	code
-+%endif
-+align	64
-+L$_vpaes_consts:
-+dd	218628480,235210255,168496130,67568393
-+dd	252381056,17041926,33884169,51187212
-+dd	252645135,252645135,252645135,252645135
-+dd	1512730624,3266504856,1377990664,3401244816
-+dd	830229760,1275146365,2969422977,3447763452
-+dd	3411033600,2979783055,338359620,2782886510
-+dd	4209124096,907596821,221174255,1006095553
-+dd	191964160,3799684038,3164090317,1589111125
-+dd	182528256,1777043520,2877432650,3265356744
-+dd	1874708224,3503451415,3305285752,363511674
-+dd	1606117888,3487855781,1093350906,2384367825
-+dd	197121,67569157,134941193,202313229
-+dd	67569157,134941193,202313229,197121
-+dd	134941193,202313229,197121,67569157
-+dd	202313229,197121,67569157,134941193
-+dd	33619971,100992007,168364043,235736079
-+dd	235736079,33619971,100992007,168364043
-+dd	168364043,235736079,33619971,100992007
-+dd	100992007,168364043,235736079,33619971
-+dd	50462976,117835012,185207048,252579084
-+dd	252314880,51251460,117574920,184942860
-+dd	184682752,252054788,50987272,118359308
-+dd	118099200,185467140,251790600,50727180
-+dd	2946363062,528716217,1300004225,1881839624
-+dd	1532713819,1532713819,1532713819,1532713819
-+dd	3602276352,4288629033,3737020424,4153884961
-+dd	1354558464,32357713,2958822624,3775749553
-+dd	1201988352,132424512,1572796698,503232858
-+dd	2213177600,1597421020,4103937655,675398315
-+dd	2749646592,4273543773,1511898873,121693092
-+dd	3040248576,1103263732,2871565598,1608280554
-+dd	2236667136,2588920351,482954393,64377734
-+dd	3069987328,291237287,2117370568,3650299247
-+dd	533321216,3573750986,2572112006,1401264716
-+dd	1339849704,2721158661,548607111,3445553514
-+dd	2128193280,3054596040,2183486460,1257083700
-+dd	655635200,1165381986,3923443150,2344132524
-+dd	190078720,256924420,290342170,357187870
-+dd	1610966272,2263057382,4103205268,309794674
-+dd	2592527872,2233205587,1335446729,3402964816
-+dd	3973531904,3225098121,3002836325,1918774430
-+dd	3870401024,2102906079,2284471353,4117666579
-+dd	617007872,1021508343,366931923,691083277
-+dd	2528395776,3491914898,2968704004,1613121270
-+dd	3445188352,3247741094,844474987,4093578302
-+dd	651481088,1190302358,1689581232,574775300
-+dd	4289380608,206939853,2555985458,2489840491
-+dd	2130264064,327674451,3566485037,3349835193
-+dd	2470714624,316102159,3636825756,3393945945
-+db	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
-+db	111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
-+db	83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
-+db	114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
-+db	118,101,114,115,105,116,121,41,0
-+align	64
-+align	16
-+__vpaes_preheat:
-+	add	ebp,DWORD [esp]
-+	movdqa	xmm7,[ebp-48]
-+	movdqa	xmm6,[ebp-16]
-+	ret
-+align	16
-+__vpaes_encrypt_core:
-+	mov	ecx,16
-+	mov	eax,DWORD [240+edx]
-+	movdqa	xmm1,xmm6
-+	movdqa	xmm2,[ebp]
-+	pandn	xmm1,xmm0
-+	pand	xmm0,xmm6
-+	movdqu	xmm5,[edx]
-+db	102,15,56,0,208
-+	movdqa	xmm0,[16+ebp]
-+	pxor	xmm2,xmm5
-+	psrld	xmm1,4
-+	add	edx,16
-+db	102,15,56,0,193
-+	lea	ebx,[192+ebp]
-+	pxor	xmm0,xmm2
-+	jmp	NEAR L$000enc_entry
-+align	16
-+L$001enc_loop:
-+	movdqa	xmm4,[32+ebp]
-+	movdqa	xmm0,[48+ebp]
-+db	102,15,56,0,226
-+db	102,15,56,0,195
-+	pxor	xmm4,xmm5
-+	movdqa	xmm5,[64+ebp]
-+	pxor	xmm0,xmm4
-+	movdqa	xmm1,[ecx*1+ebx-64]
-+db	102,15,56,0,234
-+	movdqa	xmm2,[80+ebp]
-+	movdqa	xmm4,[ecx*1+ebx]
-+db	102,15,56,0,211
-+	movdqa	xmm3,xmm0
-+	pxor	xmm2,xmm5
-+db	102,15,56,0,193
-+	add	edx,16
-+	pxor	xmm0,xmm2
-+db	102,15,56,0,220
-+	add	ecx,16
-+	pxor	xmm3,xmm0
-+db	102,15,56,0,193
-+	and	ecx,48
-+	sub	eax,1
-+	pxor	xmm0,xmm3
-+L$000enc_entry:
-+	movdqa	xmm1,xmm6
-+	movdqa	xmm5,[ebp-32]
-+	pandn	xmm1,xmm0
-+	psrld	xmm1,4
-+	pand	xmm0,xmm6
-+db	102,15,56,0,232
-+	movdqa	xmm3,xmm7
-+	pxor	xmm0,xmm1
-+db	102,15,56,0,217
-+	movdqa	xmm4,xmm7
-+	pxor	xmm3,xmm5
-+db	102,15,56,0,224
-+	movdqa	xmm2,xmm7
-+	pxor	xmm4,xmm5
-+db	102,15,56,0,211
-+	movdqa	xmm3,xmm7
-+	pxor	xmm2,xmm0
-+db	102,15,56,0,220
-+	movdqu	xmm5,[edx]
-+	pxor	xmm3,xmm1
-+	jnz	NEAR L$001enc_loop
-+	movdqa	xmm4,[96+ebp]
-+	movdqa	xmm0,[112+ebp]
-+db	102,15,56,0,226
-+	pxor	xmm4,xmm5
-+db	102,15,56,0,195
-+	movdqa	xmm1,[64+ecx*1+ebx]
-+	pxor	xmm0,xmm4
-+db	102,15,56,0,193
-+	ret
-+align	16
-+__vpaes_decrypt_core:
-+	lea	ebx,[608+ebp]
-+	mov	eax,DWORD [240+edx]
-+	movdqa	xmm1,xmm6
-+	movdqa	xmm2,[ebx-64]
-+	pandn	xmm1,xmm0
-+	mov	ecx,eax
-+	psrld	xmm1,4
-+	movdqu	xmm5,[edx]
-+	shl	ecx,4
-+	pand	xmm0,xmm6
-+db	102,15,56,0,208
-+	movdqa	xmm0,[ebx-48]
-+	xor	ecx,48
-+db	102,15,56,0,193
-+	and	ecx,48
-+	pxor	xmm2,xmm5
-+	movdqa	xmm5,[176+ebp]
-+	pxor	xmm0,xmm2
-+	add	edx,16
-+	lea	ecx,[ecx*1+ebx-352]
-+	jmp	NEAR L$002dec_entry
-+align	16
-+L$003dec_loop:
-+	movdqa	xmm4,[ebx-32]
-+	movdqa	xmm1,[ebx-16]
-+db	102,15,56,0,226
-+db	102,15,56,0,203
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,[ebx]
-+	pxor	xmm0,xmm1
-+	movdqa	xmm1,[16+ebx]
-+db	102,15,56,0,226
-+db	102,15,56,0,197
-+db	102,15,56,0,203
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,[32+ebx]
-+	pxor	xmm0,xmm1
-+	movdqa	xmm1,[48+ebx]
-+db	102,15,56,0,226
-+db	102,15,56,0,197
-+db	102,15,56,0,203
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,[64+ebx]
-+	pxor	xmm0,xmm1
-+	movdqa	xmm1,[80+ebx]
-+db	102,15,56,0,226
-+db	102,15,56,0,197
-+db	102,15,56,0,203
-+	pxor	xmm0,xmm4
-+	add	edx,16
-+db	102,15,58,15,237,12
-+	pxor	xmm0,xmm1
-+	sub	eax,1
-+L$002dec_entry:
-+	movdqa	xmm1,xmm6
-+	movdqa	xmm2,[ebp-32]
-+	pandn	xmm1,xmm0
-+	pand	xmm0,xmm6
-+	psrld	xmm1,4
-+db	102,15,56,0,208
-+	movdqa	xmm3,xmm7
-+	pxor	xmm0,xmm1
-+db	102,15,56,0,217
-+	movdqa	xmm4,xmm7
-+	pxor	xmm3,xmm2
-+db	102,15,56,0,224
-+	pxor	xmm4,xmm2
-+	movdqa	xmm2,xmm7
-+db	102,15,56,0,211
-+	movdqa	xmm3,xmm7
-+	pxor	xmm2,xmm0
-+db	102,15,56,0,220
-+	movdqu	xmm0,[edx]
-+	pxor	xmm3,xmm1
-+	jnz	NEAR L$003dec_loop
-+	movdqa	xmm4,[96+ebx]
-+db	102,15,56,0,226
-+	pxor	xmm4,xmm0
-+	movdqa	xmm0,[112+ebx]
-+	movdqa	xmm2,[ecx]
-+db	102,15,56,0,195
-+	pxor	xmm0,xmm4
-+db	102,15,56,0,194
-+	ret
-+align	16
-+__vpaes_schedule_core:
-+	add	ebp,DWORD [esp]
-+	movdqu	xmm0,[esi]
-+	movdqa	xmm2,[320+ebp]
-+	movdqa	xmm3,xmm0
-+	lea	ebx,[ebp]
-+	movdqa	[4+esp],xmm2
-+	call	__vpaes_schedule_transform
-+	movdqa	xmm7,xmm0
-+	test	edi,edi
-+	jnz	NEAR L$004schedule_am_decrypting
-+	movdqu	[edx],xmm0
-+	jmp	NEAR L$005schedule_go
-+L$004schedule_am_decrypting:
-+	movdqa	xmm1,[256+ecx*1+ebp]
-+db	102,15,56,0,217
-+	movdqu	[edx],xmm3
-+	xor	ecx,48
-+L$005schedule_go:
-+	cmp	eax,192
-+	ja	NEAR L$006schedule_256
-+	je	NEAR L$007schedule_192
-+L$008schedule_128:
-+	mov	eax,10
-+L$009loop_schedule_128:
-+	call	__vpaes_schedule_round
-+	dec	eax
-+	jz	NEAR L$010schedule_mangle_last
-+	call	__vpaes_schedule_mangle
-+	jmp	NEAR L$009loop_schedule_128
-+align	16
-+L$007schedule_192:
-+	movdqu	xmm0,[8+esi]
-+	call	__vpaes_schedule_transform
-+	movdqa	xmm6,xmm0
-+	pxor	xmm4,xmm4
-+	movhlps	xmm6,xmm4
-+	mov	eax,4
-+L$011loop_schedule_192:
-+	call	__vpaes_schedule_round
-+db	102,15,58,15,198,8
-+	call	__vpaes_schedule_mangle
-+	call	__vpaes_schedule_192_smear
-+	call	__vpaes_schedule_mangle
-+	call	__vpaes_schedule_round
-+	dec	eax
-+	jz	NEAR L$010schedule_mangle_last
-+	call	__vpaes_schedule_mangle
-+	call	__vpaes_schedule_192_smear
-+	jmp	NEAR L$011loop_schedule_192
-+align	16
-+L$006schedule_256:
-+	movdqu	xmm0,[16+esi]
-+	call	__vpaes_schedule_transform
-+	mov	eax,7
-+L$012loop_schedule_256:
-+	call	__vpaes_schedule_mangle
-+	movdqa	xmm6,xmm0
-+	call	__vpaes_schedule_round
-+	dec	eax
-+	jz	NEAR L$010schedule_mangle_last
-+	call	__vpaes_schedule_mangle
-+	pshufd	xmm0,xmm0,255
-+	movdqa	[20+esp],xmm7
-+	movdqa	xmm7,xmm6
-+	call	L$_vpaes_schedule_low_round
-+	movdqa	xmm7,[20+esp]
-+	jmp	NEAR L$012loop_schedule_256
-+align	16
-+L$010schedule_mangle_last:
-+	lea	ebx,[384+ebp]
-+	test	edi,edi
-+	jnz	NEAR L$013schedule_mangle_last_dec
-+	movdqa	xmm1,[256+ecx*1+ebp]
-+db	102,15,56,0,193
-+	lea	ebx,[352+ebp]
-+	add	edx,32
-+L$013schedule_mangle_last_dec:
-+	add	edx,-16
-+	pxor	xmm0,[336+ebp]
-+	call	__vpaes_schedule_transform
-+	movdqu	[edx],xmm0
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	pxor	xmm6,xmm6
-+	pxor	xmm7,xmm7
-+	ret
-+align	16
-+__vpaes_schedule_192_smear:
-+	pshufd	xmm1,xmm6,128
-+	pshufd	xmm0,xmm7,254
-+	pxor	xmm6,xmm1
-+	pxor	xmm1,xmm1
-+	pxor	xmm6,xmm0
-+	movdqa	xmm0,xmm6
-+	movhlps	xmm6,xmm1
-+	ret
-+align	16
-+__vpaes_schedule_round:
-+	movdqa	xmm2,[8+esp]
-+	pxor	xmm1,xmm1
-+db	102,15,58,15,202,15
-+db	102,15,58,15,210,15
-+	pxor	xmm7,xmm1
-+	pshufd	xmm0,xmm0,255
-+db	102,15,58,15,192,1
-+	movdqa	[8+esp],xmm2
-+L$_vpaes_schedule_low_round:
-+	movdqa	xmm1,xmm7
-+	pslldq	xmm7,4
-+	pxor	xmm7,xmm1
-+	movdqa	xmm1,xmm7
-+	pslldq	xmm7,8
-+	pxor	xmm7,xmm1
-+	pxor	xmm7,[336+ebp]
-+	movdqa	xmm4,[ebp-16]
-+	movdqa	xmm5,[ebp-48]
-+	movdqa	xmm1,xmm4
-+	pandn	xmm1,xmm0
-+	psrld	xmm1,4
-+	pand	xmm0,xmm4
-+	movdqa	xmm2,[ebp-32]
-+db	102,15,56,0,208
-+	pxor	xmm0,xmm1
-+	movdqa	xmm3,xmm5
-+db	102,15,56,0,217
-+	pxor	xmm3,xmm2
-+	movdqa	xmm4,xmm5
-+db	102,15,56,0,224
-+	pxor	xmm4,xmm2
-+	movdqa	xmm2,xmm5
-+db	102,15,56,0,211
-+	pxor	xmm2,xmm0
-+	movdqa	xmm3,xmm5
-+db	102,15,56,0,220
-+	pxor	xmm3,xmm1
-+	movdqa	xmm4,[32+ebp]
-+db	102,15,56,0,226
-+	movdqa	xmm0,[48+ebp]
-+db	102,15,56,0,195
-+	pxor	xmm0,xmm4
-+	pxor	xmm0,xmm7
-+	movdqa	xmm7,xmm0
-+	ret
-+align	16
-+__vpaes_schedule_transform:
-+	movdqa	xmm2,[ebp-16]
-+	movdqa	xmm1,xmm2
-+	pandn	xmm1,xmm0
-+	psrld	xmm1,4
-+	pand	xmm0,xmm2
-+	movdqa	xmm2,[ebx]
-+db	102,15,56,0,208
-+	movdqa	xmm0,[16+ebx]
-+db	102,15,56,0,193
-+	pxor	xmm0,xmm2
-+	ret
-+align	16
-+__vpaes_schedule_mangle:
-+	movdqa	xmm4,xmm0
-+	movdqa	xmm5,[128+ebp]
-+	test	edi,edi
-+	jnz	NEAR L$014schedule_mangle_dec
-+	add	edx,16
-+	pxor	xmm4,[336+ebp]
-+db	102,15,56,0,229
-+	movdqa	xmm3,xmm4
-+db	102,15,56,0,229
-+	pxor	xmm3,xmm4
-+db	102,15,56,0,229
-+	pxor	xmm3,xmm4
-+	jmp	NEAR L$015schedule_mangle_both
-+align	16
-+L$014schedule_mangle_dec:
-+	movdqa	xmm2,[ebp-16]
-+	lea	esi,[416+ebp]
-+	movdqa	xmm1,xmm2
-+	pandn	xmm1,xmm4
-+	psrld	xmm1,4
-+	pand	xmm4,xmm2
-+	movdqa	xmm2,[esi]
-+db	102,15,56,0,212
-+	movdqa	xmm3,[16+esi]
-+db	102,15,56,0,217
-+	pxor	xmm3,xmm2
-+db	102,15,56,0,221
-+	movdqa	xmm2,[32+esi]
-+db	102,15,56,0,212
-+	pxor	xmm2,xmm3
-+	movdqa	xmm3,[48+esi]
-+db	102,15,56,0,217
-+	pxor	xmm3,xmm2
-+db	102,15,56,0,221
-+	movdqa	xmm2,[64+esi]
-+db	102,15,56,0,212
-+	pxor	xmm2,xmm3
-+	movdqa	xmm3,[80+esi]
-+db	102,15,56,0,217
-+	pxor	xmm3,xmm2
-+db	102,15,56,0,221
-+	movdqa	xmm2,[96+esi]
-+db	102,15,56,0,212
-+	pxor	xmm2,xmm3
-+	movdqa	xmm3,[112+esi]
-+db	102,15,56,0,217
-+	pxor	xmm3,xmm2
-+	add	edx,-16
-+L$015schedule_mangle_both:
-+	movdqa	xmm1,[256+ecx*1+ebp]
-+db	102,15,56,0,217
-+	add	ecx,-16
-+	and	ecx,48
-+	movdqu	[edx],xmm3
-+	ret
-+global	_vpaes_set_encrypt_key
-+align	16
-+_vpaes_set_encrypt_key:
-+L$_vpaes_set_encrypt_key_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	esi,DWORD [20+esp]
-+	lea	ebx,[esp-56]
-+	mov	eax,DWORD [24+esp]
-+	and	ebx,-16
-+	mov	edx,DWORD [28+esp]
-+	xchg	ebx,esp
-+	mov	DWORD [48+esp],ebx
-+	mov	ebx,eax
-+	shr	ebx,5
-+	add	ebx,5
-+	mov	DWORD [240+edx],ebx
-+	mov	ecx,48
-+	mov	edi,0
-+	lea	ebp,[(L$_vpaes_consts+0x30-L$016pic_point)]
-+	call	__vpaes_schedule_core
-+L$016pic_point:
-+	mov	esp,DWORD [48+esp]
-+	xor	eax,eax
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_vpaes_set_decrypt_key
-+align	16
-+_vpaes_set_decrypt_key:
-+L$_vpaes_set_decrypt_key_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	esi,DWORD [20+esp]
-+	lea	ebx,[esp-56]
-+	mov	eax,DWORD [24+esp]
-+	and	ebx,-16
-+	mov	edx,DWORD [28+esp]
-+	xchg	ebx,esp
-+	mov	DWORD [48+esp],ebx
-+	mov	ebx,eax
-+	shr	ebx,5
-+	add	ebx,5
-+	mov	DWORD [240+edx],ebx
-+	shl	ebx,4
-+	lea	edx,[16+ebx*1+edx]
-+	mov	edi,1
-+	mov	ecx,eax
-+	shr	ecx,1
-+	and	ecx,32
-+	xor	ecx,32
-+	lea	ebp,[(L$_vpaes_consts+0x30-L$017pic_point)]
-+	call	__vpaes_schedule_core
-+L$017pic_point:
-+	mov	esp,DWORD [48+esp]
-+	xor	eax,eax
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_vpaes_encrypt
-+align	16
-+_vpaes_encrypt:
-+L$_vpaes_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	lea	ebp,[(L$_vpaes_consts+0x30-L$018pic_point)]
-+	call	__vpaes_preheat
-+L$018pic_point:
-+	mov	esi,DWORD [20+esp]
-+	lea	ebx,[esp-56]
-+	mov	edi,DWORD [24+esp]
-+	and	ebx,-16
-+	mov	edx,DWORD [28+esp]
-+	xchg	ebx,esp
-+	mov	DWORD [48+esp],ebx
-+	movdqu	xmm0,[esi]
-+	call	__vpaes_encrypt_core
-+	movdqu	[edi],xmm0
-+	mov	esp,DWORD [48+esp]
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_vpaes_decrypt
-+align	16
-+_vpaes_decrypt:
-+L$_vpaes_decrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	lea	ebp,[(L$_vpaes_consts+0x30-L$019pic_point)]
-+	call	__vpaes_preheat
-+L$019pic_point:
-+	mov	esi,DWORD [20+esp]
-+	lea	ebx,[esp-56]
-+	mov	edi,DWORD [24+esp]
-+	and	ebx,-16
-+	mov	edx,DWORD [28+esp]
-+	xchg	ebx,esp
-+	mov	DWORD [48+esp],ebx
-+	movdqu	xmm0,[esi]
-+	call	__vpaes_decrypt_core
-+	movdqu	[edi],xmm0
-+	mov	esp,DWORD [48+esp]
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_vpaes_cbc_encrypt
-+align	16
-+_vpaes_cbc_encrypt:
-+L$_vpaes_cbc_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	esi,DWORD [20+esp]
-+	mov	edi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	mov	edx,DWORD [32+esp]
-+	sub	eax,16
-+	jc	NEAR L$020cbc_abort
-+	lea	ebx,[esp-56]
-+	mov	ebp,DWORD [36+esp]
-+	and	ebx,-16
-+	mov	ecx,DWORD [40+esp]
-+	xchg	ebx,esp
-+	movdqu	xmm1,[ebp]
-+	sub	edi,esi
-+	mov	DWORD [48+esp],ebx
-+	mov	DWORD [esp],edi
-+	mov	DWORD [4+esp],edx
-+	mov	DWORD [8+esp],ebp
-+	mov	edi,eax
-+	lea	ebp,[(L$_vpaes_consts+0x30-L$021pic_point)]
-+	call	__vpaes_preheat
-+L$021pic_point:
-+	cmp	ecx,0
-+	je	NEAR L$022cbc_dec_loop
-+	jmp	NEAR L$023cbc_enc_loop
-+align	16
-+L$023cbc_enc_loop:
-+	movdqu	xmm0,[esi]
-+	pxor	xmm0,xmm1
-+	call	__vpaes_encrypt_core
-+	mov	ebx,DWORD [esp]
-+	mov	edx,DWORD [4+esp]
-+	movdqa	xmm1,xmm0
-+	movdqu	[esi*1+ebx],xmm0
-+	lea	esi,[16+esi]
-+	sub	edi,16
-+	jnc	NEAR L$023cbc_enc_loop
-+	jmp	NEAR L$024cbc_done
-+align	16
-+L$022cbc_dec_loop:
-+	movdqu	xmm0,[esi]
-+	movdqa	[16+esp],xmm1
-+	movdqa	[32+esp],xmm0
-+	call	__vpaes_decrypt_core
-+	mov	ebx,DWORD [esp]
-+	mov	edx,DWORD [4+esp]
-+	pxor	xmm0,[16+esp]
-+	movdqa	xmm1,[32+esp]
-+	movdqu	[esi*1+ebx],xmm0
-+	lea	esi,[16+esi]
-+	sub	edi,16
-+	jnc	NEAR L$022cbc_dec_loop
-+L$024cbc_done:
-+	mov	ebx,DWORD [8+esp]
-+	mov	esp,DWORD [48+esp]
-+	movdqu	[ebx],xmm1
-+L$020cbc_abort:
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-diff --git a/SMP/lib/accelerated/x86/coff/aes-ssse3-x86_64.asm b/SMP/lib/accelerated/x86/coff/aes-ssse3-x86_64.asm
-new file mode 100644
-index 0000000..3edde9f
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/aes-ssse3-x86_64.asm
-@@ -0,0 +1,1137 @@
-+default	rel
-+%define XMMWORD
-+%define YMMWORD
-+%define ZMMWORD
-+section	.text code align=64
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+_vpaes_encrypt_core:
-+	mov	r9,rdx
-+	mov	r11,16
-+	mov	eax,DWORD[240+rdx]
-+	movdqa	xmm1,xmm9
-+	movdqa	xmm2,XMMWORD[$L$k_ipt]
-+	pandn	xmm1,xmm0
-+	movdqu	xmm5,XMMWORD[r9]
-+	psrld	xmm1,4
-+	pand	xmm0,xmm9
-+DB	102,15,56,0,208
-+	movdqa	xmm0,XMMWORD[(($L$k_ipt+16))]
-+DB	102,15,56,0,193
-+	pxor	xmm2,xmm5
-+	add	r9,16
-+	pxor	xmm0,xmm2
-+	lea	r10,[$L$k_mc_backward]
-+	jmp	NEAR $L$enc_entry
-+
-+ALIGN	16
-+$L$enc_loop:
-+
-+	movdqa	xmm4,xmm13
-+	movdqa	xmm0,xmm12
-+DB	102,15,56,0,226
-+DB	102,15,56,0,195
-+	pxor	xmm4,xmm5
-+	movdqa	xmm5,xmm15
-+	pxor	xmm0,xmm4
-+	movdqa	xmm1,XMMWORD[((-64))+r10*1+r11]
-+DB	102,15,56,0,234
-+	movdqa	xmm4,XMMWORD[r10*1+r11]
-+	movdqa	xmm2,xmm14
-+DB	102,15,56,0,211
-+	movdqa	xmm3,xmm0
-+	pxor	xmm2,xmm5
-+DB	102,15,56,0,193
-+	add	r9,16
-+	pxor	xmm0,xmm2
-+DB	102,15,56,0,220
-+	add	r11,16
-+	pxor	xmm3,xmm0
-+DB	102,15,56,0,193
-+	and	r11,0x30
-+	sub	rax,1
-+	pxor	xmm0,xmm3
-+
-+$L$enc_entry:
-+
-+	movdqa	xmm1,xmm9
-+	movdqa	xmm5,xmm11
-+	pandn	xmm1,xmm0
-+	psrld	xmm1,4
-+	pand	xmm0,xmm9
-+DB	102,15,56,0,232
-+	movdqa	xmm3,xmm10
-+	pxor	xmm0,xmm1
-+DB	102,15,56,0,217
-+	movdqa	xmm4,xmm10
-+	pxor	xmm3,xmm5
-+DB	102,15,56,0,224
-+	movdqa	xmm2,xmm10
-+	pxor	xmm4,xmm5
-+DB	102,15,56,0,211
-+	movdqa	xmm3,xmm10
-+	pxor	xmm2,xmm0
-+DB	102,15,56,0,220
-+	movdqu	xmm5,XMMWORD[r9]
-+	pxor	xmm3,xmm1
-+	jnz	NEAR $L$enc_loop
-+
-+
-+	movdqa	xmm4,XMMWORD[((-96))+r10]
-+	movdqa	xmm0,XMMWORD[((-80))+r10]
-+DB	102,15,56,0,226
-+	pxor	xmm4,xmm5
-+DB	102,15,56,0,195
-+	movdqa	xmm1,XMMWORD[64+r10*1+r11]
-+	pxor	xmm0,xmm4
-+DB	102,15,56,0,193
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+_vpaes_decrypt_core:
-+	mov	r9,rdx
-+	mov	eax,DWORD[240+rdx]
-+	movdqa	xmm1,xmm9
-+	movdqa	xmm2,XMMWORD[$L$k_dipt]
-+	pandn	xmm1,xmm0
-+	mov	r11,rax
-+	psrld	xmm1,4
-+	movdqu	xmm5,XMMWORD[r9]
-+	shl	r11,4
-+	pand	xmm0,xmm9
-+DB	102,15,56,0,208
-+	movdqa	xmm0,XMMWORD[(($L$k_dipt+16))]
-+	xor	r11,0x30
-+	lea	r10,[$L$k_dsbd]
-+DB	102,15,56,0,193
-+	and	r11,0x30
-+	pxor	xmm2,xmm5
-+	movdqa	xmm5,XMMWORD[(($L$k_mc_forward+48))]
-+	pxor	xmm0,xmm2
-+	add	r9,16
-+	add	r11,r10
-+	jmp	NEAR $L$dec_entry
-+
-+ALIGN	16
-+$L$dec_loop:
-+
-+
-+
-+	movdqa	xmm4,XMMWORD[((-32))+r10]
-+	movdqa	xmm1,XMMWORD[((-16))+r10]
-+DB	102,15,56,0,226
-+DB	102,15,56,0,203
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,XMMWORD[r10]
-+	pxor	xmm0,xmm1
-+	movdqa	xmm1,XMMWORD[16+r10]
-+
-+DB	102,15,56,0,226
-+DB	102,15,56,0,197
-+DB	102,15,56,0,203
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,XMMWORD[32+r10]
-+	pxor	xmm0,xmm1
-+	movdqa	xmm1,XMMWORD[48+r10]
-+
-+DB	102,15,56,0,226
-+DB	102,15,56,0,197
-+DB	102,15,56,0,203
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,XMMWORD[64+r10]
-+	pxor	xmm0,xmm1
-+	movdqa	xmm1,XMMWORD[80+r10]
-+
-+DB	102,15,56,0,226
-+DB	102,15,56,0,197
-+DB	102,15,56,0,203
-+	pxor	xmm0,xmm4
-+	add	r9,16
-+DB	102,15,58,15,237,12
-+	pxor	xmm0,xmm1
-+	sub	rax,1
-+
-+$L$dec_entry:
-+
-+	movdqa	xmm1,xmm9
-+	pandn	xmm1,xmm0
-+	movdqa	xmm2,xmm11
-+	psrld	xmm1,4
-+	pand	xmm0,xmm9
-+DB	102,15,56,0,208
-+	movdqa	xmm3,xmm10
-+	pxor	xmm0,xmm1
-+DB	102,15,56,0,217
-+	movdqa	xmm4,xmm10
-+	pxor	xmm3,xmm2
-+DB	102,15,56,0,224
-+	pxor	xmm4,xmm2
-+	movdqa	xmm2,xmm10
-+DB	102,15,56,0,211
-+	movdqa	xmm3,xmm10
-+	pxor	xmm2,xmm0
-+DB	102,15,56,0,220
-+	movdqu	xmm0,XMMWORD[r9]
-+	pxor	xmm3,xmm1
-+	jnz	NEAR $L$dec_loop
-+
-+
-+	movdqa	xmm4,XMMWORD[96+r10]
-+DB	102,15,56,0,226
-+	pxor	xmm4,xmm0
-+	movdqa	xmm0,XMMWORD[112+r10]
-+	movdqa	xmm2,XMMWORD[((-352))+r11]
-+DB	102,15,56,0,195
-+	pxor	xmm0,xmm4
-+DB	102,15,56,0,194
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+_vpaes_schedule_core:
-+
-+
-+
-+
-+
-+	call	_vpaes_preheat
-+	movdqa	xmm8,XMMWORD[$L$k_rcon]
-+	movdqu	xmm0,XMMWORD[rdi]
-+
-+
-+	movdqa	xmm3,xmm0
-+	lea	r11,[$L$k_ipt]
-+	call	_vpaes_schedule_transform
-+	movdqa	xmm7,xmm0
-+
-+	lea	r10,[$L$k_sr]
-+	test	rcx,rcx
-+	jnz	NEAR $L$schedule_am_decrypting
-+
-+
-+	movdqu	XMMWORD[rdx],xmm0
-+	jmp	NEAR $L$schedule_go
-+
-+$L$schedule_am_decrypting:
-+
-+	movdqa	xmm1,XMMWORD[r10*1+r8]
-+DB	102,15,56,0,217
-+	movdqu	XMMWORD[rdx],xmm3
-+	xor	r8,0x30
-+
-+$L$schedule_go:
-+	cmp	esi,192
-+	ja	NEAR $L$schedule_256
-+	je	NEAR $L$schedule_192
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+$L$schedule_128:
-+	mov	esi,10
-+
-+$L$oop_schedule_128:
-+	call	_vpaes_schedule_round
-+	dec	rsi
-+	jz	NEAR $L$schedule_mangle_last
-+	call	_vpaes_schedule_mangle
-+	jmp	NEAR $L$oop_schedule_128
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+$L$schedule_192:
-+	movdqu	xmm0,XMMWORD[8+rdi]
-+	call	_vpaes_schedule_transform
-+	movdqa	xmm6,xmm0
-+	pxor	xmm4,xmm4
-+	movhlps	xmm6,xmm4
-+	mov	esi,4
-+
-+$L$oop_schedule_192:
-+	call	_vpaes_schedule_round
-+DB	102,15,58,15,198,8
-+	call	_vpaes_schedule_mangle
-+	call	_vpaes_schedule_192_smear
-+	call	_vpaes_schedule_mangle
-+	call	_vpaes_schedule_round
-+	dec	rsi
-+	jz	NEAR $L$schedule_mangle_last
-+	call	_vpaes_schedule_mangle
-+	call	_vpaes_schedule_192_smear
-+	jmp	NEAR $L$oop_schedule_192
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+$L$schedule_256:
-+	movdqu	xmm0,XMMWORD[16+rdi]
-+	call	_vpaes_schedule_transform
-+	mov	esi,7
-+
-+$L$oop_schedule_256:
-+	call	_vpaes_schedule_mangle
-+	movdqa	xmm6,xmm0
-+
-+
-+	call	_vpaes_schedule_round
-+	dec	rsi
-+	jz	NEAR $L$schedule_mangle_last
-+	call	_vpaes_schedule_mangle
-+
-+
-+	pshufd	xmm0,xmm0,0xFF
-+	movdqa	xmm5,xmm7
-+	movdqa	xmm7,xmm6
-+	call	_vpaes_schedule_low_round
-+	movdqa	xmm7,xmm5
-+
-+	jmp	NEAR $L$oop_schedule_256
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+$L$schedule_mangle_last:
-+
-+	lea	r11,[$L$k_deskew]
-+	test	rcx,rcx
-+	jnz	NEAR $L$schedule_mangle_last_dec
-+
-+
-+	movdqa	xmm1,XMMWORD[r10*1+r8]
-+DB	102,15,56,0,193
-+	lea	r11,[$L$k_opt]
-+	add	rdx,32
-+
-+$L$schedule_mangle_last_dec:
-+	add	rdx,-16
-+	pxor	xmm0,XMMWORD[$L$k_s63]
-+	call	_vpaes_schedule_transform
-+	movdqu	XMMWORD[rdx],xmm0
-+
-+
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	pxor	xmm6,xmm6
-+	pxor	xmm7,xmm7
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+_vpaes_schedule_192_smear:
-+	pshufd	xmm1,xmm6,0x80
-+	pshufd	xmm0,xmm7,0xFE
-+	pxor	xmm6,xmm1
-+	pxor	xmm1,xmm1
-+	pxor	xmm6,xmm0
-+	movdqa	xmm0,xmm6
-+	movhlps	xmm6,xmm1
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+_vpaes_schedule_round:
-+
-+	pxor	xmm1,xmm1
-+DB	102,65,15,58,15,200,15
-+DB	102,69,15,58,15,192,15
-+	pxor	xmm7,xmm1
-+
-+
-+	pshufd	xmm0,xmm0,0xFF
-+DB	102,15,58,15,192,1
-+
-+
-+
-+
-+_vpaes_schedule_low_round:
-+
-+	movdqa	xmm1,xmm7
-+	pslldq	xmm7,4
-+	pxor	xmm7,xmm1
-+	movdqa	xmm1,xmm7
-+	pslldq	xmm7,8
-+	pxor	xmm7,xmm1
-+	pxor	xmm7,XMMWORD[$L$k_s63]
-+
-+
-+	movdqa	xmm1,xmm9
-+	pandn	xmm1,xmm0
-+	psrld	xmm1,4
-+	pand	xmm0,xmm9
-+	movdqa	xmm2,xmm11
-+DB	102,15,56,0,208
-+	pxor	xmm0,xmm1
-+	movdqa	xmm3,xmm10
-+DB	102,15,56,0,217
-+	pxor	xmm3,xmm2
-+	movdqa	xmm4,xmm10
-+DB	102,15,56,0,224
-+	pxor	xmm4,xmm2
-+	movdqa	xmm2,xmm10
-+DB	102,15,56,0,211
-+	pxor	xmm2,xmm0
-+	movdqa	xmm3,xmm10
-+DB	102,15,56,0,220
-+	pxor	xmm3,xmm1
-+	movdqa	xmm4,xmm13
-+DB	102,15,56,0,226
-+	movdqa	xmm0,xmm12
-+DB	102,15,56,0,195
-+	pxor	xmm0,xmm4
-+
-+
-+	pxor	xmm0,xmm7
-+	movdqa	xmm7,xmm0
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+_vpaes_schedule_transform:
-+	movdqa	xmm1,xmm9
-+	pandn	xmm1,xmm0
-+	psrld	xmm1,4
-+	pand	xmm0,xmm9
-+	movdqa	xmm2,XMMWORD[r11]
-+DB	102,15,56,0,208
-+	movdqa	xmm0,XMMWORD[16+r11]
-+DB	102,15,56,0,193
-+	pxor	xmm0,xmm2
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+_vpaes_schedule_mangle:
-+	movdqa	xmm4,xmm0
-+	movdqa	xmm5,XMMWORD[$L$k_mc_forward]
-+	test	rcx,rcx
-+	jnz	NEAR $L$schedule_mangle_dec
-+
-+
-+	add	rdx,16
-+	pxor	xmm4,XMMWORD[$L$k_s63]
-+DB	102,15,56,0,229
-+	movdqa	xmm3,xmm4
-+DB	102,15,56,0,229
-+	pxor	xmm3,xmm4
-+DB	102,15,56,0,229
-+	pxor	xmm3,xmm4
-+
-+	jmp	NEAR $L$schedule_mangle_both
-+ALIGN	16
-+$L$schedule_mangle_dec:
-+
-+	lea	r11,[$L$k_dksd]
-+	movdqa	xmm1,xmm9
-+	pandn	xmm1,xmm4
-+	psrld	xmm1,4
-+	pand	xmm4,xmm9
-+
-+	movdqa	xmm2,XMMWORD[r11]
-+DB	102,15,56,0,212
-+	movdqa	xmm3,XMMWORD[16+r11]
-+DB	102,15,56,0,217
-+	pxor	xmm3,xmm2
-+DB	102,15,56,0,221
-+
-+	movdqa	xmm2,XMMWORD[32+r11]
-+DB	102,15,56,0,212
-+	pxor	xmm2,xmm3
-+	movdqa	xmm3,XMMWORD[48+r11]
-+DB	102,15,56,0,217
-+	pxor	xmm3,xmm2
-+DB	102,15,56,0,221
-+
-+	movdqa	xmm2,XMMWORD[64+r11]
-+DB	102,15,56,0,212
-+	pxor	xmm2,xmm3
-+	movdqa	xmm3,XMMWORD[80+r11]
-+DB	102,15,56,0,217
-+	pxor	xmm3,xmm2
-+DB	102,15,56,0,221
-+
-+	movdqa	xmm2,XMMWORD[96+r11]
-+DB	102,15,56,0,212
-+	pxor	xmm2,xmm3
-+	movdqa	xmm3,XMMWORD[112+r11]
-+DB	102,15,56,0,217
-+	pxor	xmm3,xmm2
-+
-+	add	rdx,-16
-+
-+$L$schedule_mangle_both:
-+	movdqa	xmm1,XMMWORD[r10*1+r8]
-+DB	102,15,56,0,217
-+	add	r8,-16
-+	and	r8,0x30
-+	movdqu	XMMWORD[rdx],xmm3
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+
-+
-+global	vpaes_set_encrypt_key
-+
-+ALIGN	16
-+vpaes_set_encrypt_key:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_vpaes_set_encrypt_key:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	lea	rsp,[((-184))+rsp]
-+	movaps	XMMWORD[16+rsp],xmm6
-+	movaps	XMMWORD[32+rsp],xmm7
-+	movaps	XMMWORD[48+rsp],xmm8
-+	movaps	XMMWORD[64+rsp],xmm9
-+	movaps	XMMWORD[80+rsp],xmm10
-+	movaps	XMMWORD[96+rsp],xmm11
-+	movaps	XMMWORD[112+rsp],xmm12
-+	movaps	XMMWORD[128+rsp],xmm13
-+	movaps	XMMWORD[144+rsp],xmm14
-+	movaps	XMMWORD[160+rsp],xmm15
-+$L$enc_key_body:
-+	mov	eax,esi
-+	shr	eax,5
-+	add	eax,5
-+	mov	DWORD[240+rdx],eax
-+
-+	mov	ecx,0
-+	mov	r8d,0x30
-+	call	_vpaes_schedule_core
-+	movaps	xmm6,XMMWORD[16+rsp]
-+	movaps	xmm7,XMMWORD[32+rsp]
-+	movaps	xmm8,XMMWORD[48+rsp]
-+	movaps	xmm9,XMMWORD[64+rsp]
-+	movaps	xmm10,XMMWORD[80+rsp]
-+	movaps	xmm11,XMMWORD[96+rsp]
-+	movaps	xmm12,XMMWORD[112+rsp]
-+	movaps	xmm13,XMMWORD[128+rsp]
-+	movaps	xmm14,XMMWORD[144+rsp]
-+	movaps	xmm15,XMMWORD[160+rsp]
-+	lea	rsp,[184+rsp]
-+$L$enc_key_epilogue:
-+	xor	eax,eax
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_vpaes_set_encrypt_key:
-+
-+global	vpaes_set_decrypt_key
-+
-+ALIGN	16
-+vpaes_set_decrypt_key:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_vpaes_set_decrypt_key:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	lea	rsp,[((-184))+rsp]
-+	movaps	XMMWORD[16+rsp],xmm6
-+	movaps	XMMWORD[32+rsp],xmm7
-+	movaps	XMMWORD[48+rsp],xmm8
-+	movaps	XMMWORD[64+rsp],xmm9
-+	movaps	XMMWORD[80+rsp],xmm10
-+	movaps	XMMWORD[96+rsp],xmm11
-+	movaps	XMMWORD[112+rsp],xmm12
-+	movaps	XMMWORD[128+rsp],xmm13
-+	movaps	XMMWORD[144+rsp],xmm14
-+	movaps	XMMWORD[160+rsp],xmm15
-+$L$dec_key_body:
-+	mov	eax,esi
-+	shr	eax,5
-+	add	eax,5
-+	mov	DWORD[240+rdx],eax
-+	shl	eax,4
-+	lea	rdx,[16+rax*1+rdx]
-+
-+	mov	ecx,1
-+	mov	r8d,esi
-+	shr	r8d,1
-+	and	r8d,32
-+	xor	r8d,32
-+	call	_vpaes_schedule_core
-+	movaps	xmm6,XMMWORD[16+rsp]
-+	movaps	xmm7,XMMWORD[32+rsp]
-+	movaps	xmm8,XMMWORD[48+rsp]
-+	movaps	xmm9,XMMWORD[64+rsp]
-+	movaps	xmm10,XMMWORD[80+rsp]
-+	movaps	xmm11,XMMWORD[96+rsp]
-+	movaps	xmm12,XMMWORD[112+rsp]
-+	movaps	xmm13,XMMWORD[128+rsp]
-+	movaps	xmm14,XMMWORD[144+rsp]
-+	movaps	xmm15,XMMWORD[160+rsp]
-+	lea	rsp,[184+rsp]
-+$L$dec_key_epilogue:
-+	xor	eax,eax
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_vpaes_set_decrypt_key:
-+
-+global	vpaes_encrypt
-+
-+ALIGN	16
-+vpaes_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_vpaes_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	lea	rsp,[((-184))+rsp]
-+	movaps	XMMWORD[16+rsp],xmm6
-+	movaps	XMMWORD[32+rsp],xmm7
-+	movaps	XMMWORD[48+rsp],xmm8
-+	movaps	XMMWORD[64+rsp],xmm9
-+	movaps	XMMWORD[80+rsp],xmm10
-+	movaps	XMMWORD[96+rsp],xmm11
-+	movaps	XMMWORD[112+rsp],xmm12
-+	movaps	XMMWORD[128+rsp],xmm13
-+	movaps	XMMWORD[144+rsp],xmm14
-+	movaps	XMMWORD[160+rsp],xmm15
-+$L$enc_body:
-+	movdqu	xmm0,XMMWORD[rdi]
-+	call	_vpaes_preheat
-+	call	_vpaes_encrypt_core
-+	movdqu	XMMWORD[rsi],xmm0
-+	movaps	xmm6,XMMWORD[16+rsp]
-+	movaps	xmm7,XMMWORD[32+rsp]
-+	movaps	xmm8,XMMWORD[48+rsp]
-+	movaps	xmm9,XMMWORD[64+rsp]
-+	movaps	xmm10,XMMWORD[80+rsp]
-+	movaps	xmm11,XMMWORD[96+rsp]
-+	movaps	xmm12,XMMWORD[112+rsp]
-+	movaps	xmm13,XMMWORD[128+rsp]
-+	movaps	xmm14,XMMWORD[144+rsp]
-+	movaps	xmm15,XMMWORD[160+rsp]
-+	lea	rsp,[184+rsp]
-+$L$enc_epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_vpaes_encrypt:
-+
-+global	vpaes_decrypt
-+
-+ALIGN	16
-+vpaes_decrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_vpaes_decrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	lea	rsp,[((-184))+rsp]
-+	movaps	XMMWORD[16+rsp],xmm6
-+	movaps	XMMWORD[32+rsp],xmm7
-+	movaps	XMMWORD[48+rsp],xmm8
-+	movaps	XMMWORD[64+rsp],xmm9
-+	movaps	XMMWORD[80+rsp],xmm10
-+	movaps	XMMWORD[96+rsp],xmm11
-+	movaps	XMMWORD[112+rsp],xmm12
-+	movaps	XMMWORD[128+rsp],xmm13
-+	movaps	XMMWORD[144+rsp],xmm14
-+	movaps	XMMWORD[160+rsp],xmm15
-+$L$dec_body:
-+	movdqu	xmm0,XMMWORD[rdi]
-+	call	_vpaes_preheat
-+	call	_vpaes_decrypt_core
-+	movdqu	XMMWORD[rsi],xmm0
-+	movaps	xmm6,XMMWORD[16+rsp]
-+	movaps	xmm7,XMMWORD[32+rsp]
-+	movaps	xmm8,XMMWORD[48+rsp]
-+	movaps	xmm9,XMMWORD[64+rsp]
-+	movaps	xmm10,XMMWORD[80+rsp]
-+	movaps	xmm11,XMMWORD[96+rsp]
-+	movaps	xmm12,XMMWORD[112+rsp]
-+	movaps	xmm13,XMMWORD[128+rsp]
-+	movaps	xmm14,XMMWORD[144+rsp]
-+	movaps	xmm15,XMMWORD[160+rsp]
-+	lea	rsp,[184+rsp]
-+$L$dec_epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_vpaes_decrypt:
-+global	vpaes_cbc_encrypt
-+
-+ALIGN	16
-+vpaes_cbc_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_vpaes_cbc_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	xchg	rdx,rcx
-+	sub	rcx,16
-+	jc	NEAR $L$cbc_abort
-+	lea	rsp,[((-184))+rsp]
-+	movaps	XMMWORD[16+rsp],xmm6
-+	movaps	XMMWORD[32+rsp],xmm7
-+	movaps	XMMWORD[48+rsp],xmm8
-+	movaps	XMMWORD[64+rsp],xmm9
-+	movaps	XMMWORD[80+rsp],xmm10
-+	movaps	XMMWORD[96+rsp],xmm11
-+	movaps	XMMWORD[112+rsp],xmm12
-+	movaps	XMMWORD[128+rsp],xmm13
-+	movaps	XMMWORD[144+rsp],xmm14
-+	movaps	XMMWORD[160+rsp],xmm15
-+$L$cbc_body:
-+	movdqu	xmm6,XMMWORD[r8]
-+	sub	rsi,rdi
-+	call	_vpaes_preheat
-+	cmp	r9d,0
-+	je	NEAR $L$cbc_dec_loop
-+	jmp	NEAR $L$cbc_enc_loop
-+ALIGN	16
-+$L$cbc_enc_loop:
-+	movdqu	xmm0,XMMWORD[rdi]
-+	pxor	xmm0,xmm6
-+	call	_vpaes_encrypt_core
-+	movdqa	xmm6,xmm0
-+	movdqu	XMMWORD[rdi*1+rsi],xmm0
-+	lea	rdi,[16+rdi]
-+	sub	rcx,16
-+	jnc	NEAR $L$cbc_enc_loop
-+	jmp	NEAR $L$cbc_done
-+ALIGN	16
-+$L$cbc_dec_loop:
-+	movdqu	xmm0,XMMWORD[rdi]
-+	movdqa	xmm7,xmm0
-+	call	_vpaes_decrypt_core
-+	pxor	xmm0,xmm6
-+	movdqa	xmm6,xmm7
-+	movdqu	XMMWORD[rdi*1+rsi],xmm0
-+	lea	rdi,[16+rdi]
-+	sub	rcx,16
-+	jnc	NEAR $L$cbc_dec_loop
-+$L$cbc_done:
-+	movdqu	XMMWORD[r8],xmm6
-+	movaps	xmm6,XMMWORD[16+rsp]
-+	movaps	xmm7,XMMWORD[32+rsp]
-+	movaps	xmm8,XMMWORD[48+rsp]
-+	movaps	xmm9,XMMWORD[64+rsp]
-+	movaps	xmm10,XMMWORD[80+rsp]
-+	movaps	xmm11,XMMWORD[96+rsp]
-+	movaps	xmm12,XMMWORD[112+rsp]
-+	movaps	xmm13,XMMWORD[128+rsp]
-+	movaps	xmm14,XMMWORD[144+rsp]
-+	movaps	xmm15,XMMWORD[160+rsp]
-+	lea	rsp,[184+rsp]
-+$L$cbc_epilogue:
-+$L$cbc_abort:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_vpaes_cbc_encrypt:
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	16
-+_vpaes_preheat:
-+	lea	r10,[$L$k_s0F]
-+	movdqa	xmm10,XMMWORD[((-32))+r10]
-+	movdqa	xmm11,XMMWORD[((-16))+r10]
-+	movdqa	xmm9,XMMWORD[r10]
-+	movdqa	xmm13,XMMWORD[48+r10]
-+	movdqa	xmm12,XMMWORD[64+r10]
-+	movdqa	xmm15,XMMWORD[80+r10]
-+	movdqa	xmm14,XMMWORD[96+r10]
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+
-+
-+
-+
-+ALIGN	64
-+_vpaes_consts:
-+$L$k_inv:
-+	DQ	0x0E05060F0D080180,0x040703090A0B0C02
-+	DQ	0x01040A060F0B0780,0x030D0E0C02050809
-+
-+$L$k_s0F:
-+	DQ	0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F
-+
-+$L$k_ipt:
-+	DQ	0xC2B2E8985A2A7000,0xCABAE09052227808
-+	DQ	0x4C01307D317C4D00,0xCD80B1FCB0FDCC81
-+
-+$L$k_sb1:
-+	DQ	0xB19BE18FCB503E00,0xA5DF7A6E142AF544
-+	DQ	0x3618D415FAE22300,0x3BF7CCC10D2ED9EF
-+$L$k_sb2:
-+	DQ	0xE27A93C60B712400,0x5EB7E955BC982FCD
-+	DQ	0x69EB88400AE12900,0xC2A163C8AB82234A
-+$L$k_sbo:
-+	DQ	0xD0D26D176FBDC700,0x15AABF7AC502A878
-+	DQ	0xCFE474A55FBB6A00,0x8E1E90D1412B35FA
-+
-+$L$k_mc_forward:
-+	DQ	0x0407060500030201,0x0C0F0E0D080B0A09
-+	DQ	0x080B0A0904070605,0x000302010C0F0E0D
-+	DQ	0x0C0F0E0D080B0A09,0x0407060500030201
-+	DQ	0x000302010C0F0E0D,0x080B0A0904070605
-+
-+$L$k_mc_backward:
-+	DQ	0x0605040702010003,0x0E0D0C0F0A09080B
-+	DQ	0x020100030E0D0C0F,0x0A09080B06050407
-+	DQ	0x0E0D0C0F0A09080B,0x0605040702010003
-+	DQ	0x0A09080B06050407,0x020100030E0D0C0F
-+
-+$L$k_sr:
-+	DQ	0x0706050403020100,0x0F0E0D0C0B0A0908
-+	DQ	0x030E09040F0A0500,0x0B06010C07020D08
-+	DQ	0x0F060D040B020900,0x070E050C030A0108
-+	DQ	0x0B0E0104070A0D00,0x0306090C0F020508
-+
-+$L$k_rcon:
-+	DQ	0x1F8391B9AF9DEEB6,0x702A98084D7C7D81
-+
-+$L$k_s63:
-+	DQ	0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B
-+
-+$L$k_opt:
-+	DQ	0xFF9F4929D6B66000,0xF7974121DEBE6808
-+	DQ	0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0
-+
-+$L$k_deskew:
-+	DQ	0x07E4A34047A4E300,0x1DFEB95A5DBEF91A
-+	DQ	0x5F36B5DC83EA6900,0x2841C2ABF49D1E77
-+
-+
-+
-+
-+
-+$L$k_dksd:
-+	DQ	0xFEB91A5DA3E44700,0x0740E3A45A1DBEF9
-+	DQ	0x41C277F4B5368300,0x5FDC69EAAB289D1E
-+$L$k_dksb:
-+	DQ	0x9A4FCA1F8550D500,0x03D653861CC94C99
-+	DQ	0x115BEDA7B6FC4A00,0xD993256F7E3482C8
-+$L$k_dkse:
-+	DQ	0xD5031CCA1FC9D600,0x53859A4C994F5086
-+	DQ	0xA23196054FDC7BE8,0xCD5EF96A20B31487
-+$L$k_dks9:
-+	DQ	0xB6116FC87ED9A700,0x4AED933482255BFC
-+	DQ	0x4576516227143300,0x8BB89FACE9DAFDCE
-+
-+
-+
-+
-+
-+$L$k_dipt:
-+	DQ	0x0F505B040B545F00,0x154A411E114E451A
-+	DQ	0x86E383E660056500,0x12771772F491F194
-+
-+$L$k_dsb9:
-+	DQ	0x851C03539A86D600,0xCAD51F504F994CC9
-+	DQ	0xC03B1789ECD74900,0x725E2C9EB2FBA565
-+$L$k_dsbd:
-+	DQ	0x7D57CCDFE6B1A200,0xF56E9B13882A4439
-+	DQ	0x3CE2FAF724C6CB00,0x2931180D15DEEFD3
-+$L$k_dsbb:
-+	DQ	0xD022649296B44200,0x602646F6B0F2D404
-+	DQ	0xC19498A6CD596700,0xF3FF0C3E3255AA6B
-+$L$k_dsbe:
-+	DQ	0x46F2929626D4D000,0x2242600464B4F6B0
-+	DQ	0x0C55A6CDFFAAC100,0x9467F36B98593E32
-+$L$k_dsbo:
-+	DQ	0x1387EA537EF94000,0xC7AA6DB9D4943E2D
-+	DQ	0x12D7560F93441D00,0xCA4B8159D8C58E9C
-+DB	86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
-+DB	111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54
-+DB	52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97
-+DB	109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32
-+DB	85,110,105,118,101,114,115,105,116,121,41,0
-+ALIGN	64
-+
-+EXTERN	__imp_RtlVirtualUnwind
-+
-+ALIGN	16
-+se_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	mov	rsi,QWORD[8+r9]
-+	mov	r11,QWORD[56+r9]
-+
-+	mov	r10d,DWORD[r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jb	NEAR $L$in_prologue
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	mov	r10d,DWORD[4+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$in_prologue
-+
-+	lea	rsi,[16+rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,20
-+	DD	0xa548f3fc
-+	lea	rax,[184+rax]
-+
-+$L$in_prologue:
-+	mov	rdi,QWORD[8+rax]
-+	mov	rsi,QWORD[16+rax]
-+	mov	QWORD[152+r8],rax
-+	mov	QWORD[168+r8],rsi
-+	mov	QWORD[176+r8],rdi
-+
-+	mov	rdi,QWORD[40+r9]
-+	mov	rsi,r8
-+	mov	ecx,154
-+	DD	0xa548f3fc
-+
-+	mov	rsi,r9
-+	xor	rcx,rcx
-+	mov	rdx,QWORD[8+rsi]
-+	mov	r8,QWORD[rsi]
-+	mov	r9,QWORD[16+rsi]
-+	mov	r10,QWORD[40+rsi]
-+	lea	r11,[56+rsi]
-+	lea	r12,[24+rsi]
-+	mov	QWORD[32+rsp],r10
-+	mov	QWORD[40+rsp],r11
-+	mov	QWORD[48+rsp],r12
-+	mov	QWORD[56+rsp],rcx
-+	call	QWORD[__imp_RtlVirtualUnwind]
-+
-+	mov	eax,1
-+	add	rsp,64
-+	popfq
-+	pop	r15
-+	pop	r14
-+	pop	r13
-+	pop	r12
-+	pop	rbp
-+	pop	rbx
-+	pop	rdi
-+	pop	rsi
-+	DB	0F3h,0C3h		;repret
-+
-+
-+section	.pdata rdata align=4
-+ALIGN	4
-+	DD	$L$SEH_begin_vpaes_set_encrypt_key wrt ..imagebase
-+	DD	$L$SEH_end_vpaes_set_encrypt_key wrt ..imagebase
-+	DD	$L$SEH_info_vpaes_set_encrypt_key wrt ..imagebase
-+
-+	DD	$L$SEH_begin_vpaes_set_decrypt_key wrt ..imagebase
-+	DD	$L$SEH_end_vpaes_set_decrypt_key wrt ..imagebase
-+	DD	$L$SEH_info_vpaes_set_decrypt_key wrt ..imagebase
-+
-+	DD	$L$SEH_begin_vpaes_encrypt wrt ..imagebase
-+	DD	$L$SEH_end_vpaes_encrypt wrt ..imagebase
-+	DD	$L$SEH_info_vpaes_encrypt wrt ..imagebase
-+
-+	DD	$L$SEH_begin_vpaes_decrypt wrt ..imagebase
-+	DD	$L$SEH_end_vpaes_decrypt wrt ..imagebase
-+	DD	$L$SEH_info_vpaes_decrypt wrt ..imagebase
-+
-+	DD	$L$SEH_begin_vpaes_cbc_encrypt wrt ..imagebase
-+	DD	$L$SEH_end_vpaes_cbc_encrypt wrt ..imagebase
-+	DD	$L$SEH_info_vpaes_cbc_encrypt wrt ..imagebase
-+
-+section	.xdata rdata align=8
-+ALIGN	8
-+$L$SEH_info_vpaes_set_encrypt_key:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase
-+$L$SEH_info_vpaes_set_decrypt_key:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$dec_key_body wrt ..imagebase,$L$dec_key_epilogue wrt ..imagebase
-+$L$SEH_info_vpaes_encrypt:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase
-+$L$SEH_info_vpaes_decrypt:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$dec_body wrt ..imagebase,$L$dec_epilogue wrt ..imagebase
-+$L$SEH_info_vpaes_cbc_encrypt:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$cbc_body wrt ..imagebase,$L$cbc_epilogue wrt ..imagebase
-diff --git a/SMP/lib/accelerated/x86/coff/aesni-gcm-x86_64.asm b/SMP/lib/accelerated/x86/coff/aesni-gcm-x86_64.asm
-new file mode 100644
-index 0000000..741a9e4
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/aesni-gcm-x86_64.asm
-@@ -0,0 +1,986 @@
-+default	rel
-+%define XMMWORD
-+%define YMMWORD
-+%define ZMMWORD
-+section	.text code align=64
-+
-+
-+
-+ALIGN	32
-+_aesni_ctr32_ghash_6x:
-+	vmovdqu	xmm2,XMMWORD[32+r11]
-+	sub	rdx,6
-+	vpxor	xmm4,xmm4,xmm4
-+	vmovdqu	xmm15,XMMWORD[((0-128))+rcx]
-+	vpaddb	xmm10,xmm1,xmm2
-+	vpaddb	xmm11,xmm10,xmm2
-+	vpaddb	xmm12,xmm11,xmm2
-+	vpaddb	xmm13,xmm12,xmm2
-+	vpaddb	xmm14,xmm13,xmm2
-+	vpxor	xmm9,xmm1,xmm15
-+	vmovdqu	XMMWORD[(16+8)+rsp],xmm4
-+	jmp	NEAR $L$oop6x
-+
-+ALIGN	32
-+$L$oop6x:
-+	add	ebx,100663296
-+	jc	NEAR $L$handle_ctr32
-+	vmovdqu	xmm3,XMMWORD[((0-32))+r9]
-+	vpaddb	xmm1,xmm14,xmm2
-+	vpxor	xmm10,xmm10,xmm15
-+	vpxor	xmm11,xmm11,xmm15
-+
-+$L$resume_ctr32:
-+	vmovdqu	XMMWORD[r8],xmm1
-+	vpclmulqdq	xmm5,xmm7,xmm3,0x10
-+	vpxor	xmm12,xmm12,xmm15
-+	vmovups	xmm2,XMMWORD[((16-128))+rcx]
-+	vpclmulqdq	xmm6,xmm7,xmm3,0x01
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+	xor	r12,r12
-+	cmp	r15,r14
-+
-+	vaesenc	xmm9,xmm9,xmm2
-+	vmovdqu	xmm0,XMMWORD[((48+8))+rsp]
-+	vpxor	xmm13,xmm13,xmm15
-+	vpclmulqdq	xmm1,xmm7,xmm3,0x00
-+	vaesenc	xmm10,xmm10,xmm2
-+	vpxor	xmm14,xmm14,xmm15
-+	setnc	r12b
-+	vpclmulqdq	xmm7,xmm7,xmm3,0x11
-+	vaesenc	xmm11,xmm11,xmm2
-+	vmovdqu	xmm3,XMMWORD[((16-32))+r9]
-+	neg	r12
-+	vaesenc	xmm12,xmm12,xmm2
-+	vpxor	xmm6,xmm6,xmm5
-+	vpclmulqdq	xmm5,xmm0,xmm3,0x00
-+	vpxor	xmm8,xmm8,xmm4
-+	vaesenc	xmm13,xmm13,xmm2
-+	vpxor	xmm4,xmm1,xmm5
-+	and	r12,0x60
-+	vmovups	xmm15,XMMWORD[((32-128))+rcx]
-+	vpclmulqdq	xmm1,xmm0,xmm3,0x10
-+	vaesenc	xmm14,xmm14,xmm2
-+
-+	vpclmulqdq	xmm2,xmm0,xmm3,0x01
-+	lea	r14,[r12*1+r14]
-+	vaesenc	xmm9,xmm9,xmm15
-+	vpxor	xmm8,xmm8,XMMWORD[((16+8))+rsp]
-+	vpclmulqdq	xmm3,xmm0,xmm3,0x11
-+	vmovdqu	xmm0,XMMWORD[((64+8))+rsp]
-+	vaesenc	xmm10,xmm10,xmm15
-+	movbe	r13,QWORD[88+r14]
-+	vaesenc	xmm11,xmm11,xmm15
-+	movbe	r12,QWORD[80+r14]
-+	vaesenc	xmm12,xmm12,xmm15
-+	mov	QWORD[((32+8))+rsp],r13
-+	vaesenc	xmm13,xmm13,xmm15
-+	mov	QWORD[((40+8))+rsp],r12
-+	vmovdqu	xmm5,XMMWORD[((48-32))+r9]
-+	vaesenc	xmm14,xmm14,xmm15
-+
-+	vmovups	xmm15,XMMWORD[((48-128))+rcx]
-+	vpxor	xmm6,xmm6,xmm1
-+	vpclmulqdq	xmm1,xmm0,xmm5,0x00
-+	vaesenc	xmm9,xmm9,xmm15
-+	vpxor	xmm6,xmm6,xmm2
-+	vpclmulqdq	xmm2,xmm0,xmm5,0x10
-+	vaesenc	xmm10,xmm10,xmm15
-+	vpxor	xmm7,xmm7,xmm3
-+	vpclmulqdq	xmm3,xmm0,xmm5,0x01
-+	vaesenc	xmm11,xmm11,xmm15
-+	vpclmulqdq	xmm5,xmm0,xmm5,0x11
-+	vmovdqu	xmm0,XMMWORD[((80+8))+rsp]
-+	vaesenc	xmm12,xmm12,xmm15
-+	vaesenc	xmm13,xmm13,xmm15
-+	vpxor	xmm4,xmm4,xmm1
-+	vmovdqu	xmm1,XMMWORD[((64-32))+r9]
-+	vaesenc	xmm14,xmm14,xmm15
-+
-+	vmovups	xmm15,XMMWORD[((64-128))+rcx]
-+	vpxor	xmm6,xmm6,xmm2
-+	vpclmulqdq	xmm2,xmm0,xmm1,0x00
-+	vaesenc	xmm9,xmm9,xmm15
-+	vpxor	xmm6,xmm6,xmm3
-+	vpclmulqdq	xmm3,xmm0,xmm1,0x10
-+	vaesenc	xmm10,xmm10,xmm15
-+	movbe	r13,QWORD[72+r14]
-+	vpxor	xmm7,xmm7,xmm5
-+	vpclmulqdq	xmm5,xmm0,xmm1,0x01
-+	vaesenc	xmm11,xmm11,xmm15
-+	movbe	r12,QWORD[64+r14]
-+	vpclmulqdq	xmm1,xmm0,xmm1,0x11
-+	vmovdqu	xmm0,XMMWORD[((96+8))+rsp]
-+	vaesenc	xmm12,xmm12,xmm15
-+	mov	QWORD[((48+8))+rsp],r13
-+	vaesenc	xmm13,xmm13,xmm15
-+	mov	QWORD[((56+8))+rsp],r12
-+	vpxor	xmm4,xmm4,xmm2
-+	vmovdqu	xmm2,XMMWORD[((96-32))+r9]
-+	vaesenc	xmm14,xmm14,xmm15
-+
-+	vmovups	xmm15,XMMWORD[((80-128))+rcx]
-+	vpxor	xmm6,xmm6,xmm3
-+	vpclmulqdq	xmm3,xmm0,xmm2,0x00
-+	vaesenc	xmm9,xmm9,xmm15
-+	vpxor	xmm6,xmm6,xmm5
-+	vpclmulqdq	xmm5,xmm0,xmm2,0x10
-+	vaesenc	xmm10,xmm10,xmm15
-+	movbe	r13,QWORD[56+r14]
-+	vpxor	xmm7,xmm7,xmm1
-+	vpclmulqdq	xmm1,xmm0,xmm2,0x01
-+	vpxor	xmm8,xmm8,XMMWORD[((112+8))+rsp]
-+	vaesenc	xmm11,xmm11,xmm15
-+	movbe	r12,QWORD[48+r14]
-+	vpclmulqdq	xmm2,xmm0,xmm2,0x11
-+	vaesenc	xmm12,xmm12,xmm15
-+	mov	QWORD[((64+8))+rsp],r13
-+	vaesenc	xmm13,xmm13,xmm15
-+	mov	QWORD[((72+8))+rsp],r12
-+	vpxor	xmm4,xmm4,xmm3
-+	vmovdqu	xmm3,XMMWORD[((112-32))+r9]
-+	vaesenc	xmm14,xmm14,xmm15
-+
-+	vmovups	xmm15,XMMWORD[((96-128))+rcx]
-+	vpxor	xmm6,xmm6,xmm5
-+	vpclmulqdq	xmm5,xmm8,xmm3,0x10
-+	vaesenc	xmm9,xmm9,xmm15
-+	vpxor	xmm6,xmm6,xmm1
-+	vpclmulqdq	xmm1,xmm8,xmm3,0x01
-+	vaesenc	xmm10,xmm10,xmm15
-+	movbe	r13,QWORD[40+r14]
-+	vpxor	xmm7,xmm7,xmm2
-+	vpclmulqdq	xmm2,xmm8,xmm3,0x00
-+	vaesenc	xmm11,xmm11,xmm15
-+	movbe	r12,QWORD[32+r14]
-+	vpclmulqdq	xmm8,xmm8,xmm3,0x11
-+	vaesenc	xmm12,xmm12,xmm15
-+	mov	QWORD[((80+8))+rsp],r13
-+	vaesenc	xmm13,xmm13,xmm15
-+	mov	QWORD[((88+8))+rsp],r12
-+	vpxor	xmm6,xmm6,xmm5
-+	vaesenc	xmm14,xmm14,xmm15
-+	vpxor	xmm6,xmm6,xmm1
-+
-+	vmovups	xmm15,XMMWORD[((112-128))+rcx]
-+	vpslldq	xmm5,xmm6,8
-+	vpxor	xmm4,xmm4,xmm2
-+	vmovdqu	xmm3,XMMWORD[16+r11]
-+
-+	vaesenc	xmm9,xmm9,xmm15
-+	vpxor	xmm7,xmm7,xmm8
-+	vaesenc	xmm10,xmm10,xmm15
-+	vpxor	xmm4,xmm4,xmm5
-+	movbe	r13,QWORD[24+r14]
-+	vaesenc	xmm11,xmm11,xmm15
-+	movbe	r12,QWORD[16+r14]
-+	vpalignr	xmm0,xmm4,xmm4,8
-+	vpclmulqdq	xmm4,xmm4,xmm3,0x10
-+	mov	QWORD[((96+8))+rsp],r13
-+	vaesenc	xmm12,xmm12,xmm15
-+	mov	QWORD[((104+8))+rsp],r12
-+	vaesenc	xmm13,xmm13,xmm15
-+	vmovups	xmm1,XMMWORD[((128-128))+rcx]
-+	vaesenc	xmm14,xmm14,xmm15
-+
-+	vaesenc	xmm9,xmm9,xmm1
-+	vmovups	xmm15,XMMWORD[((144-128))+rcx]
-+	vaesenc	xmm10,xmm10,xmm1
-+	vpsrldq	xmm6,xmm6,8
-+	vaesenc	xmm11,xmm11,xmm1
-+	vpxor	xmm7,xmm7,xmm6
-+	vaesenc	xmm12,xmm12,xmm1
-+	vpxor	xmm4,xmm4,xmm0
-+	movbe	r13,QWORD[8+r14]
-+	vaesenc	xmm13,xmm13,xmm1
-+	movbe	r12,QWORD[r14]
-+	vaesenc	xmm14,xmm14,xmm1
-+	vmovups	xmm1,XMMWORD[((160-128))+rcx]
-+	cmp	ebp,11
-+	jb	NEAR $L$enc_tail
-+
-+	vaesenc	xmm9,xmm9,xmm15
-+	vaesenc	xmm10,xmm10,xmm15
-+	vaesenc	xmm11,xmm11,xmm15
-+	vaesenc	xmm12,xmm12,xmm15
-+	vaesenc	xmm13,xmm13,xmm15
-+	vaesenc	xmm14,xmm14,xmm15
-+
-+	vaesenc	xmm9,xmm9,xmm1
-+	vaesenc	xmm10,xmm10,xmm1
-+	vaesenc	xmm11,xmm11,xmm1
-+	vaesenc	xmm12,xmm12,xmm1
-+	vaesenc	xmm13,xmm13,xmm1
-+	vmovups	xmm15,XMMWORD[((176-128))+rcx]
-+	vaesenc	xmm14,xmm14,xmm1
-+	vmovups	xmm1,XMMWORD[((192-128))+rcx]
-+	je	NEAR $L$enc_tail
-+
-+	vaesenc	xmm9,xmm9,xmm15
-+	vaesenc	xmm10,xmm10,xmm15
-+	vaesenc	xmm11,xmm11,xmm15
-+	vaesenc	xmm12,xmm12,xmm15
-+	vaesenc	xmm13,xmm13,xmm15
-+	vaesenc	xmm14,xmm14,xmm15
-+
-+	vaesenc	xmm9,xmm9,xmm1
-+	vaesenc	xmm10,xmm10,xmm1
-+	vaesenc	xmm11,xmm11,xmm1
-+	vaesenc	xmm12,xmm12,xmm1
-+	vaesenc	xmm13,xmm13,xmm1
-+	vmovups	xmm15,XMMWORD[((208-128))+rcx]
-+	vaesenc	xmm14,xmm14,xmm1
-+	vmovups	xmm1,XMMWORD[((224-128))+rcx]
-+	jmp	NEAR $L$enc_tail
-+
-+ALIGN	32
-+$L$handle_ctr32:
-+	vmovdqu	xmm0,XMMWORD[r11]
-+	vpshufb	xmm6,xmm1,xmm0
-+	vmovdqu	xmm5,XMMWORD[48+r11]
-+	vpaddd	xmm10,xmm6,XMMWORD[64+r11]
-+	vpaddd	xmm11,xmm6,xmm5
-+	vmovdqu	xmm3,XMMWORD[((0-32))+r9]
-+	vpaddd	xmm12,xmm10,xmm5
-+	vpshufb	xmm10,xmm10,xmm0
-+	vpaddd	xmm13,xmm11,xmm5
-+	vpshufb	xmm11,xmm11,xmm0
-+	vpxor	xmm10,xmm10,xmm15
-+	vpaddd	xmm14,xmm12,xmm5
-+	vpshufb	xmm12,xmm12,xmm0
-+	vpxor	xmm11,xmm11,xmm15
-+	vpaddd	xmm1,xmm13,xmm5
-+	vpshufb	xmm13,xmm13,xmm0
-+	vpshufb	xmm14,xmm14,xmm0
-+	vpshufb	xmm1,xmm1,xmm0
-+	jmp	NEAR $L$resume_ctr32
-+
-+ALIGN	32
-+$L$enc_tail:
-+	vaesenc	xmm9,xmm9,xmm15
-+	vmovdqu	XMMWORD[(16+8)+rsp],xmm7
-+	vpalignr	xmm8,xmm4,xmm4,8
-+	vaesenc	xmm10,xmm10,xmm15
-+	vpclmulqdq	xmm4,xmm4,xmm3,0x10
-+	vpxor	xmm2,xmm1,XMMWORD[rdi]
-+	vaesenc	xmm11,xmm11,xmm15
-+	vpxor	xmm0,xmm1,XMMWORD[16+rdi]
-+	vaesenc	xmm12,xmm12,xmm15
-+	vpxor	xmm5,xmm1,XMMWORD[32+rdi]
-+	vaesenc	xmm13,xmm13,xmm15
-+	vpxor	xmm6,xmm1,XMMWORD[48+rdi]
-+	vaesenc	xmm14,xmm14,xmm15
-+	vpxor	xmm7,xmm1,XMMWORD[64+rdi]
-+	vpxor	xmm3,xmm1,XMMWORD[80+rdi]
-+	vmovdqu	xmm1,XMMWORD[r8]
-+
-+	vaesenclast	xmm9,xmm9,xmm2
-+	vmovdqu	xmm2,XMMWORD[32+r11]
-+	vaesenclast	xmm10,xmm10,xmm0
-+	vpaddb	xmm0,xmm1,xmm2
-+	mov	QWORD[((112+8))+rsp],r13
-+	lea	rdi,[96+rdi]
-+	vaesenclast	xmm11,xmm11,xmm5
-+	vpaddb	xmm5,xmm0,xmm2
-+	mov	QWORD[((120+8))+rsp],r12
-+	lea	rsi,[96+rsi]
-+	vmovdqu	xmm15,XMMWORD[((0-128))+rcx]
-+	vaesenclast	xmm12,xmm12,xmm6
-+	vpaddb	xmm6,xmm5,xmm2
-+	vaesenclast	xmm13,xmm13,xmm7
-+	vpaddb	xmm7,xmm6,xmm2
-+	vaesenclast	xmm14,xmm14,xmm3
-+	vpaddb	xmm3,xmm7,xmm2
-+
-+	add	r10,0x60
-+	sub	rdx,0x6
-+	jc	NEAR $L$6x_done
-+
-+	vmovups	XMMWORD[(-96)+rsi],xmm9
-+	vpxor	xmm9,xmm1,xmm15
-+	vmovups	XMMWORD[(-80)+rsi],xmm10
-+	vmovdqa	xmm10,xmm0
-+	vmovups	XMMWORD[(-64)+rsi],xmm11
-+	vmovdqa	xmm11,xmm5
-+	vmovups	XMMWORD[(-48)+rsi],xmm12
-+	vmovdqa	xmm12,xmm6
-+	vmovups	XMMWORD[(-32)+rsi],xmm13
-+	vmovdqa	xmm13,xmm7
-+	vmovups	XMMWORD[(-16)+rsi],xmm14
-+	vmovdqa	xmm14,xmm3
-+	vmovdqu	xmm7,XMMWORD[((32+8))+rsp]
-+	jmp	NEAR $L$oop6x
-+
-+$L$6x_done:
-+	vpxor	xmm8,xmm8,XMMWORD[((16+8))+rsp]
-+	vpxor	xmm8,xmm8,xmm4
-+
-+	DB	0F3h,0C3h		;repret
-+
-+global	aesni_gcm_decrypt
-+
-+ALIGN	32
-+aesni_gcm_decrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_gcm_decrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	xor	r10,r10
-+
-+
-+
-+	cmp	rdx,0x60
-+	jb	NEAR $L$gcm_dec_abort
-+
-+	lea	rax,[rsp]
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	lea	rsp,[((-168))+rsp]
-+	movaps	XMMWORD[(-216)+rax],xmm6
-+	movaps	XMMWORD[(-200)+rax],xmm7
-+	movaps	XMMWORD[(-184)+rax],xmm8
-+	movaps	XMMWORD[(-168)+rax],xmm9
-+	movaps	XMMWORD[(-152)+rax],xmm10
-+	movaps	XMMWORD[(-136)+rax],xmm11
-+	movaps	XMMWORD[(-120)+rax],xmm12
-+	movaps	XMMWORD[(-104)+rax],xmm13
-+	movaps	XMMWORD[(-88)+rax],xmm14
-+	movaps	XMMWORD[(-72)+rax],xmm15
-+$L$gcm_dec_body:
-+	vzeroupper
-+
-+	vmovdqu	xmm1,XMMWORD[r8]
-+	add	rsp,-128
-+	mov	ebx,DWORD[12+r8]
-+	lea	r11,[$L$bswap_mask]
-+	lea	r14,[((-128))+rcx]
-+	mov	r15,0xf80
-+	vmovdqu	xmm8,XMMWORD[r9]
-+	and	rsp,-128
-+	vmovdqu	xmm0,XMMWORD[r11]
-+	lea	rcx,[128+rcx]
-+	lea	r9,[((32+32))+r9]
-+	mov	ebp,DWORD[((240-128))+rcx]
-+	vpshufb	xmm8,xmm8,xmm0
-+
-+	and	r14,r15
-+	and	r15,rsp
-+	sub	r15,r14
-+	jc	NEAR $L$dec_no_key_aliasing
-+	cmp	r15,768
-+	jnc	NEAR $L$dec_no_key_aliasing
-+	sub	rsp,r15
-+$L$dec_no_key_aliasing:
-+
-+	vmovdqu	xmm7,XMMWORD[80+rdi]
-+	lea	r14,[rdi]
-+	vmovdqu	xmm4,XMMWORD[64+rdi]
-+
-+
-+
-+
-+
-+
-+
-+	lea	r15,[((-192))+rdx*1+rdi]
-+
-+	vmovdqu	xmm5,XMMWORD[48+rdi]
-+	shr	rdx,4
-+	xor	r10,r10
-+	vmovdqu	xmm6,XMMWORD[32+rdi]
-+	vpshufb	xmm7,xmm7,xmm0
-+	vmovdqu	xmm2,XMMWORD[16+rdi]
-+	vpshufb	xmm4,xmm4,xmm0
-+	vmovdqu	xmm3,XMMWORD[rdi]
-+	vpshufb	xmm5,xmm5,xmm0
-+	vmovdqu	XMMWORD[48+rsp],xmm4
-+	vpshufb	xmm6,xmm6,xmm0
-+	vmovdqu	XMMWORD[64+rsp],xmm5
-+	vpshufb	xmm2,xmm2,xmm0
-+	vmovdqu	XMMWORD[80+rsp],xmm6
-+	vpshufb	xmm3,xmm3,xmm0
-+	vmovdqu	XMMWORD[96+rsp],xmm2
-+	vmovdqu	XMMWORD[112+rsp],xmm3
-+
-+	call	_aesni_ctr32_ghash_6x
-+
-+	vmovups	XMMWORD[(-96)+rsi],xmm9
-+	vmovups	XMMWORD[(-80)+rsi],xmm10
-+	vmovups	XMMWORD[(-64)+rsi],xmm11
-+	vmovups	XMMWORD[(-48)+rsi],xmm12
-+	vmovups	XMMWORD[(-32)+rsi],xmm13
-+	vmovups	XMMWORD[(-16)+rsi],xmm14
-+
-+	vpshufb	xmm8,xmm8,XMMWORD[r11]
-+	vmovdqu	XMMWORD[(-64)+r9],xmm8
-+
-+	vzeroupper
-+	movaps	xmm6,XMMWORD[((-216))+rax]
-+	movaps	xmm7,XMMWORD[((-200))+rax]
-+	movaps	xmm8,XMMWORD[((-184))+rax]
-+	movaps	xmm9,XMMWORD[((-168))+rax]
-+	movaps	xmm10,XMMWORD[((-152))+rax]
-+	movaps	xmm11,XMMWORD[((-136))+rax]
-+	movaps	xmm12,XMMWORD[((-120))+rax]
-+	movaps	xmm13,XMMWORD[((-104))+rax]
-+	movaps	xmm14,XMMWORD[((-88))+rax]
-+	movaps	xmm15,XMMWORD[((-72))+rax]
-+	mov	r15,QWORD[((-48))+rax]
-+	mov	r14,QWORD[((-40))+rax]
-+	mov	r13,QWORD[((-32))+rax]
-+	mov	r12,QWORD[((-24))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	rbx,QWORD[((-8))+rax]
-+	lea	rsp,[rax]
-+$L$gcm_dec_abort:
-+	mov	rax,r10
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_gcm_decrypt:
-+
-+ALIGN	32
-+_aesni_ctr32_6x:
-+	vmovdqu	xmm4,XMMWORD[((0-128))+rcx]
-+	vmovdqu	xmm2,XMMWORD[32+r11]
-+	lea	r13,[((-1))+rbp]
-+	vmovups	xmm15,XMMWORD[((16-128))+rcx]
-+	lea	r12,[((32-128))+rcx]
-+	vpxor	xmm9,xmm1,xmm4
-+	add	ebx,100663296
-+	jc	NEAR $L$handle_ctr32_2
-+	vpaddb	xmm10,xmm1,xmm2
-+	vpaddb	xmm11,xmm10,xmm2
-+	vpxor	xmm10,xmm10,xmm4
-+	vpaddb	xmm12,xmm11,xmm2
-+	vpxor	xmm11,xmm11,xmm4
-+	vpaddb	xmm13,xmm12,xmm2
-+	vpxor	xmm12,xmm12,xmm4
-+	vpaddb	xmm14,xmm13,xmm2
-+	vpxor	xmm13,xmm13,xmm4
-+	vpaddb	xmm1,xmm14,xmm2
-+	vpxor	xmm14,xmm14,xmm4
-+	jmp	NEAR $L$oop_ctr32
-+
-+ALIGN	16
-+$L$oop_ctr32:
-+	vaesenc	xmm9,xmm9,xmm15
-+	vaesenc	xmm10,xmm10,xmm15
-+	vaesenc	xmm11,xmm11,xmm15
-+	vaesenc	xmm12,xmm12,xmm15
-+	vaesenc	xmm13,xmm13,xmm15
-+	vaesenc	xmm14,xmm14,xmm15
-+	vmovups	xmm15,XMMWORD[r12]
-+	lea	r12,[16+r12]
-+	dec	r13d
-+	jnz	NEAR $L$oop_ctr32
-+
-+	vmovdqu	xmm3,XMMWORD[r12]
-+	vaesenc	xmm9,xmm9,xmm15
-+	vpxor	xmm4,xmm3,XMMWORD[rdi]
-+	vaesenc	xmm10,xmm10,xmm15
-+	vpxor	xmm5,xmm3,XMMWORD[16+rdi]
-+	vaesenc	xmm11,xmm11,xmm15
-+	vpxor	xmm6,xmm3,XMMWORD[32+rdi]
-+	vaesenc	xmm12,xmm12,xmm15
-+	vpxor	xmm8,xmm3,XMMWORD[48+rdi]
-+	vaesenc	xmm13,xmm13,xmm15
-+	vpxor	xmm2,xmm3,XMMWORD[64+rdi]
-+	vaesenc	xmm14,xmm14,xmm15
-+	vpxor	xmm3,xmm3,XMMWORD[80+rdi]
-+	lea	rdi,[96+rdi]
-+
-+	vaesenclast	xmm9,xmm9,xmm4
-+	vaesenclast	xmm10,xmm10,xmm5
-+	vaesenclast	xmm11,xmm11,xmm6
-+	vaesenclast	xmm12,xmm12,xmm8
-+	vaesenclast	xmm13,xmm13,xmm2
-+	vaesenclast	xmm14,xmm14,xmm3
-+	vmovups	XMMWORD[rsi],xmm9
-+	vmovups	XMMWORD[16+rsi],xmm10
-+	vmovups	XMMWORD[32+rsi],xmm11
-+	vmovups	XMMWORD[48+rsi],xmm12
-+	vmovups	XMMWORD[64+rsi],xmm13
-+	vmovups	XMMWORD[80+rsi],xmm14
-+	lea	rsi,[96+rsi]
-+
-+	DB	0F3h,0C3h		;repret
-+ALIGN	32
-+$L$handle_ctr32_2:
-+	vpshufb	xmm6,xmm1,xmm0
-+	vmovdqu	xmm5,XMMWORD[48+r11]
-+	vpaddd	xmm10,xmm6,XMMWORD[64+r11]
-+	vpaddd	xmm11,xmm6,xmm5
-+	vpaddd	xmm12,xmm10,xmm5
-+	vpshufb	xmm10,xmm10,xmm0
-+	vpaddd	xmm13,xmm11,xmm5
-+	vpshufb	xmm11,xmm11,xmm0
-+	vpxor	xmm10,xmm10,xmm4
-+	vpaddd	xmm14,xmm12,xmm5
-+	vpshufb	xmm12,xmm12,xmm0
-+	vpxor	xmm11,xmm11,xmm4
-+	vpaddd	xmm1,xmm13,xmm5
-+	vpshufb	xmm13,xmm13,xmm0
-+	vpxor	xmm12,xmm12,xmm4
-+	vpshufb	xmm14,xmm14,xmm0
-+	vpxor	xmm13,xmm13,xmm4
-+	vpshufb	xmm1,xmm1,xmm0
-+	vpxor	xmm14,xmm14,xmm4
-+	jmp	NEAR $L$oop_ctr32
-+
-+
-+global	aesni_gcm_encrypt
-+
-+ALIGN	32
-+aesni_gcm_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_gcm_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	xor	r10,r10
-+
-+
-+
-+
-+	cmp	rdx,0x60*3
-+	jb	NEAR $L$gcm_enc_abort
-+
-+	lea	rax,[rsp]
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	lea	rsp,[((-168))+rsp]
-+	movaps	XMMWORD[(-216)+rax],xmm6
-+	movaps	XMMWORD[(-200)+rax],xmm7
-+	movaps	XMMWORD[(-184)+rax],xmm8
-+	movaps	XMMWORD[(-168)+rax],xmm9
-+	movaps	XMMWORD[(-152)+rax],xmm10
-+	movaps	XMMWORD[(-136)+rax],xmm11
-+	movaps	XMMWORD[(-120)+rax],xmm12
-+	movaps	XMMWORD[(-104)+rax],xmm13
-+	movaps	XMMWORD[(-88)+rax],xmm14
-+	movaps	XMMWORD[(-72)+rax],xmm15
-+$L$gcm_enc_body:
-+	vzeroupper
-+
-+	vmovdqu	xmm1,XMMWORD[r8]
-+	add	rsp,-128
-+	mov	ebx,DWORD[12+r8]
-+	lea	r11,[$L$bswap_mask]
-+	lea	r14,[((-128))+rcx]
-+	mov	r15,0xf80
-+	lea	rcx,[128+rcx]
-+	vmovdqu	xmm0,XMMWORD[r11]
-+	and	rsp,-128
-+	mov	ebp,DWORD[((240-128))+rcx]
-+
-+	and	r14,r15
-+	and	r15,rsp
-+	sub	r15,r14
-+	jc	NEAR $L$enc_no_key_aliasing
-+	cmp	r15,768
-+	jnc	NEAR $L$enc_no_key_aliasing
-+	sub	rsp,r15
-+$L$enc_no_key_aliasing:
-+
-+	lea	r14,[rsi]
-+
-+
-+
-+
-+
-+
-+
-+
-+	lea	r15,[((-192))+rdx*1+rsi]
-+
-+	shr	rdx,4
-+
-+	call	_aesni_ctr32_6x
-+	vpshufb	xmm8,xmm9,xmm0
-+	vpshufb	xmm2,xmm10,xmm0
-+	vmovdqu	XMMWORD[112+rsp],xmm8
-+	vpshufb	xmm4,xmm11,xmm0
-+	vmovdqu	XMMWORD[96+rsp],xmm2
-+	vpshufb	xmm5,xmm12,xmm0
-+	vmovdqu	XMMWORD[80+rsp],xmm4
-+	vpshufb	xmm6,xmm13,xmm0
-+	vmovdqu	XMMWORD[64+rsp],xmm5
-+	vpshufb	xmm7,xmm14,xmm0
-+	vmovdqu	XMMWORD[48+rsp],xmm6
-+
-+	call	_aesni_ctr32_6x
-+
-+	vmovdqu	xmm8,XMMWORD[r9]
-+	lea	r9,[((32+32))+r9]
-+	sub	rdx,12
-+	mov	r10,0x60*2
-+	vpshufb	xmm8,xmm8,xmm0
-+
-+	call	_aesni_ctr32_ghash_6x
-+	vmovdqu	xmm7,XMMWORD[32+rsp]
-+	vmovdqu	xmm0,XMMWORD[r11]
-+	vmovdqu	xmm3,XMMWORD[((0-32))+r9]
-+	vpunpckhqdq	xmm1,xmm7,xmm7
-+	vmovdqu	xmm15,XMMWORD[((32-32))+r9]
-+	vmovups	XMMWORD[(-96)+rsi],xmm9
-+	vpshufb	xmm9,xmm9,xmm0
-+	vpxor	xmm1,xmm1,xmm7
-+	vmovups	XMMWORD[(-80)+rsi],xmm10
-+	vpshufb	xmm10,xmm10,xmm0
-+	vmovups	XMMWORD[(-64)+rsi],xmm11
-+	vpshufb	xmm11,xmm11,xmm0
-+	vmovups	XMMWORD[(-48)+rsi],xmm12
-+	vpshufb	xmm12,xmm12,xmm0
-+	vmovups	XMMWORD[(-32)+rsi],xmm13
-+	vpshufb	xmm13,xmm13,xmm0
-+	vmovups	XMMWORD[(-16)+rsi],xmm14
-+	vpshufb	xmm14,xmm14,xmm0
-+	vmovdqu	XMMWORD[16+rsp],xmm9
-+	vmovdqu	xmm6,XMMWORD[48+rsp]
-+	vmovdqu	xmm0,XMMWORD[((16-32))+r9]
-+	vpunpckhqdq	xmm2,xmm6,xmm6
-+	vpclmulqdq	xmm5,xmm7,xmm3,0x00
-+	vpxor	xmm2,xmm2,xmm6
-+	vpclmulqdq	xmm7,xmm7,xmm3,0x11
-+	vpclmulqdq	xmm1,xmm1,xmm15,0x00
-+
-+	vmovdqu	xmm9,XMMWORD[64+rsp]
-+	vpclmulqdq	xmm4,xmm6,xmm0,0x00
-+	vmovdqu	xmm3,XMMWORD[((48-32))+r9]
-+	vpxor	xmm4,xmm4,xmm5
-+	vpunpckhqdq	xmm5,xmm9,xmm9
-+	vpclmulqdq	xmm6,xmm6,xmm0,0x11
-+	vpxor	xmm5,xmm5,xmm9
-+	vpxor	xmm6,xmm6,xmm7
-+	vpclmulqdq	xmm2,xmm2,xmm15,0x10
-+	vmovdqu	xmm15,XMMWORD[((80-32))+r9]
-+	vpxor	xmm2,xmm2,xmm1
-+
-+	vmovdqu	xmm1,XMMWORD[80+rsp]
-+	vpclmulqdq	xmm7,xmm9,xmm3,0x00
-+	vmovdqu	xmm0,XMMWORD[((64-32))+r9]
-+	vpxor	xmm7,xmm7,xmm4
-+	vpunpckhqdq	xmm4,xmm1,xmm1
-+	vpclmulqdq	xmm9,xmm9,xmm3,0x11
-+	vpxor	xmm4,xmm4,xmm1
-+	vpxor	xmm9,xmm9,xmm6
-+	vpclmulqdq	xmm5,xmm5,xmm15,0x00
-+	vpxor	xmm5,xmm5,xmm2
-+
-+	vmovdqu	xmm2,XMMWORD[96+rsp]
-+	vpclmulqdq	xmm6,xmm1,xmm0,0x00
-+	vmovdqu	xmm3,XMMWORD[((96-32))+r9]
-+	vpxor	xmm6,xmm6,xmm7
-+	vpunpckhqdq	xmm7,xmm2,xmm2
-+	vpclmulqdq	xmm1,xmm1,xmm0,0x11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpxor	xmm1,xmm1,xmm9
-+	vpclmulqdq	xmm4,xmm4,xmm15,0x10
-+	vmovdqu	xmm15,XMMWORD[((128-32))+r9]
-+	vpxor	xmm4,xmm4,xmm5
-+
-+	vpxor	xmm8,xmm8,XMMWORD[112+rsp]
-+	vpclmulqdq	xmm5,xmm2,xmm3,0x00
-+	vmovdqu	xmm0,XMMWORD[((112-32))+r9]
-+	vpunpckhqdq	xmm9,xmm8,xmm8
-+	vpxor	xmm5,xmm5,xmm6
-+	vpclmulqdq	xmm2,xmm2,xmm3,0x11
-+	vpxor	xmm9,xmm9,xmm8
-+	vpxor	xmm2,xmm2,xmm1
-+	vpclmulqdq	xmm7,xmm7,xmm15,0x00
-+	vpxor	xmm4,xmm7,xmm4
-+
-+	vpclmulqdq	xmm6,xmm8,xmm0,0x00
-+	vmovdqu	xmm3,XMMWORD[((0-32))+r9]
-+	vpunpckhqdq	xmm1,xmm14,xmm14
-+	vpclmulqdq	xmm8,xmm8,xmm0,0x11
-+	vpxor	xmm1,xmm1,xmm14
-+	vpxor	xmm5,xmm6,xmm5
-+	vpclmulqdq	xmm9,xmm9,xmm15,0x10
-+	vmovdqu	xmm15,XMMWORD[((32-32))+r9]
-+	vpxor	xmm7,xmm8,xmm2
-+	vpxor	xmm6,xmm9,xmm4
-+
-+	vmovdqu	xmm0,XMMWORD[((16-32))+r9]
-+	vpxor	xmm9,xmm7,xmm5
-+	vpclmulqdq	xmm4,xmm14,xmm3,0x00
-+	vpxor	xmm6,xmm6,xmm9
-+	vpunpckhqdq	xmm2,xmm13,xmm13
-+	vpclmulqdq	xmm14,xmm14,xmm3,0x11
-+	vpxor	xmm2,xmm2,xmm13
-+	vpslldq	xmm9,xmm6,8
-+	vpclmulqdq	xmm1,xmm1,xmm15,0x00
-+	vpxor	xmm8,xmm5,xmm9
-+	vpsrldq	xmm6,xmm6,8
-+	vpxor	xmm7,xmm7,xmm6
-+
-+	vpclmulqdq	xmm5,xmm13,xmm0,0x00
-+	vmovdqu	xmm3,XMMWORD[((48-32))+r9]
-+	vpxor	xmm5,xmm5,xmm4
-+	vpunpckhqdq	xmm9,xmm12,xmm12
-+	vpclmulqdq	xmm13,xmm13,xmm0,0x11
-+	vpxor	xmm9,xmm9,xmm12
-+	vpxor	xmm13,xmm13,xmm14
-+	vpalignr	xmm14,xmm8,xmm8,8
-+	vpclmulqdq	xmm2,xmm2,xmm15,0x10
-+	vmovdqu	xmm15,XMMWORD[((80-32))+r9]
-+	vpxor	xmm2,xmm2,xmm1
-+
-+	vpclmulqdq	xmm4,xmm12,xmm3,0x00
-+	vmovdqu	xmm0,XMMWORD[((64-32))+r9]
-+	vpxor	xmm4,xmm4,xmm5
-+	vpunpckhqdq	xmm1,xmm11,xmm11
-+	vpclmulqdq	xmm12,xmm12,xmm3,0x11
-+	vpxor	xmm1,xmm1,xmm11
-+	vpxor	xmm12,xmm12,xmm13
-+	vxorps	xmm7,xmm7,XMMWORD[16+rsp]
-+	vpclmulqdq	xmm9,xmm9,xmm15,0x00
-+	vpxor	xmm9,xmm9,xmm2
-+
-+	vpclmulqdq	xmm8,xmm8,XMMWORD[16+r11],0x10
-+	vxorps	xmm8,xmm8,xmm14
-+
-+	vpclmulqdq	xmm5,xmm11,xmm0,0x00
-+	vmovdqu	xmm3,XMMWORD[((96-32))+r9]
-+	vpxor	xmm5,xmm5,xmm4
-+	vpunpckhqdq	xmm2,xmm10,xmm10
-+	vpclmulqdq	xmm11,xmm11,xmm0,0x11
-+	vpxor	xmm2,xmm2,xmm10
-+	vpalignr	xmm14,xmm8,xmm8,8
-+	vpxor	xmm11,xmm11,xmm12
-+	vpclmulqdq	xmm1,xmm1,xmm15,0x10
-+	vmovdqu	xmm15,XMMWORD[((128-32))+r9]
-+	vpxor	xmm1,xmm1,xmm9
-+
-+	vxorps	xmm14,xmm14,xmm7
-+	vpclmulqdq	xmm8,xmm8,XMMWORD[16+r11],0x10
-+	vxorps	xmm8,xmm8,xmm14
-+
-+	vpclmulqdq	xmm4,xmm10,xmm3,0x00
-+	vmovdqu	xmm0,XMMWORD[((112-32))+r9]
-+	vpxor	xmm4,xmm4,xmm5
-+	vpunpckhqdq	xmm9,xmm8,xmm8
-+	vpclmulqdq	xmm10,xmm10,xmm3,0x11
-+	vpxor	xmm9,xmm9,xmm8
-+	vpxor	xmm10,xmm10,xmm11
-+	vpclmulqdq	xmm2,xmm2,xmm15,0x00
-+	vpxor	xmm2,xmm2,xmm1
-+
-+	vpclmulqdq	xmm5,xmm8,xmm0,0x00
-+	vpclmulqdq	xmm7,xmm8,xmm0,0x11
-+	vpxor	xmm5,xmm5,xmm4
-+	vpclmulqdq	xmm6,xmm9,xmm15,0x10
-+	vpxor	xmm7,xmm7,xmm10
-+	vpxor	xmm6,xmm6,xmm2
-+
-+	vpxor	xmm4,xmm7,xmm5
-+	vpxor	xmm6,xmm6,xmm4
-+	vpslldq	xmm1,xmm6,8
-+	vmovdqu	xmm3,XMMWORD[16+r11]
-+	vpsrldq	xmm6,xmm6,8
-+	vpxor	xmm8,xmm5,xmm1
-+	vpxor	xmm7,xmm7,xmm6
-+
-+	vpalignr	xmm2,xmm8,xmm8,8
-+	vpclmulqdq	xmm8,xmm8,xmm3,0x10
-+	vpxor	xmm8,xmm8,xmm2
-+
-+	vpalignr	xmm2,xmm8,xmm8,8
-+	vpclmulqdq	xmm8,xmm8,xmm3,0x10
-+	vpxor	xmm2,xmm2,xmm7
-+	vpxor	xmm8,xmm8,xmm2
-+	vpshufb	xmm8,xmm8,XMMWORD[r11]
-+	vmovdqu	XMMWORD[(-64)+r9],xmm8
-+
-+	vzeroupper
-+	movaps	xmm6,XMMWORD[((-216))+rax]
-+	movaps	xmm7,XMMWORD[((-200))+rax]
-+	movaps	xmm8,XMMWORD[((-184))+rax]
-+	movaps	xmm9,XMMWORD[((-168))+rax]
-+	movaps	xmm10,XMMWORD[((-152))+rax]
-+	movaps	xmm11,XMMWORD[((-136))+rax]
-+	movaps	xmm12,XMMWORD[((-120))+rax]
-+	movaps	xmm13,XMMWORD[((-104))+rax]
-+	movaps	xmm14,XMMWORD[((-88))+rax]
-+	movaps	xmm15,XMMWORD[((-72))+rax]
-+	mov	r15,QWORD[((-48))+rax]
-+	mov	r14,QWORD[((-40))+rax]
-+	mov	r13,QWORD[((-32))+rax]
-+	mov	r12,QWORD[((-24))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	rbx,QWORD[((-8))+rax]
-+	lea	rsp,[rax]
-+$L$gcm_enc_abort:
-+	mov	rax,r10
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_gcm_encrypt:
-+ALIGN	64
-+$L$bswap_mask:
-+DB	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
-+$L$poly:
-+DB	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2
-+$L$one_msb:
-+DB	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
-+$L$two_lsb:
-+DB	2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-+$L$one_lsb:
-+DB	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-+DB	65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108
-+DB	101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82
-+DB	89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
-+DB	114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
-+ALIGN	64
-+EXTERN	__imp_RtlVirtualUnwind
-+
-+ALIGN	16
-+gcm_se_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	mov	rsi,QWORD[8+r9]
-+	mov	r11,QWORD[56+r9]
-+
-+	mov	r10d,DWORD[r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jb	NEAR $L$common_seh_tail
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	mov	r10d,DWORD[4+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$common_seh_tail
-+
-+	mov	rax,QWORD[120+r8]
-+
-+	mov	r15,QWORD[((-48))+rax]
-+	mov	r14,QWORD[((-40))+rax]
-+	mov	r13,QWORD[((-32))+rax]
-+	mov	r12,QWORD[((-24))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	rbx,QWORD[((-8))+rax]
-+	mov	QWORD[240+r8],r15
-+	mov	QWORD[232+r8],r14
-+	mov	QWORD[224+r8],r13
-+	mov	QWORD[216+r8],r12
-+	mov	QWORD[160+r8],rbp
-+	mov	QWORD[144+r8],rbx
-+
-+	lea	rsi,[((-216))+rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,20
-+	DD	0xa548f3fc
-+
-+$L$common_seh_tail:
-+	mov	rdi,QWORD[8+rax]
-+	mov	rsi,QWORD[16+rax]
-+	mov	QWORD[152+r8],rax
-+	mov	QWORD[168+r8],rsi
-+	mov	QWORD[176+r8],rdi
-+
-+	mov	rdi,QWORD[40+r9]
-+	mov	rsi,r8
-+	mov	ecx,154
-+	DD	0xa548f3fc
-+
-+	mov	rsi,r9
-+	xor	rcx,rcx
-+	mov	rdx,QWORD[8+rsi]
-+	mov	r8,QWORD[rsi]
-+	mov	r9,QWORD[16+rsi]
-+	mov	r10,QWORD[40+rsi]
-+	lea	r11,[56+rsi]
-+	lea	r12,[24+rsi]
-+	mov	QWORD[32+rsp],r10
-+	mov	QWORD[40+rsp],r11
-+	mov	QWORD[48+rsp],r12
-+	mov	QWORD[56+rsp],rcx
-+	call	QWORD[__imp_RtlVirtualUnwind]
-+
-+	mov	eax,1
-+	add	rsp,64
-+	popfq
-+	pop	r15
-+	pop	r14
-+	pop	r13
-+	pop	r12
-+	pop	rbp
-+	pop	rbx
-+	pop	rdi
-+	pop	rsi
-+	DB	0F3h,0C3h		;repret
-+
-+
-+section	.pdata rdata align=4
-+ALIGN	4
-+	DD	$L$SEH_begin_aesni_gcm_decrypt wrt ..imagebase
-+	DD	$L$SEH_end_aesni_gcm_decrypt wrt ..imagebase
-+	DD	$L$SEH_gcm_dec_info wrt ..imagebase
-+
-+	DD	$L$SEH_begin_aesni_gcm_encrypt wrt ..imagebase
-+	DD	$L$SEH_end_aesni_gcm_encrypt wrt ..imagebase
-+	DD	$L$SEH_gcm_enc_info wrt ..imagebase
-+section	.xdata rdata align=8
-+ALIGN	8
-+$L$SEH_gcm_dec_info:
-+DB	9,0,0,0
-+	DD	gcm_se_handler wrt ..imagebase
-+	DD	$L$gcm_dec_body wrt ..imagebase,$L$gcm_dec_abort wrt ..imagebase
-+$L$SEH_gcm_enc_info:
-+DB	9,0,0,0
-+	DD	gcm_se_handler wrt ..imagebase
-+	DD	$L$gcm_enc_body wrt ..imagebase,$L$gcm_enc_abort wrt ..imagebase
-diff --git a/SMP/lib/accelerated/x86/coff/aesni-x86.asm b/SMP/lib/accelerated/x86/coff/aesni-x86.asm
-new file mode 100644
-index 0000000..1b64723
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/aesni-x86.asm
-@@ -0,0 +1,3204 @@
-+%ifidn __OUTPUT_FORMAT__,obj
-+section	code	use32 class=code align=64
-+%elifidn __OUTPUT_FORMAT__,win32
-+%ifndef __YASM_VER__
-+$@feat.00 equ 1
-+%endif
-+section	.text	code align=64
-+%else
-+section	.text	code
-+%endif
-+;extern	__gnutls_x86_cpuid_s
-+global	_aesni_encrypt
-+align	16
-+_aesni_encrypt:
-+L$_aesni_encrypt_begin:
-+	mov	eax,DWORD [4+esp]
-+	mov	edx,DWORD [12+esp]
-+	movups	xmm2,[eax]
-+	mov	ecx,DWORD [240+edx]
-+	mov	eax,DWORD [8+esp]
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$000enc1_loop_1:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$000enc1_loop_1
-+db	102,15,56,221,209
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	movups	[eax],xmm2
-+	pxor	xmm2,xmm2
-+	ret
-+global	_aesni_decrypt
-+align	16
-+_aesni_decrypt:
-+L$_aesni_decrypt_begin:
-+	mov	eax,DWORD [4+esp]
-+	mov	edx,DWORD [12+esp]
-+	movups	xmm2,[eax]
-+	mov	ecx,DWORD [240+edx]
-+	mov	eax,DWORD [8+esp]
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$001dec1_loop_2:
-+db	102,15,56,222,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$001dec1_loop_2
-+db	102,15,56,223,209
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	movups	[eax],xmm2
-+	pxor	xmm2,xmm2
-+	ret
-+align	16
-+__aesni_encrypt2:
-+	movups	xmm0,[edx]
-+	shl	ecx,4
-+	movups	xmm1,[16+edx]
-+	xorps	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	movups	xmm0,[32+edx]
-+	lea	edx,[32+ecx*1+edx]
-+	neg	ecx
-+	add	ecx,16
-+L$002enc2_loop:
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+	movups	xmm1,[ecx*1+edx]
-+	add	ecx,32
-+db	102,15,56,220,208
-+db	102,15,56,220,216
-+	movups	xmm0,[ecx*1+edx-16]
-+	jnz	NEAR L$002enc2_loop
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+db	102,15,56,221,208
-+db	102,15,56,221,216
-+	ret
-+align	16
-+__aesni_decrypt2:
-+	movups	xmm0,[edx]
-+	shl	ecx,4
-+	movups	xmm1,[16+edx]
-+	xorps	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	movups	xmm0,[32+edx]
-+	lea	edx,[32+ecx*1+edx]
-+	neg	ecx
-+	add	ecx,16
-+L$003dec2_loop:
-+db	102,15,56,222,209
-+db	102,15,56,222,217
-+	movups	xmm1,[ecx*1+edx]
-+	add	ecx,32
-+db	102,15,56,222,208
-+db	102,15,56,222,216
-+	movups	xmm0,[ecx*1+edx-16]
-+	jnz	NEAR L$003dec2_loop
-+db	102,15,56,222,209
-+db	102,15,56,222,217
-+db	102,15,56,223,208
-+db	102,15,56,223,216
-+	ret
-+align	16
-+__aesni_encrypt3:
-+	movups	xmm0,[edx]
-+	shl	ecx,4
-+	movups	xmm1,[16+edx]
-+	xorps	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+	movups	xmm0,[32+edx]
-+	lea	edx,[32+ecx*1+edx]
-+	neg	ecx
-+	add	ecx,16
-+L$004enc3_loop:
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+db	102,15,56,220,225
-+	movups	xmm1,[ecx*1+edx]
-+	add	ecx,32
-+db	102,15,56,220,208
-+db	102,15,56,220,216
-+db	102,15,56,220,224
-+	movups	xmm0,[ecx*1+edx-16]
-+	jnz	NEAR L$004enc3_loop
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+db	102,15,56,220,225
-+db	102,15,56,221,208
-+db	102,15,56,221,216
-+db	102,15,56,221,224
-+	ret
-+align	16
-+__aesni_decrypt3:
-+	movups	xmm0,[edx]
-+	shl	ecx,4
-+	movups	xmm1,[16+edx]
-+	xorps	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+	movups	xmm0,[32+edx]
-+	lea	edx,[32+ecx*1+edx]
-+	neg	ecx
-+	add	ecx,16
-+L$005dec3_loop:
-+db	102,15,56,222,209
-+db	102,15,56,222,217
-+db	102,15,56,222,225
-+	movups	xmm1,[ecx*1+edx]
-+	add	ecx,32
-+db	102,15,56,222,208
-+db	102,15,56,222,216
-+db	102,15,56,222,224
-+	movups	xmm0,[ecx*1+edx-16]
-+	jnz	NEAR L$005dec3_loop
-+db	102,15,56,222,209
-+db	102,15,56,222,217
-+db	102,15,56,222,225
-+db	102,15,56,223,208
-+db	102,15,56,223,216
-+db	102,15,56,223,224
-+	ret
-+align	16
-+__aesni_encrypt4:
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	shl	ecx,4
-+	xorps	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+	pxor	xmm5,xmm0
-+	movups	xmm0,[32+edx]
-+	lea	edx,[32+ecx*1+edx]
-+	neg	ecx
-+db	15,31,64,0
-+	add	ecx,16
-+L$006enc4_loop:
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+db	102,15,56,220,225
-+db	102,15,56,220,233
-+	movups	xmm1,[ecx*1+edx]
-+	add	ecx,32
-+db	102,15,56,220,208
-+db	102,15,56,220,216
-+db	102,15,56,220,224
-+db	102,15,56,220,232
-+	movups	xmm0,[ecx*1+edx-16]
-+	jnz	NEAR L$006enc4_loop
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+db	102,15,56,220,225
-+db	102,15,56,220,233
-+db	102,15,56,221,208
-+db	102,15,56,221,216
-+db	102,15,56,221,224
-+db	102,15,56,221,232
-+	ret
-+align	16
-+__aesni_decrypt4:
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	shl	ecx,4
-+	xorps	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+	pxor	xmm5,xmm0
-+	movups	xmm0,[32+edx]
-+	lea	edx,[32+ecx*1+edx]
-+	neg	ecx
-+db	15,31,64,0
-+	add	ecx,16
-+L$007dec4_loop:
-+db	102,15,56,222,209
-+db	102,15,56,222,217
-+db	102,15,56,222,225
-+db	102,15,56,222,233
-+	movups	xmm1,[ecx*1+edx]
-+	add	ecx,32
-+db	102,15,56,222,208
-+db	102,15,56,222,216
-+db	102,15,56,222,224
-+db	102,15,56,222,232
-+	movups	xmm0,[ecx*1+edx-16]
-+	jnz	NEAR L$007dec4_loop
-+db	102,15,56,222,209
-+db	102,15,56,222,217
-+db	102,15,56,222,225
-+db	102,15,56,222,233
-+db	102,15,56,223,208
-+db	102,15,56,223,216
-+db	102,15,56,223,224
-+db	102,15,56,223,232
-+	ret
-+align	16
-+__aesni_encrypt6:
-+	movups	xmm0,[edx]
-+	shl	ecx,4
-+	movups	xmm1,[16+edx]
-+	xorps	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+db	102,15,56,220,209
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm0
-+db	102,15,56,220,217
-+	lea	edx,[32+ecx*1+edx]
-+	neg	ecx
-+db	102,15,56,220,225
-+	pxor	xmm7,xmm0
-+	movups	xmm0,[ecx*1+edx]
-+	add	ecx,16
-+	jmp	NEAR L$008_aesni_encrypt6_inner
-+align	16
-+L$009enc6_loop:
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+db	102,15,56,220,225
-+L$008_aesni_encrypt6_inner:
-+db	102,15,56,220,233
-+db	102,15,56,220,241
-+db	102,15,56,220,249
-+L$_aesni_encrypt6_enter:
-+	movups	xmm1,[ecx*1+edx]
-+	add	ecx,32
-+db	102,15,56,220,208
-+db	102,15,56,220,216
-+db	102,15,56,220,224
-+db	102,15,56,220,232
-+db	102,15,56,220,240
-+db	102,15,56,220,248
-+	movups	xmm0,[ecx*1+edx-16]
-+	jnz	NEAR L$009enc6_loop
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+db	102,15,56,220,225
-+db	102,15,56,220,233
-+db	102,15,56,220,241
-+db	102,15,56,220,249
-+db	102,15,56,221,208
-+db	102,15,56,221,216
-+db	102,15,56,221,224
-+db	102,15,56,221,232
-+db	102,15,56,221,240
-+db	102,15,56,221,248
-+	ret
-+align	16
-+__aesni_decrypt6:
-+	movups	xmm0,[edx]
-+	shl	ecx,4
-+	movups	xmm1,[16+edx]
-+	xorps	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+db	102,15,56,222,209
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm0
-+db	102,15,56,222,217
-+	lea	edx,[32+ecx*1+edx]
-+	neg	ecx
-+db	102,15,56,222,225
-+	pxor	xmm7,xmm0
-+	movups	xmm0,[ecx*1+edx]
-+	add	ecx,16
-+	jmp	NEAR L$010_aesni_decrypt6_inner
-+align	16
-+L$011dec6_loop:
-+db	102,15,56,222,209
-+db	102,15,56,222,217
-+db	102,15,56,222,225
-+L$010_aesni_decrypt6_inner:
-+db	102,15,56,222,233
-+db	102,15,56,222,241
-+db	102,15,56,222,249
-+L$_aesni_decrypt6_enter:
-+	movups	xmm1,[ecx*1+edx]
-+	add	ecx,32
-+db	102,15,56,222,208
-+db	102,15,56,222,216
-+db	102,15,56,222,224
-+db	102,15,56,222,232
-+db	102,15,56,222,240
-+db	102,15,56,222,248
-+	movups	xmm0,[ecx*1+edx-16]
-+	jnz	NEAR L$011dec6_loop
-+db	102,15,56,222,209
-+db	102,15,56,222,217
-+db	102,15,56,222,225
-+db	102,15,56,222,233
-+db	102,15,56,222,241
-+db	102,15,56,222,249
-+db	102,15,56,223,208
-+db	102,15,56,223,216
-+db	102,15,56,223,224
-+db	102,15,56,223,232
-+db	102,15,56,223,240
-+db	102,15,56,223,248
-+	ret
-+global	_aesni_ecb_encrypt
-+align	16
-+_aesni_ecb_encrypt:
-+L$_aesni_ecb_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	esi,DWORD [20+esp]
-+	mov	edi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	mov	edx,DWORD [32+esp]
-+	mov	ebx,DWORD [36+esp]
-+	and	eax,-16
-+	jz	NEAR L$012ecb_ret
-+	mov	ecx,DWORD [240+edx]
-+	test	ebx,ebx
-+	jz	NEAR L$013ecb_decrypt
-+	mov	ebp,edx
-+	mov	ebx,ecx
-+	cmp	eax,96
-+	jb	NEAR L$014ecb_enc_tail
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	movdqu	xmm5,[48+esi]
-+	movdqu	xmm6,[64+esi]
-+	movdqu	xmm7,[80+esi]
-+	lea	esi,[96+esi]
-+	sub	eax,96
-+	jmp	NEAR L$015ecb_enc_loop6_enter
-+align	16
-+L$016ecb_enc_loop6:
-+	movups	[edi],xmm2
-+	movdqu	xmm2,[esi]
-+	movups	[16+edi],xmm3
-+	movdqu	xmm3,[16+esi]
-+	movups	[32+edi],xmm4
-+	movdqu	xmm4,[32+esi]
-+	movups	[48+edi],xmm5
-+	movdqu	xmm5,[48+esi]
-+	movups	[64+edi],xmm6
-+	movdqu	xmm6,[64+esi]
-+	movups	[80+edi],xmm7
-+	lea	edi,[96+edi]
-+	movdqu	xmm7,[80+esi]
-+	lea	esi,[96+esi]
-+L$015ecb_enc_loop6_enter:
-+	call	__aesni_encrypt6
-+	mov	edx,ebp
-+	mov	ecx,ebx
-+	sub	eax,96
-+	jnc	NEAR L$016ecb_enc_loop6
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+	movups	[64+edi],xmm6
-+	movups	[80+edi],xmm7
-+	lea	edi,[96+edi]
-+	add	eax,96
-+	jz	NEAR L$012ecb_ret
-+L$014ecb_enc_tail:
-+	movups	xmm2,[esi]
-+	cmp	eax,32
-+	jb	NEAR L$017ecb_enc_one
-+	movups	xmm3,[16+esi]
-+	je	NEAR L$018ecb_enc_two
-+	movups	xmm4,[32+esi]
-+	cmp	eax,64
-+	jb	NEAR L$019ecb_enc_three
-+	movups	xmm5,[48+esi]
-+	je	NEAR L$020ecb_enc_four
-+	movups	xmm6,[64+esi]
-+	xorps	xmm7,xmm7
-+	call	__aesni_encrypt6
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+	movups	[64+edi],xmm6
-+	jmp	NEAR L$012ecb_ret
-+align	16
-+L$017ecb_enc_one:
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$021enc1_loop_3:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$021enc1_loop_3
-+db	102,15,56,221,209
-+	movups	[edi],xmm2
-+	jmp	NEAR L$012ecb_ret
-+align	16
-+L$018ecb_enc_two:
-+	call	__aesni_encrypt2
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	jmp	NEAR L$012ecb_ret
-+align	16
-+L$019ecb_enc_three:
-+	call	__aesni_encrypt3
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	jmp	NEAR L$012ecb_ret
-+align	16
-+L$020ecb_enc_four:
-+	call	__aesni_encrypt4
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+	jmp	NEAR L$012ecb_ret
-+align	16
-+L$013ecb_decrypt:
-+	mov	ebp,edx
-+	mov	ebx,ecx
-+	cmp	eax,96
-+	jb	NEAR L$022ecb_dec_tail
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	movdqu	xmm5,[48+esi]
-+	movdqu	xmm6,[64+esi]
-+	movdqu	xmm7,[80+esi]
-+	lea	esi,[96+esi]
-+	sub	eax,96
-+	jmp	NEAR L$023ecb_dec_loop6_enter
-+align	16
-+L$024ecb_dec_loop6:
-+	movups	[edi],xmm2
-+	movdqu	xmm2,[esi]
-+	movups	[16+edi],xmm3
-+	movdqu	xmm3,[16+esi]
-+	movups	[32+edi],xmm4
-+	movdqu	xmm4,[32+esi]
-+	movups	[48+edi],xmm5
-+	movdqu	xmm5,[48+esi]
-+	movups	[64+edi],xmm6
-+	movdqu	xmm6,[64+esi]
-+	movups	[80+edi],xmm7
-+	lea	edi,[96+edi]
-+	movdqu	xmm7,[80+esi]
-+	lea	esi,[96+esi]
-+L$023ecb_dec_loop6_enter:
-+	call	__aesni_decrypt6
-+	mov	edx,ebp
-+	mov	ecx,ebx
-+	sub	eax,96
-+	jnc	NEAR L$024ecb_dec_loop6
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+	movups	[64+edi],xmm6
-+	movups	[80+edi],xmm7
-+	lea	edi,[96+edi]
-+	add	eax,96
-+	jz	NEAR L$012ecb_ret
-+L$022ecb_dec_tail:
-+	movups	xmm2,[esi]
-+	cmp	eax,32
-+	jb	NEAR L$025ecb_dec_one
-+	movups	xmm3,[16+esi]
-+	je	NEAR L$026ecb_dec_two
-+	movups	xmm4,[32+esi]
-+	cmp	eax,64
-+	jb	NEAR L$027ecb_dec_three
-+	movups	xmm5,[48+esi]
-+	je	NEAR L$028ecb_dec_four
-+	movups	xmm6,[64+esi]
-+	xorps	xmm7,xmm7
-+	call	__aesni_decrypt6
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+	movups	[64+edi],xmm6
-+	jmp	NEAR L$012ecb_ret
-+align	16
-+L$025ecb_dec_one:
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$029dec1_loop_4:
-+db	102,15,56,222,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$029dec1_loop_4
-+db	102,15,56,223,209
-+	movups	[edi],xmm2
-+	jmp	NEAR L$012ecb_ret
-+align	16
-+L$026ecb_dec_two:
-+	call	__aesni_decrypt2
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	jmp	NEAR L$012ecb_ret
-+align	16
-+L$027ecb_dec_three:
-+	call	__aesni_decrypt3
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	jmp	NEAR L$012ecb_ret
-+align	16
-+L$028ecb_dec_four:
-+	call	__aesni_decrypt4
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+L$012ecb_ret:
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	pxor	xmm6,xmm6
-+	pxor	xmm7,xmm7
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_aesni_ccm64_encrypt_blocks
-+align	16
-+_aesni_ccm64_encrypt_blocks:
-+L$_aesni_ccm64_encrypt_blocks_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	esi,DWORD [20+esp]
-+	mov	edi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	mov	edx,DWORD [32+esp]
-+	mov	ebx,DWORD [36+esp]
-+	mov	ecx,DWORD [40+esp]
-+	mov	ebp,esp
-+	sub	esp,60
-+	and	esp,-16
-+	mov	DWORD [48+esp],ebp
-+	movdqu	xmm7,[ebx]
-+	movdqu	xmm3,[ecx]
-+	mov	ecx,DWORD [240+edx]
-+	mov	DWORD [esp],202182159
-+	mov	DWORD [4+esp],134810123
-+	mov	DWORD [8+esp],67438087
-+	mov	DWORD [12+esp],66051
-+	mov	ebx,1
-+	xor	ebp,ebp
-+	mov	DWORD [16+esp],ebx
-+	mov	DWORD [20+esp],ebp
-+	mov	DWORD [24+esp],ebp
-+	mov	DWORD [28+esp],ebp
-+	shl	ecx,4
-+	mov	ebx,16
-+	lea	ebp,[edx]
-+	movdqa	xmm5,[esp]
-+	movdqa	xmm2,xmm7
-+	lea	edx,[32+ecx*1+edx]
-+	sub	ebx,ecx
-+db	102,15,56,0,253
-+L$030ccm64_enc_outer:
-+	movups	xmm0,[ebp]
-+	mov	ecx,ebx
-+	movups	xmm6,[esi]
-+	xorps	xmm2,xmm0
-+	movups	xmm1,[16+ebp]
-+	xorps	xmm0,xmm6
-+	xorps	xmm3,xmm0
-+	movups	xmm0,[32+ebp]
-+L$031ccm64_enc2_loop:
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+	movups	xmm1,[ecx*1+edx]
-+	add	ecx,32
-+db	102,15,56,220,208
-+db	102,15,56,220,216
-+	movups	xmm0,[ecx*1+edx-16]
-+	jnz	NEAR L$031ccm64_enc2_loop
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+	paddq	xmm7,[16+esp]
-+	dec	eax
-+db	102,15,56,221,208
-+db	102,15,56,221,216
-+	lea	esi,[16+esi]
-+	xorps	xmm6,xmm2
-+	movdqa	xmm2,xmm7
-+	movups	[edi],xmm6
-+db	102,15,56,0,213
-+	lea	edi,[16+edi]
-+	jnz	NEAR L$030ccm64_enc_outer
-+	mov	esp,DWORD [48+esp]
-+	mov	edi,DWORD [40+esp]
-+	movups	[edi],xmm3
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	pxor	xmm6,xmm6
-+	pxor	xmm7,xmm7
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_aesni_ccm64_decrypt_blocks
-+align	16
-+_aesni_ccm64_decrypt_blocks:
-+L$_aesni_ccm64_decrypt_blocks_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	esi,DWORD [20+esp]
-+	mov	edi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	mov	edx,DWORD [32+esp]
-+	mov	ebx,DWORD [36+esp]
-+	mov	ecx,DWORD [40+esp]
-+	mov	ebp,esp
-+	sub	esp,60
-+	and	esp,-16
-+	mov	DWORD [48+esp],ebp
-+	movdqu	xmm7,[ebx]
-+	movdqu	xmm3,[ecx]
-+	mov	ecx,DWORD [240+edx]
-+	mov	DWORD [esp],202182159
-+	mov	DWORD [4+esp],134810123
-+	mov	DWORD [8+esp],67438087
-+	mov	DWORD [12+esp],66051
-+	mov	ebx,1
-+	xor	ebp,ebp
-+	mov	DWORD [16+esp],ebx
-+	mov	DWORD [20+esp],ebp
-+	mov	DWORD [24+esp],ebp
-+	mov	DWORD [28+esp],ebp
-+	movdqa	xmm5,[esp]
-+	movdqa	xmm2,xmm7
-+	mov	ebp,edx
-+	mov	ebx,ecx
-+db	102,15,56,0,253
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$032enc1_loop_5:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$032enc1_loop_5
-+db	102,15,56,221,209
-+	shl	ebx,4
-+	mov	ecx,16
-+	movups	xmm6,[esi]
-+	paddq	xmm7,[16+esp]
-+	lea	esi,[16+esi]
-+	sub	ecx,ebx
-+	lea	edx,[32+ebx*1+ebp]
-+	mov	ebx,ecx
-+	jmp	NEAR L$033ccm64_dec_outer
-+align	16
-+L$033ccm64_dec_outer:
-+	xorps	xmm6,xmm2
-+	movdqa	xmm2,xmm7
-+	movups	[edi],xmm6
-+	lea	edi,[16+edi]
-+db	102,15,56,0,213
-+	sub	eax,1
-+	jz	NEAR L$034ccm64_dec_break
-+	movups	xmm0,[ebp]
-+	mov	ecx,ebx
-+	movups	xmm1,[16+ebp]
-+	xorps	xmm6,xmm0
-+	xorps	xmm2,xmm0
-+	xorps	xmm3,xmm6
-+	movups	xmm0,[32+ebp]
-+L$035ccm64_dec2_loop:
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+	movups	xmm1,[ecx*1+edx]
-+	add	ecx,32
-+db	102,15,56,220,208
-+db	102,15,56,220,216
-+	movups	xmm0,[ecx*1+edx-16]
-+	jnz	NEAR L$035ccm64_dec2_loop
-+	movups	xmm6,[esi]
-+	paddq	xmm7,[16+esp]
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+db	102,15,56,221,208
-+db	102,15,56,221,216
-+	lea	esi,[16+esi]
-+	jmp	NEAR L$033ccm64_dec_outer
-+align	16
-+L$034ccm64_dec_break:
-+	mov	ecx,DWORD [240+ebp]
-+	mov	edx,ebp
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	xorps	xmm6,xmm0
-+	lea	edx,[32+edx]
-+	xorps	xmm3,xmm6
-+L$036enc1_loop_6:
-+db	102,15,56,220,217
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$036enc1_loop_6
-+db	102,15,56,221,217
-+	mov	esp,DWORD [48+esp]
-+	mov	edi,DWORD [40+esp]
-+	movups	[edi],xmm3
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	pxor	xmm6,xmm6
-+	pxor	xmm7,xmm7
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_aesni_ctr32_encrypt_blocks
-+align	16
-+_aesni_ctr32_encrypt_blocks:
-+L$_aesni_ctr32_encrypt_blocks_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	esi,DWORD [20+esp]
-+	mov	edi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	mov	edx,DWORD [32+esp]
-+	mov	ebx,DWORD [36+esp]
-+	mov	ebp,esp
-+	sub	esp,88
-+	and	esp,-16
-+	mov	DWORD [80+esp],ebp
-+	cmp	eax,1
-+	je	NEAR L$037ctr32_one_shortcut
-+	movdqu	xmm7,[ebx]
-+	mov	DWORD [esp],202182159
-+	mov	DWORD [4+esp],134810123
-+	mov	DWORD [8+esp],67438087
-+	mov	DWORD [12+esp],66051
-+	mov	ecx,6
-+	xor	ebp,ebp
-+	mov	DWORD [16+esp],ecx
-+	mov	DWORD [20+esp],ecx
-+	mov	DWORD [24+esp],ecx
-+	mov	DWORD [28+esp],ebp
-+db	102,15,58,22,251,3
-+db	102,15,58,34,253,3
-+	mov	ecx,DWORD [240+edx]
-+	bswap	ebx
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	movdqa	xmm2,[esp]
-+db	102,15,58,34,195,0
-+	lea	ebp,[3+ebx]
-+db	102,15,58,34,205,0
-+	inc	ebx
-+db	102,15,58,34,195,1
-+	inc	ebp
-+db	102,15,58,34,205,1
-+	inc	ebx
-+db	102,15,58,34,195,2
-+	inc	ebp
-+db	102,15,58,34,205,2
-+	movdqa	[48+esp],xmm0
-+db	102,15,56,0,194
-+	movdqu	xmm6,[edx]
-+	movdqa	[64+esp],xmm1
-+db	102,15,56,0,202
-+	pshufd	xmm2,xmm0,192
-+	pshufd	xmm3,xmm0,128
-+	cmp	eax,6
-+	jb	NEAR L$038ctr32_tail
-+	pxor	xmm7,xmm6
-+	shl	ecx,4
-+	mov	ebx,16
-+	movdqa	[32+esp],xmm7
-+	mov	ebp,edx
-+	sub	ebx,ecx
-+	lea	edx,[32+ecx*1+edx]
-+	sub	eax,6
-+	jmp	NEAR L$039ctr32_loop6
-+align	16
-+L$039ctr32_loop6:
-+	pshufd	xmm4,xmm0,64
-+	movdqa	xmm0,[32+esp]
-+	pshufd	xmm5,xmm1,192
-+	pxor	xmm2,xmm0
-+	pshufd	xmm6,xmm1,128
-+	pxor	xmm3,xmm0
-+	pshufd	xmm7,xmm1,64
-+	movups	xmm1,[16+ebp]
-+	pxor	xmm4,xmm0
-+	pxor	xmm5,xmm0
-+db	102,15,56,220,209
-+	pxor	xmm6,xmm0
-+	pxor	xmm7,xmm0
-+db	102,15,56,220,217
-+	movups	xmm0,[32+ebp]
-+	mov	ecx,ebx
-+db	102,15,56,220,225
-+db	102,15,56,220,233
-+db	102,15,56,220,241
-+db	102,15,56,220,249
-+	call	L$_aesni_encrypt6_enter
-+	movups	xmm1,[esi]
-+	movups	xmm0,[16+esi]
-+	xorps	xmm2,xmm1
-+	movups	xmm1,[32+esi]
-+	xorps	xmm3,xmm0
-+	movups	[edi],xmm2
-+	movdqa	xmm0,[16+esp]
-+	xorps	xmm4,xmm1
-+	movdqa	xmm1,[64+esp]
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	paddd	xmm1,xmm0
-+	paddd	xmm0,[48+esp]
-+	movdqa	xmm2,[esp]
-+	movups	xmm3,[48+esi]
-+	movups	xmm4,[64+esi]
-+	xorps	xmm5,xmm3
-+	movups	xmm3,[80+esi]
-+	lea	esi,[96+esi]
-+	movdqa	[48+esp],xmm0
-+db	102,15,56,0,194
-+	xorps	xmm6,xmm4
-+	movups	[48+edi],xmm5
-+	xorps	xmm7,xmm3
-+	movdqa	[64+esp],xmm1
-+db	102,15,56,0,202
-+	movups	[64+edi],xmm6
-+	pshufd	xmm2,xmm0,192
-+	movups	[80+edi],xmm7
-+	lea	edi,[96+edi]
-+	pshufd	xmm3,xmm0,128
-+	sub	eax,6
-+	jnc	NEAR L$039ctr32_loop6
-+	add	eax,6
-+	jz	NEAR L$040ctr32_ret
-+	movdqu	xmm7,[ebp]
-+	mov	edx,ebp
-+	pxor	xmm7,[32+esp]
-+	mov	ecx,DWORD [240+ebp]
-+L$038ctr32_tail:
-+	por	xmm2,xmm7
-+	cmp	eax,2
-+	jb	NEAR L$041ctr32_one
-+	pshufd	xmm4,xmm0,64
-+	por	xmm3,xmm7
-+	je	NEAR L$042ctr32_two
-+	pshufd	xmm5,xmm1,192
-+	por	xmm4,xmm7
-+	cmp	eax,4
-+	jb	NEAR L$043ctr32_three
-+	pshufd	xmm6,xmm1,128
-+	por	xmm5,xmm7
-+	je	NEAR L$044ctr32_four
-+	por	xmm6,xmm7
-+	call	__aesni_encrypt6
-+	movups	xmm1,[esi]
-+	movups	xmm0,[16+esi]
-+	xorps	xmm2,xmm1
-+	movups	xmm1,[32+esi]
-+	xorps	xmm3,xmm0
-+	movups	xmm0,[48+esi]
-+	xorps	xmm4,xmm1
-+	movups	xmm1,[64+esi]
-+	xorps	xmm5,xmm0
-+	movups	[edi],xmm2
-+	xorps	xmm6,xmm1
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+	movups	[64+edi],xmm6
-+	jmp	NEAR L$040ctr32_ret
-+align	16
-+L$037ctr32_one_shortcut:
-+	movups	xmm2,[ebx]
-+	mov	ecx,DWORD [240+edx]
-+L$041ctr32_one:
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$045enc1_loop_7:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$045enc1_loop_7
-+db	102,15,56,221,209
-+	movups	xmm6,[esi]
-+	xorps	xmm6,xmm2
-+	movups	[edi],xmm6
-+	jmp	NEAR L$040ctr32_ret
-+align	16
-+L$042ctr32_two:
-+	call	__aesni_encrypt2
-+	movups	xmm5,[esi]
-+	movups	xmm6,[16+esi]
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	jmp	NEAR L$040ctr32_ret
-+align	16
-+L$043ctr32_three:
-+	call	__aesni_encrypt3
-+	movups	xmm5,[esi]
-+	movups	xmm6,[16+esi]
-+	xorps	xmm2,xmm5
-+	movups	xmm7,[32+esi]
-+	xorps	xmm3,xmm6
-+	movups	[edi],xmm2
-+	xorps	xmm4,xmm7
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	jmp	NEAR L$040ctr32_ret
-+align	16
-+L$044ctr32_four:
-+	call	__aesni_encrypt4
-+	movups	xmm6,[esi]
-+	movups	xmm7,[16+esi]
-+	movups	xmm1,[32+esi]
-+	xorps	xmm2,xmm6
-+	movups	xmm0,[48+esi]
-+	xorps	xmm3,xmm7
-+	movups	[edi],xmm2
-+	xorps	xmm4,xmm1
-+	movups	[16+edi],xmm3
-+	xorps	xmm5,xmm0
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+L$040ctr32_ret:
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	movdqa	[32+esp],xmm0
-+	pxor	xmm5,xmm5
-+	movdqa	[48+esp],xmm0
-+	pxor	xmm6,xmm6
-+	movdqa	[64+esp],xmm0
-+	pxor	xmm7,xmm7
-+	mov	esp,DWORD [80+esp]
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_aesni_xts_encrypt
-+align	16
-+_aesni_xts_encrypt:
-+L$_aesni_xts_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	edx,DWORD [36+esp]
-+	mov	esi,DWORD [40+esp]
-+	mov	ecx,DWORD [240+edx]
-+	movups	xmm2,[esi]
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$046enc1_loop_8:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$046enc1_loop_8
-+db	102,15,56,221,209
-+	mov	esi,DWORD [20+esp]
-+	mov	edi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	mov	edx,DWORD [32+esp]
-+	mov	ebp,esp
-+	sub	esp,120
-+	mov	ecx,DWORD [240+edx]
-+	and	esp,-16
-+	mov	DWORD [96+esp],135
-+	mov	DWORD [100+esp],0
-+	mov	DWORD [104+esp],1
-+	mov	DWORD [108+esp],0
-+	mov	DWORD [112+esp],eax
-+	mov	DWORD [116+esp],ebp
-+	movdqa	xmm1,xmm2
-+	pxor	xmm0,xmm0
-+	movdqa	xmm3,[96+esp]
-+	pcmpgtd	xmm0,xmm1
-+	and	eax,-16
-+	mov	ebp,edx
-+	mov	ebx,ecx
-+	sub	eax,96
-+	jc	NEAR L$047xts_enc_short
-+	shl	ecx,4
-+	mov	ebx,16
-+	sub	ebx,ecx
-+	lea	edx,[32+ecx*1+edx]
-+	jmp	NEAR L$048xts_enc_loop6
-+align	16
-+L$048xts_enc_loop6:
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	[esp],xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	[16+esp],xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	[32+esp],xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	[48+esp],xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	pshufd	xmm7,xmm0,19
-+	movdqa	[64+esp],xmm1
-+	paddq	xmm1,xmm1
-+	movups	xmm0,[ebp]
-+	pand	xmm7,xmm3
-+	movups	xmm2,[esi]
-+	pxor	xmm7,xmm1
-+	mov	ecx,ebx
-+	movdqu	xmm3,[16+esi]
-+	xorps	xmm2,xmm0
-+	movdqu	xmm4,[32+esi]
-+	pxor	xmm3,xmm0
-+	movdqu	xmm5,[48+esi]
-+	pxor	xmm4,xmm0
-+	movdqu	xmm6,[64+esi]
-+	pxor	xmm5,xmm0
-+	movdqu	xmm1,[80+esi]
-+	pxor	xmm6,xmm0
-+	lea	esi,[96+esi]
-+	pxor	xmm2,[esp]
-+	movdqa	[80+esp],xmm7
-+	pxor	xmm7,xmm1
-+	movups	xmm1,[16+ebp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,[32+esp]
-+db	102,15,56,220,209
-+	pxor	xmm5,[48+esp]
-+	pxor	xmm6,[64+esp]
-+db	102,15,56,220,217
-+	pxor	xmm7,xmm0
-+	movups	xmm0,[32+ebp]
-+db	102,15,56,220,225
-+db	102,15,56,220,233
-+db	102,15,56,220,241
-+db	102,15,56,220,249
-+	call	L$_aesni_encrypt6_enter
-+	movdqa	xmm1,[80+esp]
-+	pxor	xmm0,xmm0
-+	xorps	xmm2,[esp]
-+	pcmpgtd	xmm0,xmm1
-+	xorps	xmm3,[16+esp]
-+	movups	[edi],xmm2
-+	xorps	xmm4,[32+esp]
-+	movups	[16+edi],xmm3
-+	xorps	xmm5,[48+esp]
-+	movups	[32+edi],xmm4
-+	xorps	xmm6,[64+esp]
-+	movups	[48+edi],xmm5
-+	xorps	xmm7,xmm1
-+	movups	[64+edi],xmm6
-+	pshufd	xmm2,xmm0,19
-+	movups	[80+edi],xmm7
-+	lea	edi,[96+edi]
-+	movdqa	xmm3,[96+esp]
-+	pxor	xmm0,xmm0
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	sub	eax,96
-+	jnc	NEAR L$048xts_enc_loop6
-+	mov	ecx,DWORD [240+ebp]
-+	mov	edx,ebp
-+	mov	ebx,ecx
-+L$047xts_enc_short:
-+	add	eax,96
-+	jz	NEAR L$049xts_enc_done6x
-+	movdqa	xmm5,xmm1
-+	cmp	eax,32
-+	jb	NEAR L$050xts_enc_one
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	je	NEAR L$051xts_enc_two
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	xmm6,xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	cmp	eax,64
-+	jb	NEAR L$052xts_enc_three
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	xmm7,xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	movdqa	[esp],xmm5
-+	movdqa	[16+esp],xmm6
-+	je	NEAR L$053xts_enc_four
-+	movdqa	[32+esp],xmm7
-+	pshufd	xmm7,xmm0,19
-+	movdqa	[48+esp],xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm7,xmm3
-+	pxor	xmm7,xmm1
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	pxor	xmm2,[esp]
-+	movdqu	xmm5,[48+esi]
-+	pxor	xmm3,[16+esp]
-+	movdqu	xmm6,[64+esi]
-+	pxor	xmm4,[32+esp]
-+	lea	esi,[80+esi]
-+	pxor	xmm5,[48+esp]
-+	movdqa	[64+esp],xmm7
-+	pxor	xmm6,xmm7
-+	call	__aesni_encrypt6
-+	movaps	xmm1,[64+esp]
-+	xorps	xmm2,[esp]
-+	xorps	xmm3,[16+esp]
-+	xorps	xmm4,[32+esp]
-+	movups	[edi],xmm2
-+	xorps	xmm5,[48+esp]
-+	movups	[16+edi],xmm3
-+	xorps	xmm6,xmm1
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+	movups	[64+edi],xmm6
-+	lea	edi,[80+edi]
-+	jmp	NEAR L$054xts_enc_done
-+align	16
-+L$050xts_enc_one:
-+	movups	xmm2,[esi]
-+	lea	esi,[16+esi]
-+	xorps	xmm2,xmm5
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$055enc1_loop_9:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$055enc1_loop_9
-+db	102,15,56,221,209
-+	xorps	xmm2,xmm5
-+	movups	[edi],xmm2
-+	lea	edi,[16+edi]
-+	movdqa	xmm1,xmm5
-+	jmp	NEAR L$054xts_enc_done
-+align	16
-+L$051xts_enc_two:
-+	movaps	xmm6,xmm1
-+	movups	xmm2,[esi]
-+	movups	xmm3,[16+esi]
-+	lea	esi,[32+esi]
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	call	__aesni_encrypt2
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	lea	edi,[32+edi]
-+	movdqa	xmm1,xmm6
-+	jmp	NEAR L$054xts_enc_done
-+align	16
-+L$052xts_enc_three:
-+	movaps	xmm7,xmm1
-+	movups	xmm2,[esi]
-+	movups	xmm3,[16+esi]
-+	movups	xmm4,[32+esi]
-+	lea	esi,[48+esi]
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	xorps	xmm4,xmm7
-+	call	__aesni_encrypt3
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	xorps	xmm4,xmm7
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	lea	edi,[48+edi]
-+	movdqa	xmm1,xmm7
-+	jmp	NEAR L$054xts_enc_done
-+align	16
-+L$053xts_enc_four:
-+	movaps	xmm6,xmm1
-+	movups	xmm2,[esi]
-+	movups	xmm3,[16+esi]
-+	movups	xmm4,[32+esi]
-+	xorps	xmm2,[esp]
-+	movups	xmm5,[48+esi]
-+	lea	esi,[64+esi]
-+	xorps	xmm3,[16+esp]
-+	xorps	xmm4,xmm7
-+	xorps	xmm5,xmm6
-+	call	__aesni_encrypt4
-+	xorps	xmm2,[esp]
-+	xorps	xmm3,[16+esp]
-+	xorps	xmm4,xmm7
-+	movups	[edi],xmm2
-+	xorps	xmm5,xmm6
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+	lea	edi,[64+edi]
-+	movdqa	xmm1,xmm6
-+	jmp	NEAR L$054xts_enc_done
-+align	16
-+L$049xts_enc_done6x:
-+	mov	eax,DWORD [112+esp]
-+	and	eax,15
-+	jz	NEAR L$056xts_enc_ret
-+	movdqa	xmm5,xmm1
-+	mov	DWORD [112+esp],eax
-+	jmp	NEAR L$057xts_enc_steal
-+align	16
-+L$054xts_enc_done:
-+	mov	eax,DWORD [112+esp]
-+	pxor	xmm0,xmm0
-+	and	eax,15
-+	jz	NEAR L$056xts_enc_ret
-+	pcmpgtd	xmm0,xmm1
-+	mov	DWORD [112+esp],eax
-+	pshufd	xmm5,xmm0,19
-+	paddq	xmm1,xmm1
-+	pand	xmm5,[96+esp]
-+	pxor	xmm5,xmm1
-+L$057xts_enc_steal:
-+	movzx	ecx,BYTE [esi]
-+	movzx	edx,BYTE [edi-16]
-+	lea	esi,[1+esi]
-+	mov	BYTE [edi-16],cl
-+	mov	BYTE [edi],dl
-+	lea	edi,[1+edi]
-+	sub	eax,1
-+	jnz	NEAR L$057xts_enc_steal
-+	sub	edi,DWORD [112+esp]
-+	mov	edx,ebp
-+	mov	ecx,ebx
-+	movups	xmm2,[edi-16]
-+	xorps	xmm2,xmm5
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$058enc1_loop_10:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$058enc1_loop_10
-+db	102,15,56,221,209
-+	xorps	xmm2,xmm5
-+	movups	[edi-16],xmm2
-+L$056xts_enc_ret:
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	movdqa	[esp],xmm0
-+	pxor	xmm3,xmm3
-+	movdqa	[16+esp],xmm0
-+	pxor	xmm4,xmm4
-+	movdqa	[32+esp],xmm0
-+	pxor	xmm5,xmm5
-+	movdqa	[48+esp],xmm0
-+	pxor	xmm6,xmm6
-+	movdqa	[64+esp],xmm0
-+	pxor	xmm7,xmm7
-+	movdqa	[80+esp],xmm0
-+	mov	esp,DWORD [116+esp]
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_aesni_xts_decrypt
-+align	16
-+_aesni_xts_decrypt:
-+L$_aesni_xts_decrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	edx,DWORD [36+esp]
-+	mov	esi,DWORD [40+esp]
-+	mov	ecx,DWORD [240+edx]
-+	movups	xmm2,[esi]
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$059enc1_loop_11:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$059enc1_loop_11
-+db	102,15,56,221,209
-+	mov	esi,DWORD [20+esp]
-+	mov	edi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	mov	edx,DWORD [32+esp]
-+	mov	ebp,esp
-+	sub	esp,120
-+	and	esp,-16
-+	xor	ebx,ebx
-+	test	eax,15
-+	setnz	bl
-+	shl	ebx,4
-+	sub	eax,ebx
-+	mov	DWORD [96+esp],135
-+	mov	DWORD [100+esp],0
-+	mov	DWORD [104+esp],1
-+	mov	DWORD [108+esp],0
-+	mov	DWORD [112+esp],eax
-+	mov	DWORD [116+esp],ebp
-+	mov	ecx,DWORD [240+edx]
-+	mov	ebp,edx
-+	mov	ebx,ecx
-+	movdqa	xmm1,xmm2
-+	pxor	xmm0,xmm0
-+	movdqa	xmm3,[96+esp]
-+	pcmpgtd	xmm0,xmm1
-+	and	eax,-16
-+	sub	eax,96
-+	jc	NEAR L$060xts_dec_short
-+	shl	ecx,4
-+	mov	ebx,16
-+	sub	ebx,ecx
-+	lea	edx,[32+ecx*1+edx]
-+	jmp	NEAR L$061xts_dec_loop6
-+align	16
-+L$061xts_dec_loop6:
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	[esp],xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	[16+esp],xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	[32+esp],xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	[48+esp],xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	pshufd	xmm7,xmm0,19
-+	movdqa	[64+esp],xmm1
-+	paddq	xmm1,xmm1
-+	movups	xmm0,[ebp]
-+	pand	xmm7,xmm3
-+	movups	xmm2,[esi]
-+	pxor	xmm7,xmm1
-+	mov	ecx,ebx
-+	movdqu	xmm3,[16+esi]
-+	xorps	xmm2,xmm0
-+	movdqu	xmm4,[32+esi]
-+	pxor	xmm3,xmm0
-+	movdqu	xmm5,[48+esi]
-+	pxor	xmm4,xmm0
-+	movdqu	xmm6,[64+esi]
-+	pxor	xmm5,xmm0
-+	movdqu	xmm1,[80+esi]
-+	pxor	xmm6,xmm0
-+	lea	esi,[96+esi]
-+	pxor	xmm2,[esp]
-+	movdqa	[80+esp],xmm7
-+	pxor	xmm7,xmm1
-+	movups	xmm1,[16+ebp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,[32+esp]
-+db	102,15,56,222,209
-+	pxor	xmm5,[48+esp]
-+	pxor	xmm6,[64+esp]
-+db	102,15,56,222,217
-+	pxor	xmm7,xmm0
-+	movups	xmm0,[32+ebp]
-+db	102,15,56,222,225
-+db	102,15,56,222,233
-+db	102,15,56,222,241
-+db	102,15,56,222,249
-+	call	L$_aesni_decrypt6_enter
-+	movdqa	xmm1,[80+esp]
-+	pxor	xmm0,xmm0
-+	xorps	xmm2,[esp]
-+	pcmpgtd	xmm0,xmm1
-+	xorps	xmm3,[16+esp]
-+	movups	[edi],xmm2
-+	xorps	xmm4,[32+esp]
-+	movups	[16+edi],xmm3
-+	xorps	xmm5,[48+esp]
-+	movups	[32+edi],xmm4
-+	xorps	xmm6,[64+esp]
-+	movups	[48+edi],xmm5
-+	xorps	xmm7,xmm1
-+	movups	[64+edi],xmm6
-+	pshufd	xmm2,xmm0,19
-+	movups	[80+edi],xmm7
-+	lea	edi,[96+edi]
-+	movdqa	xmm3,[96+esp]
-+	pxor	xmm0,xmm0
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	sub	eax,96
-+	jnc	NEAR L$061xts_dec_loop6
-+	mov	ecx,DWORD [240+ebp]
-+	mov	edx,ebp
-+	mov	ebx,ecx
-+L$060xts_dec_short:
-+	add	eax,96
-+	jz	NEAR L$062xts_dec_done6x
-+	movdqa	xmm5,xmm1
-+	cmp	eax,32
-+	jb	NEAR L$063xts_dec_one
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	je	NEAR L$064xts_dec_two
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	xmm6,xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	cmp	eax,64
-+	jb	NEAR L$065xts_dec_three
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	xmm7,xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+	movdqa	[esp],xmm5
-+	movdqa	[16+esp],xmm6
-+	je	NEAR L$066xts_dec_four
-+	movdqa	[32+esp],xmm7
-+	pshufd	xmm7,xmm0,19
-+	movdqa	[48+esp],xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm7,xmm3
-+	pxor	xmm7,xmm1
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	pxor	xmm2,[esp]
-+	movdqu	xmm5,[48+esi]
-+	pxor	xmm3,[16+esp]
-+	movdqu	xmm6,[64+esi]
-+	pxor	xmm4,[32+esp]
-+	lea	esi,[80+esi]
-+	pxor	xmm5,[48+esp]
-+	movdqa	[64+esp],xmm7
-+	pxor	xmm6,xmm7
-+	call	__aesni_decrypt6
-+	movaps	xmm1,[64+esp]
-+	xorps	xmm2,[esp]
-+	xorps	xmm3,[16+esp]
-+	xorps	xmm4,[32+esp]
-+	movups	[edi],xmm2
-+	xorps	xmm5,[48+esp]
-+	movups	[16+edi],xmm3
-+	xorps	xmm6,xmm1
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+	movups	[64+edi],xmm6
-+	lea	edi,[80+edi]
-+	jmp	NEAR L$067xts_dec_done
-+align	16
-+L$063xts_dec_one:
-+	movups	xmm2,[esi]
-+	lea	esi,[16+esi]
-+	xorps	xmm2,xmm5
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$068dec1_loop_12:
-+db	102,15,56,222,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$068dec1_loop_12
-+db	102,15,56,223,209
-+	xorps	xmm2,xmm5
-+	movups	[edi],xmm2
-+	lea	edi,[16+edi]
-+	movdqa	xmm1,xmm5
-+	jmp	NEAR L$067xts_dec_done
-+align	16
-+L$064xts_dec_two:
-+	movaps	xmm6,xmm1
-+	movups	xmm2,[esi]
-+	movups	xmm3,[16+esi]
-+	lea	esi,[32+esi]
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	call	__aesni_decrypt2
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	lea	edi,[32+edi]
-+	movdqa	xmm1,xmm6
-+	jmp	NEAR L$067xts_dec_done
-+align	16
-+L$065xts_dec_three:
-+	movaps	xmm7,xmm1
-+	movups	xmm2,[esi]
-+	movups	xmm3,[16+esi]
-+	movups	xmm4,[32+esi]
-+	lea	esi,[48+esi]
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	xorps	xmm4,xmm7
-+	call	__aesni_decrypt3
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	xorps	xmm4,xmm7
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	lea	edi,[48+edi]
-+	movdqa	xmm1,xmm7
-+	jmp	NEAR L$067xts_dec_done
-+align	16
-+L$066xts_dec_four:
-+	movaps	xmm6,xmm1
-+	movups	xmm2,[esi]
-+	movups	xmm3,[16+esi]
-+	movups	xmm4,[32+esi]
-+	xorps	xmm2,[esp]
-+	movups	xmm5,[48+esi]
-+	lea	esi,[64+esi]
-+	xorps	xmm3,[16+esp]
-+	xorps	xmm4,xmm7
-+	xorps	xmm5,xmm6
-+	call	__aesni_decrypt4
-+	xorps	xmm2,[esp]
-+	xorps	xmm3,[16+esp]
-+	xorps	xmm4,xmm7
-+	movups	[edi],xmm2
-+	xorps	xmm5,xmm6
-+	movups	[16+edi],xmm3
-+	movups	[32+edi],xmm4
-+	movups	[48+edi],xmm5
-+	lea	edi,[64+edi]
-+	movdqa	xmm1,xmm6
-+	jmp	NEAR L$067xts_dec_done
-+align	16
-+L$062xts_dec_done6x:
-+	mov	eax,DWORD [112+esp]
-+	and	eax,15
-+	jz	NEAR L$069xts_dec_ret
-+	mov	DWORD [112+esp],eax
-+	jmp	NEAR L$070xts_dec_only_one_more
-+align	16
-+L$067xts_dec_done:
-+	mov	eax,DWORD [112+esp]
-+	pxor	xmm0,xmm0
-+	and	eax,15
-+	jz	NEAR L$069xts_dec_ret
-+	pcmpgtd	xmm0,xmm1
-+	mov	DWORD [112+esp],eax
-+	pshufd	xmm2,xmm0,19
-+	pxor	xmm0,xmm0
-+	movdqa	xmm3,[96+esp]
-+	paddq	xmm1,xmm1
-+	pand	xmm2,xmm3
-+	pcmpgtd	xmm0,xmm1
-+	pxor	xmm1,xmm2
-+L$070xts_dec_only_one_more:
-+	pshufd	xmm5,xmm0,19
-+	movdqa	xmm6,xmm1
-+	paddq	xmm1,xmm1
-+	pand	xmm5,xmm3
-+	pxor	xmm5,xmm1
-+	mov	edx,ebp
-+	mov	ecx,ebx
-+	movups	xmm2,[esi]
-+	xorps	xmm2,xmm5
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$071dec1_loop_13:
-+db	102,15,56,222,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$071dec1_loop_13
-+db	102,15,56,223,209
-+	xorps	xmm2,xmm5
-+	movups	[edi],xmm2
-+L$072xts_dec_steal:
-+	movzx	ecx,BYTE [16+esi]
-+	movzx	edx,BYTE [edi]
-+	lea	esi,[1+esi]
-+	mov	BYTE [edi],cl
-+	mov	BYTE [16+edi],dl
-+	lea	edi,[1+edi]
-+	sub	eax,1
-+	jnz	NEAR L$072xts_dec_steal
-+	sub	edi,DWORD [112+esp]
-+	mov	edx,ebp
-+	mov	ecx,ebx
-+	movups	xmm2,[edi]
-+	xorps	xmm2,xmm6
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$073dec1_loop_14:
-+db	102,15,56,222,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$073dec1_loop_14
-+db	102,15,56,223,209
-+	xorps	xmm2,xmm6
-+	movups	[edi],xmm2
-+L$069xts_dec_ret:
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	movdqa	[esp],xmm0
-+	pxor	xmm3,xmm3
-+	movdqa	[16+esp],xmm0
-+	pxor	xmm4,xmm4
-+	movdqa	[32+esp],xmm0
-+	pxor	xmm5,xmm5
-+	movdqa	[48+esp],xmm0
-+	pxor	xmm6,xmm6
-+	movdqa	[64+esp],xmm0
-+	pxor	xmm7,xmm7
-+	movdqa	[80+esp],xmm0
-+	mov	esp,DWORD [116+esp]
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_aesni_ocb_encrypt
-+align	16
-+_aesni_ocb_encrypt:
-+L$_aesni_ocb_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	ecx,DWORD [40+esp]
-+	mov	ebx,DWORD [48+esp]
-+	mov	esi,DWORD [20+esp]
-+	mov	edi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	mov	edx,DWORD [32+esp]
-+	movdqu	xmm0,[ecx]
-+	mov	ebp,DWORD [36+esp]
-+	movdqu	xmm1,[ebx]
-+	mov	ebx,DWORD [44+esp]
-+	mov	ecx,esp
-+	sub	esp,132
-+	and	esp,-16
-+	sub	edi,esi
-+	shl	eax,4
-+	lea	eax,[eax*1+esi-96]
-+	mov	DWORD [120+esp],edi
-+	mov	DWORD [124+esp],eax
-+	mov	DWORD [128+esp],ecx
-+	mov	ecx,DWORD [240+edx]
-+	test	ebp,1
-+	jnz	NEAR L$074odd
-+	bsf	eax,ebp
-+	add	ebp,1
-+	shl	eax,4
-+	movdqu	xmm7,[eax*1+ebx]
-+	mov	eax,edx
-+	movdqu	xmm2,[esi]
-+	lea	esi,[16+esi]
-+	pxor	xmm7,xmm0
-+	pxor	xmm1,xmm2
-+	pxor	xmm2,xmm7
-+	movdqa	xmm6,xmm1
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$075enc1_loop_15:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$075enc1_loop_15
-+db	102,15,56,221,209
-+	xorps	xmm2,xmm7
-+	movdqa	xmm0,xmm7
-+	movdqa	xmm1,xmm6
-+	movups	[esi*1+edi-16],xmm2
-+	mov	ecx,DWORD [240+eax]
-+	mov	edx,eax
-+	mov	eax,DWORD [124+esp]
-+L$074odd:
-+	shl	ecx,4
-+	mov	edi,16
-+	sub	edi,ecx
-+	mov	DWORD [112+esp],edx
-+	lea	edx,[32+ecx*1+edx]
-+	mov	DWORD [116+esp],edi
-+	cmp	esi,eax
-+	ja	NEAR L$076short
-+	jmp	NEAR L$077grandloop
-+align	32
-+L$077grandloop:
-+	lea	ecx,[1+ebp]
-+	lea	eax,[3+ebp]
-+	lea	edi,[5+ebp]
-+	add	ebp,6
-+	bsf	ecx,ecx
-+	bsf	eax,eax
-+	bsf	edi,edi
-+	shl	ecx,4
-+	shl	eax,4
-+	shl	edi,4
-+	movdqu	xmm2,[ebx]
-+	movdqu	xmm3,[ecx*1+ebx]
-+	mov	ecx,DWORD [116+esp]
-+	movdqa	xmm4,xmm2
-+	movdqu	xmm5,[eax*1+ebx]
-+	movdqa	xmm6,xmm2
-+	movdqu	xmm7,[edi*1+ebx]
-+	pxor	xmm2,xmm0
-+	pxor	xmm3,xmm2
-+	movdqa	[esp],xmm2
-+	pxor	xmm4,xmm3
-+	movdqa	[16+esp],xmm3
-+	pxor	xmm5,xmm4
-+	movdqa	[32+esp],xmm4
-+	pxor	xmm6,xmm5
-+	movdqa	[48+esp],xmm5
-+	pxor	xmm7,xmm6
-+	movdqa	[64+esp],xmm6
-+	movdqa	[80+esp],xmm7
-+	movups	xmm0,[ecx*1+edx-48]
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	movdqu	xmm5,[48+esi]
-+	movdqu	xmm6,[64+esi]
-+	movdqu	xmm7,[80+esi]
-+	lea	esi,[96+esi]
-+	pxor	xmm1,xmm2
-+	pxor	xmm2,xmm0
-+	pxor	xmm1,xmm3
-+	pxor	xmm3,xmm0
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm0
-+	pxor	xmm1,xmm5
-+	pxor	xmm5,xmm0
-+	pxor	xmm1,xmm6
-+	pxor	xmm6,xmm0
-+	pxor	xmm1,xmm7
-+	pxor	xmm7,xmm0
-+	movdqa	[96+esp],xmm1
-+	movups	xmm1,[ecx*1+edx-32]
-+	pxor	xmm2,[esp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,[32+esp]
-+	pxor	xmm5,[48+esp]
-+	pxor	xmm6,[64+esp]
-+	pxor	xmm7,[80+esp]
-+	movups	xmm0,[ecx*1+edx-16]
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+db	102,15,56,220,225
-+db	102,15,56,220,233
-+db	102,15,56,220,241
-+db	102,15,56,220,249
-+	mov	edi,DWORD [120+esp]
-+	mov	eax,DWORD [124+esp]
-+	call	L$_aesni_encrypt6_enter
-+	movdqa	xmm0,[80+esp]
-+	pxor	xmm2,[esp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,[32+esp]
-+	pxor	xmm5,[48+esp]
-+	pxor	xmm6,[64+esp]
-+	pxor	xmm7,xmm0
-+	movdqa	xmm1,[96+esp]
-+	movdqu	[esi*1+edi-96],xmm2
-+	movdqu	[esi*1+edi-80],xmm3
-+	movdqu	[esi*1+edi-64],xmm4
-+	movdqu	[esi*1+edi-48],xmm5
-+	movdqu	[esi*1+edi-32],xmm6
-+	movdqu	[esi*1+edi-16],xmm7
-+	cmp	esi,eax
-+	jb	NEAR L$077grandloop
-+L$076short:
-+	add	eax,96
-+	sub	eax,esi
-+	jz	NEAR L$078done
-+	cmp	eax,32
-+	jb	NEAR L$079one
-+	je	NEAR L$080two
-+	cmp	eax,64
-+	jb	NEAR L$081three
-+	je	NEAR L$082four
-+	lea	ecx,[1+ebp]
-+	lea	eax,[3+ebp]
-+	bsf	ecx,ecx
-+	bsf	eax,eax
-+	shl	ecx,4
-+	shl	eax,4
-+	movdqu	xmm2,[ebx]
-+	movdqu	xmm3,[ecx*1+ebx]
-+	mov	ecx,DWORD [116+esp]
-+	movdqa	xmm4,xmm2
-+	movdqu	xmm5,[eax*1+ebx]
-+	movdqa	xmm6,xmm2
-+	pxor	xmm2,xmm0
-+	pxor	xmm3,xmm2
-+	movdqa	[esp],xmm2
-+	pxor	xmm4,xmm3
-+	movdqa	[16+esp],xmm3
-+	pxor	xmm5,xmm4
-+	movdqa	[32+esp],xmm4
-+	pxor	xmm6,xmm5
-+	movdqa	[48+esp],xmm5
-+	pxor	xmm7,xmm6
-+	movdqa	[64+esp],xmm6
-+	movups	xmm0,[ecx*1+edx-48]
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	movdqu	xmm5,[48+esi]
-+	movdqu	xmm6,[64+esi]
-+	pxor	xmm7,xmm7
-+	pxor	xmm1,xmm2
-+	pxor	xmm2,xmm0
-+	pxor	xmm1,xmm3
-+	pxor	xmm3,xmm0
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm0
-+	pxor	xmm1,xmm5
-+	pxor	xmm5,xmm0
-+	pxor	xmm1,xmm6
-+	pxor	xmm6,xmm0
-+	movdqa	[96+esp],xmm1
-+	movups	xmm1,[ecx*1+edx-32]
-+	pxor	xmm2,[esp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,[32+esp]
-+	pxor	xmm5,[48+esp]
-+	pxor	xmm6,[64+esp]
-+	movups	xmm0,[ecx*1+edx-16]
-+db	102,15,56,220,209
-+db	102,15,56,220,217
-+db	102,15,56,220,225
-+db	102,15,56,220,233
-+db	102,15,56,220,241
-+db	102,15,56,220,249
-+	mov	edi,DWORD [120+esp]
-+	call	L$_aesni_encrypt6_enter
-+	movdqa	xmm0,[64+esp]
-+	pxor	xmm2,[esp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,[32+esp]
-+	pxor	xmm5,[48+esp]
-+	pxor	xmm6,xmm0
-+	movdqa	xmm1,[96+esp]
-+	movdqu	[esi*1+edi],xmm2
-+	movdqu	[16+esi*1+edi],xmm3
-+	movdqu	[32+esi*1+edi],xmm4
-+	movdqu	[48+esi*1+edi],xmm5
-+	movdqu	[64+esi*1+edi],xmm6
-+	jmp	NEAR L$078done
-+align	16
-+L$079one:
-+	movdqu	xmm7,[ebx]
-+	mov	edx,DWORD [112+esp]
-+	movdqu	xmm2,[esi]
-+	mov	ecx,DWORD [240+edx]
-+	pxor	xmm7,xmm0
-+	pxor	xmm1,xmm2
-+	pxor	xmm2,xmm7
-+	movdqa	xmm6,xmm1
-+	mov	edi,DWORD [120+esp]
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$083enc1_loop_16:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$083enc1_loop_16
-+db	102,15,56,221,209
-+	xorps	xmm2,xmm7
-+	movdqa	xmm0,xmm7
-+	movdqa	xmm1,xmm6
-+	movups	[esi*1+edi],xmm2
-+	jmp	NEAR L$078done
-+align	16
-+L$080two:
-+	lea	ecx,[1+ebp]
-+	mov	edx,DWORD [112+esp]
-+	bsf	ecx,ecx
-+	shl	ecx,4
-+	movdqu	xmm6,[ebx]
-+	movdqu	xmm7,[ecx*1+ebx]
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	mov	ecx,DWORD [240+edx]
-+	pxor	xmm6,xmm0
-+	pxor	xmm7,xmm6
-+	pxor	xmm1,xmm2
-+	pxor	xmm2,xmm6
-+	pxor	xmm1,xmm3
-+	pxor	xmm3,xmm7
-+	movdqa	xmm5,xmm1
-+	mov	edi,DWORD [120+esp]
-+	call	__aesni_encrypt2
-+	xorps	xmm2,xmm6
-+	xorps	xmm3,xmm7
-+	movdqa	xmm0,xmm7
-+	movdqa	xmm1,xmm5
-+	movups	[esi*1+edi],xmm2
-+	movups	[16+esi*1+edi],xmm3
-+	jmp	NEAR L$078done
-+align	16
-+L$081three:
-+	lea	ecx,[1+ebp]
-+	mov	edx,DWORD [112+esp]
-+	bsf	ecx,ecx
-+	shl	ecx,4
-+	movdqu	xmm5,[ebx]
-+	movdqu	xmm6,[ecx*1+ebx]
-+	movdqa	xmm7,xmm5
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	mov	ecx,DWORD [240+edx]
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm5
-+	pxor	xmm7,xmm6
-+	pxor	xmm1,xmm2
-+	pxor	xmm2,xmm5
-+	pxor	xmm1,xmm3
-+	pxor	xmm3,xmm6
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm7
-+	movdqa	[96+esp],xmm1
-+	mov	edi,DWORD [120+esp]
-+	call	__aesni_encrypt3
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	xorps	xmm4,xmm7
-+	movdqa	xmm0,xmm7
-+	movdqa	xmm1,[96+esp]
-+	movups	[esi*1+edi],xmm2
-+	movups	[16+esi*1+edi],xmm3
-+	movups	[32+esi*1+edi],xmm4
-+	jmp	NEAR L$078done
-+align	16
-+L$082four:
-+	lea	ecx,[1+ebp]
-+	lea	eax,[3+ebp]
-+	bsf	ecx,ecx
-+	bsf	eax,eax
-+	mov	edx,DWORD [112+esp]
-+	shl	ecx,4
-+	shl	eax,4
-+	movdqu	xmm4,[ebx]
-+	movdqu	xmm5,[ecx*1+ebx]
-+	movdqa	xmm6,xmm4
-+	movdqu	xmm7,[eax*1+ebx]
-+	pxor	xmm4,xmm0
-+	movdqu	xmm2,[esi]
-+	pxor	xmm5,xmm4
-+	movdqu	xmm3,[16+esi]
-+	pxor	xmm6,xmm5
-+	movdqa	[esp],xmm4
-+	pxor	xmm7,xmm6
-+	movdqa	[16+esp],xmm5
-+	movdqu	xmm4,[32+esi]
-+	movdqu	xmm5,[48+esi]
-+	mov	ecx,DWORD [240+edx]
-+	pxor	xmm1,xmm2
-+	pxor	xmm2,[esp]
-+	pxor	xmm1,xmm3
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm6
-+	pxor	xmm1,xmm5
-+	pxor	xmm5,xmm7
-+	movdqa	[96+esp],xmm1
-+	mov	edi,DWORD [120+esp]
-+	call	__aesni_encrypt4
-+	xorps	xmm2,[esp]
-+	xorps	xmm3,[16+esp]
-+	xorps	xmm4,xmm6
-+	movups	[esi*1+edi],xmm2
-+	xorps	xmm5,xmm7
-+	movups	[16+esi*1+edi],xmm3
-+	movdqa	xmm0,xmm7
-+	movups	[32+esi*1+edi],xmm4
-+	movdqa	xmm1,[96+esp]
-+	movups	[48+esi*1+edi],xmm5
-+L$078done:
-+	mov	edx,DWORD [128+esp]
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	movdqa	[esp],xmm2
-+	pxor	xmm4,xmm4
-+	movdqa	[16+esp],xmm2
-+	pxor	xmm5,xmm5
-+	movdqa	[32+esp],xmm2
-+	pxor	xmm6,xmm6
-+	movdqa	[48+esp],xmm2
-+	pxor	xmm7,xmm7
-+	movdqa	[64+esp],xmm2
-+	movdqa	[80+esp],xmm2
-+	movdqa	[96+esp],xmm2
-+	lea	esp,[edx]
-+	mov	ecx,DWORD [40+esp]
-+	mov	ebx,DWORD [48+esp]
-+	movdqu	[ecx],xmm0
-+	pxor	xmm0,xmm0
-+	movdqu	[ebx],xmm1
-+	pxor	xmm1,xmm1
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_aesni_ocb_decrypt
-+align	16
-+_aesni_ocb_decrypt:
-+L$_aesni_ocb_decrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	ecx,DWORD [40+esp]
-+	mov	ebx,DWORD [48+esp]
-+	mov	esi,DWORD [20+esp]
-+	mov	edi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	mov	edx,DWORD [32+esp]
-+	movdqu	xmm0,[ecx]
-+	mov	ebp,DWORD [36+esp]
-+	movdqu	xmm1,[ebx]
-+	mov	ebx,DWORD [44+esp]
-+	mov	ecx,esp
-+	sub	esp,132
-+	and	esp,-16
-+	sub	edi,esi
-+	shl	eax,4
-+	lea	eax,[eax*1+esi-96]
-+	mov	DWORD [120+esp],edi
-+	mov	DWORD [124+esp],eax
-+	mov	DWORD [128+esp],ecx
-+	mov	ecx,DWORD [240+edx]
-+	test	ebp,1
-+	jnz	NEAR L$084odd
-+	bsf	eax,ebp
-+	add	ebp,1
-+	shl	eax,4
-+	movdqu	xmm7,[eax*1+ebx]
-+	mov	eax,edx
-+	movdqu	xmm2,[esi]
-+	lea	esi,[16+esi]
-+	pxor	xmm7,xmm0
-+	pxor	xmm2,xmm7
-+	movdqa	xmm6,xmm1
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$085dec1_loop_17:
-+db	102,15,56,222,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$085dec1_loop_17
-+db	102,15,56,223,209
-+	xorps	xmm2,xmm7
-+	movaps	xmm1,xmm6
-+	movdqa	xmm0,xmm7
-+	xorps	xmm1,xmm2
-+	movups	[esi*1+edi-16],xmm2
-+	mov	ecx,DWORD [240+eax]
-+	mov	edx,eax
-+	mov	eax,DWORD [124+esp]
-+L$084odd:
-+	shl	ecx,4
-+	mov	edi,16
-+	sub	edi,ecx
-+	mov	DWORD [112+esp],edx
-+	lea	edx,[32+ecx*1+edx]
-+	mov	DWORD [116+esp],edi
-+	cmp	esi,eax
-+	ja	NEAR L$086short
-+	jmp	NEAR L$087grandloop
-+align	32
-+L$087grandloop:
-+	lea	ecx,[1+ebp]
-+	lea	eax,[3+ebp]
-+	lea	edi,[5+ebp]
-+	add	ebp,6
-+	bsf	ecx,ecx
-+	bsf	eax,eax
-+	bsf	edi,edi
-+	shl	ecx,4
-+	shl	eax,4
-+	shl	edi,4
-+	movdqu	xmm2,[ebx]
-+	movdqu	xmm3,[ecx*1+ebx]
-+	mov	ecx,DWORD [116+esp]
-+	movdqa	xmm4,xmm2
-+	movdqu	xmm5,[eax*1+ebx]
-+	movdqa	xmm6,xmm2
-+	movdqu	xmm7,[edi*1+ebx]
-+	pxor	xmm2,xmm0
-+	pxor	xmm3,xmm2
-+	movdqa	[esp],xmm2
-+	pxor	xmm4,xmm3
-+	movdqa	[16+esp],xmm3
-+	pxor	xmm5,xmm4
-+	movdqa	[32+esp],xmm4
-+	pxor	xmm6,xmm5
-+	movdqa	[48+esp],xmm5
-+	pxor	xmm7,xmm6
-+	movdqa	[64+esp],xmm6
-+	movdqa	[80+esp],xmm7
-+	movups	xmm0,[ecx*1+edx-48]
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	movdqu	xmm5,[48+esi]
-+	movdqu	xmm6,[64+esi]
-+	movdqu	xmm7,[80+esi]
-+	lea	esi,[96+esi]
-+	movdqa	[96+esp],xmm1
-+	pxor	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm0
-+	pxor	xmm7,xmm0
-+	movups	xmm1,[ecx*1+edx-32]
-+	pxor	xmm2,[esp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,[32+esp]
-+	pxor	xmm5,[48+esp]
-+	pxor	xmm6,[64+esp]
-+	pxor	xmm7,[80+esp]
-+	movups	xmm0,[ecx*1+edx-16]
-+db	102,15,56,222,209
-+db	102,15,56,222,217
-+db	102,15,56,222,225
-+db	102,15,56,222,233
-+db	102,15,56,222,241
-+db	102,15,56,222,249
-+	mov	edi,DWORD [120+esp]
-+	mov	eax,DWORD [124+esp]
-+	call	L$_aesni_decrypt6_enter
-+	movdqa	xmm0,[80+esp]
-+	pxor	xmm2,[esp]
-+	movdqa	xmm1,[96+esp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,[32+esp]
-+	pxor	xmm5,[48+esp]
-+	pxor	xmm6,[64+esp]
-+	pxor	xmm7,xmm0
-+	pxor	xmm1,xmm2
-+	movdqu	[esi*1+edi-96],xmm2
-+	pxor	xmm1,xmm3
-+	movdqu	[esi*1+edi-80],xmm3
-+	pxor	xmm1,xmm4
-+	movdqu	[esi*1+edi-64],xmm4
-+	pxor	xmm1,xmm5
-+	movdqu	[esi*1+edi-48],xmm5
-+	pxor	xmm1,xmm6
-+	movdqu	[esi*1+edi-32],xmm6
-+	pxor	xmm1,xmm7
-+	movdqu	[esi*1+edi-16],xmm7
-+	cmp	esi,eax
-+	jb	NEAR L$087grandloop
-+L$086short:
-+	add	eax,96
-+	sub	eax,esi
-+	jz	NEAR L$088done
-+	cmp	eax,32
-+	jb	NEAR L$089one
-+	je	NEAR L$090two
-+	cmp	eax,64
-+	jb	NEAR L$091three
-+	je	NEAR L$092four
-+	lea	ecx,[1+ebp]
-+	lea	eax,[3+ebp]
-+	bsf	ecx,ecx
-+	bsf	eax,eax
-+	shl	ecx,4
-+	shl	eax,4
-+	movdqu	xmm2,[ebx]
-+	movdqu	xmm3,[ecx*1+ebx]
-+	mov	ecx,DWORD [116+esp]
-+	movdqa	xmm4,xmm2
-+	movdqu	xmm5,[eax*1+ebx]
-+	movdqa	xmm6,xmm2
-+	pxor	xmm2,xmm0
-+	pxor	xmm3,xmm2
-+	movdqa	[esp],xmm2
-+	pxor	xmm4,xmm3
-+	movdqa	[16+esp],xmm3
-+	pxor	xmm5,xmm4
-+	movdqa	[32+esp],xmm4
-+	pxor	xmm6,xmm5
-+	movdqa	[48+esp],xmm5
-+	pxor	xmm7,xmm6
-+	movdqa	[64+esp],xmm6
-+	movups	xmm0,[ecx*1+edx-48]
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	movdqu	xmm5,[48+esi]
-+	movdqu	xmm6,[64+esi]
-+	pxor	xmm7,xmm7
-+	movdqa	[96+esp],xmm1
-+	pxor	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm0
-+	movups	xmm1,[ecx*1+edx-32]
-+	pxor	xmm2,[esp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,[32+esp]
-+	pxor	xmm5,[48+esp]
-+	pxor	xmm6,[64+esp]
-+	movups	xmm0,[ecx*1+edx-16]
-+db	102,15,56,222,209
-+db	102,15,56,222,217
-+db	102,15,56,222,225
-+db	102,15,56,222,233
-+db	102,15,56,222,241
-+db	102,15,56,222,249
-+	mov	edi,DWORD [120+esp]
-+	call	L$_aesni_decrypt6_enter
-+	movdqa	xmm0,[64+esp]
-+	pxor	xmm2,[esp]
-+	movdqa	xmm1,[96+esp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,[32+esp]
-+	pxor	xmm5,[48+esp]
-+	pxor	xmm6,xmm0
-+	pxor	xmm1,xmm2
-+	movdqu	[esi*1+edi],xmm2
-+	pxor	xmm1,xmm3
-+	movdqu	[16+esi*1+edi],xmm3
-+	pxor	xmm1,xmm4
-+	movdqu	[32+esi*1+edi],xmm4
-+	pxor	xmm1,xmm5
-+	movdqu	[48+esi*1+edi],xmm5
-+	pxor	xmm1,xmm6
-+	movdqu	[64+esi*1+edi],xmm6
-+	jmp	NEAR L$088done
-+align	16
-+L$089one:
-+	movdqu	xmm7,[ebx]
-+	mov	edx,DWORD [112+esp]
-+	movdqu	xmm2,[esi]
-+	mov	ecx,DWORD [240+edx]
-+	pxor	xmm7,xmm0
-+	pxor	xmm2,xmm7
-+	movdqa	xmm6,xmm1
-+	mov	edi,DWORD [120+esp]
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$093dec1_loop_18:
-+db	102,15,56,222,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$093dec1_loop_18
-+db	102,15,56,223,209
-+	xorps	xmm2,xmm7
-+	movaps	xmm1,xmm6
-+	movdqa	xmm0,xmm7
-+	xorps	xmm1,xmm2
-+	movups	[esi*1+edi],xmm2
-+	jmp	NEAR L$088done
-+align	16
-+L$090two:
-+	lea	ecx,[1+ebp]
-+	mov	edx,DWORD [112+esp]
-+	bsf	ecx,ecx
-+	shl	ecx,4
-+	movdqu	xmm6,[ebx]
-+	movdqu	xmm7,[ecx*1+ebx]
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	mov	ecx,DWORD [240+edx]
-+	movdqa	xmm5,xmm1
-+	pxor	xmm6,xmm0
-+	pxor	xmm7,xmm6
-+	pxor	xmm2,xmm6
-+	pxor	xmm3,xmm7
-+	mov	edi,DWORD [120+esp]
-+	call	__aesni_decrypt2
-+	xorps	xmm2,xmm6
-+	xorps	xmm3,xmm7
-+	movdqa	xmm0,xmm7
-+	xorps	xmm5,xmm2
-+	movups	[esi*1+edi],xmm2
-+	xorps	xmm5,xmm3
-+	movups	[16+esi*1+edi],xmm3
-+	movaps	xmm1,xmm5
-+	jmp	NEAR L$088done
-+align	16
-+L$091three:
-+	lea	ecx,[1+ebp]
-+	mov	edx,DWORD [112+esp]
-+	bsf	ecx,ecx
-+	shl	ecx,4
-+	movdqu	xmm5,[ebx]
-+	movdqu	xmm6,[ecx*1+ebx]
-+	movdqa	xmm7,xmm5
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	mov	ecx,DWORD [240+edx]
-+	movdqa	[96+esp],xmm1
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm5
-+	pxor	xmm7,xmm6
-+	pxor	xmm2,xmm5
-+	pxor	xmm3,xmm6
-+	pxor	xmm4,xmm7
-+	mov	edi,DWORD [120+esp]
-+	call	__aesni_decrypt3
-+	movdqa	xmm1,[96+esp]
-+	xorps	xmm2,xmm5
-+	xorps	xmm3,xmm6
-+	xorps	xmm4,xmm7
-+	movups	[esi*1+edi],xmm2
-+	pxor	xmm1,xmm2
-+	movdqa	xmm0,xmm7
-+	movups	[16+esi*1+edi],xmm3
-+	pxor	xmm1,xmm3
-+	movups	[32+esi*1+edi],xmm4
-+	pxor	xmm1,xmm4
-+	jmp	NEAR L$088done
-+align	16
-+L$092four:
-+	lea	ecx,[1+ebp]
-+	lea	eax,[3+ebp]
-+	bsf	ecx,ecx
-+	bsf	eax,eax
-+	mov	edx,DWORD [112+esp]
-+	shl	ecx,4
-+	shl	eax,4
-+	movdqu	xmm4,[ebx]
-+	movdqu	xmm5,[ecx*1+ebx]
-+	movdqa	xmm6,xmm4
-+	movdqu	xmm7,[eax*1+ebx]
-+	pxor	xmm4,xmm0
-+	movdqu	xmm2,[esi]
-+	pxor	xmm5,xmm4
-+	movdqu	xmm3,[16+esi]
-+	pxor	xmm6,xmm5
-+	movdqa	[esp],xmm4
-+	pxor	xmm7,xmm6
-+	movdqa	[16+esp],xmm5
-+	movdqu	xmm4,[32+esi]
-+	movdqu	xmm5,[48+esi]
-+	mov	ecx,DWORD [240+edx]
-+	movdqa	[96+esp],xmm1
-+	pxor	xmm2,[esp]
-+	pxor	xmm3,[16+esp]
-+	pxor	xmm4,xmm6
-+	pxor	xmm5,xmm7
-+	mov	edi,DWORD [120+esp]
-+	call	__aesni_decrypt4
-+	movdqa	xmm1,[96+esp]
-+	xorps	xmm2,[esp]
-+	xorps	xmm3,[16+esp]
-+	xorps	xmm4,xmm6
-+	movups	[esi*1+edi],xmm2
-+	pxor	xmm1,xmm2
-+	xorps	xmm5,xmm7
-+	movups	[16+esi*1+edi],xmm3
-+	pxor	xmm1,xmm3
-+	movdqa	xmm0,xmm7
-+	movups	[32+esi*1+edi],xmm4
-+	pxor	xmm1,xmm4
-+	movups	[48+esi*1+edi],xmm5
-+	pxor	xmm1,xmm5
-+L$088done:
-+	mov	edx,DWORD [128+esp]
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	movdqa	[esp],xmm2
-+	pxor	xmm4,xmm4
-+	movdqa	[16+esp],xmm2
-+	pxor	xmm5,xmm5
-+	movdqa	[32+esp],xmm2
-+	pxor	xmm6,xmm6
-+	movdqa	[48+esp],xmm2
-+	pxor	xmm7,xmm7
-+	movdqa	[64+esp],xmm2
-+	movdqa	[80+esp],xmm2
-+	movdqa	[96+esp],xmm2
-+	lea	esp,[edx]
-+	mov	ecx,DWORD [40+esp]
-+	mov	ebx,DWORD [48+esp]
-+	movdqu	[ecx],xmm0
-+	pxor	xmm0,xmm0
-+	movdqu	[ebx],xmm1
-+	pxor	xmm1,xmm1
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_aesni_cbc_encrypt
-+align	16
-+_aesni_cbc_encrypt:
-+L$_aesni_cbc_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	esi,DWORD [20+esp]
-+	mov	ebx,esp
-+	mov	edi,DWORD [24+esp]
-+	sub	ebx,24
-+	mov	eax,DWORD [28+esp]
-+	and	ebx,-16
-+	mov	edx,DWORD [32+esp]
-+	mov	ebp,DWORD [36+esp]
-+	test	eax,eax
-+	jz	NEAR L$094cbc_abort
-+	cmp	DWORD [40+esp],0
-+	xchg	ebx,esp
-+	movups	xmm7,[ebp]
-+	mov	ecx,DWORD [240+edx]
-+	mov	ebp,edx
-+	mov	DWORD [16+esp],ebx
-+	mov	ebx,ecx
-+	je	NEAR L$095cbc_decrypt
-+	movaps	xmm2,xmm7
-+	cmp	eax,16
-+	jb	NEAR L$096cbc_enc_tail
-+	sub	eax,16
-+	jmp	NEAR L$097cbc_enc_loop
-+align	16
-+L$097cbc_enc_loop:
-+	movups	xmm7,[esi]
-+	lea	esi,[16+esi]
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	xorps	xmm7,xmm0
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm7
-+L$098enc1_loop_19:
-+db	102,15,56,220,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$098enc1_loop_19
-+db	102,15,56,221,209
-+	mov	ecx,ebx
-+	mov	edx,ebp
-+	movups	[edi],xmm2
-+	lea	edi,[16+edi]
-+	sub	eax,16
-+	jnc	NEAR L$097cbc_enc_loop
-+	add	eax,16
-+	jnz	NEAR L$096cbc_enc_tail
-+	movaps	xmm7,xmm2
-+	pxor	xmm2,xmm2
-+	jmp	NEAR L$099cbc_ret
-+L$096cbc_enc_tail:
-+	mov	ecx,eax
-+dd	2767451785
-+	mov	ecx,16
-+	sub	ecx,eax
-+	xor	eax,eax
-+dd	2868115081
-+	lea	edi,[edi-16]
-+	mov	ecx,ebx
-+	mov	esi,edi
-+	mov	edx,ebp
-+	jmp	NEAR L$097cbc_enc_loop
-+align	16
-+L$095cbc_decrypt:
-+	cmp	eax,80
-+	jbe	NEAR L$100cbc_dec_tail
-+	movaps	[esp],xmm7
-+	sub	eax,80
-+	jmp	NEAR L$101cbc_dec_loop6_enter
-+align	16
-+L$102cbc_dec_loop6:
-+	movaps	[esp],xmm0
-+	movups	[edi],xmm7
-+	lea	edi,[16+edi]
-+L$101cbc_dec_loop6_enter:
-+	movdqu	xmm2,[esi]
-+	movdqu	xmm3,[16+esi]
-+	movdqu	xmm4,[32+esi]
-+	movdqu	xmm5,[48+esi]
-+	movdqu	xmm6,[64+esi]
-+	movdqu	xmm7,[80+esi]
-+	call	__aesni_decrypt6
-+	movups	xmm1,[esi]
-+	movups	xmm0,[16+esi]
-+	xorps	xmm2,[esp]
-+	xorps	xmm3,xmm1
-+	movups	xmm1,[32+esi]
-+	xorps	xmm4,xmm0
-+	movups	xmm0,[48+esi]
-+	xorps	xmm5,xmm1
-+	movups	xmm1,[64+esi]
-+	xorps	xmm6,xmm0
-+	movups	xmm0,[80+esi]
-+	xorps	xmm7,xmm1
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	lea	esi,[96+esi]
-+	movups	[32+edi],xmm4
-+	mov	ecx,ebx
-+	movups	[48+edi],xmm5
-+	mov	edx,ebp
-+	movups	[64+edi],xmm6
-+	lea	edi,[80+edi]
-+	sub	eax,96
-+	ja	NEAR L$102cbc_dec_loop6
-+	movaps	xmm2,xmm7
-+	movaps	xmm7,xmm0
-+	add	eax,80
-+	jle	NEAR L$103cbc_dec_clear_tail_collected
-+	movups	[edi],xmm2
-+	lea	edi,[16+edi]
-+L$100cbc_dec_tail:
-+	movups	xmm2,[esi]
-+	movaps	xmm6,xmm2
-+	cmp	eax,16
-+	jbe	NEAR L$104cbc_dec_one
-+	movups	xmm3,[16+esi]
-+	movaps	xmm5,xmm3
-+	cmp	eax,32
-+	jbe	NEAR L$105cbc_dec_two
-+	movups	xmm4,[32+esi]
-+	cmp	eax,48
-+	jbe	NEAR L$106cbc_dec_three
-+	movups	xmm5,[48+esi]
-+	cmp	eax,64
-+	jbe	NEAR L$107cbc_dec_four
-+	movups	xmm6,[64+esi]
-+	movaps	[esp],xmm7
-+	movups	xmm2,[esi]
-+	xorps	xmm7,xmm7
-+	call	__aesni_decrypt6
-+	movups	xmm1,[esi]
-+	movups	xmm0,[16+esi]
-+	xorps	xmm2,[esp]
-+	xorps	xmm3,xmm1
-+	movups	xmm1,[32+esi]
-+	xorps	xmm4,xmm0
-+	movups	xmm0,[48+esi]
-+	xorps	xmm5,xmm1
-+	movups	xmm7,[64+esi]
-+	xorps	xmm6,xmm0
-+	movups	[edi],xmm2
-+	movups	[16+edi],xmm3
-+	pxor	xmm3,xmm3
-+	movups	[32+edi],xmm4
-+	pxor	xmm4,xmm4
-+	movups	[48+edi],xmm5
-+	pxor	xmm5,xmm5
-+	lea	edi,[64+edi]
-+	movaps	xmm2,xmm6
-+	pxor	xmm6,xmm6
-+	sub	eax,80
-+	jmp	NEAR L$108cbc_dec_tail_collected
-+align	16
-+L$104cbc_dec_one:
-+	movups	xmm0,[edx]
-+	movups	xmm1,[16+edx]
-+	lea	edx,[32+edx]
-+	xorps	xmm2,xmm0
-+L$109dec1_loop_20:
-+db	102,15,56,222,209
-+	dec	ecx
-+	movups	xmm1,[edx]
-+	lea	edx,[16+edx]
-+	jnz	NEAR L$109dec1_loop_20
-+db	102,15,56,223,209
-+	xorps	xmm2,xmm7
-+	movaps	xmm7,xmm6
-+	sub	eax,16
-+	jmp	NEAR L$108cbc_dec_tail_collected
-+align	16
-+L$105cbc_dec_two:
-+	call	__aesni_decrypt2
-+	xorps	xmm2,xmm7
-+	xorps	xmm3,xmm6
-+	movups	[edi],xmm2
-+	movaps	xmm2,xmm3
-+	pxor	xmm3,xmm3
-+	lea	edi,[16+edi]
-+	movaps	xmm7,xmm5
-+	sub	eax,32
-+	jmp	NEAR L$108cbc_dec_tail_collected
-+align	16
-+L$106cbc_dec_three:
-+	call	__aesni_decrypt3
-+	xorps	xmm2,xmm7
-+	xorps	xmm3,xmm6
-+	xorps	xmm4,xmm5
-+	movups	[edi],xmm2
-+	movaps	xmm2,xmm4
-+	pxor	xmm4,xmm4
-+	movups	[16+edi],xmm3
-+	pxor	xmm3,xmm3
-+	lea	edi,[32+edi]
-+	movups	xmm7,[32+esi]
-+	sub	eax,48
-+	jmp	NEAR L$108cbc_dec_tail_collected
-+align	16
-+L$107cbc_dec_four:
-+	call	__aesni_decrypt4
-+	movups	xmm1,[16+esi]
-+	movups	xmm0,[32+esi]
-+	xorps	xmm2,xmm7
-+	movups	xmm7,[48+esi]
-+	xorps	xmm3,xmm6
-+	movups	[edi],xmm2
-+	xorps	xmm4,xmm1
-+	movups	[16+edi],xmm3
-+	pxor	xmm3,xmm3
-+	xorps	xmm5,xmm0
-+	movups	[32+edi],xmm4
-+	pxor	xmm4,xmm4
-+	lea	edi,[48+edi]
-+	movaps	xmm2,xmm5
-+	pxor	xmm5,xmm5
-+	sub	eax,64
-+	jmp	NEAR L$108cbc_dec_tail_collected
-+align	16
-+L$103cbc_dec_clear_tail_collected:
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	pxor	xmm6,xmm6
-+L$108cbc_dec_tail_collected:
-+	and	eax,15
-+	jnz	NEAR L$110cbc_dec_tail_partial
-+	movups	[edi],xmm2
-+	pxor	xmm0,xmm0
-+	jmp	NEAR L$099cbc_ret
-+align	16
-+L$110cbc_dec_tail_partial:
-+	movaps	[esp],xmm2
-+	pxor	xmm0,xmm0
-+	mov	ecx,16
-+	mov	esi,esp
-+	sub	ecx,eax
-+dd	2767451785
-+	movdqa	[esp],xmm2
-+L$099cbc_ret:
-+	mov	esp,DWORD [16+esp]
-+	mov	ebp,DWORD [36+esp]
-+	pxor	xmm2,xmm2
-+	pxor	xmm1,xmm1
-+	movups	[ebp],xmm7
-+	pxor	xmm7,xmm7
-+L$094cbc_abort:
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+align	16
-+__aesni_set_encrypt_key:
-+	push	ebp
-+	push	ebx
-+	test	eax,eax
-+	jz	NEAR L$111bad_pointer
-+	test	edx,edx
-+	jz	NEAR L$111bad_pointer
-+	call	L$112pic
-+L$112pic:
-+	pop	ebx
-+	lea	ebx,[(L$key_const-L$112pic)+ebx]
-+	lea	ebp,[__gnutls_x86_cpuid_s]
-+	movups	xmm0,[eax]
-+	xorps	xmm4,xmm4
-+	mov	ebp,DWORD [4+ebp]
-+	lea	edx,[16+edx]
-+	and	ebp,268437504
-+	cmp	ecx,256
-+	je	NEAR L$11314rounds
-+	cmp	ecx,192
-+	je	NEAR L$11412rounds
-+	cmp	ecx,128
-+	jne	NEAR L$115bad_keybits
-+align	16
-+L$11610rounds:
-+	cmp	ebp,268435456
-+	je	NEAR L$11710rounds_alt
-+	mov	ecx,9
-+	movups	[edx-16],xmm0
-+db	102,15,58,223,200,1
-+	call	L$118key_128_cold
-+db	102,15,58,223,200,2
-+	call	L$119key_128
-+db	102,15,58,223,200,4
-+	call	L$119key_128
-+db	102,15,58,223,200,8
-+	call	L$119key_128
-+db	102,15,58,223,200,16
-+	call	L$119key_128
-+db	102,15,58,223,200,32
-+	call	L$119key_128
-+db	102,15,58,223,200,64
-+	call	L$119key_128
-+db	102,15,58,223,200,128
-+	call	L$119key_128
-+db	102,15,58,223,200,27
-+	call	L$119key_128
-+db	102,15,58,223,200,54
-+	call	L$119key_128
-+	movups	[edx],xmm0
-+	mov	DWORD [80+edx],ecx
-+	jmp	NEAR L$120good_key
-+align	16
-+L$119key_128:
-+	movups	[edx],xmm0
-+	lea	edx,[16+edx]
-+L$118key_128_cold:
-+	shufps	xmm4,xmm0,16
-+	xorps	xmm0,xmm4
-+	shufps	xmm4,xmm0,140
-+	xorps	xmm0,xmm4
-+	shufps	xmm1,xmm1,255
-+	xorps	xmm0,xmm1
-+	ret
-+align	16
-+L$11710rounds_alt:
-+	movdqa	xmm5,[ebx]
-+	mov	ecx,8
-+	movdqa	xmm4,[32+ebx]
-+	movdqa	xmm2,xmm0
-+	movdqu	[edx-16],xmm0
-+L$121loop_key128:
-+db	102,15,56,0,197
-+db	102,15,56,221,196
-+	pslld	xmm4,1
-+	lea	edx,[16+edx]
-+	movdqa	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm2,xmm3
-+	pxor	xmm0,xmm2
-+	movdqu	[edx-16],xmm0
-+	movdqa	xmm2,xmm0
-+	dec	ecx
-+	jnz	NEAR L$121loop_key128
-+	movdqa	xmm4,[48+ebx]
-+db	102,15,56,0,197
-+db	102,15,56,221,196
-+	pslld	xmm4,1
-+	movdqa	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm2,xmm3
-+	pxor	xmm0,xmm2
-+	movdqu	[edx],xmm0
-+	movdqa	xmm2,xmm0
-+db	102,15,56,0,197
-+db	102,15,56,221,196
-+	movdqa	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm2,xmm3
-+	pxor	xmm0,xmm2
-+	movdqu	[16+edx],xmm0
-+	mov	ecx,9
-+	mov	DWORD [96+edx],ecx
-+	jmp	NEAR L$120good_key
-+align	16
-+L$11412rounds:
-+	movq	xmm2,[16+eax]
-+	cmp	ebp,268435456
-+	je	NEAR L$12212rounds_alt
-+	mov	ecx,11
-+	movups	[edx-16],xmm0
-+db	102,15,58,223,202,1
-+	call	L$123key_192a_cold
-+db	102,15,58,223,202,2
-+	call	L$124key_192b
-+db	102,15,58,223,202,4
-+	call	L$125key_192a
-+db	102,15,58,223,202,8
-+	call	L$124key_192b
-+db	102,15,58,223,202,16
-+	call	L$125key_192a
-+db	102,15,58,223,202,32
-+	call	L$124key_192b
-+db	102,15,58,223,202,64
-+	call	L$125key_192a
-+db	102,15,58,223,202,128
-+	call	L$124key_192b
-+	movups	[edx],xmm0
-+	mov	DWORD [48+edx],ecx
-+	jmp	NEAR L$120good_key
-+align	16
-+L$125key_192a:
-+	movups	[edx],xmm0
-+	lea	edx,[16+edx]
-+align	16
-+L$123key_192a_cold:
-+	movaps	xmm5,xmm2
-+L$126key_192b_warm:
-+	shufps	xmm4,xmm0,16
-+	movdqa	xmm3,xmm2
-+	xorps	xmm0,xmm4
-+	shufps	xmm4,xmm0,140
-+	pslldq	xmm3,4
-+	xorps	xmm0,xmm4
-+	pshufd	xmm1,xmm1,85
-+	pxor	xmm2,xmm3
-+	pxor	xmm0,xmm1
-+	pshufd	xmm3,xmm0,255
-+	pxor	xmm2,xmm3
-+	ret
-+align	16
-+L$124key_192b:
-+	movaps	xmm3,xmm0
-+	shufps	xmm5,xmm0,68
-+	movups	[edx],xmm5
-+	shufps	xmm3,xmm2,78
-+	movups	[16+edx],xmm3
-+	lea	edx,[32+edx]
-+	jmp	NEAR L$126key_192b_warm
-+align	16
-+L$12212rounds_alt:
-+	movdqa	xmm5,[16+ebx]
-+	movdqa	xmm4,[32+ebx]
-+	mov	ecx,8
-+	movdqu	[edx-16],xmm0
-+L$127loop_key192:
-+	movq	[edx],xmm2
-+	movdqa	xmm1,xmm2
-+db	102,15,56,0,213
-+db	102,15,56,221,212
-+	pslld	xmm4,1
-+	lea	edx,[24+edx]
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm0,xmm3
-+	pshufd	xmm3,xmm0,255
-+	pxor	xmm3,xmm1
-+	pslldq	xmm1,4
-+	pxor	xmm3,xmm1
-+	pxor	xmm0,xmm2
-+	pxor	xmm2,xmm3
-+	movdqu	[edx-16],xmm0
-+	dec	ecx
-+	jnz	NEAR L$127loop_key192
-+	mov	ecx,11
-+	mov	DWORD [32+edx],ecx
-+	jmp	NEAR L$120good_key
-+align	16
-+L$11314rounds:
-+	movups	xmm2,[16+eax]
-+	lea	edx,[16+edx]
-+	cmp	ebp,268435456
-+	je	NEAR L$12814rounds_alt
-+	mov	ecx,13
-+	movups	[edx-32],xmm0
-+	movups	[edx-16],xmm2
-+db	102,15,58,223,202,1
-+	call	L$129key_256a_cold
-+db	102,15,58,223,200,1
-+	call	L$130key_256b
-+db	102,15,58,223,202,2
-+	call	L$131key_256a
-+db	102,15,58,223,200,2
-+	call	L$130key_256b
-+db	102,15,58,223,202,4
-+	call	L$131key_256a
-+db	102,15,58,223,200,4
-+	call	L$130key_256b
-+db	102,15,58,223,202,8
-+	call	L$131key_256a
-+db	102,15,58,223,200,8
-+	call	L$130key_256b
-+db	102,15,58,223,202,16
-+	call	L$131key_256a
-+db	102,15,58,223,200,16
-+	call	L$130key_256b
-+db	102,15,58,223,202,32
-+	call	L$131key_256a
-+db	102,15,58,223,200,32
-+	call	L$130key_256b
-+db	102,15,58,223,202,64
-+	call	L$131key_256a
-+	movups	[edx],xmm0
-+	mov	DWORD [16+edx],ecx
-+	xor	eax,eax
-+	jmp	NEAR L$120good_key
-+align	16
-+L$131key_256a:
-+	movups	[edx],xmm2
-+	lea	edx,[16+edx]
-+L$129key_256a_cold:
-+	shufps	xmm4,xmm0,16
-+	xorps	xmm0,xmm4
-+	shufps	xmm4,xmm0,140
-+	xorps	xmm0,xmm4
-+	shufps	xmm1,xmm1,255
-+	xorps	xmm0,xmm1
-+	ret
-+align	16
-+L$130key_256b:
-+	movups	[edx],xmm0
-+	lea	edx,[16+edx]
-+	shufps	xmm4,xmm2,16
-+	xorps	xmm2,xmm4
-+	shufps	xmm4,xmm2,140
-+	xorps	xmm2,xmm4
-+	shufps	xmm1,xmm1,170
-+	xorps	xmm2,xmm1
-+	ret
-+align	16
-+L$12814rounds_alt:
-+	movdqa	xmm5,[ebx]
-+	movdqa	xmm4,[32+ebx]
-+	mov	ecx,7
-+	movdqu	[edx-32],xmm0
-+	movdqa	xmm1,xmm2
-+	movdqu	[edx-16],xmm2
-+L$132loop_key256:
-+db	102,15,56,0,213
-+db	102,15,56,221,212
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm0,xmm3
-+	pslld	xmm4,1
-+	pxor	xmm0,xmm2
-+	movdqu	[edx],xmm0
-+	dec	ecx
-+	jz	NEAR L$133done_key256
-+	pshufd	xmm2,xmm0,255
-+	pxor	xmm3,xmm3
-+db	102,15,56,221,211
-+	movdqa	xmm3,xmm1
-+	pslldq	xmm1,4
-+	pxor	xmm3,xmm1
-+	pslldq	xmm1,4
-+	pxor	xmm3,xmm1
-+	pslldq	xmm1,4
-+	pxor	xmm1,xmm3
-+	pxor	xmm2,xmm1
-+	movdqu	[16+edx],xmm2
-+	lea	edx,[32+edx]
-+	movdqa	xmm1,xmm2
-+	jmp	NEAR L$132loop_key256
-+L$133done_key256:
-+	mov	ecx,13
-+	mov	DWORD [16+edx],ecx
-+L$120good_key:
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	xor	eax,eax
-+	pop	ebx
-+	pop	ebp
-+	ret
-+align	4
-+L$111bad_pointer:
-+	mov	eax,-1
-+	pop	ebx
-+	pop	ebp
-+	ret
-+align	4
-+L$115bad_keybits:
-+	pxor	xmm0,xmm0
-+	mov	eax,-2
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_aesni_set_encrypt_key
-+align	16
-+_aesni_set_encrypt_key:
-+L$_aesni_set_encrypt_key_begin:
-+	mov	eax,DWORD [4+esp]
-+	mov	ecx,DWORD [8+esp]
-+	mov	edx,DWORD [12+esp]
-+	call	__aesni_set_encrypt_key
-+	ret
-+global	_aesni_set_decrypt_key
-+align	16
-+_aesni_set_decrypt_key:
-+L$_aesni_set_decrypt_key_begin:
-+	mov	eax,DWORD [4+esp]
-+	mov	ecx,DWORD [8+esp]
-+	mov	edx,DWORD [12+esp]
-+	call	__aesni_set_encrypt_key
-+	mov	edx,DWORD [12+esp]
-+	shl	ecx,4
-+	test	eax,eax
-+	jnz	NEAR L$134dec_key_ret
-+	lea	eax,[16+ecx*1+edx]
-+	movups	xmm0,[edx]
-+	movups	xmm1,[eax]
-+	movups	[eax],xmm0
-+	movups	[edx],xmm1
-+	lea	edx,[16+edx]
-+	lea	eax,[eax-16]
-+L$135dec_key_inverse:
-+	movups	xmm0,[edx]
-+	movups	xmm1,[eax]
-+db	102,15,56,219,192
-+db	102,15,56,219,201
-+	lea	edx,[16+edx]
-+	lea	eax,[eax-16]
-+	movups	[16+eax],xmm0
-+	movups	[edx-16],xmm1
-+	cmp	eax,edx
-+	ja	NEAR L$135dec_key_inverse
-+	movups	xmm0,[edx]
-+db	102,15,56,219,192
-+	movups	[edx],xmm0
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	xor	eax,eax
-+L$134dec_key_ret:
-+	ret
-+align	64
-+L$key_const:
-+dd	202313229,202313229,202313229,202313229
-+dd	67569157,67569157,67569157,67569157
-+dd	1,1,1,1
-+dd	27,27,27,27
-+db	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
-+db	83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
-+db	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
-+db	115,108,46,111,114,103,62,0
-+segment	.bss
-+common	__gnutls_x86_cpuid_s 16
-diff --git a/SMP/lib/accelerated/x86/coff/aesni-x86_64.asm b/SMP/lib/accelerated/x86/coff/aesni-x86_64.asm
-new file mode 100644
-index 0000000..021b735
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/aesni-x86_64.asm
-@@ -0,0 +1,4994 @@
-+default	rel
-+%define XMMWORD
-+%define YMMWORD
-+%define ZMMWORD
-+section	.text code align=64
-+
-+EXTERN	_gnutls_x86_cpuid_s
-+global	aesni_encrypt
-+
-+ALIGN	16
-+aesni_encrypt:
-+	movups	xmm2,XMMWORD[rcx]
-+	mov	eax,DWORD[240+r8]
-+	movups	xmm0,XMMWORD[r8]
-+	movups	xmm1,XMMWORD[16+r8]
-+	lea	r8,[32+r8]
-+	xorps	xmm2,xmm0
-+$L$oop_enc1_1:
-+DB	102,15,56,220,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[r8]
-+	lea	r8,[16+r8]
-+	jnz	NEAR $L$oop_enc1_1
-+DB	102,15,56,221,209
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	movups	XMMWORD[rdx],xmm2
-+	pxor	xmm2,xmm2
-+	DB	0F3h,0C3h		;repret
-+
-+
-+global	aesni_decrypt
-+
-+ALIGN	16
-+aesni_decrypt:
-+	movups	xmm2,XMMWORD[rcx]
-+	mov	eax,DWORD[240+r8]
-+	movups	xmm0,XMMWORD[r8]
-+	movups	xmm1,XMMWORD[16+r8]
-+	lea	r8,[32+r8]
-+	xorps	xmm2,xmm0
-+$L$oop_dec1_2:
-+DB	102,15,56,222,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[r8]
-+	lea	r8,[16+r8]
-+	jnz	NEAR $L$oop_dec1_2
-+DB	102,15,56,223,209
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	movups	XMMWORD[rdx],xmm2
-+	pxor	xmm2,xmm2
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+_aesni_encrypt2:
-+	movups	xmm0,XMMWORD[rcx]
-+	shl	eax,4
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm2,xmm0
-+	xorps	xmm3,xmm0
-+	movups	xmm0,XMMWORD[32+rcx]
-+	lea	rcx,[32+rax*1+rcx]
-+	neg	rax
-+	add	rax,16
-+
-+$L$enc_loop2:
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$enc_loop2
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,221,208
-+DB	102,15,56,221,216
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+_aesni_decrypt2:
-+	movups	xmm0,XMMWORD[rcx]
-+	shl	eax,4
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm2,xmm0
-+	xorps	xmm3,xmm0
-+	movups	xmm0,XMMWORD[32+rcx]
-+	lea	rcx,[32+rax*1+rcx]
-+	neg	rax
-+	add	rax,16
-+
-+$L$dec_loop2:
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$dec_loop2
-+
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,223,208
-+DB	102,15,56,223,216
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+_aesni_encrypt3:
-+	movups	xmm0,XMMWORD[rcx]
-+	shl	eax,4
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm2,xmm0
-+	xorps	xmm3,xmm0
-+	xorps	xmm4,xmm0
-+	movups	xmm0,XMMWORD[32+rcx]
-+	lea	rcx,[32+rax*1+rcx]
-+	neg	rax
-+	add	rax,16
-+
-+$L$enc_loop3:
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$enc_loop3
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,221,208
-+DB	102,15,56,221,216
-+DB	102,15,56,221,224
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+_aesni_decrypt3:
-+	movups	xmm0,XMMWORD[rcx]
-+	shl	eax,4
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm2,xmm0
-+	xorps	xmm3,xmm0
-+	xorps	xmm4,xmm0
-+	movups	xmm0,XMMWORD[32+rcx]
-+	lea	rcx,[32+rax*1+rcx]
-+	neg	rax
-+	add	rax,16
-+
-+$L$dec_loop3:
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$dec_loop3
-+
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,223,208
-+DB	102,15,56,223,216
-+DB	102,15,56,223,224
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+_aesni_encrypt4:
-+	movups	xmm0,XMMWORD[rcx]
-+	shl	eax,4
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm2,xmm0
-+	xorps	xmm3,xmm0
-+	xorps	xmm4,xmm0
-+	xorps	xmm5,xmm0
-+	movups	xmm0,XMMWORD[32+rcx]
-+	lea	rcx,[32+rax*1+rcx]
-+	neg	rax
-+DB	0x0f,0x1f,0x00
-+	add	rax,16
-+
-+$L$enc_loop4:
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$enc_loop4
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,221,208
-+DB	102,15,56,221,216
-+DB	102,15,56,221,224
-+DB	102,15,56,221,232
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+_aesni_decrypt4:
-+	movups	xmm0,XMMWORD[rcx]
-+	shl	eax,4
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm2,xmm0
-+	xorps	xmm3,xmm0
-+	xorps	xmm4,xmm0
-+	xorps	xmm5,xmm0
-+	movups	xmm0,XMMWORD[32+rcx]
-+	lea	rcx,[32+rax*1+rcx]
-+	neg	rax
-+DB	0x0f,0x1f,0x00
-+	add	rax,16
-+
-+$L$dec_loop4:
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$dec_loop4
-+
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,223,208
-+DB	102,15,56,223,216
-+DB	102,15,56,223,224
-+DB	102,15,56,223,232
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+_aesni_encrypt6:
-+	movups	xmm0,XMMWORD[rcx]
-+	shl	eax,4
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+DB	102,15,56,220,209
-+	lea	rcx,[32+rax*1+rcx]
-+	neg	rax
-+DB	102,15,56,220,217
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm0
-+DB	102,15,56,220,225
-+	pxor	xmm7,xmm0
-+	movups	xmm0,XMMWORD[rax*1+rcx]
-+	add	rax,16
-+	jmp	NEAR $L$enc_loop6_enter
-+ALIGN	16
-+$L$enc_loop6:
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+$L$enc_loop6_enter:
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$enc_loop6
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+DB	102,15,56,221,208
-+DB	102,15,56,221,216
-+DB	102,15,56,221,224
-+DB	102,15,56,221,232
-+DB	102,15,56,221,240
-+DB	102,15,56,221,248
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+_aesni_decrypt6:
-+	movups	xmm0,XMMWORD[rcx]
-+	shl	eax,4
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm2,xmm0
-+	pxor	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+DB	102,15,56,222,209
-+	lea	rcx,[32+rax*1+rcx]
-+	neg	rax
-+DB	102,15,56,222,217
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm0
-+DB	102,15,56,222,225
-+	pxor	xmm7,xmm0
-+	movups	xmm0,XMMWORD[rax*1+rcx]
-+	add	rax,16
-+	jmp	NEAR $L$dec_loop6_enter
-+ALIGN	16
-+$L$dec_loop6:
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+$L$dec_loop6_enter:
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$dec_loop6
-+
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+DB	102,15,56,223,208
-+DB	102,15,56,223,216
-+DB	102,15,56,223,224
-+DB	102,15,56,223,232
-+DB	102,15,56,223,240
-+DB	102,15,56,223,248
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+_aesni_encrypt8:
-+	movups	xmm0,XMMWORD[rcx]
-+	shl	eax,4
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm2,xmm0
-+	xorps	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm0
-+	lea	rcx,[32+rax*1+rcx]
-+	neg	rax
-+DB	102,15,56,220,209
-+	pxor	xmm7,xmm0
-+	pxor	xmm8,xmm0
-+DB	102,15,56,220,217
-+	pxor	xmm9,xmm0
-+	movups	xmm0,XMMWORD[rax*1+rcx]
-+	add	rax,16
-+	jmp	NEAR $L$enc_loop8_inner
-+ALIGN	16
-+$L$enc_loop8:
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+$L$enc_loop8_inner:
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+DB	102,68,15,56,220,193
-+DB	102,68,15,56,220,201
-+$L$enc_loop8_enter:
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+DB	102,68,15,56,220,192
-+DB	102,68,15,56,220,200
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$enc_loop8
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+DB	102,68,15,56,220,193
-+DB	102,68,15,56,220,201
-+DB	102,15,56,221,208
-+DB	102,15,56,221,216
-+DB	102,15,56,221,224
-+DB	102,15,56,221,232
-+DB	102,15,56,221,240
-+DB	102,15,56,221,248
-+DB	102,68,15,56,221,192
-+DB	102,68,15,56,221,200
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+_aesni_decrypt8:
-+	movups	xmm0,XMMWORD[rcx]
-+	shl	eax,4
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm2,xmm0
-+	xorps	xmm3,xmm0
-+	pxor	xmm4,xmm0
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm0
-+	lea	rcx,[32+rax*1+rcx]
-+	neg	rax
-+DB	102,15,56,222,209
-+	pxor	xmm7,xmm0
-+	pxor	xmm8,xmm0
-+DB	102,15,56,222,217
-+	pxor	xmm9,xmm0
-+	movups	xmm0,XMMWORD[rax*1+rcx]
-+	add	rax,16
-+	jmp	NEAR $L$dec_loop8_inner
-+ALIGN	16
-+$L$dec_loop8:
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+$L$dec_loop8_inner:
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+DB	102,68,15,56,222,193
-+DB	102,68,15,56,222,201
-+$L$dec_loop8_enter:
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+DB	102,68,15,56,222,192
-+DB	102,68,15,56,222,200
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$dec_loop8
-+
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+DB	102,68,15,56,222,193
-+DB	102,68,15,56,222,201
-+DB	102,15,56,223,208
-+DB	102,15,56,223,216
-+DB	102,15,56,223,224
-+DB	102,15,56,223,232
-+DB	102,15,56,223,240
-+DB	102,15,56,223,248
-+DB	102,68,15,56,223,192
-+DB	102,68,15,56,223,200
-+	DB	0F3h,0C3h		;repret
-+
-+global	aesni_ecb_encrypt
-+
-+ALIGN	16
-+aesni_ecb_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_ecb_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+
-+
-+	lea	rsp,[((-88))+rsp]
-+	movaps	XMMWORD[rsp],xmm6
-+	movaps	XMMWORD[16+rsp],xmm7
-+	movaps	XMMWORD[32+rsp],xmm8
-+	movaps	XMMWORD[48+rsp],xmm9
-+$L$ecb_enc_body:
-+	and	rdx,-16
-+	jz	NEAR $L$ecb_ret
-+
-+	mov	eax,DWORD[240+rcx]
-+	movups	xmm0,XMMWORD[rcx]
-+	mov	r11,rcx
-+	mov	r10d,eax
-+	test	r8d,r8d
-+	jz	NEAR $L$ecb_decrypt
-+
-+	cmp	rdx,0x80
-+	jb	NEAR $L$ecb_enc_tail
-+
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	movdqu	xmm7,XMMWORD[80+rdi]
-+	movdqu	xmm8,XMMWORD[96+rdi]
-+	movdqu	xmm9,XMMWORD[112+rdi]
-+	lea	rdi,[128+rdi]
-+	sub	rdx,0x80
-+	jmp	NEAR $L$ecb_enc_loop8_enter
-+ALIGN	16
-+$L$ecb_enc_loop8:
-+	movups	XMMWORD[rsi],xmm2
-+	mov	rcx,r11
-+	movdqu	xmm2,XMMWORD[rdi]
-+	mov	eax,r10d
-+	movups	XMMWORD[16+rsi],xmm3
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	movups	XMMWORD[32+rsi],xmm4
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	movups	XMMWORD[48+rsi],xmm5
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	movups	XMMWORD[64+rsi],xmm6
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	movups	XMMWORD[80+rsi],xmm7
-+	movdqu	xmm7,XMMWORD[80+rdi]
-+	movups	XMMWORD[96+rsi],xmm8
-+	movdqu	xmm8,XMMWORD[96+rdi]
-+	movups	XMMWORD[112+rsi],xmm9
-+	lea	rsi,[128+rsi]
-+	movdqu	xmm9,XMMWORD[112+rdi]
-+	lea	rdi,[128+rdi]
-+$L$ecb_enc_loop8_enter:
-+
-+	call	_aesni_encrypt8
-+
-+	sub	rdx,0x80
-+	jnc	NEAR $L$ecb_enc_loop8
-+
-+	movups	XMMWORD[rsi],xmm2
-+	mov	rcx,r11
-+	movups	XMMWORD[16+rsi],xmm3
-+	mov	eax,r10d
-+	movups	XMMWORD[32+rsi],xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	movups	XMMWORD[80+rsi],xmm7
-+	movups	XMMWORD[96+rsi],xmm8
-+	movups	XMMWORD[112+rsi],xmm9
-+	lea	rsi,[128+rsi]
-+	add	rdx,0x80
-+	jz	NEAR $L$ecb_ret
-+
-+$L$ecb_enc_tail:
-+	movups	xmm2,XMMWORD[rdi]
-+	cmp	rdx,0x20
-+	jb	NEAR $L$ecb_enc_one
-+	movups	xmm3,XMMWORD[16+rdi]
-+	je	NEAR $L$ecb_enc_two
-+	movups	xmm4,XMMWORD[32+rdi]
-+	cmp	rdx,0x40
-+	jb	NEAR $L$ecb_enc_three
-+	movups	xmm5,XMMWORD[48+rdi]
-+	je	NEAR $L$ecb_enc_four
-+	movups	xmm6,XMMWORD[64+rdi]
-+	cmp	rdx,0x60
-+	jb	NEAR $L$ecb_enc_five
-+	movups	xmm7,XMMWORD[80+rdi]
-+	je	NEAR $L$ecb_enc_six
-+	movdqu	xmm8,XMMWORD[96+rdi]
-+	xorps	xmm9,xmm9
-+	call	_aesni_encrypt8
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	movups	XMMWORD[80+rsi],xmm7
-+	movups	XMMWORD[96+rsi],xmm8
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_enc_one:
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_enc1_3:
-+DB	102,15,56,220,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_enc1_3
-+DB	102,15,56,221,209
-+	movups	XMMWORD[rsi],xmm2
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_enc_two:
-+	call	_aesni_encrypt2
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_enc_three:
-+	call	_aesni_encrypt3
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_enc_four:
-+	call	_aesni_encrypt4
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_enc_five:
-+	xorps	xmm7,xmm7
-+	call	_aesni_encrypt6
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_enc_six:
-+	call	_aesni_encrypt6
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	movups	XMMWORD[80+rsi],xmm7
-+	jmp	NEAR $L$ecb_ret
-+
-+ALIGN	16
-+$L$ecb_decrypt:
-+	cmp	rdx,0x80
-+	jb	NEAR $L$ecb_dec_tail
-+
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	movdqu	xmm7,XMMWORD[80+rdi]
-+	movdqu	xmm8,XMMWORD[96+rdi]
-+	movdqu	xmm9,XMMWORD[112+rdi]
-+	lea	rdi,[128+rdi]
-+	sub	rdx,0x80
-+	jmp	NEAR $L$ecb_dec_loop8_enter
-+ALIGN	16
-+$L$ecb_dec_loop8:
-+	movups	XMMWORD[rsi],xmm2
-+	mov	rcx,r11
-+	movdqu	xmm2,XMMWORD[rdi]
-+	mov	eax,r10d
-+	movups	XMMWORD[16+rsi],xmm3
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	movups	XMMWORD[32+rsi],xmm4
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	movups	XMMWORD[48+rsi],xmm5
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	movups	XMMWORD[64+rsi],xmm6
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	movups	XMMWORD[80+rsi],xmm7
-+	movdqu	xmm7,XMMWORD[80+rdi]
-+	movups	XMMWORD[96+rsi],xmm8
-+	movdqu	xmm8,XMMWORD[96+rdi]
-+	movups	XMMWORD[112+rsi],xmm9
-+	lea	rsi,[128+rsi]
-+	movdqu	xmm9,XMMWORD[112+rdi]
-+	lea	rdi,[128+rdi]
-+$L$ecb_dec_loop8_enter:
-+
-+	call	_aesni_decrypt8
-+
-+	movups	xmm0,XMMWORD[r11]
-+	sub	rdx,0x80
-+	jnc	NEAR $L$ecb_dec_loop8
-+
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm2,xmm2
-+	mov	rcx,r11
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	mov	eax,r10d
-+	movups	XMMWORD[32+rsi],xmm4
-+	pxor	xmm4,xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	pxor	xmm5,xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	pxor	xmm6,xmm6
-+	movups	XMMWORD[80+rsi],xmm7
-+	pxor	xmm7,xmm7
-+	movups	XMMWORD[96+rsi],xmm8
-+	pxor	xmm8,xmm8
-+	movups	XMMWORD[112+rsi],xmm9
-+	pxor	xmm9,xmm9
-+	lea	rsi,[128+rsi]
-+	add	rdx,0x80
-+	jz	NEAR $L$ecb_ret
-+
-+$L$ecb_dec_tail:
-+	movups	xmm2,XMMWORD[rdi]
-+	cmp	rdx,0x20
-+	jb	NEAR $L$ecb_dec_one
-+	movups	xmm3,XMMWORD[16+rdi]
-+	je	NEAR $L$ecb_dec_two
-+	movups	xmm4,XMMWORD[32+rdi]
-+	cmp	rdx,0x40
-+	jb	NEAR $L$ecb_dec_three
-+	movups	xmm5,XMMWORD[48+rdi]
-+	je	NEAR $L$ecb_dec_four
-+	movups	xmm6,XMMWORD[64+rdi]
-+	cmp	rdx,0x60
-+	jb	NEAR $L$ecb_dec_five
-+	movups	xmm7,XMMWORD[80+rdi]
-+	je	NEAR $L$ecb_dec_six
-+	movups	xmm8,XMMWORD[96+rdi]
-+	movups	xmm0,XMMWORD[rcx]
-+	xorps	xmm9,xmm9
-+	call	_aesni_decrypt8
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm2,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	pxor	xmm4,xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	pxor	xmm5,xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	pxor	xmm6,xmm6
-+	movups	XMMWORD[80+rsi],xmm7
-+	pxor	xmm7,xmm7
-+	movups	XMMWORD[96+rsi],xmm8
-+	pxor	xmm8,xmm8
-+	pxor	xmm9,xmm9
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_dec_one:
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_dec1_4:
-+DB	102,15,56,222,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_dec1_4
-+DB	102,15,56,223,209
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm2,xmm2
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_dec_two:
-+	call	_aesni_decrypt2
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm2,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_dec_three:
-+	call	_aesni_decrypt3
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm2,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	pxor	xmm4,xmm4
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_dec_four:
-+	call	_aesni_decrypt4
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm2,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	pxor	xmm4,xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	pxor	xmm5,xmm5
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_dec_five:
-+	xorps	xmm7,xmm7
-+	call	_aesni_decrypt6
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm2,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	pxor	xmm4,xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	pxor	xmm5,xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	pxor	xmm6,xmm6
-+	pxor	xmm7,xmm7
-+	jmp	NEAR $L$ecb_ret
-+ALIGN	16
-+$L$ecb_dec_six:
-+	call	_aesni_decrypt6
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm2,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	pxor	xmm4,xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	pxor	xmm5,xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	pxor	xmm6,xmm6
-+	movups	XMMWORD[80+rsi],xmm7
-+	pxor	xmm7,xmm7
-+
-+$L$ecb_ret:
-+	xorps	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	movaps	xmm6,XMMWORD[rsp]
-+	movaps	XMMWORD[rsp],xmm0
-+	movaps	xmm7,XMMWORD[16+rsp]
-+	movaps	XMMWORD[16+rsp],xmm0
-+	movaps	xmm8,XMMWORD[32+rsp]
-+	movaps	XMMWORD[32+rsp],xmm0
-+	movaps	xmm9,XMMWORD[48+rsp]
-+	movaps	XMMWORD[48+rsp],xmm0
-+	lea	rsp,[88+rsp]
-+$L$ecb_enc_ret:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_ecb_encrypt:
-+global	aesni_ccm64_encrypt_blocks
-+
-+ALIGN	16
-+aesni_ccm64_encrypt_blocks:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_ccm64_encrypt_blocks:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	lea	rsp,[((-88))+rsp]
-+	movaps	XMMWORD[rsp],xmm6
-+	movaps	XMMWORD[16+rsp],xmm7
-+	movaps	XMMWORD[32+rsp],xmm8
-+	movaps	XMMWORD[48+rsp],xmm9
-+$L$ccm64_enc_body:
-+	mov	eax,DWORD[240+rcx]
-+	movdqu	xmm6,XMMWORD[r8]
-+	movdqa	xmm9,XMMWORD[$L$increment64]
-+	movdqa	xmm7,XMMWORD[$L$bswap_mask]
-+
-+	shl	eax,4
-+	mov	r10d,16
-+	lea	r11,[rcx]
-+	movdqu	xmm3,XMMWORD[r9]
-+	movdqa	xmm2,xmm6
-+	lea	rcx,[32+rax*1+rcx]
-+DB	102,15,56,0,247
-+	sub	r10,rax
-+	jmp	NEAR $L$ccm64_enc_outer
-+ALIGN	16
-+$L$ccm64_enc_outer:
-+	movups	xmm0,XMMWORD[r11]
-+	mov	rax,r10
-+	movups	xmm8,XMMWORD[rdi]
-+
-+	xorps	xmm2,xmm0
-+	movups	xmm1,XMMWORD[16+r11]
-+	xorps	xmm0,xmm8
-+	xorps	xmm3,xmm0
-+	movups	xmm0,XMMWORD[32+r11]
-+
-+$L$ccm64_enc2_loop:
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$ccm64_enc2_loop
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+	paddq	xmm6,xmm9
-+	dec	rdx
-+DB	102,15,56,221,208
-+DB	102,15,56,221,216
-+
-+	lea	rdi,[16+rdi]
-+	xorps	xmm8,xmm2
-+	movdqa	xmm2,xmm6
-+	movups	XMMWORD[rsi],xmm8
-+DB	102,15,56,0,215
-+	lea	rsi,[16+rsi]
-+	jnz	NEAR $L$ccm64_enc_outer
-+
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	movups	XMMWORD[r9],xmm3
-+	pxor	xmm3,xmm3
-+	pxor	xmm8,xmm8
-+	pxor	xmm6,xmm6
-+	movaps	xmm6,XMMWORD[rsp]
-+	movaps	XMMWORD[rsp],xmm0
-+	movaps	xmm7,XMMWORD[16+rsp]
-+	movaps	XMMWORD[16+rsp],xmm0
-+	movaps	xmm8,XMMWORD[32+rsp]
-+	movaps	XMMWORD[32+rsp],xmm0
-+	movaps	xmm9,XMMWORD[48+rsp]
-+	movaps	XMMWORD[48+rsp],xmm0
-+	lea	rsp,[88+rsp]
-+$L$ccm64_enc_ret:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_ccm64_encrypt_blocks:
-+global	aesni_ccm64_decrypt_blocks
-+
-+ALIGN	16
-+aesni_ccm64_decrypt_blocks:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_ccm64_decrypt_blocks:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	lea	rsp,[((-88))+rsp]
-+	movaps	XMMWORD[rsp],xmm6
-+	movaps	XMMWORD[16+rsp],xmm7
-+	movaps	XMMWORD[32+rsp],xmm8
-+	movaps	XMMWORD[48+rsp],xmm9
-+$L$ccm64_dec_body:
-+	mov	eax,DWORD[240+rcx]
-+	movups	xmm6,XMMWORD[r8]
-+	movdqu	xmm3,XMMWORD[r9]
-+	movdqa	xmm9,XMMWORD[$L$increment64]
-+	movdqa	xmm7,XMMWORD[$L$bswap_mask]
-+
-+	movaps	xmm2,xmm6
-+	mov	r10d,eax
-+	mov	r11,rcx
-+DB	102,15,56,0,247
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_enc1_5:
-+DB	102,15,56,220,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_enc1_5
-+DB	102,15,56,221,209
-+	shl	r10d,4
-+	mov	eax,16
-+	movups	xmm8,XMMWORD[rdi]
-+	paddq	xmm6,xmm9
-+	lea	rdi,[16+rdi]
-+	sub	rax,r10
-+	lea	rcx,[32+r10*1+r11]
-+	mov	r10,rax
-+	jmp	NEAR $L$ccm64_dec_outer
-+ALIGN	16
-+$L$ccm64_dec_outer:
-+	xorps	xmm8,xmm2
-+	movdqa	xmm2,xmm6
-+	movups	XMMWORD[rsi],xmm8
-+	lea	rsi,[16+rsi]
-+DB	102,15,56,0,215
-+
-+	sub	rdx,1
-+	jz	NEAR $L$ccm64_dec_break
-+
-+	movups	xmm0,XMMWORD[r11]
-+	mov	rax,r10
-+	movups	xmm1,XMMWORD[16+r11]
-+	xorps	xmm8,xmm0
-+	xorps	xmm2,xmm0
-+	xorps	xmm3,xmm8
-+	movups	xmm0,XMMWORD[32+r11]
-+	jmp	NEAR $L$ccm64_dec2_loop
-+ALIGN	16
-+$L$ccm64_dec2_loop:
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$ccm64_dec2_loop
-+	movups	xmm8,XMMWORD[rdi]
-+	paddq	xmm6,xmm9
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,221,208
-+DB	102,15,56,221,216
-+	lea	rdi,[16+rdi]
-+	jmp	NEAR $L$ccm64_dec_outer
-+
-+ALIGN	16
-+$L$ccm64_dec_break:
-+
-+	mov	eax,DWORD[240+r11]
-+	movups	xmm0,XMMWORD[r11]
-+	movups	xmm1,XMMWORD[16+r11]
-+	xorps	xmm8,xmm0
-+	lea	r11,[32+r11]
-+	xorps	xmm3,xmm8
-+$L$oop_enc1_6:
-+DB	102,15,56,220,217
-+	dec	eax
-+	movups	xmm1,XMMWORD[r11]
-+	lea	r11,[16+r11]
-+	jnz	NEAR $L$oop_enc1_6
-+DB	102,15,56,221,217
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	movups	XMMWORD[r9],xmm3
-+	pxor	xmm3,xmm3
-+	pxor	xmm8,xmm8
-+	pxor	xmm6,xmm6
-+	movaps	xmm6,XMMWORD[rsp]
-+	movaps	XMMWORD[rsp],xmm0
-+	movaps	xmm7,XMMWORD[16+rsp]
-+	movaps	XMMWORD[16+rsp],xmm0
-+	movaps	xmm8,XMMWORD[32+rsp]
-+	movaps	XMMWORD[32+rsp],xmm0
-+	movaps	xmm9,XMMWORD[48+rsp]
-+	movaps	XMMWORD[48+rsp],xmm0
-+	lea	rsp,[88+rsp]
-+$L$ccm64_dec_ret:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_ccm64_decrypt_blocks:
-+global	aesni_ctr32_encrypt_blocks
-+
-+ALIGN	16
-+aesni_ctr32_encrypt_blocks:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_ctr32_encrypt_blocks:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+
-+
-+	cmp	rdx,1
-+	jne	NEAR $L$ctr32_bulk
-+
-+
-+
-+	movups	xmm2,XMMWORD[r8]
-+	movups	xmm3,XMMWORD[rdi]
-+	mov	edx,DWORD[240+rcx]
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_enc1_7:
-+DB	102,15,56,220,209
-+	dec	edx
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_enc1_7
-+DB	102,15,56,221,209
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	xorps	xmm2,xmm3
-+	pxor	xmm3,xmm3
-+	movups	XMMWORD[rsi],xmm2
-+	xorps	xmm2,xmm2
-+	jmp	NEAR $L$ctr32_epilogue
-+
-+ALIGN	16
-+$L$ctr32_bulk:
-+	lea	rax,[rsp]
-+	push	rbp
-+	sub	rsp,288
-+	and	rsp,-16
-+	movaps	XMMWORD[(-168)+rax],xmm6
-+	movaps	XMMWORD[(-152)+rax],xmm7
-+	movaps	XMMWORD[(-136)+rax],xmm8
-+	movaps	XMMWORD[(-120)+rax],xmm9
-+	movaps	XMMWORD[(-104)+rax],xmm10
-+	movaps	XMMWORD[(-88)+rax],xmm11
-+	movaps	XMMWORD[(-72)+rax],xmm12
-+	movaps	XMMWORD[(-56)+rax],xmm13
-+	movaps	XMMWORD[(-40)+rax],xmm14
-+	movaps	XMMWORD[(-24)+rax],xmm15
-+$L$ctr32_body:
-+	lea	rbp,[((-8))+rax]
-+
-+
-+
-+
-+	movdqu	xmm2,XMMWORD[r8]
-+	movdqu	xmm0,XMMWORD[rcx]
-+	mov	r8d,DWORD[12+r8]
-+	pxor	xmm2,xmm0
-+	mov	r11d,DWORD[12+rcx]
-+	movdqa	XMMWORD[rsp],xmm2
-+	bswap	r8d
-+	movdqa	xmm3,xmm2
-+	movdqa	xmm4,xmm2
-+	movdqa	xmm5,xmm2
-+	movdqa	XMMWORD[64+rsp],xmm2
-+	movdqa	XMMWORD[80+rsp],xmm2
-+	movdqa	XMMWORD[96+rsp],xmm2
-+	mov	r10,rdx
-+	movdqa	XMMWORD[112+rsp],xmm2
-+
-+	lea	rax,[1+r8]
-+	lea	rdx,[2+r8]
-+	bswap	eax
-+	bswap	edx
-+	xor	eax,r11d
-+	xor	edx,r11d
-+DB	102,15,58,34,216,3
-+	lea	rax,[3+r8]
-+	movdqa	XMMWORD[16+rsp],xmm3
-+DB	102,15,58,34,226,3
-+	bswap	eax
-+	mov	rdx,r10
-+	lea	r10,[4+r8]
-+	movdqa	XMMWORD[32+rsp],xmm4
-+	xor	eax,r11d
-+	bswap	r10d
-+DB	102,15,58,34,232,3
-+	xor	r10d,r11d
-+	movdqa	XMMWORD[48+rsp],xmm5
-+	lea	r9,[5+r8]
-+	mov	DWORD[((64+12))+rsp],r10d
-+	bswap	r9d
-+	lea	r10,[6+r8]
-+	mov	eax,DWORD[240+rcx]
-+	xor	r9d,r11d
-+	bswap	r10d
-+	mov	DWORD[((80+12))+rsp],r9d
-+	xor	r10d,r11d
-+	lea	r9,[7+r8]
-+	mov	DWORD[((96+12))+rsp],r10d
-+	bswap	r9d
-+	mov	r10d,DWORD[((_gnutls_x86_cpuid_s+4))]
-+	xor	r9d,r11d
-+	and	r10d,71303168
-+	mov	DWORD[((112+12))+rsp],r9d
-+
-+	movups	xmm1,XMMWORD[16+rcx]
-+
-+	movdqa	xmm6,XMMWORD[64+rsp]
-+	movdqa	xmm7,XMMWORD[80+rsp]
-+
-+	cmp	rdx,8
-+	jb	NEAR $L$ctr32_tail
-+
-+	sub	rdx,6
-+	cmp	r10d,4194304
-+	je	NEAR $L$ctr32_6x
-+
-+	lea	rcx,[128+rcx]
-+	sub	rdx,2
-+	jmp	NEAR $L$ctr32_loop8
-+
-+ALIGN	16
-+$L$ctr32_6x:
-+	shl	eax,4
-+	mov	r10d,48
-+	bswap	r11d
-+	lea	rcx,[32+rax*1+rcx]
-+	sub	r10,rax
-+	jmp	NEAR $L$ctr32_loop6
-+
-+ALIGN	16
-+$L$ctr32_loop6:
-+	add	r8d,6
-+	movups	xmm0,XMMWORD[((-48))+r10*1+rcx]
-+DB	102,15,56,220,209
-+	mov	eax,r8d
-+	xor	eax,r11d
-+DB	102,15,56,220,217
-+DB	0x0f,0x38,0xf1,0x44,0x24,12
-+	lea	eax,[1+r8]
-+DB	102,15,56,220,225
-+	xor	eax,r11d
-+DB	0x0f,0x38,0xf1,0x44,0x24,28
-+DB	102,15,56,220,233
-+	lea	eax,[2+r8]
-+	xor	eax,r11d
-+DB	102,15,56,220,241
-+DB	0x0f,0x38,0xf1,0x44,0x24,44
-+	lea	eax,[3+r8]
-+DB	102,15,56,220,249
-+	movups	xmm1,XMMWORD[((-32))+r10*1+rcx]
-+	xor	eax,r11d
-+
-+DB	102,15,56,220,208
-+DB	0x0f,0x38,0xf1,0x44,0x24,60
-+	lea	eax,[4+r8]
-+DB	102,15,56,220,216
-+	xor	eax,r11d
-+DB	0x0f,0x38,0xf1,0x44,0x24,76
-+DB	102,15,56,220,224
-+	lea	eax,[5+r8]
-+	xor	eax,r11d
-+DB	102,15,56,220,232
-+DB	0x0f,0x38,0xf1,0x44,0x24,92
-+	mov	rax,r10
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+	movups	xmm0,XMMWORD[((-16))+r10*1+rcx]
-+
-+	call	$L$enc_loop6
-+
-+	movdqu	xmm8,XMMWORD[rdi]
-+	movdqu	xmm9,XMMWORD[16+rdi]
-+	movdqu	xmm10,XMMWORD[32+rdi]
-+	movdqu	xmm11,XMMWORD[48+rdi]
-+	movdqu	xmm12,XMMWORD[64+rdi]
-+	movdqu	xmm13,XMMWORD[80+rdi]
-+	lea	rdi,[96+rdi]
-+	movups	xmm1,XMMWORD[((-64))+r10*1+rcx]
-+	pxor	xmm8,xmm2
-+	movaps	xmm2,XMMWORD[rsp]
-+	pxor	xmm9,xmm3
-+	movaps	xmm3,XMMWORD[16+rsp]
-+	pxor	xmm10,xmm4
-+	movaps	xmm4,XMMWORD[32+rsp]
-+	pxor	xmm11,xmm5
-+	movaps	xmm5,XMMWORD[48+rsp]
-+	pxor	xmm12,xmm6
-+	movaps	xmm6,XMMWORD[64+rsp]
-+	pxor	xmm13,xmm7
-+	movaps	xmm7,XMMWORD[80+rsp]
-+	movdqu	XMMWORD[rsi],xmm8
-+	movdqu	XMMWORD[16+rsi],xmm9
-+	movdqu	XMMWORD[32+rsi],xmm10
-+	movdqu	XMMWORD[48+rsi],xmm11
-+	movdqu	XMMWORD[64+rsi],xmm12
-+	movdqu	XMMWORD[80+rsi],xmm13
-+	lea	rsi,[96+rsi]
-+
-+	sub	rdx,6
-+	jnc	NEAR $L$ctr32_loop6
-+
-+	add	rdx,6
-+	jz	NEAR $L$ctr32_done
-+
-+	lea	eax,[((-48))+r10]
-+	lea	rcx,[((-80))+r10*1+rcx]
-+	neg	eax
-+	shr	eax,4
-+	jmp	NEAR $L$ctr32_tail
-+
-+ALIGN	32
-+$L$ctr32_loop8:
-+	add	r8d,8
-+	movdqa	xmm8,XMMWORD[96+rsp]
-+DB	102,15,56,220,209
-+	mov	r9d,r8d
-+	movdqa	xmm9,XMMWORD[112+rsp]
-+DB	102,15,56,220,217
-+	bswap	r9d
-+	movups	xmm0,XMMWORD[((32-128))+rcx]
-+DB	102,15,56,220,225
-+	xor	r9d,r11d
-+	nop
-+DB	102,15,56,220,233
-+	mov	DWORD[((0+12))+rsp],r9d
-+	lea	r9,[1+r8]
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+DB	102,68,15,56,220,193
-+DB	102,68,15,56,220,201
-+	movups	xmm1,XMMWORD[((48-128))+rcx]
-+	bswap	r9d
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+	xor	r9d,r11d
-+DB	0x66,0x90
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+	mov	DWORD[((16+12))+rsp],r9d
-+	lea	r9,[2+r8]
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+DB	102,68,15,56,220,192
-+DB	102,68,15,56,220,200
-+	movups	xmm0,XMMWORD[((64-128))+rcx]
-+	bswap	r9d
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+	xor	r9d,r11d
-+DB	0x66,0x90
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	mov	DWORD[((32+12))+rsp],r9d
-+	lea	r9,[3+r8]
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+DB	102,68,15,56,220,193
-+DB	102,68,15,56,220,201
-+	movups	xmm1,XMMWORD[((80-128))+rcx]
-+	bswap	r9d
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+	xor	r9d,r11d
-+DB	0x66,0x90
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+	mov	DWORD[((48+12))+rsp],r9d
-+	lea	r9,[4+r8]
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+DB	102,68,15,56,220,192
-+DB	102,68,15,56,220,200
-+	movups	xmm0,XMMWORD[((96-128))+rcx]
-+	bswap	r9d
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+	xor	r9d,r11d
-+DB	0x66,0x90
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	mov	DWORD[((64+12))+rsp],r9d
-+	lea	r9,[5+r8]
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+DB	102,68,15,56,220,193
-+DB	102,68,15,56,220,201
-+	movups	xmm1,XMMWORD[((112-128))+rcx]
-+	bswap	r9d
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+	xor	r9d,r11d
-+DB	0x66,0x90
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+	mov	DWORD[((80+12))+rsp],r9d
-+	lea	r9,[6+r8]
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+DB	102,68,15,56,220,192
-+DB	102,68,15,56,220,200
-+	movups	xmm0,XMMWORD[((128-128))+rcx]
-+	bswap	r9d
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+	xor	r9d,r11d
-+DB	0x66,0x90
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	mov	DWORD[((96+12))+rsp],r9d
-+	lea	r9,[7+r8]
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+DB	102,68,15,56,220,193
-+DB	102,68,15,56,220,201
-+	movups	xmm1,XMMWORD[((144-128))+rcx]
-+	bswap	r9d
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+	xor	r9d,r11d
-+	movdqu	xmm10,XMMWORD[rdi]
-+DB	102,15,56,220,232
-+	mov	DWORD[((112+12))+rsp],r9d
-+	cmp	eax,11
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+DB	102,68,15,56,220,192
-+DB	102,68,15,56,220,200
-+	movups	xmm0,XMMWORD[((160-128))+rcx]
-+
-+	jb	NEAR $L$ctr32_enc_done
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+DB	102,68,15,56,220,193
-+DB	102,68,15,56,220,201
-+	movups	xmm1,XMMWORD[((176-128))+rcx]
-+
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+DB	102,68,15,56,220,192
-+DB	102,68,15,56,220,200
-+	movups	xmm0,XMMWORD[((192-128))+rcx]
-+	je	NEAR $L$ctr32_enc_done
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+DB	102,68,15,56,220,193
-+DB	102,68,15,56,220,201
-+	movups	xmm1,XMMWORD[((208-128))+rcx]
-+
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+DB	102,68,15,56,220,192
-+DB	102,68,15,56,220,200
-+	movups	xmm0,XMMWORD[((224-128))+rcx]
-+	jmp	NEAR $L$ctr32_enc_done
-+
-+ALIGN	16
-+$L$ctr32_enc_done:
-+	movdqu	xmm11,XMMWORD[16+rdi]
-+	pxor	xmm10,xmm0
-+	movdqu	xmm12,XMMWORD[32+rdi]
-+	pxor	xmm11,xmm0
-+	movdqu	xmm13,XMMWORD[48+rdi]
-+	pxor	xmm12,xmm0
-+	movdqu	xmm14,XMMWORD[64+rdi]
-+	pxor	xmm13,xmm0
-+	movdqu	xmm15,XMMWORD[80+rdi]
-+	pxor	xmm14,xmm0
-+	pxor	xmm15,xmm0
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+DB	102,68,15,56,220,193
-+DB	102,68,15,56,220,201
-+	movdqu	xmm1,XMMWORD[96+rdi]
-+	lea	rdi,[128+rdi]
-+
-+DB	102,65,15,56,221,210
-+	pxor	xmm1,xmm0
-+	movdqu	xmm10,XMMWORD[((112-128))+rdi]
-+DB	102,65,15,56,221,219
-+	pxor	xmm10,xmm0
-+	movdqa	xmm11,XMMWORD[rsp]
-+DB	102,65,15,56,221,228
-+DB	102,65,15,56,221,237
-+	movdqa	xmm12,XMMWORD[16+rsp]
-+	movdqa	xmm13,XMMWORD[32+rsp]
-+DB	102,65,15,56,221,246
-+DB	102,65,15,56,221,255
-+	movdqa	xmm14,XMMWORD[48+rsp]
-+	movdqa	xmm15,XMMWORD[64+rsp]
-+DB	102,68,15,56,221,193
-+	movdqa	xmm0,XMMWORD[80+rsp]
-+	movups	xmm1,XMMWORD[((16-128))+rcx]
-+DB	102,69,15,56,221,202
-+
-+	movups	XMMWORD[rsi],xmm2
-+	movdqa	xmm2,xmm11
-+	movups	XMMWORD[16+rsi],xmm3
-+	movdqa	xmm3,xmm12
-+	movups	XMMWORD[32+rsi],xmm4
-+	movdqa	xmm4,xmm13
-+	movups	XMMWORD[48+rsi],xmm5
-+	movdqa	xmm5,xmm14
-+	movups	XMMWORD[64+rsi],xmm6
-+	movdqa	xmm6,xmm15
-+	movups	XMMWORD[80+rsi],xmm7
-+	movdqa	xmm7,xmm0
-+	movups	XMMWORD[96+rsi],xmm8
-+	movups	XMMWORD[112+rsi],xmm9
-+	lea	rsi,[128+rsi]
-+
-+	sub	rdx,8
-+	jnc	NEAR $L$ctr32_loop8
-+
-+	add	rdx,8
-+	jz	NEAR $L$ctr32_done
-+	lea	rcx,[((-128))+rcx]
-+
-+$L$ctr32_tail:
-+
-+
-+	lea	rcx,[16+rcx]
-+	cmp	rdx,4
-+	jb	NEAR $L$ctr32_loop3
-+	je	NEAR $L$ctr32_loop4
-+
-+
-+	shl	eax,4
-+	movdqa	xmm8,XMMWORD[96+rsp]
-+	pxor	xmm9,xmm9
-+
-+	movups	xmm0,XMMWORD[16+rcx]
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+	lea	rcx,[((32-16))+rax*1+rcx]
-+	neg	rax
-+DB	102,15,56,220,225
-+	add	rax,16
-+	movups	xmm10,XMMWORD[rdi]
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+	movups	xmm11,XMMWORD[16+rdi]
-+	movups	xmm12,XMMWORD[32+rdi]
-+DB	102,15,56,220,249
-+DB	102,68,15,56,220,193
-+
-+	call	$L$enc_loop8_enter
-+
-+	movdqu	xmm13,XMMWORD[48+rdi]
-+	pxor	xmm2,xmm10
-+	movdqu	xmm10,XMMWORD[64+rdi]
-+	pxor	xmm3,xmm11
-+	movdqu	XMMWORD[rsi],xmm2
-+	pxor	xmm4,xmm12
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	pxor	xmm5,xmm13
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	pxor	xmm6,xmm10
-+	movdqu	XMMWORD[48+rsi],xmm5
-+	movdqu	XMMWORD[64+rsi],xmm6
-+	cmp	rdx,6
-+	jb	NEAR $L$ctr32_done
-+
-+	movups	xmm11,XMMWORD[80+rdi]
-+	xorps	xmm7,xmm11
-+	movups	XMMWORD[80+rsi],xmm7
-+	je	NEAR $L$ctr32_done
-+
-+	movups	xmm12,XMMWORD[96+rdi]
-+	xorps	xmm8,xmm12
-+	movups	XMMWORD[96+rsi],xmm8
-+	jmp	NEAR $L$ctr32_done
-+
-+ALIGN	32
-+$L$ctr32_loop4:
-+DB	102,15,56,220,209
-+	lea	rcx,[16+rcx]
-+	dec	eax
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	movups	xmm1,XMMWORD[rcx]
-+	jnz	NEAR $L$ctr32_loop4
-+DB	102,15,56,221,209
-+DB	102,15,56,221,217
-+	movups	xmm10,XMMWORD[rdi]
-+	movups	xmm11,XMMWORD[16+rdi]
-+DB	102,15,56,221,225
-+DB	102,15,56,221,233
-+	movups	xmm12,XMMWORD[32+rdi]
-+	movups	xmm13,XMMWORD[48+rdi]
-+
-+	xorps	xmm2,xmm10
-+	movups	XMMWORD[rsi],xmm2
-+	xorps	xmm3,xmm11
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm4,xmm12
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	pxor	xmm5,xmm13
-+	movdqu	XMMWORD[48+rsi],xmm5
-+	jmp	NEAR $L$ctr32_done
-+
-+ALIGN	32
-+$L$ctr32_loop3:
-+DB	102,15,56,220,209
-+	lea	rcx,[16+rcx]
-+	dec	eax
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+	movups	xmm1,XMMWORD[rcx]
-+	jnz	NEAR $L$ctr32_loop3
-+DB	102,15,56,221,209
-+DB	102,15,56,221,217
-+DB	102,15,56,221,225
-+
-+	movups	xmm10,XMMWORD[rdi]
-+	xorps	xmm2,xmm10
-+	movups	XMMWORD[rsi],xmm2
-+	cmp	rdx,2
-+	jb	NEAR $L$ctr32_done
-+
-+	movups	xmm11,XMMWORD[16+rdi]
-+	xorps	xmm3,xmm11
-+	movups	XMMWORD[16+rsi],xmm3
-+	je	NEAR $L$ctr32_done
-+
-+	movups	xmm12,XMMWORD[32+rdi]
-+	xorps	xmm4,xmm12
-+	movups	XMMWORD[32+rsi],xmm4
-+
-+$L$ctr32_done:
-+	xorps	xmm0,xmm0
-+	xor	r11d,r11d
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	movaps	xmm6,XMMWORD[((-160))+rbp]
-+	movaps	XMMWORD[(-160)+rbp],xmm0
-+	movaps	xmm7,XMMWORD[((-144))+rbp]
-+	movaps	XMMWORD[(-144)+rbp],xmm0
-+	movaps	xmm8,XMMWORD[((-128))+rbp]
-+	movaps	XMMWORD[(-128)+rbp],xmm0
-+	movaps	xmm9,XMMWORD[((-112))+rbp]
-+	movaps	XMMWORD[(-112)+rbp],xmm0
-+	movaps	xmm10,XMMWORD[((-96))+rbp]
-+	movaps	XMMWORD[(-96)+rbp],xmm0
-+	movaps	xmm11,XMMWORD[((-80))+rbp]
-+	movaps	XMMWORD[(-80)+rbp],xmm0
-+	movaps	xmm12,XMMWORD[((-64))+rbp]
-+	movaps	XMMWORD[(-64)+rbp],xmm0
-+	movaps	xmm13,XMMWORD[((-48))+rbp]
-+	movaps	XMMWORD[(-48)+rbp],xmm0
-+	movaps	xmm14,XMMWORD[((-32))+rbp]
-+	movaps	XMMWORD[(-32)+rbp],xmm0
-+	movaps	xmm15,XMMWORD[((-16))+rbp]
-+	movaps	XMMWORD[(-16)+rbp],xmm0
-+	movaps	XMMWORD[rsp],xmm0
-+	movaps	XMMWORD[16+rsp],xmm0
-+	movaps	XMMWORD[32+rsp],xmm0
-+	movaps	XMMWORD[48+rsp],xmm0
-+	movaps	XMMWORD[64+rsp],xmm0
-+	movaps	XMMWORD[80+rsp],xmm0
-+	movaps	XMMWORD[96+rsp],xmm0
-+	movaps	XMMWORD[112+rsp],xmm0
-+	lea	rsp,[rbp]
-+	pop	rbp
-+$L$ctr32_epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_ctr32_encrypt_blocks:
-+global	aesni_xts_encrypt
-+
-+ALIGN	16
-+aesni_xts_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_xts_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	lea	rax,[rsp]
-+	push	rbp
-+	sub	rsp,272
-+	and	rsp,-16
-+	movaps	XMMWORD[(-168)+rax],xmm6
-+	movaps	XMMWORD[(-152)+rax],xmm7
-+	movaps	XMMWORD[(-136)+rax],xmm8
-+	movaps	XMMWORD[(-120)+rax],xmm9
-+	movaps	XMMWORD[(-104)+rax],xmm10
-+	movaps	XMMWORD[(-88)+rax],xmm11
-+	movaps	XMMWORD[(-72)+rax],xmm12
-+	movaps	XMMWORD[(-56)+rax],xmm13
-+	movaps	XMMWORD[(-40)+rax],xmm14
-+	movaps	XMMWORD[(-24)+rax],xmm15
-+$L$xts_enc_body:
-+	lea	rbp,[((-8))+rax]
-+	movups	xmm2,XMMWORD[r9]
-+	mov	eax,DWORD[240+r8]
-+	mov	r10d,DWORD[240+rcx]
-+	movups	xmm0,XMMWORD[r8]
-+	movups	xmm1,XMMWORD[16+r8]
-+	lea	r8,[32+r8]
-+	xorps	xmm2,xmm0
-+$L$oop_enc1_8:
-+DB	102,15,56,220,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[r8]
-+	lea	r8,[16+r8]
-+	jnz	NEAR $L$oop_enc1_8
-+DB	102,15,56,221,209
-+	movups	xmm0,XMMWORD[rcx]
-+	mov	r11,rcx
-+	mov	eax,r10d
-+	shl	r10d,4
-+	mov	r9,rdx
-+	and	rdx,-16
-+
-+	movups	xmm1,XMMWORD[16+r10*1+rcx]
-+
-+	movdqa	xmm8,XMMWORD[$L$xts_magic]
-+	movdqa	xmm15,xmm2
-+	pshufd	xmm9,xmm2,0x5f
-+	pxor	xmm1,xmm0
-+	movdqa	xmm14,xmm9
-+	paddd	xmm9,xmm9
-+	movdqa	xmm10,xmm15
-+	psrad	xmm14,31
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+	pxor	xmm10,xmm0
-+	pxor	xmm15,xmm14
-+	movdqa	xmm14,xmm9
-+	paddd	xmm9,xmm9
-+	movdqa	xmm11,xmm15
-+	psrad	xmm14,31
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+	pxor	xmm11,xmm0
-+	pxor	xmm15,xmm14
-+	movdqa	xmm14,xmm9
-+	paddd	xmm9,xmm9
-+	movdqa	xmm12,xmm15
-+	psrad	xmm14,31
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+	pxor	xmm12,xmm0
-+	pxor	xmm15,xmm14
-+	movdqa	xmm14,xmm9
-+	paddd	xmm9,xmm9
-+	movdqa	xmm13,xmm15
-+	psrad	xmm14,31
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+	pxor	xmm13,xmm0
-+	pxor	xmm15,xmm14
-+	movdqa	xmm14,xmm15
-+	psrad	xmm9,31
-+	paddq	xmm15,xmm15
-+	pand	xmm9,xmm8
-+	pxor	xmm14,xmm0
-+	pxor	xmm15,xmm9
-+	movaps	XMMWORD[96+rsp],xmm1
-+
-+	sub	rdx,16*6
-+	jc	NEAR $L$xts_enc_short
-+
-+	mov	eax,16+96
-+	lea	rcx,[32+r10*1+r11]
-+	sub	rax,r10
-+	movups	xmm1,XMMWORD[16+r11]
-+	mov	r10,rax
-+	lea	r8,[$L$xts_magic]
-+	jmp	NEAR $L$xts_enc_grandloop
-+
-+ALIGN	32
-+$L$xts_enc_grandloop:
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqa	xmm8,xmm0
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	pxor	xmm2,xmm10
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	pxor	xmm3,xmm11
-+DB	102,15,56,220,209
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	pxor	xmm4,xmm12
-+DB	102,15,56,220,217
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	pxor	xmm5,xmm13
-+DB	102,15,56,220,225
-+	movdqu	xmm7,XMMWORD[80+rdi]
-+	pxor	xmm8,xmm15
-+	movdqa	xmm9,XMMWORD[96+rsp]
-+	pxor	xmm6,xmm14
-+DB	102,15,56,220,233
-+	movups	xmm0,XMMWORD[32+r11]
-+	lea	rdi,[96+rdi]
-+	pxor	xmm7,xmm8
-+
-+	pxor	xmm10,xmm9
-+DB	102,15,56,220,241
-+	pxor	xmm11,xmm9
-+	movdqa	XMMWORD[rsp],xmm10
-+DB	102,15,56,220,249
-+	movups	xmm1,XMMWORD[48+r11]
-+	pxor	xmm12,xmm9
-+
-+DB	102,15,56,220,208
-+	pxor	xmm13,xmm9
-+	movdqa	XMMWORD[16+rsp],xmm11
-+DB	102,15,56,220,216
-+	pxor	xmm14,xmm9
-+	movdqa	XMMWORD[32+rsp],xmm12
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+	pxor	xmm8,xmm9
-+	movdqa	XMMWORD[64+rsp],xmm14
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+	movups	xmm0,XMMWORD[64+r11]
-+	movdqa	XMMWORD[80+rsp],xmm8
-+	pshufd	xmm9,xmm15,0x5f
-+	jmp	NEAR $L$xts_enc_loop6
-+ALIGN	32
-+$L$xts_enc_loop6:
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+	movups	xmm1,XMMWORD[((-64))+rax*1+rcx]
-+	add	rax,32
-+
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+	movups	xmm0,XMMWORD[((-80))+rax*1+rcx]
-+	jnz	NEAR $L$xts_enc_loop6
-+
-+	movdqa	xmm8,XMMWORD[r8]
-+	movdqa	xmm14,xmm9
-+	paddd	xmm9,xmm9
-+DB	102,15,56,220,209
-+	paddq	xmm15,xmm15
-+	psrad	xmm14,31
-+DB	102,15,56,220,217
-+	pand	xmm14,xmm8
-+	movups	xmm10,XMMWORD[r11]
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+	pxor	xmm15,xmm14
-+	movaps	xmm11,xmm10
-+DB	102,15,56,220,249
-+	movups	xmm1,XMMWORD[((-64))+rcx]
-+
-+	movdqa	xmm14,xmm9
-+DB	102,15,56,220,208
-+	paddd	xmm9,xmm9
-+	pxor	xmm10,xmm15
-+DB	102,15,56,220,216
-+	psrad	xmm14,31
-+	paddq	xmm15,xmm15
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+	pand	xmm14,xmm8
-+	movaps	xmm12,xmm11
-+DB	102,15,56,220,240
-+	pxor	xmm15,xmm14
-+	movdqa	xmm14,xmm9
-+DB	102,15,56,220,248
-+	movups	xmm0,XMMWORD[((-48))+rcx]
-+
-+	paddd	xmm9,xmm9
-+DB	102,15,56,220,209
-+	pxor	xmm11,xmm15
-+	psrad	xmm14,31
-+DB	102,15,56,220,217
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	movdqa	XMMWORD[48+rsp],xmm13
-+	pxor	xmm15,xmm14
-+DB	102,15,56,220,241
-+	movaps	xmm13,xmm12
-+	movdqa	xmm14,xmm9
-+DB	102,15,56,220,249
-+	movups	xmm1,XMMWORD[((-32))+rcx]
-+
-+	paddd	xmm9,xmm9
-+DB	102,15,56,220,208
-+	pxor	xmm12,xmm15
-+	psrad	xmm14,31
-+DB	102,15,56,220,216
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+DB	102,15,56,220,240
-+	pxor	xmm15,xmm14
-+	movaps	xmm14,xmm13
-+DB	102,15,56,220,248
-+
-+	movdqa	xmm0,xmm9
-+	paddd	xmm9,xmm9
-+DB	102,15,56,220,209
-+	pxor	xmm13,xmm15
-+	psrad	xmm0,31
-+DB	102,15,56,220,217
-+	paddq	xmm15,xmm15
-+	pand	xmm0,xmm8
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	pxor	xmm15,xmm0
-+	movups	xmm0,XMMWORD[r11]
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+	movups	xmm1,XMMWORD[16+r11]
-+
-+	pxor	xmm14,xmm15
-+DB	102,15,56,221,84,36,0
-+	psrad	xmm9,31
-+	paddq	xmm15,xmm15
-+DB	102,15,56,221,92,36,16
-+DB	102,15,56,221,100,36,32
-+	pand	xmm9,xmm8
-+	mov	rax,r10
-+DB	102,15,56,221,108,36,48
-+DB	102,15,56,221,116,36,64
-+DB	102,15,56,221,124,36,80
-+	pxor	xmm15,xmm9
-+
-+	lea	rsi,[96+rsi]
-+	movups	XMMWORD[(-96)+rsi],xmm2
-+	movups	XMMWORD[(-80)+rsi],xmm3
-+	movups	XMMWORD[(-64)+rsi],xmm4
-+	movups	XMMWORD[(-48)+rsi],xmm5
-+	movups	XMMWORD[(-32)+rsi],xmm6
-+	movups	XMMWORD[(-16)+rsi],xmm7
-+	sub	rdx,16*6
-+	jnc	NEAR $L$xts_enc_grandloop
-+
-+	mov	eax,16+96
-+	sub	eax,r10d
-+	mov	rcx,r11
-+	shr	eax,4
-+
-+$L$xts_enc_short:
-+
-+	mov	r10d,eax
-+	pxor	xmm10,xmm0
-+	add	rdx,16*6
-+	jz	NEAR $L$xts_enc_done
-+
-+	pxor	xmm11,xmm0
-+	cmp	rdx,0x20
-+	jb	NEAR $L$xts_enc_one
-+	pxor	xmm12,xmm0
-+	je	NEAR $L$xts_enc_two
-+
-+	pxor	xmm13,xmm0
-+	cmp	rdx,0x40
-+	jb	NEAR $L$xts_enc_three
-+	pxor	xmm14,xmm0
-+	je	NEAR $L$xts_enc_four
-+
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	pxor	xmm2,xmm10
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	pxor	xmm3,xmm11
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	lea	rdi,[80+rdi]
-+	pxor	xmm4,xmm12
-+	pxor	xmm5,xmm13
-+	pxor	xmm6,xmm14
-+	pxor	xmm7,xmm7
-+
-+	call	_aesni_encrypt6
-+
-+	xorps	xmm2,xmm10
-+	movdqa	xmm10,xmm15
-+	xorps	xmm3,xmm11
-+	xorps	xmm4,xmm12
-+	movdqu	XMMWORD[rsi],xmm2
-+	xorps	xmm5,xmm13
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	xorps	xmm6,xmm14
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	movdqu	XMMWORD[48+rsi],xmm5
-+	movdqu	XMMWORD[64+rsi],xmm6
-+	lea	rsi,[80+rsi]
-+	jmp	NEAR $L$xts_enc_done
-+
-+ALIGN	16
-+$L$xts_enc_one:
-+	movups	xmm2,XMMWORD[rdi]
-+	lea	rdi,[16+rdi]
-+	xorps	xmm2,xmm10
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_enc1_9:
-+DB	102,15,56,220,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_enc1_9
-+DB	102,15,56,221,209
-+	xorps	xmm2,xmm10
-+	movdqa	xmm10,xmm11
-+	movups	XMMWORD[rsi],xmm2
-+	lea	rsi,[16+rsi]
-+	jmp	NEAR $L$xts_enc_done
-+
-+ALIGN	16
-+$L$xts_enc_two:
-+	movups	xmm2,XMMWORD[rdi]
-+	movups	xmm3,XMMWORD[16+rdi]
-+	lea	rdi,[32+rdi]
-+	xorps	xmm2,xmm10
-+	xorps	xmm3,xmm11
-+
-+	call	_aesni_encrypt2
-+
-+	xorps	xmm2,xmm10
-+	movdqa	xmm10,xmm12
-+	xorps	xmm3,xmm11
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	lea	rsi,[32+rsi]
-+	jmp	NEAR $L$xts_enc_done
-+
-+ALIGN	16
-+$L$xts_enc_three:
-+	movups	xmm2,XMMWORD[rdi]
-+	movups	xmm3,XMMWORD[16+rdi]
-+	movups	xmm4,XMMWORD[32+rdi]
-+	lea	rdi,[48+rdi]
-+	xorps	xmm2,xmm10
-+	xorps	xmm3,xmm11
-+	xorps	xmm4,xmm12
-+
-+	call	_aesni_encrypt3
-+
-+	xorps	xmm2,xmm10
-+	movdqa	xmm10,xmm13
-+	xorps	xmm3,xmm11
-+	xorps	xmm4,xmm12
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	lea	rsi,[48+rsi]
-+	jmp	NEAR $L$xts_enc_done
-+
-+ALIGN	16
-+$L$xts_enc_four:
-+	movups	xmm2,XMMWORD[rdi]
-+	movups	xmm3,XMMWORD[16+rdi]
-+	movups	xmm4,XMMWORD[32+rdi]
-+	xorps	xmm2,xmm10
-+	movups	xmm5,XMMWORD[48+rdi]
-+	lea	rdi,[64+rdi]
-+	xorps	xmm3,xmm11
-+	xorps	xmm4,xmm12
-+	xorps	xmm5,xmm13
-+
-+	call	_aesni_encrypt4
-+
-+	pxor	xmm2,xmm10
-+	movdqa	xmm10,xmm14
-+	pxor	xmm3,xmm11
-+	pxor	xmm4,xmm12
-+	movdqu	XMMWORD[rsi],xmm2
-+	pxor	xmm5,xmm13
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	movdqu	XMMWORD[48+rsi],xmm5
-+	lea	rsi,[64+rsi]
-+	jmp	NEAR $L$xts_enc_done
-+
-+ALIGN	16
-+$L$xts_enc_done:
-+	and	r9,15
-+	jz	NEAR $L$xts_enc_ret
-+	mov	rdx,r9
-+
-+$L$xts_enc_steal:
-+	movzx	eax,BYTE[rdi]
-+	movzx	ecx,BYTE[((-16))+rsi]
-+	lea	rdi,[1+rdi]
-+	mov	BYTE[((-16))+rsi],al
-+	mov	BYTE[rsi],cl
-+	lea	rsi,[1+rsi]
-+	sub	rdx,1
-+	jnz	NEAR $L$xts_enc_steal
-+
-+	sub	rsi,r9
-+	mov	rcx,r11
-+	mov	eax,r10d
-+
-+	movups	xmm2,XMMWORD[((-16))+rsi]
-+	xorps	xmm2,xmm10
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_enc1_10:
-+DB	102,15,56,220,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_enc1_10
-+DB	102,15,56,221,209
-+	xorps	xmm2,xmm10
-+	movups	XMMWORD[(-16)+rsi],xmm2
-+
-+$L$xts_enc_ret:
-+	xorps	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	movaps	xmm6,XMMWORD[((-160))+rbp]
-+	movaps	XMMWORD[(-160)+rbp],xmm0
-+	movaps	xmm7,XMMWORD[((-144))+rbp]
-+	movaps	XMMWORD[(-144)+rbp],xmm0
-+	movaps	xmm8,XMMWORD[((-128))+rbp]
-+	movaps	XMMWORD[(-128)+rbp],xmm0
-+	movaps	xmm9,XMMWORD[((-112))+rbp]
-+	movaps	XMMWORD[(-112)+rbp],xmm0
-+	movaps	xmm10,XMMWORD[((-96))+rbp]
-+	movaps	XMMWORD[(-96)+rbp],xmm0
-+	movaps	xmm11,XMMWORD[((-80))+rbp]
-+	movaps	XMMWORD[(-80)+rbp],xmm0
-+	movaps	xmm12,XMMWORD[((-64))+rbp]
-+	movaps	XMMWORD[(-64)+rbp],xmm0
-+	movaps	xmm13,XMMWORD[((-48))+rbp]
-+	movaps	XMMWORD[(-48)+rbp],xmm0
-+	movaps	xmm14,XMMWORD[((-32))+rbp]
-+	movaps	XMMWORD[(-32)+rbp],xmm0
-+	movaps	xmm15,XMMWORD[((-16))+rbp]
-+	movaps	XMMWORD[(-16)+rbp],xmm0
-+	movaps	XMMWORD[rsp],xmm0
-+	movaps	XMMWORD[16+rsp],xmm0
-+	movaps	XMMWORD[32+rsp],xmm0
-+	movaps	XMMWORD[48+rsp],xmm0
-+	movaps	XMMWORD[64+rsp],xmm0
-+	movaps	XMMWORD[80+rsp],xmm0
-+	movaps	XMMWORD[96+rsp],xmm0
-+	lea	rsp,[rbp]
-+	pop	rbp
-+$L$xts_enc_epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_xts_encrypt:
-+global	aesni_xts_decrypt
-+
-+ALIGN	16
-+aesni_xts_decrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_xts_decrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	lea	rax,[rsp]
-+	push	rbp
-+	sub	rsp,272
-+	and	rsp,-16
-+	movaps	XMMWORD[(-168)+rax],xmm6
-+	movaps	XMMWORD[(-152)+rax],xmm7
-+	movaps	XMMWORD[(-136)+rax],xmm8
-+	movaps	XMMWORD[(-120)+rax],xmm9
-+	movaps	XMMWORD[(-104)+rax],xmm10
-+	movaps	XMMWORD[(-88)+rax],xmm11
-+	movaps	XMMWORD[(-72)+rax],xmm12
-+	movaps	XMMWORD[(-56)+rax],xmm13
-+	movaps	XMMWORD[(-40)+rax],xmm14
-+	movaps	XMMWORD[(-24)+rax],xmm15
-+$L$xts_dec_body:
-+	lea	rbp,[((-8))+rax]
-+	movups	xmm2,XMMWORD[r9]
-+	mov	eax,DWORD[240+r8]
-+	mov	r10d,DWORD[240+rcx]
-+	movups	xmm0,XMMWORD[r8]
-+	movups	xmm1,XMMWORD[16+r8]
-+	lea	r8,[32+r8]
-+	xorps	xmm2,xmm0
-+$L$oop_enc1_11:
-+DB	102,15,56,220,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[r8]
-+	lea	r8,[16+r8]
-+	jnz	NEAR $L$oop_enc1_11
-+DB	102,15,56,221,209
-+	xor	eax,eax
-+	test	rdx,15
-+	setnz	al
-+	shl	rax,4
-+	sub	rdx,rax
-+
-+	movups	xmm0,XMMWORD[rcx]
-+	mov	r11,rcx
-+	mov	eax,r10d
-+	shl	r10d,4
-+	mov	r9,rdx
-+	and	rdx,-16
-+
-+	movups	xmm1,XMMWORD[16+r10*1+rcx]
-+
-+	movdqa	xmm8,XMMWORD[$L$xts_magic]
-+	movdqa	xmm15,xmm2
-+	pshufd	xmm9,xmm2,0x5f
-+	pxor	xmm1,xmm0
-+	movdqa	xmm14,xmm9
-+	paddd	xmm9,xmm9
-+	movdqa	xmm10,xmm15
-+	psrad	xmm14,31
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+	pxor	xmm10,xmm0
-+	pxor	xmm15,xmm14
-+	movdqa	xmm14,xmm9
-+	paddd	xmm9,xmm9
-+	movdqa	xmm11,xmm15
-+	psrad	xmm14,31
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+	pxor	xmm11,xmm0
-+	pxor	xmm15,xmm14
-+	movdqa	xmm14,xmm9
-+	paddd	xmm9,xmm9
-+	movdqa	xmm12,xmm15
-+	psrad	xmm14,31
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+	pxor	xmm12,xmm0
-+	pxor	xmm15,xmm14
-+	movdqa	xmm14,xmm9
-+	paddd	xmm9,xmm9
-+	movdqa	xmm13,xmm15
-+	psrad	xmm14,31
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+	pxor	xmm13,xmm0
-+	pxor	xmm15,xmm14
-+	movdqa	xmm14,xmm15
-+	psrad	xmm9,31
-+	paddq	xmm15,xmm15
-+	pand	xmm9,xmm8
-+	pxor	xmm14,xmm0
-+	pxor	xmm15,xmm9
-+	movaps	XMMWORD[96+rsp],xmm1
-+
-+	sub	rdx,16*6
-+	jc	NEAR $L$xts_dec_short
-+
-+	mov	eax,16+96
-+	lea	rcx,[32+r10*1+r11]
-+	sub	rax,r10
-+	movups	xmm1,XMMWORD[16+r11]
-+	mov	r10,rax
-+	lea	r8,[$L$xts_magic]
-+	jmp	NEAR $L$xts_dec_grandloop
-+
-+ALIGN	32
-+$L$xts_dec_grandloop:
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqa	xmm8,xmm0
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	pxor	xmm2,xmm10
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	pxor	xmm3,xmm11
-+DB	102,15,56,222,209
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	pxor	xmm4,xmm12
-+DB	102,15,56,222,217
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	pxor	xmm5,xmm13
-+DB	102,15,56,222,225
-+	movdqu	xmm7,XMMWORD[80+rdi]
-+	pxor	xmm8,xmm15
-+	movdqa	xmm9,XMMWORD[96+rsp]
-+	pxor	xmm6,xmm14
-+DB	102,15,56,222,233
-+	movups	xmm0,XMMWORD[32+r11]
-+	lea	rdi,[96+rdi]
-+	pxor	xmm7,xmm8
-+
-+	pxor	xmm10,xmm9
-+DB	102,15,56,222,241
-+	pxor	xmm11,xmm9
-+	movdqa	XMMWORD[rsp],xmm10
-+DB	102,15,56,222,249
-+	movups	xmm1,XMMWORD[48+r11]
-+	pxor	xmm12,xmm9
-+
-+DB	102,15,56,222,208
-+	pxor	xmm13,xmm9
-+	movdqa	XMMWORD[16+rsp],xmm11
-+DB	102,15,56,222,216
-+	pxor	xmm14,xmm9
-+	movdqa	XMMWORD[32+rsp],xmm12
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+	pxor	xmm8,xmm9
-+	movdqa	XMMWORD[64+rsp],xmm14
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+	movups	xmm0,XMMWORD[64+r11]
-+	movdqa	XMMWORD[80+rsp],xmm8
-+	pshufd	xmm9,xmm15,0x5f
-+	jmp	NEAR $L$xts_dec_loop6
-+ALIGN	32
-+$L$xts_dec_loop6:
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+	movups	xmm1,XMMWORD[((-64))+rax*1+rcx]
-+	add	rax,32
-+
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+	movups	xmm0,XMMWORD[((-80))+rax*1+rcx]
-+	jnz	NEAR $L$xts_dec_loop6
-+
-+	movdqa	xmm8,XMMWORD[r8]
-+	movdqa	xmm14,xmm9
-+	paddd	xmm9,xmm9
-+DB	102,15,56,222,209
-+	paddq	xmm15,xmm15
-+	psrad	xmm14,31
-+DB	102,15,56,222,217
-+	pand	xmm14,xmm8
-+	movups	xmm10,XMMWORD[r11]
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+	pxor	xmm15,xmm14
-+	movaps	xmm11,xmm10
-+DB	102,15,56,222,249
-+	movups	xmm1,XMMWORD[((-64))+rcx]
-+
-+	movdqa	xmm14,xmm9
-+DB	102,15,56,222,208
-+	paddd	xmm9,xmm9
-+	pxor	xmm10,xmm15
-+DB	102,15,56,222,216
-+	psrad	xmm14,31
-+	paddq	xmm15,xmm15
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+	pand	xmm14,xmm8
-+	movaps	xmm12,xmm11
-+DB	102,15,56,222,240
-+	pxor	xmm15,xmm14
-+	movdqa	xmm14,xmm9
-+DB	102,15,56,222,248
-+	movups	xmm0,XMMWORD[((-48))+rcx]
-+
-+	paddd	xmm9,xmm9
-+DB	102,15,56,222,209
-+	pxor	xmm11,xmm15
-+	psrad	xmm14,31
-+DB	102,15,56,222,217
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+	movdqa	XMMWORD[48+rsp],xmm13
-+	pxor	xmm15,xmm14
-+DB	102,15,56,222,241
-+	movaps	xmm13,xmm12
-+	movdqa	xmm14,xmm9
-+DB	102,15,56,222,249
-+	movups	xmm1,XMMWORD[((-32))+rcx]
-+
-+	paddd	xmm9,xmm9
-+DB	102,15,56,222,208
-+	pxor	xmm12,xmm15
-+	psrad	xmm14,31
-+DB	102,15,56,222,216
-+	paddq	xmm15,xmm15
-+	pand	xmm14,xmm8
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+	pxor	xmm15,xmm14
-+	movaps	xmm14,xmm13
-+DB	102,15,56,222,248
-+
-+	movdqa	xmm0,xmm9
-+	paddd	xmm9,xmm9
-+DB	102,15,56,222,209
-+	pxor	xmm13,xmm15
-+	psrad	xmm0,31
-+DB	102,15,56,222,217
-+	paddq	xmm15,xmm15
-+	pand	xmm0,xmm8
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+	pxor	xmm15,xmm0
-+	movups	xmm0,XMMWORD[r11]
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+	movups	xmm1,XMMWORD[16+r11]
-+
-+	pxor	xmm14,xmm15
-+DB	102,15,56,223,84,36,0
-+	psrad	xmm9,31
-+	paddq	xmm15,xmm15
-+DB	102,15,56,223,92,36,16
-+DB	102,15,56,223,100,36,32
-+	pand	xmm9,xmm8
-+	mov	rax,r10
-+DB	102,15,56,223,108,36,48
-+DB	102,15,56,223,116,36,64
-+DB	102,15,56,223,124,36,80
-+	pxor	xmm15,xmm9
-+
-+	lea	rsi,[96+rsi]
-+	movups	XMMWORD[(-96)+rsi],xmm2
-+	movups	XMMWORD[(-80)+rsi],xmm3
-+	movups	XMMWORD[(-64)+rsi],xmm4
-+	movups	XMMWORD[(-48)+rsi],xmm5
-+	movups	XMMWORD[(-32)+rsi],xmm6
-+	movups	XMMWORD[(-16)+rsi],xmm7
-+	sub	rdx,16*6
-+	jnc	NEAR $L$xts_dec_grandloop
-+
-+	mov	eax,16+96
-+	sub	eax,r10d
-+	mov	rcx,r11
-+	shr	eax,4
-+
-+$L$xts_dec_short:
-+
-+	mov	r10d,eax
-+	pxor	xmm10,xmm0
-+	pxor	xmm11,xmm0
-+	add	rdx,16*6
-+	jz	NEAR $L$xts_dec_done
-+
-+	pxor	xmm12,xmm0
-+	cmp	rdx,0x20
-+	jb	NEAR $L$xts_dec_one
-+	pxor	xmm13,xmm0
-+	je	NEAR $L$xts_dec_two
-+
-+	pxor	xmm14,xmm0
-+	cmp	rdx,0x40
-+	jb	NEAR $L$xts_dec_three
-+	je	NEAR $L$xts_dec_four
-+
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	pxor	xmm2,xmm10
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	pxor	xmm3,xmm11
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	lea	rdi,[80+rdi]
-+	pxor	xmm4,xmm12
-+	pxor	xmm5,xmm13
-+	pxor	xmm6,xmm14
-+
-+	call	_aesni_decrypt6
-+
-+	xorps	xmm2,xmm10
-+	xorps	xmm3,xmm11
-+	xorps	xmm4,xmm12
-+	movdqu	XMMWORD[rsi],xmm2
-+	xorps	xmm5,xmm13
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	xorps	xmm6,xmm14
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	pxor	xmm14,xmm14
-+	movdqu	XMMWORD[48+rsi],xmm5
-+	pcmpgtd	xmm14,xmm15
-+	movdqu	XMMWORD[64+rsi],xmm6
-+	lea	rsi,[80+rsi]
-+	pshufd	xmm11,xmm14,0x13
-+	and	r9,15
-+	jz	NEAR $L$xts_dec_ret
-+
-+	movdqa	xmm10,xmm15
-+	paddq	xmm15,xmm15
-+	pand	xmm11,xmm8
-+	pxor	xmm11,xmm15
-+	jmp	NEAR $L$xts_dec_done2
-+
-+ALIGN	16
-+$L$xts_dec_one:
-+	movups	xmm2,XMMWORD[rdi]
-+	lea	rdi,[16+rdi]
-+	xorps	xmm2,xmm10
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_dec1_12:
-+DB	102,15,56,222,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_dec1_12
-+DB	102,15,56,223,209
-+	xorps	xmm2,xmm10
-+	movdqa	xmm10,xmm11
-+	movups	XMMWORD[rsi],xmm2
-+	movdqa	xmm11,xmm12
-+	lea	rsi,[16+rsi]
-+	jmp	NEAR $L$xts_dec_done
-+
-+ALIGN	16
-+$L$xts_dec_two:
-+	movups	xmm2,XMMWORD[rdi]
-+	movups	xmm3,XMMWORD[16+rdi]
-+	lea	rdi,[32+rdi]
-+	xorps	xmm2,xmm10
-+	xorps	xmm3,xmm11
-+
-+	call	_aesni_decrypt2
-+
-+	xorps	xmm2,xmm10
-+	movdqa	xmm10,xmm12
-+	xorps	xmm3,xmm11
-+	movdqa	xmm11,xmm13
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	lea	rsi,[32+rsi]
-+	jmp	NEAR $L$xts_dec_done
-+
-+ALIGN	16
-+$L$xts_dec_three:
-+	movups	xmm2,XMMWORD[rdi]
-+	movups	xmm3,XMMWORD[16+rdi]
-+	movups	xmm4,XMMWORD[32+rdi]
-+	lea	rdi,[48+rdi]
-+	xorps	xmm2,xmm10
-+	xorps	xmm3,xmm11
-+	xorps	xmm4,xmm12
-+
-+	call	_aesni_decrypt3
-+
-+	xorps	xmm2,xmm10
-+	movdqa	xmm10,xmm13
-+	xorps	xmm3,xmm11
-+	movdqa	xmm11,xmm14
-+	xorps	xmm4,xmm12
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	lea	rsi,[48+rsi]
-+	jmp	NEAR $L$xts_dec_done
-+
-+ALIGN	16
-+$L$xts_dec_four:
-+	movups	xmm2,XMMWORD[rdi]
-+	movups	xmm3,XMMWORD[16+rdi]
-+	movups	xmm4,XMMWORD[32+rdi]
-+	xorps	xmm2,xmm10
-+	movups	xmm5,XMMWORD[48+rdi]
-+	lea	rdi,[64+rdi]
-+	xorps	xmm3,xmm11
-+	xorps	xmm4,xmm12
-+	xorps	xmm5,xmm13
-+
-+	call	_aesni_decrypt4
-+
-+	pxor	xmm2,xmm10
-+	movdqa	xmm10,xmm14
-+	pxor	xmm3,xmm11
-+	movdqa	xmm11,xmm15
-+	pxor	xmm4,xmm12
-+	movdqu	XMMWORD[rsi],xmm2
-+	pxor	xmm5,xmm13
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	movdqu	XMMWORD[48+rsi],xmm5
-+	lea	rsi,[64+rsi]
-+	jmp	NEAR $L$xts_dec_done
-+
-+ALIGN	16
-+$L$xts_dec_done:
-+	and	r9,15
-+	jz	NEAR $L$xts_dec_ret
-+$L$xts_dec_done2:
-+	mov	rdx,r9
-+	mov	rcx,r11
-+	mov	eax,r10d
-+
-+	movups	xmm2,XMMWORD[rdi]
-+	xorps	xmm2,xmm11
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_dec1_13:
-+DB	102,15,56,222,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_dec1_13
-+DB	102,15,56,223,209
-+	xorps	xmm2,xmm11
-+	movups	XMMWORD[rsi],xmm2
-+
-+$L$xts_dec_steal:
-+	movzx	eax,BYTE[16+rdi]
-+	movzx	ecx,BYTE[rsi]
-+	lea	rdi,[1+rdi]
-+	mov	BYTE[rsi],al
-+	mov	BYTE[16+rsi],cl
-+	lea	rsi,[1+rsi]
-+	sub	rdx,1
-+	jnz	NEAR $L$xts_dec_steal
-+
-+	sub	rsi,r9
-+	mov	rcx,r11
-+	mov	eax,r10d
-+
-+	movups	xmm2,XMMWORD[rsi]
-+	xorps	xmm2,xmm10
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_dec1_14:
-+DB	102,15,56,222,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_dec1_14
-+DB	102,15,56,223,209
-+	xorps	xmm2,xmm10
-+	movups	XMMWORD[rsi],xmm2
-+
-+$L$xts_dec_ret:
-+	xorps	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	movaps	xmm6,XMMWORD[((-160))+rbp]
-+	movaps	XMMWORD[(-160)+rbp],xmm0
-+	movaps	xmm7,XMMWORD[((-144))+rbp]
-+	movaps	XMMWORD[(-144)+rbp],xmm0
-+	movaps	xmm8,XMMWORD[((-128))+rbp]
-+	movaps	XMMWORD[(-128)+rbp],xmm0
-+	movaps	xmm9,XMMWORD[((-112))+rbp]
-+	movaps	XMMWORD[(-112)+rbp],xmm0
-+	movaps	xmm10,XMMWORD[((-96))+rbp]
-+	movaps	XMMWORD[(-96)+rbp],xmm0
-+	movaps	xmm11,XMMWORD[((-80))+rbp]
-+	movaps	XMMWORD[(-80)+rbp],xmm0
-+	movaps	xmm12,XMMWORD[((-64))+rbp]
-+	movaps	XMMWORD[(-64)+rbp],xmm0
-+	movaps	xmm13,XMMWORD[((-48))+rbp]
-+	movaps	XMMWORD[(-48)+rbp],xmm0
-+	movaps	xmm14,XMMWORD[((-32))+rbp]
-+	movaps	XMMWORD[(-32)+rbp],xmm0
-+	movaps	xmm15,XMMWORD[((-16))+rbp]
-+	movaps	XMMWORD[(-16)+rbp],xmm0
-+	movaps	XMMWORD[rsp],xmm0
-+	movaps	XMMWORD[16+rsp],xmm0
-+	movaps	XMMWORD[32+rsp],xmm0
-+	movaps	XMMWORD[48+rsp],xmm0
-+	movaps	XMMWORD[64+rsp],xmm0
-+	movaps	XMMWORD[80+rsp],xmm0
-+	movaps	XMMWORD[96+rsp],xmm0
-+	lea	rsp,[rbp]
-+	pop	rbp
-+$L$xts_dec_epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_xts_decrypt:
-+global	aesni_ocb_encrypt
-+
-+ALIGN	32
-+aesni_ocb_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_ocb_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	lea	rax,[rsp]
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	lea	rsp,[((-160))+rsp]
-+	movaps	XMMWORD[rsp],xmm6
-+	movaps	XMMWORD[16+rsp],xmm7
-+	movaps	XMMWORD[32+rsp],xmm8
-+	movaps	XMMWORD[48+rsp],xmm9
-+	movaps	XMMWORD[64+rsp],xmm10
-+	movaps	XMMWORD[80+rsp],xmm11
-+	movaps	XMMWORD[96+rsp],xmm12
-+	movaps	XMMWORD[112+rsp],xmm13
-+	movaps	XMMWORD[128+rsp],xmm14
-+	movaps	XMMWORD[144+rsp],xmm15
-+$L$ocb_enc_body:
-+	mov	rbx,QWORD[56+rax]
-+	mov	rbp,QWORD[((56+8))+rax]
-+
-+	mov	r10d,DWORD[240+rcx]
-+	mov	r11,rcx
-+	shl	r10d,4
-+	movups	xmm9,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+r10*1+rcx]
-+
-+	movdqu	xmm15,XMMWORD[r9]
-+	pxor	xmm9,xmm1
-+	pxor	xmm15,xmm1
-+
-+	mov	eax,16+32
-+	lea	rcx,[32+r10*1+r11]
-+	movups	xmm1,XMMWORD[16+r11]
-+	sub	rax,r10
-+	mov	r10,rax
-+
-+	movdqu	xmm10,XMMWORD[rbx]
-+	movdqu	xmm8,XMMWORD[rbp]
-+
-+	test	r8,1
-+	jnz	NEAR $L$ocb_enc_odd
-+
-+	bsf	r12,r8
-+	add	r8,1
-+	shl	r12,4
-+	movdqu	xmm7,XMMWORD[r12*1+rbx]
-+	movdqu	xmm2,XMMWORD[rdi]
-+	lea	rdi,[16+rdi]
-+
-+	call	__ocb_encrypt1
-+
-+	movdqa	xmm15,xmm7
-+	movups	XMMWORD[rsi],xmm2
-+	lea	rsi,[16+rsi]
-+	sub	rdx,1
-+	jz	NEAR $L$ocb_enc_done
-+
-+$L$ocb_enc_odd:
-+	lea	r12,[1+r8]
-+	lea	r13,[3+r8]
-+	lea	r14,[5+r8]
-+	lea	r8,[6+r8]
-+	bsf	r12,r12
-+	bsf	r13,r13
-+	bsf	r14,r14
-+	shl	r12,4
-+	shl	r13,4
-+	shl	r14,4
-+
-+	sub	rdx,6
-+	jc	NEAR $L$ocb_enc_short
-+	jmp	NEAR $L$ocb_enc_grandloop
-+
-+ALIGN	32
-+$L$ocb_enc_grandloop:
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	movdqu	xmm7,XMMWORD[80+rdi]
-+	lea	rdi,[96+rdi]
-+
-+	call	__ocb_encrypt6
-+
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	movups	XMMWORD[80+rsi],xmm7
-+	lea	rsi,[96+rsi]
-+	sub	rdx,6
-+	jnc	NEAR $L$ocb_enc_grandloop
-+
-+$L$ocb_enc_short:
-+	add	rdx,6
-+	jz	NEAR $L$ocb_enc_done
-+
-+	movdqu	xmm2,XMMWORD[rdi]
-+	cmp	rdx,2
-+	jb	NEAR $L$ocb_enc_one
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	je	NEAR $L$ocb_enc_two
-+
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	cmp	rdx,4
-+	jb	NEAR $L$ocb_enc_three
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	je	NEAR $L$ocb_enc_four
-+
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	pxor	xmm7,xmm7
-+
-+	call	__ocb_encrypt6
-+
-+	movdqa	xmm15,xmm14
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+
-+	jmp	NEAR $L$ocb_enc_done
-+
-+ALIGN	16
-+$L$ocb_enc_one:
-+	movdqa	xmm7,xmm10
-+
-+	call	__ocb_encrypt1
-+
-+	movdqa	xmm15,xmm7
-+	movups	XMMWORD[rsi],xmm2
-+	jmp	NEAR $L$ocb_enc_done
-+
-+ALIGN	16
-+$L$ocb_enc_two:
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+
-+	call	__ocb_encrypt4
-+
-+	movdqa	xmm15,xmm11
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+
-+	jmp	NEAR $L$ocb_enc_done
-+
-+ALIGN	16
-+$L$ocb_enc_three:
-+	pxor	xmm5,xmm5
-+
-+	call	__ocb_encrypt4
-+
-+	movdqa	xmm15,xmm12
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+
-+	jmp	NEAR $L$ocb_enc_done
-+
-+ALIGN	16
-+$L$ocb_enc_four:
-+	call	__ocb_encrypt4
-+
-+	movdqa	xmm15,xmm13
-+	movups	XMMWORD[rsi],xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+
-+$L$ocb_enc_done:
-+	pxor	xmm15,xmm0
-+	movdqu	XMMWORD[rbp],xmm8
-+	movdqu	XMMWORD[r9],xmm15
-+
-+	xorps	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	movaps	xmm6,XMMWORD[rsp]
-+	movaps	XMMWORD[rsp],xmm0
-+	movaps	xmm7,XMMWORD[16+rsp]
-+	movaps	XMMWORD[16+rsp],xmm0
-+	movaps	xmm8,XMMWORD[32+rsp]
-+	movaps	XMMWORD[32+rsp],xmm0
-+	movaps	xmm9,XMMWORD[48+rsp]
-+	movaps	XMMWORD[48+rsp],xmm0
-+	movaps	xmm10,XMMWORD[64+rsp]
-+	movaps	XMMWORD[64+rsp],xmm0
-+	movaps	xmm11,XMMWORD[80+rsp]
-+	movaps	XMMWORD[80+rsp],xmm0
-+	movaps	xmm12,XMMWORD[96+rsp]
-+	movaps	XMMWORD[96+rsp],xmm0
-+	movaps	xmm13,XMMWORD[112+rsp]
-+	movaps	XMMWORD[112+rsp],xmm0
-+	movaps	xmm14,XMMWORD[128+rsp]
-+	movaps	XMMWORD[128+rsp],xmm0
-+	movaps	xmm15,XMMWORD[144+rsp]
-+	movaps	XMMWORD[144+rsp],xmm0
-+	lea	rax,[((160+40))+rsp]
-+$L$ocb_enc_pop:
-+	lea	rsp,[160+rsp]
-+	pop	r14
-+	pop	r13
-+	pop	r12
-+	pop	rbp
-+	pop	rbx
-+$L$ocb_enc_epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_ocb_encrypt:
-+
-+
-+ALIGN	32
-+__ocb_encrypt6:
-+	pxor	xmm15,xmm9
-+	movdqu	xmm11,XMMWORD[r12*1+rbx]
-+	movdqa	xmm12,xmm10
-+	movdqu	xmm13,XMMWORD[r13*1+rbx]
-+	movdqa	xmm14,xmm10
-+	pxor	xmm10,xmm15
-+	movdqu	xmm15,XMMWORD[r14*1+rbx]
-+	pxor	xmm11,xmm10
-+	pxor	xmm8,xmm2
-+	pxor	xmm2,xmm10
-+	pxor	xmm12,xmm11
-+	pxor	xmm8,xmm3
-+	pxor	xmm3,xmm11
-+	pxor	xmm13,xmm12
-+	pxor	xmm8,xmm4
-+	pxor	xmm4,xmm12
-+	pxor	xmm14,xmm13
-+	pxor	xmm8,xmm5
-+	pxor	xmm5,xmm13
-+	pxor	xmm15,xmm14
-+	pxor	xmm8,xmm6
-+	pxor	xmm6,xmm14
-+	pxor	xmm8,xmm7
-+	pxor	xmm7,xmm15
-+	movups	xmm0,XMMWORD[32+r11]
-+
-+	lea	r12,[1+r8]
-+	lea	r13,[3+r8]
-+	lea	r14,[5+r8]
-+	add	r8,6
-+	pxor	xmm10,xmm9
-+	bsf	r12,r12
-+	bsf	r13,r13
-+	bsf	r14,r14
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	pxor	xmm11,xmm9
-+	pxor	xmm12,xmm9
-+DB	102,15,56,220,241
-+	pxor	xmm13,xmm9
-+	pxor	xmm14,xmm9
-+DB	102,15,56,220,249
-+	movups	xmm1,XMMWORD[48+r11]
-+	pxor	xmm15,xmm9
-+
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+	movups	xmm0,XMMWORD[64+r11]
-+	shl	r12,4
-+	shl	r13,4
-+	jmp	NEAR $L$ocb_enc_loop6
-+
-+ALIGN	32
-+$L$ocb_enc_loop6:
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+DB	102,15,56,220,240
-+DB	102,15,56,220,248
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$ocb_enc_loop6
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+DB	102,15,56,220,241
-+DB	102,15,56,220,249
-+	movups	xmm1,XMMWORD[16+r11]
-+	shl	r14,4
-+
-+DB	102,65,15,56,221,210
-+	movdqu	xmm10,XMMWORD[rbx]
-+	mov	rax,r10
-+DB	102,65,15,56,221,219
-+DB	102,65,15,56,221,228
-+DB	102,65,15,56,221,237
-+DB	102,65,15,56,221,246
-+DB	102,65,15,56,221,255
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+ALIGN	32
-+__ocb_encrypt4:
-+	pxor	xmm15,xmm9
-+	movdqu	xmm11,XMMWORD[r12*1+rbx]
-+	movdqa	xmm12,xmm10
-+	movdqu	xmm13,XMMWORD[r13*1+rbx]
-+	pxor	xmm10,xmm15
-+	pxor	xmm11,xmm10
-+	pxor	xmm8,xmm2
-+	pxor	xmm2,xmm10
-+	pxor	xmm12,xmm11
-+	pxor	xmm8,xmm3
-+	pxor	xmm3,xmm11
-+	pxor	xmm13,xmm12
-+	pxor	xmm8,xmm4
-+	pxor	xmm4,xmm12
-+	pxor	xmm8,xmm5
-+	pxor	xmm5,xmm13
-+	movups	xmm0,XMMWORD[32+r11]
-+
-+	pxor	xmm10,xmm9
-+	pxor	xmm11,xmm9
-+	pxor	xmm12,xmm9
-+	pxor	xmm13,xmm9
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	movups	xmm1,XMMWORD[48+r11]
-+
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+	movups	xmm0,XMMWORD[64+r11]
-+	jmp	NEAR $L$ocb_enc_loop4
-+
-+ALIGN	32
-+$L$ocb_enc_loop4:
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+
-+DB	102,15,56,220,208
-+DB	102,15,56,220,216
-+DB	102,15,56,220,224
-+DB	102,15,56,220,232
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$ocb_enc_loop4
-+
-+DB	102,15,56,220,209
-+DB	102,15,56,220,217
-+DB	102,15,56,220,225
-+DB	102,15,56,220,233
-+	movups	xmm1,XMMWORD[16+r11]
-+	mov	rax,r10
-+
-+DB	102,65,15,56,221,210
-+DB	102,65,15,56,221,219
-+DB	102,65,15,56,221,228
-+DB	102,65,15,56,221,237
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+ALIGN	32
-+__ocb_encrypt1:
-+	pxor	xmm7,xmm15
-+	pxor	xmm7,xmm9
-+	pxor	xmm8,xmm2
-+	pxor	xmm2,xmm7
-+	movups	xmm0,XMMWORD[32+r11]
-+
-+DB	102,15,56,220,209
-+	movups	xmm1,XMMWORD[48+r11]
-+	pxor	xmm7,xmm9
-+
-+DB	102,15,56,220,208
-+	movups	xmm0,XMMWORD[64+r11]
-+	jmp	NEAR $L$ocb_enc_loop1
-+
-+ALIGN	32
-+$L$ocb_enc_loop1:
-+DB	102,15,56,220,209
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+
-+DB	102,15,56,220,208
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$ocb_enc_loop1
-+
-+DB	102,15,56,220,209
-+	movups	xmm1,XMMWORD[16+r11]
-+	mov	rax,r10
-+
-+DB	102,15,56,221,215
-+	DB	0F3h,0C3h		;repret
-+
-+
-+global	aesni_ocb_decrypt
-+
-+ALIGN	32
-+aesni_ocb_decrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_ocb_decrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	lea	rax,[rsp]
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	lea	rsp,[((-160))+rsp]
-+	movaps	XMMWORD[rsp],xmm6
-+	movaps	XMMWORD[16+rsp],xmm7
-+	movaps	XMMWORD[32+rsp],xmm8
-+	movaps	XMMWORD[48+rsp],xmm9
-+	movaps	XMMWORD[64+rsp],xmm10
-+	movaps	XMMWORD[80+rsp],xmm11
-+	movaps	XMMWORD[96+rsp],xmm12
-+	movaps	XMMWORD[112+rsp],xmm13
-+	movaps	XMMWORD[128+rsp],xmm14
-+	movaps	XMMWORD[144+rsp],xmm15
-+$L$ocb_dec_body:
-+	mov	rbx,QWORD[56+rax]
-+	mov	rbp,QWORD[((56+8))+rax]
-+
-+	mov	r10d,DWORD[240+rcx]
-+	mov	r11,rcx
-+	shl	r10d,4
-+	movups	xmm9,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+r10*1+rcx]
-+
-+	movdqu	xmm15,XMMWORD[r9]
-+	pxor	xmm9,xmm1
-+	pxor	xmm15,xmm1
-+
-+	mov	eax,16+32
-+	lea	rcx,[32+r10*1+r11]
-+	movups	xmm1,XMMWORD[16+r11]
-+	sub	rax,r10
-+	mov	r10,rax
-+
-+	movdqu	xmm10,XMMWORD[rbx]
-+	movdqu	xmm8,XMMWORD[rbp]
-+
-+	test	r8,1
-+	jnz	NEAR $L$ocb_dec_odd
-+
-+	bsf	r12,r8
-+	add	r8,1
-+	shl	r12,4
-+	movdqu	xmm7,XMMWORD[r12*1+rbx]
-+	movdqu	xmm2,XMMWORD[rdi]
-+	lea	rdi,[16+rdi]
-+
-+	call	__ocb_decrypt1
-+
-+	movdqa	xmm15,xmm7
-+	movups	XMMWORD[rsi],xmm2
-+	xorps	xmm8,xmm2
-+	lea	rsi,[16+rsi]
-+	sub	rdx,1
-+	jz	NEAR $L$ocb_dec_done
-+
-+$L$ocb_dec_odd:
-+	lea	r12,[1+r8]
-+	lea	r13,[3+r8]
-+	lea	r14,[5+r8]
-+	lea	r8,[6+r8]
-+	bsf	r12,r12
-+	bsf	r13,r13
-+	bsf	r14,r14
-+	shl	r12,4
-+	shl	r13,4
-+	shl	r14,4
-+
-+	sub	rdx,6
-+	jc	NEAR $L$ocb_dec_short
-+	jmp	NEAR $L$ocb_dec_grandloop
-+
-+ALIGN	32
-+$L$ocb_dec_grandloop:
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	movdqu	xmm7,XMMWORD[80+rdi]
-+	lea	rdi,[96+rdi]
-+
-+	call	__ocb_decrypt6
-+
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm8,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm8,xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	pxor	xmm8,xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	pxor	xmm8,xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	pxor	xmm8,xmm6
-+	movups	XMMWORD[80+rsi],xmm7
-+	pxor	xmm8,xmm7
-+	lea	rsi,[96+rsi]
-+	sub	rdx,6
-+	jnc	NEAR $L$ocb_dec_grandloop
-+
-+$L$ocb_dec_short:
-+	add	rdx,6
-+	jz	NEAR $L$ocb_dec_done
-+
-+	movdqu	xmm2,XMMWORD[rdi]
-+	cmp	rdx,2
-+	jb	NEAR $L$ocb_dec_one
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	je	NEAR $L$ocb_dec_two
-+
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	cmp	rdx,4
-+	jb	NEAR $L$ocb_dec_three
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	je	NEAR $L$ocb_dec_four
-+
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	pxor	xmm7,xmm7
-+
-+	call	__ocb_decrypt6
-+
-+	movdqa	xmm15,xmm14
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm8,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm8,xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	pxor	xmm8,xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	pxor	xmm8,xmm5
-+	movups	XMMWORD[64+rsi],xmm6
-+	pxor	xmm8,xmm6
-+
-+	jmp	NEAR $L$ocb_dec_done
-+
-+ALIGN	16
-+$L$ocb_dec_one:
-+	movdqa	xmm7,xmm10
-+
-+	call	__ocb_decrypt1
-+
-+	movdqa	xmm15,xmm7
-+	movups	XMMWORD[rsi],xmm2
-+	xorps	xmm8,xmm2
-+	jmp	NEAR $L$ocb_dec_done
-+
-+ALIGN	16
-+$L$ocb_dec_two:
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+
-+	call	__ocb_decrypt4
-+
-+	movdqa	xmm15,xmm11
-+	movups	XMMWORD[rsi],xmm2
-+	xorps	xmm8,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	xorps	xmm8,xmm3
-+
-+	jmp	NEAR $L$ocb_dec_done
-+
-+ALIGN	16
-+$L$ocb_dec_three:
-+	pxor	xmm5,xmm5
-+
-+	call	__ocb_decrypt4
-+
-+	movdqa	xmm15,xmm12
-+	movups	XMMWORD[rsi],xmm2
-+	xorps	xmm8,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	xorps	xmm8,xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	xorps	xmm8,xmm4
-+
-+	jmp	NEAR $L$ocb_dec_done
-+
-+ALIGN	16
-+$L$ocb_dec_four:
-+	call	__ocb_decrypt4
-+
-+	movdqa	xmm15,xmm13
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm8,xmm2
-+	movups	XMMWORD[16+rsi],xmm3
-+	pxor	xmm8,xmm3
-+	movups	XMMWORD[32+rsi],xmm4
-+	pxor	xmm8,xmm4
-+	movups	XMMWORD[48+rsi],xmm5
-+	pxor	xmm8,xmm5
-+
-+$L$ocb_dec_done:
-+	pxor	xmm15,xmm0
-+	movdqu	XMMWORD[rbp],xmm8
-+	movdqu	XMMWORD[r9],xmm15
-+
-+	xorps	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	movaps	xmm6,XMMWORD[rsp]
-+	movaps	XMMWORD[rsp],xmm0
-+	movaps	xmm7,XMMWORD[16+rsp]
-+	movaps	XMMWORD[16+rsp],xmm0
-+	movaps	xmm8,XMMWORD[32+rsp]
-+	movaps	XMMWORD[32+rsp],xmm0
-+	movaps	xmm9,XMMWORD[48+rsp]
-+	movaps	XMMWORD[48+rsp],xmm0
-+	movaps	xmm10,XMMWORD[64+rsp]
-+	movaps	XMMWORD[64+rsp],xmm0
-+	movaps	xmm11,XMMWORD[80+rsp]
-+	movaps	XMMWORD[80+rsp],xmm0
-+	movaps	xmm12,XMMWORD[96+rsp]
-+	movaps	XMMWORD[96+rsp],xmm0
-+	movaps	xmm13,XMMWORD[112+rsp]
-+	movaps	XMMWORD[112+rsp],xmm0
-+	movaps	xmm14,XMMWORD[128+rsp]
-+	movaps	XMMWORD[128+rsp],xmm0
-+	movaps	xmm15,XMMWORD[144+rsp]
-+	movaps	XMMWORD[144+rsp],xmm0
-+	lea	rax,[((160+40))+rsp]
-+$L$ocb_dec_pop:
-+	lea	rsp,[160+rsp]
-+	pop	r14
-+	pop	r13
-+	pop	r12
-+	pop	rbp
-+	pop	rbx
-+$L$ocb_dec_epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_ocb_decrypt:
-+
-+
-+ALIGN	32
-+__ocb_decrypt6:
-+	pxor	xmm15,xmm9
-+	movdqu	xmm11,XMMWORD[r12*1+rbx]
-+	movdqa	xmm12,xmm10
-+	movdqu	xmm13,XMMWORD[r13*1+rbx]
-+	movdqa	xmm14,xmm10
-+	pxor	xmm10,xmm15
-+	movdqu	xmm15,XMMWORD[r14*1+rbx]
-+	pxor	xmm11,xmm10
-+	pxor	xmm2,xmm10
-+	pxor	xmm12,xmm11
-+	pxor	xmm3,xmm11
-+	pxor	xmm13,xmm12
-+	pxor	xmm4,xmm12
-+	pxor	xmm14,xmm13
-+	pxor	xmm5,xmm13
-+	pxor	xmm15,xmm14
-+	pxor	xmm6,xmm14
-+	pxor	xmm7,xmm15
-+	movups	xmm0,XMMWORD[32+r11]
-+
-+	lea	r12,[1+r8]
-+	lea	r13,[3+r8]
-+	lea	r14,[5+r8]
-+	add	r8,6
-+	pxor	xmm10,xmm9
-+	bsf	r12,r12
-+	bsf	r13,r13
-+	bsf	r14,r14
-+
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+	pxor	xmm11,xmm9
-+	pxor	xmm12,xmm9
-+DB	102,15,56,222,241
-+	pxor	xmm13,xmm9
-+	pxor	xmm14,xmm9
-+DB	102,15,56,222,249
-+	movups	xmm1,XMMWORD[48+r11]
-+	pxor	xmm15,xmm9
-+
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+	movups	xmm0,XMMWORD[64+r11]
-+	shl	r12,4
-+	shl	r13,4
-+	jmp	NEAR $L$ocb_dec_loop6
-+
-+ALIGN	32
-+$L$ocb_dec_loop6:
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$ocb_dec_loop6
-+
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+	movups	xmm1,XMMWORD[16+r11]
-+	shl	r14,4
-+
-+DB	102,65,15,56,223,210
-+	movdqu	xmm10,XMMWORD[rbx]
-+	mov	rax,r10
-+DB	102,65,15,56,223,219
-+DB	102,65,15,56,223,228
-+DB	102,65,15,56,223,237
-+DB	102,65,15,56,223,246
-+DB	102,65,15,56,223,255
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+ALIGN	32
-+__ocb_decrypt4:
-+	pxor	xmm15,xmm9
-+	movdqu	xmm11,XMMWORD[r12*1+rbx]
-+	movdqa	xmm12,xmm10
-+	movdqu	xmm13,XMMWORD[r13*1+rbx]
-+	pxor	xmm10,xmm15
-+	pxor	xmm11,xmm10
-+	pxor	xmm2,xmm10
-+	pxor	xmm12,xmm11
-+	pxor	xmm3,xmm11
-+	pxor	xmm13,xmm12
-+	pxor	xmm4,xmm12
-+	pxor	xmm5,xmm13
-+	movups	xmm0,XMMWORD[32+r11]
-+
-+	pxor	xmm10,xmm9
-+	pxor	xmm11,xmm9
-+	pxor	xmm12,xmm9
-+	pxor	xmm13,xmm9
-+
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+	movups	xmm1,XMMWORD[48+r11]
-+
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+	movups	xmm0,XMMWORD[64+r11]
-+	jmp	NEAR $L$ocb_dec_loop4
-+
-+ALIGN	32
-+$L$ocb_dec_loop4:
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$ocb_dec_loop4
-+
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+	movups	xmm1,XMMWORD[16+r11]
-+	mov	rax,r10
-+
-+DB	102,65,15,56,223,210
-+DB	102,65,15,56,223,219
-+DB	102,65,15,56,223,228
-+DB	102,65,15,56,223,237
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+ALIGN	32
-+__ocb_decrypt1:
-+	pxor	xmm7,xmm15
-+	pxor	xmm7,xmm9
-+	pxor	xmm2,xmm7
-+	movups	xmm0,XMMWORD[32+r11]
-+
-+DB	102,15,56,222,209
-+	movups	xmm1,XMMWORD[48+r11]
-+	pxor	xmm7,xmm9
-+
-+DB	102,15,56,222,208
-+	movups	xmm0,XMMWORD[64+r11]
-+	jmp	NEAR $L$ocb_dec_loop1
-+
-+ALIGN	32
-+$L$ocb_dec_loop1:
-+DB	102,15,56,222,209
-+	movups	xmm1,XMMWORD[rax*1+rcx]
-+	add	rax,32
-+
-+DB	102,15,56,222,208
-+	movups	xmm0,XMMWORD[((-16))+rax*1+rcx]
-+	jnz	NEAR $L$ocb_dec_loop1
-+
-+DB	102,15,56,222,209
-+	movups	xmm1,XMMWORD[16+r11]
-+	mov	rax,r10
-+
-+DB	102,15,56,223,215
-+	DB	0F3h,0C3h		;repret
-+
-+global	aesni_cbc_encrypt
-+
-+ALIGN	16
-+aesni_cbc_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_aesni_cbc_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	test	rdx,rdx
-+	jz	NEAR $L$cbc_ret
-+
-+	mov	r10d,DWORD[240+rcx]
-+	mov	r11,rcx
-+	test	r9d,r9d
-+	jz	NEAR $L$cbc_decrypt
-+
-+	movups	xmm2,XMMWORD[r8]
-+	mov	eax,r10d
-+	cmp	rdx,16
-+	jb	NEAR $L$cbc_enc_tail
-+	sub	rdx,16
-+	jmp	NEAR $L$cbc_enc_loop
-+ALIGN	16
-+$L$cbc_enc_loop:
-+	movups	xmm3,XMMWORD[rdi]
-+	lea	rdi,[16+rdi]
-+
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	xorps	xmm3,xmm0
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm3
-+$L$oop_enc1_15:
-+DB	102,15,56,220,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_enc1_15
-+DB	102,15,56,221,209
-+	mov	eax,r10d
-+	mov	rcx,r11
-+	movups	XMMWORD[rsi],xmm2
-+	lea	rsi,[16+rsi]
-+	sub	rdx,16
-+	jnc	NEAR $L$cbc_enc_loop
-+	add	rdx,16
-+	jnz	NEAR $L$cbc_enc_tail
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	movups	XMMWORD[r8],xmm2
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	jmp	NEAR $L$cbc_ret
-+
-+$L$cbc_enc_tail:
-+	mov	rcx,rdx
-+	xchg	rsi,rdi
-+	DD	0x9066A4F3
-+	mov	ecx,16
-+	sub	rcx,rdx
-+	xor	eax,eax
-+	DD	0x9066AAF3
-+	lea	rdi,[((-16))+rdi]
-+	mov	eax,r10d
-+	mov	rsi,rdi
-+	mov	rcx,r11
-+	xor	rdx,rdx
-+	jmp	NEAR $L$cbc_enc_loop
-+
-+ALIGN	16
-+$L$cbc_decrypt:
-+	cmp	rdx,16
-+	jne	NEAR $L$cbc_decrypt_bulk
-+
-+
-+
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqu	xmm3,XMMWORD[r8]
-+	movdqa	xmm4,xmm2
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_dec1_16:
-+DB	102,15,56,222,209
-+	dec	r10d
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_dec1_16
-+DB	102,15,56,223,209
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	movdqu	XMMWORD[r8],xmm4
-+	xorps	xmm2,xmm3
-+	pxor	xmm3,xmm3
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm2,xmm2
-+	jmp	NEAR $L$cbc_ret
-+ALIGN	16
-+$L$cbc_decrypt_bulk:
-+	lea	rax,[rsp]
-+	push	rbp
-+	sub	rsp,176
-+	and	rsp,-16
-+	movaps	XMMWORD[16+rsp],xmm6
-+	movaps	XMMWORD[32+rsp],xmm7
-+	movaps	XMMWORD[48+rsp],xmm8
-+	movaps	XMMWORD[64+rsp],xmm9
-+	movaps	XMMWORD[80+rsp],xmm10
-+	movaps	XMMWORD[96+rsp],xmm11
-+	movaps	XMMWORD[112+rsp],xmm12
-+	movaps	XMMWORD[128+rsp],xmm13
-+	movaps	XMMWORD[144+rsp],xmm14
-+	movaps	XMMWORD[160+rsp],xmm15
-+$L$cbc_decrypt_body:
-+	lea	rbp,[((-8))+rax]
-+	movups	xmm10,XMMWORD[r8]
-+	mov	eax,r10d
-+	cmp	rdx,0x50
-+	jbe	NEAR $L$cbc_dec_tail
-+
-+	movups	xmm0,XMMWORD[rcx]
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	movdqa	xmm11,xmm2
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	movdqa	xmm12,xmm3
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	movdqa	xmm13,xmm4
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	movdqa	xmm14,xmm5
-+	movdqu	xmm7,XMMWORD[80+rdi]
-+	movdqa	xmm15,xmm6
-+	mov	r9d,DWORD[((_gnutls_x86_cpuid_s+4))]
-+	cmp	rdx,0x70
-+	jbe	NEAR $L$cbc_dec_six_or_seven
-+
-+	and	r9d,71303168
-+	sub	rdx,0x50
-+	cmp	r9d,4194304
-+	je	NEAR $L$cbc_dec_loop6_enter
-+	sub	rdx,0x20
-+	lea	rcx,[112+rcx]
-+	jmp	NEAR $L$cbc_dec_loop8_enter
-+ALIGN	16
-+$L$cbc_dec_loop8:
-+	movups	XMMWORD[rsi],xmm9
-+	lea	rsi,[16+rsi]
-+$L$cbc_dec_loop8_enter:
-+	movdqu	xmm8,XMMWORD[96+rdi]
-+	pxor	xmm2,xmm0
-+	movdqu	xmm9,XMMWORD[112+rdi]
-+	pxor	xmm3,xmm0
-+	movups	xmm1,XMMWORD[((16-112))+rcx]
-+	pxor	xmm4,xmm0
-+	xor	r11,r11
-+	cmp	rdx,0x70
-+	pxor	xmm5,xmm0
-+	pxor	xmm6,xmm0
-+	pxor	xmm7,xmm0
-+	pxor	xmm8,xmm0
-+
-+DB	102,15,56,222,209
-+	pxor	xmm9,xmm0
-+	movups	xmm0,XMMWORD[((32-112))+rcx]
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+DB	102,68,15,56,222,193
-+	setnc	r11b
-+	shl	r11,7
-+DB	102,68,15,56,222,201
-+	add	r11,rdi
-+	movups	xmm1,XMMWORD[((48-112))+rcx]
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+DB	102,68,15,56,222,192
-+DB	102,68,15,56,222,200
-+	movups	xmm0,XMMWORD[((64-112))+rcx]
-+	nop
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+DB	102,68,15,56,222,193
-+DB	102,68,15,56,222,201
-+	movups	xmm1,XMMWORD[((80-112))+rcx]
-+	nop
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+DB	102,68,15,56,222,192
-+DB	102,68,15,56,222,200
-+	movups	xmm0,XMMWORD[((96-112))+rcx]
-+	nop
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+DB	102,68,15,56,222,193
-+DB	102,68,15,56,222,201
-+	movups	xmm1,XMMWORD[((112-112))+rcx]
-+	nop
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+DB	102,68,15,56,222,192
-+DB	102,68,15,56,222,200
-+	movups	xmm0,XMMWORD[((128-112))+rcx]
-+	nop
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+DB	102,68,15,56,222,193
-+DB	102,68,15,56,222,201
-+	movups	xmm1,XMMWORD[((144-112))+rcx]
-+	cmp	eax,11
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+DB	102,68,15,56,222,192
-+DB	102,68,15,56,222,200
-+	movups	xmm0,XMMWORD[((160-112))+rcx]
-+	jb	NEAR $L$cbc_dec_done
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+DB	102,68,15,56,222,193
-+DB	102,68,15,56,222,201
-+	movups	xmm1,XMMWORD[((176-112))+rcx]
-+	nop
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+DB	102,68,15,56,222,192
-+DB	102,68,15,56,222,200
-+	movups	xmm0,XMMWORD[((192-112))+rcx]
-+	je	NEAR $L$cbc_dec_done
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+DB	102,68,15,56,222,193
-+DB	102,68,15,56,222,201
-+	movups	xmm1,XMMWORD[((208-112))+rcx]
-+	nop
-+DB	102,15,56,222,208
-+DB	102,15,56,222,216
-+DB	102,15,56,222,224
-+DB	102,15,56,222,232
-+DB	102,15,56,222,240
-+DB	102,15,56,222,248
-+DB	102,68,15,56,222,192
-+DB	102,68,15,56,222,200
-+	movups	xmm0,XMMWORD[((224-112))+rcx]
-+	jmp	NEAR $L$cbc_dec_done
-+ALIGN	16
-+$L$cbc_dec_done:
-+DB	102,15,56,222,209
-+DB	102,15,56,222,217
-+	pxor	xmm10,xmm0
-+	pxor	xmm11,xmm0
-+DB	102,15,56,222,225
-+DB	102,15,56,222,233
-+	pxor	xmm12,xmm0
-+	pxor	xmm13,xmm0
-+DB	102,15,56,222,241
-+DB	102,15,56,222,249
-+	pxor	xmm14,xmm0
-+	pxor	xmm15,xmm0
-+DB	102,68,15,56,222,193
-+DB	102,68,15,56,222,201
-+	movdqu	xmm1,XMMWORD[80+rdi]
-+
-+DB	102,65,15,56,223,210
-+	movdqu	xmm10,XMMWORD[96+rdi]
-+	pxor	xmm1,xmm0
-+DB	102,65,15,56,223,219
-+	pxor	xmm10,xmm0
-+	movdqu	xmm0,XMMWORD[112+rdi]
-+DB	102,65,15,56,223,228
-+	lea	rdi,[128+rdi]
-+	movdqu	xmm11,XMMWORD[r11]
-+DB	102,65,15,56,223,237
-+DB	102,65,15,56,223,246
-+	movdqu	xmm12,XMMWORD[16+r11]
-+	movdqu	xmm13,XMMWORD[32+r11]
-+DB	102,65,15,56,223,255
-+DB	102,68,15,56,223,193
-+	movdqu	xmm14,XMMWORD[48+r11]
-+	movdqu	xmm15,XMMWORD[64+r11]
-+DB	102,69,15,56,223,202
-+	movdqa	xmm10,xmm0
-+	movdqu	xmm1,XMMWORD[80+r11]
-+	movups	xmm0,XMMWORD[((-112))+rcx]
-+
-+	movups	XMMWORD[rsi],xmm2
-+	movdqa	xmm2,xmm11
-+	movups	XMMWORD[16+rsi],xmm3
-+	movdqa	xmm3,xmm12
-+	movups	XMMWORD[32+rsi],xmm4
-+	movdqa	xmm4,xmm13
-+	movups	XMMWORD[48+rsi],xmm5
-+	movdqa	xmm5,xmm14
-+	movups	XMMWORD[64+rsi],xmm6
-+	movdqa	xmm6,xmm15
-+	movups	XMMWORD[80+rsi],xmm7
-+	movdqa	xmm7,xmm1
-+	movups	XMMWORD[96+rsi],xmm8
-+	lea	rsi,[112+rsi]
-+
-+	sub	rdx,0x80
-+	ja	NEAR $L$cbc_dec_loop8
-+
-+	movaps	xmm2,xmm9
-+	lea	rcx,[((-112))+rcx]
-+	add	rdx,0x70
-+	jle	NEAR $L$cbc_dec_clear_tail_collected
-+	movups	XMMWORD[rsi],xmm9
-+	lea	rsi,[16+rsi]
-+	cmp	rdx,0x50
-+	jbe	NEAR $L$cbc_dec_tail
-+
-+	movaps	xmm2,xmm11
-+$L$cbc_dec_six_or_seven:
-+	cmp	rdx,0x60
-+	ja	NEAR $L$cbc_dec_seven
-+
-+	movaps	xmm8,xmm7
-+	call	_aesni_decrypt6
-+	pxor	xmm2,xmm10
-+	movaps	xmm10,xmm8
-+	pxor	xmm3,xmm11
-+	movdqu	XMMWORD[rsi],xmm2
-+	pxor	xmm4,xmm12
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	pxor	xmm5,xmm13
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	pxor	xmm4,xmm4
-+	pxor	xmm6,xmm14
-+	movdqu	XMMWORD[48+rsi],xmm5
-+	pxor	xmm5,xmm5
-+	pxor	xmm7,xmm15
-+	movdqu	XMMWORD[64+rsi],xmm6
-+	pxor	xmm6,xmm6
-+	lea	rsi,[80+rsi]
-+	movdqa	xmm2,xmm7
-+	pxor	xmm7,xmm7
-+	jmp	NEAR $L$cbc_dec_tail_collected
-+
-+ALIGN	16
-+$L$cbc_dec_seven:
-+	movups	xmm8,XMMWORD[96+rdi]
-+	xorps	xmm9,xmm9
-+	call	_aesni_decrypt8
-+	movups	xmm9,XMMWORD[80+rdi]
-+	pxor	xmm2,xmm10
-+	movups	xmm10,XMMWORD[96+rdi]
-+	pxor	xmm3,xmm11
-+	movdqu	XMMWORD[rsi],xmm2
-+	pxor	xmm4,xmm12
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	pxor	xmm5,xmm13
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	pxor	xmm4,xmm4
-+	pxor	xmm6,xmm14
-+	movdqu	XMMWORD[48+rsi],xmm5
-+	pxor	xmm5,xmm5
-+	pxor	xmm7,xmm15
-+	movdqu	XMMWORD[64+rsi],xmm6
-+	pxor	xmm6,xmm6
-+	pxor	xmm8,xmm9
-+	movdqu	XMMWORD[80+rsi],xmm7
-+	pxor	xmm7,xmm7
-+	lea	rsi,[96+rsi]
-+	movdqa	xmm2,xmm8
-+	pxor	xmm8,xmm8
-+	pxor	xmm9,xmm9
-+	jmp	NEAR $L$cbc_dec_tail_collected
-+
-+ALIGN	16
-+$L$cbc_dec_loop6:
-+	movups	XMMWORD[rsi],xmm7
-+	lea	rsi,[16+rsi]
-+	movdqu	xmm2,XMMWORD[rdi]
-+	movdqu	xmm3,XMMWORD[16+rdi]
-+	movdqa	xmm11,xmm2
-+	movdqu	xmm4,XMMWORD[32+rdi]
-+	movdqa	xmm12,xmm3
-+	movdqu	xmm5,XMMWORD[48+rdi]
-+	movdqa	xmm13,xmm4
-+	movdqu	xmm6,XMMWORD[64+rdi]
-+	movdqa	xmm14,xmm5
-+	movdqu	xmm7,XMMWORD[80+rdi]
-+	movdqa	xmm15,xmm6
-+$L$cbc_dec_loop6_enter:
-+	lea	rdi,[96+rdi]
-+	movdqa	xmm8,xmm7
-+
-+	call	_aesni_decrypt6
-+
-+	pxor	xmm2,xmm10
-+	movdqa	xmm10,xmm8
-+	pxor	xmm3,xmm11
-+	movdqu	XMMWORD[rsi],xmm2
-+	pxor	xmm4,xmm12
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	pxor	xmm5,xmm13
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	pxor	xmm6,xmm14
-+	mov	rcx,r11
-+	movdqu	XMMWORD[48+rsi],xmm5
-+	pxor	xmm7,xmm15
-+	mov	eax,r10d
-+	movdqu	XMMWORD[64+rsi],xmm6
-+	lea	rsi,[80+rsi]
-+	sub	rdx,0x60
-+	ja	NEAR $L$cbc_dec_loop6
-+
-+	movdqa	xmm2,xmm7
-+	add	rdx,0x50
-+	jle	NEAR $L$cbc_dec_clear_tail_collected
-+	movups	XMMWORD[rsi],xmm7
-+	lea	rsi,[16+rsi]
-+
-+$L$cbc_dec_tail:
-+	movups	xmm2,XMMWORD[rdi]
-+	sub	rdx,0x10
-+	jbe	NEAR $L$cbc_dec_one
-+
-+	movups	xmm3,XMMWORD[16+rdi]
-+	movaps	xmm11,xmm2
-+	sub	rdx,0x10
-+	jbe	NEAR $L$cbc_dec_two
-+
-+	movups	xmm4,XMMWORD[32+rdi]
-+	movaps	xmm12,xmm3
-+	sub	rdx,0x10
-+	jbe	NEAR $L$cbc_dec_three
-+
-+	movups	xmm5,XMMWORD[48+rdi]
-+	movaps	xmm13,xmm4
-+	sub	rdx,0x10
-+	jbe	NEAR $L$cbc_dec_four
-+
-+	movups	xmm6,XMMWORD[64+rdi]
-+	movaps	xmm14,xmm5
-+	movaps	xmm15,xmm6
-+	xorps	xmm7,xmm7
-+	call	_aesni_decrypt6
-+	pxor	xmm2,xmm10
-+	movaps	xmm10,xmm15
-+	pxor	xmm3,xmm11
-+	movdqu	XMMWORD[rsi],xmm2
-+	pxor	xmm4,xmm12
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	pxor	xmm5,xmm13
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	pxor	xmm4,xmm4
-+	pxor	xmm6,xmm14
-+	movdqu	XMMWORD[48+rsi],xmm5
-+	pxor	xmm5,xmm5
-+	lea	rsi,[64+rsi]
-+	movdqa	xmm2,xmm6
-+	pxor	xmm6,xmm6
-+	pxor	xmm7,xmm7
-+	sub	rdx,0x10
-+	jmp	NEAR $L$cbc_dec_tail_collected
-+
-+ALIGN	16
-+$L$cbc_dec_one:
-+	movaps	xmm11,xmm2
-+	movups	xmm0,XMMWORD[rcx]
-+	movups	xmm1,XMMWORD[16+rcx]
-+	lea	rcx,[32+rcx]
-+	xorps	xmm2,xmm0
-+$L$oop_dec1_17:
-+DB	102,15,56,222,209
-+	dec	eax
-+	movups	xmm1,XMMWORD[rcx]
-+	lea	rcx,[16+rcx]
-+	jnz	NEAR $L$oop_dec1_17
-+DB	102,15,56,223,209
-+	xorps	xmm2,xmm10
-+	movaps	xmm10,xmm11
-+	jmp	NEAR $L$cbc_dec_tail_collected
-+ALIGN	16
-+$L$cbc_dec_two:
-+	movaps	xmm12,xmm3
-+	call	_aesni_decrypt2
-+	pxor	xmm2,xmm10
-+	movaps	xmm10,xmm12
-+	pxor	xmm3,xmm11
-+	movdqu	XMMWORD[rsi],xmm2
-+	movdqa	xmm2,xmm3
-+	pxor	xmm3,xmm3
-+	lea	rsi,[16+rsi]
-+	jmp	NEAR $L$cbc_dec_tail_collected
-+ALIGN	16
-+$L$cbc_dec_three:
-+	movaps	xmm13,xmm4
-+	call	_aesni_decrypt3
-+	pxor	xmm2,xmm10
-+	movaps	xmm10,xmm13
-+	pxor	xmm3,xmm11
-+	movdqu	XMMWORD[rsi],xmm2
-+	pxor	xmm4,xmm12
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	movdqa	xmm2,xmm4
-+	pxor	xmm4,xmm4
-+	lea	rsi,[32+rsi]
-+	jmp	NEAR $L$cbc_dec_tail_collected
-+ALIGN	16
-+$L$cbc_dec_four:
-+	movaps	xmm14,xmm5
-+	call	_aesni_decrypt4
-+	pxor	xmm2,xmm10
-+	movaps	xmm10,xmm14
-+	pxor	xmm3,xmm11
-+	movdqu	XMMWORD[rsi],xmm2
-+	pxor	xmm4,xmm12
-+	movdqu	XMMWORD[16+rsi],xmm3
-+	pxor	xmm3,xmm3
-+	pxor	xmm5,xmm13
-+	movdqu	XMMWORD[32+rsi],xmm4
-+	pxor	xmm4,xmm4
-+	movdqa	xmm2,xmm5
-+	pxor	xmm5,xmm5
-+	lea	rsi,[48+rsi]
-+	jmp	NEAR $L$cbc_dec_tail_collected
-+
-+ALIGN	16
-+$L$cbc_dec_clear_tail_collected:
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+$L$cbc_dec_tail_collected:
-+	movups	XMMWORD[r8],xmm10
-+	and	rdx,15
-+	jnz	NEAR $L$cbc_dec_tail_partial
-+	movups	XMMWORD[rsi],xmm2
-+	pxor	xmm2,xmm2
-+	jmp	NEAR $L$cbc_dec_ret
-+ALIGN	16
-+$L$cbc_dec_tail_partial:
-+	movaps	XMMWORD[rsp],xmm2
-+	pxor	xmm2,xmm2
-+	mov	rcx,16
-+	mov	rdi,rsi
-+	sub	rcx,rdx
-+	lea	rsi,[rsp]
-+	DD	0x9066A4F3
-+	movdqa	XMMWORD[rsp],xmm2
-+
-+$L$cbc_dec_ret:
-+	xorps	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	movaps	xmm6,XMMWORD[16+rsp]
-+	movaps	XMMWORD[16+rsp],xmm0
-+	movaps	xmm7,XMMWORD[32+rsp]
-+	movaps	XMMWORD[32+rsp],xmm0
-+	movaps	xmm8,XMMWORD[48+rsp]
-+	movaps	XMMWORD[48+rsp],xmm0
-+	movaps	xmm9,XMMWORD[64+rsp]
-+	movaps	XMMWORD[64+rsp],xmm0
-+	movaps	xmm10,XMMWORD[80+rsp]
-+	movaps	XMMWORD[80+rsp],xmm0
-+	movaps	xmm11,XMMWORD[96+rsp]
-+	movaps	XMMWORD[96+rsp],xmm0
-+	movaps	xmm12,XMMWORD[112+rsp]
-+	movaps	XMMWORD[112+rsp],xmm0
-+	movaps	xmm13,XMMWORD[128+rsp]
-+	movaps	XMMWORD[128+rsp],xmm0
-+	movaps	xmm14,XMMWORD[144+rsp]
-+	movaps	XMMWORD[144+rsp],xmm0
-+	movaps	xmm15,XMMWORD[160+rsp]
-+	movaps	XMMWORD[160+rsp],xmm0
-+	lea	rsp,[rbp]
-+	pop	rbp
-+$L$cbc_ret:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_aesni_cbc_encrypt:
-+global	aesni_set_decrypt_key
-+
-+ALIGN	16
-+aesni_set_decrypt_key:
-+DB	0x48,0x83,0xEC,0x08
-+	call	__aesni_set_encrypt_key
-+	shl	edx,4
-+	test	eax,eax
-+	jnz	NEAR $L$dec_key_ret
-+	lea	rcx,[16+rdx*1+r8]
-+
-+	movups	xmm0,XMMWORD[r8]
-+	movups	xmm1,XMMWORD[rcx]
-+	movups	XMMWORD[rcx],xmm0
-+	movups	XMMWORD[r8],xmm1
-+	lea	r8,[16+r8]
-+	lea	rcx,[((-16))+rcx]
-+
-+$L$dec_key_inverse:
-+	movups	xmm0,XMMWORD[r8]
-+	movups	xmm1,XMMWORD[rcx]
-+DB	102,15,56,219,192
-+DB	102,15,56,219,201
-+	lea	r8,[16+r8]
-+	lea	rcx,[((-16))+rcx]
-+	movups	XMMWORD[16+rcx],xmm0
-+	movups	XMMWORD[(-16)+r8],xmm1
-+	cmp	rcx,r8
-+	ja	NEAR $L$dec_key_inverse
-+
-+	movups	xmm0,XMMWORD[r8]
-+DB	102,15,56,219,192
-+	pxor	xmm1,xmm1
-+	movups	XMMWORD[rcx],xmm0
-+	pxor	xmm0,xmm0
-+$L$dec_key_ret:
-+	add	rsp,8
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_set_decrypt_key:
-+
-+global	aesni_set_encrypt_key
-+
-+ALIGN	16
-+aesni_set_encrypt_key:
-+__aesni_set_encrypt_key:
-+DB	0x48,0x83,0xEC,0x08
-+	mov	rax,-1
-+	test	rcx,rcx
-+	jz	NEAR $L$enc_key_ret
-+	test	r8,r8
-+	jz	NEAR $L$enc_key_ret
-+
-+	mov	r10d,268437504
-+	movups	xmm0,XMMWORD[rcx]
-+	xorps	xmm4,xmm4
-+	and	r10d,DWORD[((_gnutls_x86_cpuid_s+4))]
-+	lea	rax,[16+r8]
-+	cmp	edx,256
-+	je	NEAR $L$14rounds
-+	cmp	edx,192
-+	je	NEAR $L$12rounds
-+	cmp	edx,128
-+	jne	NEAR $L$bad_keybits
-+
-+$L$10rounds:
-+	mov	edx,9
-+	cmp	r10d,268435456
-+	je	NEAR $L$10rounds_alt
-+
-+	movups	XMMWORD[r8],xmm0
-+DB	102,15,58,223,200,1
-+	call	$L$key_expansion_128_cold
-+DB	102,15,58,223,200,2
-+	call	$L$key_expansion_128
-+DB	102,15,58,223,200,4
-+	call	$L$key_expansion_128
-+DB	102,15,58,223,200,8
-+	call	$L$key_expansion_128
-+DB	102,15,58,223,200,16
-+	call	$L$key_expansion_128
-+DB	102,15,58,223,200,32
-+	call	$L$key_expansion_128
-+DB	102,15,58,223,200,64
-+	call	$L$key_expansion_128
-+DB	102,15,58,223,200,128
-+	call	$L$key_expansion_128
-+DB	102,15,58,223,200,27
-+	call	$L$key_expansion_128
-+DB	102,15,58,223,200,54
-+	call	$L$key_expansion_128
-+	movups	XMMWORD[rax],xmm0
-+	mov	DWORD[80+rax],edx
-+	xor	eax,eax
-+	jmp	NEAR $L$enc_key_ret
-+
-+ALIGN	16
-+$L$10rounds_alt:
-+	movdqa	xmm5,XMMWORD[$L$key_rotate]
-+	mov	r10d,8
-+	movdqa	xmm4,XMMWORD[$L$key_rcon1]
-+	movdqa	xmm2,xmm0
-+	movdqu	XMMWORD[r8],xmm0
-+	jmp	NEAR $L$oop_key128
-+
-+ALIGN	16
-+$L$oop_key128:
-+DB	102,15,56,0,197
-+DB	102,15,56,221,196
-+	pslld	xmm4,1
-+	lea	rax,[16+rax]
-+
-+	movdqa	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm2,xmm3
-+
-+	pxor	xmm0,xmm2
-+	movdqu	XMMWORD[(-16)+rax],xmm0
-+	movdqa	xmm2,xmm0
-+
-+	dec	r10d
-+	jnz	NEAR $L$oop_key128
-+
-+	movdqa	xmm4,XMMWORD[$L$key_rcon1b]
-+
-+DB	102,15,56,0,197
-+DB	102,15,56,221,196
-+	pslld	xmm4,1
-+
-+	movdqa	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm2,xmm3
-+
-+	pxor	xmm0,xmm2
-+	movdqu	XMMWORD[rax],xmm0
-+
-+	movdqa	xmm2,xmm0
-+DB	102,15,56,0,197
-+DB	102,15,56,221,196
-+
-+	movdqa	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm3,xmm2
-+	pslldq	xmm2,4
-+	pxor	xmm2,xmm3
-+
-+	pxor	xmm0,xmm2
-+	movdqu	XMMWORD[16+rax],xmm0
-+
-+	mov	DWORD[96+rax],edx
-+	xor	eax,eax
-+	jmp	NEAR $L$enc_key_ret
-+
-+ALIGN	16
-+$L$12rounds:
-+	movq	xmm2,QWORD[16+rcx]
-+	mov	edx,11
-+	cmp	r10d,268435456
-+	je	NEAR $L$12rounds_alt
-+
-+	movups	XMMWORD[r8],xmm0
-+DB	102,15,58,223,202,1
-+	call	$L$key_expansion_192a_cold
-+DB	102,15,58,223,202,2
-+	call	$L$key_expansion_192b
-+DB	102,15,58,223,202,4
-+	call	$L$key_expansion_192a
-+DB	102,15,58,223,202,8
-+	call	$L$key_expansion_192b
-+DB	102,15,58,223,202,16
-+	call	$L$key_expansion_192a
-+DB	102,15,58,223,202,32
-+	call	$L$key_expansion_192b
-+DB	102,15,58,223,202,64
-+	call	$L$key_expansion_192a
-+DB	102,15,58,223,202,128
-+	call	$L$key_expansion_192b
-+	movups	XMMWORD[rax],xmm0
-+	mov	DWORD[48+rax],edx
-+	xor	rax,rax
-+	jmp	NEAR $L$enc_key_ret
-+
-+ALIGN	16
-+$L$12rounds_alt:
-+	movdqa	xmm5,XMMWORD[$L$key_rotate192]
-+	movdqa	xmm4,XMMWORD[$L$key_rcon1]
-+	mov	r10d,8
-+	movdqu	XMMWORD[r8],xmm0
-+	jmp	NEAR $L$oop_key192
-+
-+ALIGN	16
-+$L$oop_key192:
-+	movq	QWORD[rax],xmm2
-+	movdqa	xmm1,xmm2
-+DB	102,15,56,0,213
-+DB	102,15,56,221,212
-+	pslld	xmm4,1
-+	lea	rax,[24+rax]
-+
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm0,xmm3
-+
-+	pshufd	xmm3,xmm0,0xff
-+	pxor	xmm3,xmm1
-+	pslldq	xmm1,4
-+	pxor	xmm3,xmm1
-+
-+	pxor	xmm0,xmm2
-+	pxor	xmm2,xmm3
-+	movdqu	XMMWORD[(-16)+rax],xmm0
-+
-+	dec	r10d
-+	jnz	NEAR $L$oop_key192
-+
-+	mov	DWORD[32+rax],edx
-+	xor	eax,eax
-+	jmp	NEAR $L$enc_key_ret
-+
-+ALIGN	16
-+$L$14rounds:
-+	movups	xmm2,XMMWORD[16+rcx]
-+	mov	edx,13
-+	lea	rax,[16+rax]
-+	cmp	r10d,268435456
-+	je	NEAR $L$14rounds_alt
-+
-+	movups	XMMWORD[r8],xmm0
-+	movups	XMMWORD[16+r8],xmm2
-+DB	102,15,58,223,202,1
-+	call	$L$key_expansion_256a_cold
-+DB	102,15,58,223,200,1
-+	call	$L$key_expansion_256b
-+DB	102,15,58,223,202,2
-+	call	$L$key_expansion_256a
-+DB	102,15,58,223,200,2
-+	call	$L$key_expansion_256b
-+DB	102,15,58,223,202,4
-+	call	$L$key_expansion_256a
-+DB	102,15,58,223,200,4
-+	call	$L$key_expansion_256b
-+DB	102,15,58,223,202,8
-+	call	$L$key_expansion_256a
-+DB	102,15,58,223,200,8
-+	call	$L$key_expansion_256b
-+DB	102,15,58,223,202,16
-+	call	$L$key_expansion_256a
-+DB	102,15,58,223,200,16
-+	call	$L$key_expansion_256b
-+DB	102,15,58,223,202,32
-+	call	$L$key_expansion_256a
-+DB	102,15,58,223,200,32
-+	call	$L$key_expansion_256b
-+DB	102,15,58,223,202,64
-+	call	$L$key_expansion_256a
-+	movups	XMMWORD[rax],xmm0
-+	mov	DWORD[16+rax],edx
-+	xor	rax,rax
-+	jmp	NEAR $L$enc_key_ret
-+
-+ALIGN	16
-+$L$14rounds_alt:
-+	movdqa	xmm5,XMMWORD[$L$key_rotate]
-+	movdqa	xmm4,XMMWORD[$L$key_rcon1]
-+	mov	r10d,7
-+	movdqu	XMMWORD[r8],xmm0
-+	movdqa	xmm1,xmm2
-+	movdqu	XMMWORD[16+r8],xmm2
-+	jmp	NEAR $L$oop_key256
-+
-+ALIGN	16
-+$L$oop_key256:
-+DB	102,15,56,0,213
-+DB	102,15,56,221,212
-+
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm3,xmm0
-+	pslldq	xmm0,4
-+	pxor	xmm0,xmm3
-+	pslld	xmm4,1
-+
-+	pxor	xmm0,xmm2
-+	movdqu	XMMWORD[rax],xmm0
-+
-+	dec	r10d
-+	jz	NEAR $L$done_key256
-+
-+	pshufd	xmm2,xmm0,0xff
-+	pxor	xmm3,xmm3
-+DB	102,15,56,221,211
-+
-+	movdqa	xmm3,xmm1
-+	pslldq	xmm1,4
-+	pxor	xmm3,xmm1
-+	pslldq	xmm1,4
-+	pxor	xmm3,xmm1
-+	pslldq	xmm1,4
-+	pxor	xmm1,xmm3
-+
-+	pxor	xmm2,xmm1
-+	movdqu	XMMWORD[16+rax],xmm2
-+	lea	rax,[32+rax]
-+	movdqa	xmm1,xmm2
-+
-+	jmp	NEAR $L$oop_key256
-+
-+$L$done_key256:
-+	mov	DWORD[16+rax],edx
-+	xor	eax,eax
-+	jmp	NEAR $L$enc_key_ret
-+
-+ALIGN	16
-+$L$bad_keybits:
-+	mov	rax,-2
-+$L$enc_key_ret:
-+	pxor	xmm0,xmm0
-+	pxor	xmm1,xmm1
-+	pxor	xmm2,xmm2
-+	pxor	xmm3,xmm3
-+	pxor	xmm4,xmm4
-+	pxor	xmm5,xmm5
-+	add	rsp,8
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_set_encrypt_key:
-+
-+ALIGN	16
-+$L$key_expansion_128:
-+	movups	XMMWORD[rax],xmm0
-+	lea	rax,[16+rax]
-+$L$key_expansion_128_cold:
-+	shufps	xmm4,xmm0,16
-+	xorps	xmm0,xmm4
-+	shufps	xmm4,xmm0,140
-+	xorps	xmm0,xmm4
-+	shufps	xmm1,xmm1,255
-+	xorps	xmm0,xmm1
-+	DB	0F3h,0C3h		;repret
-+
-+ALIGN	16
-+$L$key_expansion_192a:
-+	movups	XMMWORD[rax],xmm0
-+	lea	rax,[16+rax]
-+$L$key_expansion_192a_cold:
-+	movaps	xmm5,xmm2
-+$L$key_expansion_192b_warm:
-+	shufps	xmm4,xmm0,16
-+	movdqa	xmm3,xmm2
-+	xorps	xmm0,xmm4
-+	shufps	xmm4,xmm0,140
-+	pslldq	xmm3,4
-+	xorps	xmm0,xmm4
-+	pshufd	xmm1,xmm1,85
-+	pxor	xmm2,xmm3
-+	pxor	xmm0,xmm1
-+	pshufd	xmm3,xmm0,255
-+	pxor	xmm2,xmm3
-+	DB	0F3h,0C3h		;repret
-+
-+ALIGN	16
-+$L$key_expansion_192b:
-+	movaps	xmm3,xmm0
-+	shufps	xmm5,xmm0,68
-+	movups	XMMWORD[rax],xmm5
-+	shufps	xmm3,xmm2,78
-+	movups	XMMWORD[16+rax],xmm3
-+	lea	rax,[32+rax]
-+	jmp	NEAR $L$key_expansion_192b_warm
-+
-+ALIGN	16
-+$L$key_expansion_256a:
-+	movups	XMMWORD[rax],xmm2
-+	lea	rax,[16+rax]
-+$L$key_expansion_256a_cold:
-+	shufps	xmm4,xmm0,16
-+	xorps	xmm0,xmm4
-+	shufps	xmm4,xmm0,140
-+	xorps	xmm0,xmm4
-+	shufps	xmm1,xmm1,255
-+	xorps	xmm0,xmm1
-+	DB	0F3h,0C3h		;repret
-+
-+ALIGN	16
-+$L$key_expansion_256b:
-+	movups	XMMWORD[rax],xmm0
-+	lea	rax,[16+rax]
-+
-+	shufps	xmm4,xmm2,16
-+	xorps	xmm2,xmm4
-+	shufps	xmm4,xmm2,140
-+	xorps	xmm2,xmm4
-+	shufps	xmm1,xmm1,170
-+	xorps	xmm2,xmm1
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	64
-+$L$bswap_mask:
-+DB	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
-+$L$increment32:
-+	DD	6,6,6,0
-+$L$increment64:
-+	DD	1,0,0,0
-+$L$xts_magic:
-+	DD	0x87,0,1,0
-+$L$increment1:
-+DB	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
-+$L$key_rotate:
-+	DD	0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d
-+$L$key_rotate192:
-+	DD	0x04070605,0x04070605,0x04070605,0x04070605
-+$L$key_rcon1:
-+	DD	1,1,1,1
-+$L$key_rcon1b:
-+	DD	0x1b,0x1b,0x1b,0x1b
-+
-+DB	65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
-+DB	83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
-+DB	32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
-+DB	115,108,46,111,114,103,62,0
-+ALIGN	64
-+EXTERN	__imp_RtlVirtualUnwind
-+
-+ALIGN	16
-+ecb_ccm64_se_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	mov	rsi,QWORD[8+r9]
-+	mov	r11,QWORD[56+r9]
-+
-+	mov	r10d,DWORD[r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jb	NEAR $L$common_seh_tail
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	mov	r10d,DWORD[4+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$common_seh_tail
-+
-+	lea	rsi,[rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,8
-+	DD	0xa548f3fc
-+	lea	rax,[88+rax]
-+
-+	jmp	NEAR $L$common_seh_tail
-+
-+
-+
-+ALIGN	16
-+ctr_xts_se_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	mov	rsi,QWORD[8+r9]
-+	mov	r11,QWORD[56+r9]
-+
-+	mov	r10d,DWORD[r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jb	NEAR $L$common_seh_tail
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	mov	r10d,DWORD[4+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$common_seh_tail
-+
-+	mov	rax,QWORD[160+r8]
-+	lea	rsi,[((-160))+rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,20
-+	DD	0xa548f3fc
-+
-+	jmp	NEAR $L$common_rbp_tail
-+
-+
-+
-+ALIGN	16
-+ocb_se_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	mov	rsi,QWORD[8+r9]
-+	mov	r11,QWORD[56+r9]
-+
-+	mov	r10d,DWORD[r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jb	NEAR $L$common_seh_tail
-+
-+	mov	r10d,DWORD[4+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$common_seh_tail
-+
-+	mov	r10d,DWORD[8+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$ocb_no_xmm
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	lea	rsi,[rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,20
-+	DD	0xa548f3fc
-+	lea	rax,[((160+40))+rax]
-+
-+$L$ocb_no_xmm:
-+	mov	rbx,QWORD[((-8))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	r12,QWORD[((-24))+rax]
-+	mov	r13,QWORD[((-32))+rax]
-+	mov	r14,QWORD[((-40))+rax]
-+
-+	mov	QWORD[144+r8],rbx
-+	mov	QWORD[160+r8],rbp
-+	mov	QWORD[216+r8],r12
-+	mov	QWORD[224+r8],r13
-+	mov	QWORD[232+r8],r14
-+
-+	jmp	NEAR $L$common_seh_tail
-+
-+
-+ALIGN	16
-+cbc_se_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[152+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	lea	r10,[$L$cbc_decrypt_bulk]
-+	cmp	rbx,r10
-+	jb	NEAR $L$common_seh_tail
-+
-+	lea	r10,[$L$cbc_decrypt_body]
-+	cmp	rbx,r10
-+	jb	NEAR $L$restore_cbc_rax
-+
-+	lea	r10,[$L$cbc_ret]
-+	cmp	rbx,r10
-+	jae	NEAR $L$common_seh_tail
-+
-+	lea	rsi,[16+rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,20
-+	DD	0xa548f3fc
-+
-+$L$common_rbp_tail:
-+	mov	rax,QWORD[160+r8]
-+	mov	rbp,QWORD[rax]
-+	lea	rax,[8+rax]
-+	mov	QWORD[160+r8],rbp
-+	jmp	NEAR $L$common_seh_tail
-+
-+$L$restore_cbc_rax:
-+	mov	rax,QWORD[120+r8]
-+
-+$L$common_seh_tail:
-+	mov	rdi,QWORD[8+rax]
-+	mov	rsi,QWORD[16+rax]
-+	mov	QWORD[152+r8],rax
-+	mov	QWORD[168+r8],rsi
-+	mov	QWORD[176+r8],rdi
-+
-+	mov	rdi,QWORD[40+r9]
-+	mov	rsi,r8
-+	mov	ecx,154
-+	DD	0xa548f3fc
-+
-+	mov	rsi,r9
-+	xor	rcx,rcx
-+	mov	rdx,QWORD[8+rsi]
-+	mov	r8,QWORD[rsi]
-+	mov	r9,QWORD[16+rsi]
-+	mov	r10,QWORD[40+rsi]
-+	lea	r11,[56+rsi]
-+	lea	r12,[24+rsi]
-+	mov	QWORD[32+rsp],r10
-+	mov	QWORD[40+rsp],r11
-+	mov	QWORD[48+rsp],r12
-+	mov	QWORD[56+rsp],rcx
-+	call	QWORD[__imp_RtlVirtualUnwind]
-+
-+	mov	eax,1
-+	add	rsp,64
-+	popfq
-+	pop	r15
-+	pop	r14
-+	pop	r13
-+	pop	r12
-+	pop	rbp
-+	pop	rbx
-+	pop	rdi
-+	pop	rsi
-+	DB	0F3h,0C3h		;repret
-+
-+
-+section	.pdata rdata align=4
-+ALIGN	4
-+	DD	$L$SEH_begin_aesni_ecb_encrypt wrt ..imagebase
-+	DD	$L$SEH_end_aesni_ecb_encrypt wrt ..imagebase
-+	DD	$L$SEH_info_ecb wrt ..imagebase
-+
-+	DD	$L$SEH_begin_aesni_ccm64_encrypt_blocks wrt ..imagebase
-+	DD	$L$SEH_end_aesni_ccm64_encrypt_blocks wrt ..imagebase
-+	DD	$L$SEH_info_ccm64_enc wrt ..imagebase
-+
-+	DD	$L$SEH_begin_aesni_ccm64_decrypt_blocks wrt ..imagebase
-+	DD	$L$SEH_end_aesni_ccm64_decrypt_blocks wrt ..imagebase
-+	DD	$L$SEH_info_ccm64_dec wrt ..imagebase
-+
-+	DD	$L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase
-+	DD	$L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase
-+	DD	$L$SEH_info_ctr32 wrt ..imagebase
-+
-+	DD	$L$SEH_begin_aesni_xts_encrypt wrt ..imagebase
-+	DD	$L$SEH_end_aesni_xts_encrypt wrt ..imagebase
-+	DD	$L$SEH_info_xts_enc wrt ..imagebase
-+
-+	DD	$L$SEH_begin_aesni_xts_decrypt wrt ..imagebase
-+	DD	$L$SEH_end_aesni_xts_decrypt wrt ..imagebase
-+	DD	$L$SEH_info_xts_dec wrt ..imagebase
-+
-+	DD	$L$SEH_begin_aesni_ocb_encrypt wrt ..imagebase
-+	DD	$L$SEH_end_aesni_ocb_encrypt wrt ..imagebase
-+	DD	$L$SEH_info_ocb_enc wrt ..imagebase
-+
-+	DD	$L$SEH_begin_aesni_ocb_decrypt wrt ..imagebase
-+	DD	$L$SEH_end_aesni_ocb_decrypt wrt ..imagebase
-+	DD	$L$SEH_info_ocb_dec wrt ..imagebase
-+	DD	$L$SEH_begin_aesni_cbc_encrypt wrt ..imagebase
-+	DD	$L$SEH_end_aesni_cbc_encrypt wrt ..imagebase
-+	DD	$L$SEH_info_cbc wrt ..imagebase
-+
-+	DD	aesni_set_decrypt_key wrt ..imagebase
-+	DD	$L$SEH_end_set_decrypt_key wrt ..imagebase
-+	DD	$L$SEH_info_key wrt ..imagebase
-+
-+	DD	aesni_set_encrypt_key wrt ..imagebase
-+	DD	$L$SEH_end_set_encrypt_key wrt ..imagebase
-+	DD	$L$SEH_info_key wrt ..imagebase
-+section	.xdata rdata align=8
-+ALIGN	8
-+$L$SEH_info_ecb:
-+DB	9,0,0,0
-+	DD	ecb_ccm64_se_handler wrt ..imagebase
-+	DD	$L$ecb_enc_body wrt ..imagebase,$L$ecb_enc_ret wrt ..imagebase
-+$L$SEH_info_ccm64_enc:
-+DB	9,0,0,0
-+	DD	ecb_ccm64_se_handler wrt ..imagebase
-+	DD	$L$ccm64_enc_body wrt ..imagebase,$L$ccm64_enc_ret wrt ..imagebase
-+$L$SEH_info_ccm64_dec:
-+DB	9,0,0,0
-+	DD	ecb_ccm64_se_handler wrt ..imagebase
-+	DD	$L$ccm64_dec_body wrt ..imagebase,$L$ccm64_dec_ret wrt ..imagebase
-+$L$SEH_info_ctr32:
-+DB	9,0,0,0
-+	DD	ctr_xts_se_handler wrt ..imagebase
-+	DD	$L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase
-+$L$SEH_info_xts_enc:
-+DB	9,0,0,0
-+	DD	ctr_xts_se_handler wrt ..imagebase
-+	DD	$L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imagebase
-+$L$SEH_info_xts_dec:
-+DB	9,0,0,0
-+	DD	ctr_xts_se_handler wrt ..imagebase
-+	DD	$L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imagebase
-+$L$SEH_info_ocb_enc:
-+DB	9,0,0,0
-+	DD	ocb_se_handler wrt ..imagebase
-+	DD	$L$ocb_enc_body wrt ..imagebase,$L$ocb_enc_epilogue wrt ..imagebase
-+	DD	$L$ocb_enc_pop wrt ..imagebase
-+	DD	0
-+$L$SEH_info_ocb_dec:
-+DB	9,0,0,0
-+	DD	ocb_se_handler wrt ..imagebase
-+	DD	$L$ocb_dec_body wrt ..imagebase,$L$ocb_dec_epilogue wrt ..imagebase
-+	DD	$L$ocb_dec_pop wrt ..imagebase
-+	DD	0
-+$L$SEH_info_cbc:
-+DB	9,0,0,0
-+	DD	cbc_se_handler wrt ..imagebase
-+$L$SEH_info_key:
-+DB	0x01,0x04,0x01,0x00
-+DB	0x04,0x02,0x00,0x00
-diff --git a/SMP/lib/accelerated/x86/coff/cpuid-x86.asm b/SMP/lib/accelerated/x86/coff/cpuid-x86.asm
-new file mode 100644
-index 0000000..beee69a
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/cpuid-x86.asm
-@@ -0,0 +1,54 @@
-+%ifidn __OUTPUT_FORMAT__,obj
-+section	code	use32 class=code align=64
-+%elifidn __OUTPUT_FORMAT__,win32
-+%ifndef __YASM_VER__
-+$@feat.00 equ 1
-+%endif
-+section	.text	code align=64
-+%else
-+section	.text	code
-+%endif
-+global	_gnutls_cpuid
-+align	16
-+_gnutls_cpuid:
-+L$_gnutls_cpuid_begin:
-+	push	ebp
-+	mov	ebp,esp
-+	sub	esp,12
-+	mov	DWORD [esp],ebx
-+	mov	eax,DWORD [8+ebp]
-+	mov	DWORD [4+esp],esi
-+	mov	DWORD [8+esp],edi
-+	push	ebx
-+	cpuid
-+	mov	edi,ebx
-+	pop	ebx
-+	mov	esi,edx
-+	mov	edx,DWORD [12+ebp]
-+	mov	DWORD [edx],eax
-+	mov	eax,DWORD [16+ebp]
-+	mov	DWORD [eax],edi
-+	mov	eax,DWORD [20+ebp]
-+	mov	DWORD [eax],ecx
-+	mov	eax,DWORD [24+ebp]
-+	mov	DWORD [eax],esi
-+	mov	ebx,DWORD [esp]
-+	mov	esi,DWORD [4+esp]
-+	mov	edi,DWORD [8+esp]
-+	mov	esp,ebp
-+	pop	ebp
-+	ret
-+global	_gnutls_have_cpuid
-+align	16
-+_gnutls_have_cpuid:
-+L$_gnutls_have_cpuid_begin:
-+	pushfd
-+	pop	eax
-+	or	eax,2097152
-+	push	eax
-+	popfd
-+	pushfd
-+	pop	eax
-+	and	eax,2097152
-+	ret
-+db	67,80,85,73,68,32,102,111,114,32,120,56,54,0
-diff --git a/SMP/lib/accelerated/x86/coff/cpuid-x86_64.asm b/SMP/lib/accelerated/x86/coff/cpuid-x86_64.asm
-new file mode 100644
-index 0000000..c1c9c77
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/cpuid-x86_64.asm
-@@ -0,0 +1,53 @@
-+default	rel
-+%define XMMWORD
-+%define YMMWORD
-+%define ZMMWORD
-+section	.text code align=64
-+
-+global	gnutls_cpuid
-+
-+ALIGN	16
-+gnutls_cpuid:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_gnutls_cpuid:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+	mov	r8,QWORD[40+rsp]
-+	mov	r9,QWORD[48+rsp]
-+
-+
-+	push	rbp
-+	mov	rbp,rsp
-+	push	rbx
-+	mov	DWORD[((-12))+rbp],edi
-+	mov	QWORD[((-24))+rbp],rsi
-+	mov	QWORD[((-32))+rbp],rdx
-+	mov	QWORD[((-40))+rbp],rcx
-+	mov	QWORD[((-48))+rbp],r8
-+	mov	eax,DWORD[((-12))+rbp]
-+	mov	DWORD[((-60))+rbp],eax
-+	mov	eax,DWORD[((-60))+rbp]
-+	cpuid
-+	mov	DWORD[((-56))+rbp],edx
-+	mov	esi,ecx
-+	mov	DWORD[((-52))+rbp],eax
-+	mov	rax,QWORD[((-24))+rbp]
-+	mov	edx,DWORD[((-52))+rbp]
-+	mov	DWORD[rax],edx
-+	mov	rax,QWORD[((-32))+rbp]
-+	mov	DWORD[rax],ebx
-+	mov	rax,QWORD[((-40))+rbp]
-+	mov	DWORD[rax],esi
-+	mov	rax,QWORD[((-48))+rbp]
-+	mov	ecx,DWORD[((-56))+rbp]
-+	mov	DWORD[rax],ecx
-+	pop	rbx
-+	leave
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_gnutls_cpuid:
-diff --git a/SMP/lib/accelerated/x86/coff/e_padlock-x86.asm b/SMP/lib/accelerated/x86/coff/e_padlock-x86.asm
-new file mode 100644
-index 0000000..3620a6d
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/e_padlock-x86.asm
-@@ -0,0 +1,1015 @@
-+%ifidn __OUTPUT_FORMAT__,obj
-+section	code	use32 class=code align=64
-+%elifidn __OUTPUT_FORMAT__,win32
-+%ifndef __YASM_VER__
-+$@feat.00 equ 1
-+%endif
-+section	.text	code align=64
-+%else
-+section	.text	code
-+%endif
-+global	_padlock_capability
-+align	16
-+_padlock_capability:
-+L$_padlock_capability_begin:
-+	push	ebx
-+	pushfd
-+	pop	eax
-+	mov	ecx,eax
-+	xor	eax,2097152
-+	push	eax
-+	popfd
-+	pushfd
-+	pop	eax
-+	xor	ecx,eax
-+	xor	eax,eax
-+	bt	ecx,21
-+	jnc	NEAR L$000noluck
-+	cpuid
-+	xor	eax,eax
-+	cmp	ebx,0x746e6543
-+	jne	NEAR L$000noluck
-+	cmp	edx,0x48727561
-+	jne	NEAR L$000noluck
-+	cmp	ecx,0x736c7561
-+	jne	NEAR L$000noluck
-+	mov	eax,3221225472
-+	cpuid
-+	mov	edx,eax
-+	xor	eax,eax
-+	cmp	edx,3221225473
-+	jb	NEAR L$000noluck
-+	mov	eax,1
-+	cpuid
-+	or	eax,15
-+	xor	ebx,ebx
-+	and	eax,4095
-+	cmp	eax,1791
-+	sete	bl
-+	mov	eax,3221225473
-+	push	ebx
-+	cpuid
-+	pop	ebx
-+	mov	eax,edx
-+	shl	ebx,4
-+	and	eax,4294967279
-+	or	eax,ebx
-+L$000noluck:
-+	pop	ebx
-+	ret
-+global	_padlock_key_bswap
-+align	16
-+_padlock_key_bswap:
-+L$_padlock_key_bswap_begin:
-+	mov	edx,DWORD [4+esp]
-+	mov	ecx,DWORD [240+edx]
-+L$001bswap_loop:
-+	mov	eax,DWORD [edx]
-+	bswap	eax
-+	mov	DWORD [edx],eax
-+	lea	edx,[4+edx]
-+	sub	ecx,1
-+	jnz	NEAR L$001bswap_loop
-+	ret
-+global	_padlock_verify_context
-+align	16
-+_padlock_verify_context:
-+L$_padlock_verify_context_begin:
-+	mov	edx,DWORD [4+esp]
-+	lea	eax,[L$padlock_saved_context]
-+	pushfd
-+	call	__padlock_verify_ctx
-+L$002verify_pic_point:
-+	lea	esp,[4+esp]
-+	ret
-+align	16
-+__padlock_verify_ctx:
-+	bt	DWORD [4+esp],30
-+	jnc	NEAR L$003verified
-+	cmp	edx,DWORD [eax]
-+	je	NEAR L$003verified
-+	pushfd
-+	popfd
-+L$003verified:
-+	mov	DWORD [eax],edx
-+	ret
-+global	_padlock_reload_key
-+align	16
-+_padlock_reload_key:
-+L$_padlock_reload_key_begin:
-+	pushfd
-+	popfd
-+	ret
-+global	_padlock_aes_block
-+align	16
-+_padlock_aes_block:
-+L$_padlock_aes_block_begin:
-+	push	edi
-+	push	esi
-+	push	ebx
-+	mov	edi,DWORD [16+esp]
-+	mov	esi,DWORD [20+esp]
-+	mov	edx,DWORD [24+esp]
-+	mov	ecx,1
-+	lea	ebx,[32+edx]
-+	lea	edx,[16+edx]
-+db	243,15,167,200
-+	pop	ebx
-+	pop	esi
-+	pop	edi
-+	ret
-+global	_padlock_ecb_encrypt
-+align	16
-+_padlock_ecb_encrypt:
-+L$_padlock_ecb_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	edi,DWORD [20+esp]
-+	mov	esi,DWORD [24+esp]
-+	mov	edx,DWORD [28+esp]
-+	mov	ecx,DWORD [32+esp]
-+	test	edx,15
-+	jnz	NEAR L$004ecb_abort
-+	test	ecx,15
-+	jnz	NEAR L$004ecb_abort
-+	lea	eax,[L$padlock_saved_context]
-+	pushfd
-+	cld
-+	call	__padlock_verify_ctx
-+L$005ecb_pic_point:
-+	lea	edx,[16+edx]
-+	xor	eax,eax
-+	xor	ebx,ebx
-+	test	DWORD [edx],32
-+	jnz	NEAR L$006ecb_aligned
-+	test	edi,15
-+	setz	al
-+	test	esi,15
-+	setz	bl
-+	test	eax,ebx
-+	jnz	NEAR L$006ecb_aligned
-+	neg	eax
-+	mov	ebx,512
-+	not	eax
-+	lea	ebp,[esp-24]
-+	cmp	ecx,ebx
-+	cmovc	ebx,ecx
-+	and	eax,ebx
-+	mov	ebx,ecx
-+	neg	eax
-+	and	ebx,511
-+	lea	esp,[ebp*1+eax]
-+	mov	eax,512
-+	cmovz	ebx,eax
-+	mov	eax,ebp
-+	and	ebp,-16
-+	and	esp,-16
-+	mov	DWORD [16+ebp],eax
-+	cmp	ecx,ebx
-+	ja	NEAR L$007ecb_loop
-+	mov	eax,esi
-+	cmp	ebp,esp
-+	cmove	eax,edi
-+	add	eax,ecx
-+	neg	eax
-+	and	eax,4095
-+	cmp	eax,128
-+	mov	eax,-128
-+	cmovae	eax,ebx
-+	and	ebx,eax
-+	jz	NEAR L$008ecb_unaligned_tail
-+	jmp	NEAR L$007ecb_loop
-+align	16
-+L$007ecb_loop:
-+	mov	DWORD [ebp],edi
-+	mov	DWORD [4+ebp],esi
-+	mov	DWORD [8+ebp],ecx
-+	mov	ecx,ebx
-+	mov	DWORD [12+ebp],ebx
-+	test	edi,15
-+	cmovnz	edi,esp
-+	test	esi,15
-+	jz	NEAR L$009ecb_inp_aligned
-+	shr	ecx,2
-+db	243,165
-+	sub	edi,ebx
-+	mov	ecx,ebx
-+	mov	esi,edi
-+L$009ecb_inp_aligned:
-+	lea	eax,[edx-16]
-+	lea	ebx,[16+edx]
-+	shr	ecx,4
-+db	243,15,167,200
-+	mov	edi,DWORD [ebp]
-+	mov	ebx,DWORD [12+ebp]
-+	test	edi,15
-+	jz	NEAR L$010ecb_out_aligned
-+	mov	ecx,ebx
-+	lea	esi,[esp]
-+	shr	ecx,2
-+db	243,165
-+	sub	edi,ebx
-+L$010ecb_out_aligned:
-+	mov	esi,DWORD [4+ebp]
-+	mov	ecx,DWORD [8+ebp]
-+	add	edi,ebx
-+	add	esi,ebx
-+	sub	ecx,ebx
-+	mov	ebx,512
-+	jz	NEAR L$011ecb_break
-+	cmp	ecx,ebx
-+	jae	NEAR L$007ecb_loop
-+L$008ecb_unaligned_tail:
-+	xor	eax,eax
-+	cmp	esp,ebp
-+	cmove	eax,ecx
-+	sub	esp,eax
-+	mov	eax,edi
-+	mov	ebx,ecx
-+	shr	ecx,2
-+	lea	edi,[esp]
-+db	243,165
-+	mov	esi,esp
-+	mov	edi,eax
-+	mov	ecx,ebx
-+	jmp	NEAR L$007ecb_loop
-+align	16
-+L$011ecb_break:
-+	cmp	esp,ebp
-+	je	NEAR L$012ecb_done
-+	pxor	xmm0,xmm0
-+	lea	eax,[esp]
-+L$013ecb_bzero:
-+	movaps	[eax],xmm0
-+	lea	eax,[16+eax]
-+	cmp	ebp,eax
-+	ja	NEAR L$013ecb_bzero
-+L$012ecb_done:
-+	mov	ebp,DWORD [16+ebp]
-+	lea	esp,[24+ebp]
-+	jmp	NEAR L$014ecb_exit
-+align	16
-+L$006ecb_aligned:
-+	lea	ebp,[ecx*1+esi]
-+	neg	ebp
-+	and	ebp,4095
-+	xor	eax,eax
-+	cmp	ebp,128
-+	mov	ebp,127
-+	cmovae	ebp,eax
-+	and	ebp,ecx
-+	sub	ecx,ebp
-+	jz	NEAR L$015ecb_aligned_tail
-+	lea	eax,[edx-16]
-+	lea	ebx,[16+edx]
-+	shr	ecx,4
-+db	243,15,167,200
-+	test	ebp,ebp
-+	jz	NEAR L$014ecb_exit
-+L$015ecb_aligned_tail:
-+	mov	ecx,ebp
-+	lea	ebp,[esp-24]
-+	mov	esp,ebp
-+	mov	eax,ebp
-+	sub	esp,ecx
-+	and	ebp,-16
-+	and	esp,-16
-+	mov	DWORD [16+ebp],eax
-+	mov	eax,edi
-+	mov	ebx,ecx
-+	shr	ecx,2
-+	lea	edi,[esp]
-+db	243,165
-+	mov	esi,esp
-+	mov	edi,eax
-+	mov	ecx,ebx
-+	jmp	NEAR L$007ecb_loop
-+L$014ecb_exit:
-+	mov	eax,1
-+	lea	esp,[4+esp]
-+L$004ecb_abort:
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_padlock_cbc_encrypt
-+align	16
-+_padlock_cbc_encrypt:
-+L$_padlock_cbc_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	edi,DWORD [20+esp]
-+	mov	esi,DWORD [24+esp]
-+	mov	edx,DWORD [28+esp]
-+	mov	ecx,DWORD [32+esp]
-+	test	edx,15
-+	jnz	NEAR L$016cbc_abort
-+	test	ecx,15
-+	jnz	NEAR L$016cbc_abort
-+	lea	eax,[L$padlock_saved_context]
-+	pushfd
-+	cld
-+	call	__padlock_verify_ctx
-+L$017cbc_pic_point:
-+	lea	edx,[16+edx]
-+	xor	eax,eax
-+	xor	ebx,ebx
-+	test	DWORD [edx],32
-+	jnz	NEAR L$018cbc_aligned
-+	test	edi,15
-+	setz	al
-+	test	esi,15
-+	setz	bl
-+	test	eax,ebx
-+	jnz	NEAR L$018cbc_aligned
-+	neg	eax
-+	mov	ebx,512
-+	not	eax
-+	lea	ebp,[esp-24]
-+	cmp	ecx,ebx
-+	cmovc	ebx,ecx
-+	and	eax,ebx
-+	mov	ebx,ecx
-+	neg	eax
-+	and	ebx,511
-+	lea	esp,[ebp*1+eax]
-+	mov	eax,512
-+	cmovz	ebx,eax
-+	mov	eax,ebp
-+	and	ebp,-16
-+	and	esp,-16
-+	mov	DWORD [16+ebp],eax
-+	cmp	ecx,ebx
-+	ja	NEAR L$019cbc_loop
-+	mov	eax,esi
-+	cmp	ebp,esp
-+	cmove	eax,edi
-+	add	eax,ecx
-+	neg	eax
-+	and	eax,4095
-+	cmp	eax,64
-+	mov	eax,-64
-+	cmovae	eax,ebx
-+	and	ebx,eax
-+	jz	NEAR L$020cbc_unaligned_tail
-+	jmp	NEAR L$019cbc_loop
-+align	16
-+L$019cbc_loop:
-+	mov	DWORD [ebp],edi
-+	mov	DWORD [4+ebp],esi
-+	mov	DWORD [8+ebp],ecx
-+	mov	ecx,ebx
-+	mov	DWORD [12+ebp],ebx
-+	test	edi,15
-+	cmovnz	edi,esp
-+	test	esi,15
-+	jz	NEAR L$021cbc_inp_aligned
-+	shr	ecx,2
-+db	243,165
-+	sub	edi,ebx
-+	mov	ecx,ebx
-+	mov	esi,edi
-+L$021cbc_inp_aligned:
-+	lea	eax,[edx-16]
-+	lea	ebx,[16+edx]
-+	shr	ecx,4
-+db	243,15,167,208
-+	movaps	xmm0,[eax]
-+	movaps	[edx-16],xmm0
-+	mov	edi,DWORD [ebp]
-+	mov	ebx,DWORD [12+ebp]
-+	test	edi,15
-+	jz	NEAR L$022cbc_out_aligned
-+	mov	ecx,ebx
-+	lea	esi,[esp]
-+	shr	ecx,2
-+db	243,165
-+	sub	edi,ebx
-+L$022cbc_out_aligned:
-+	mov	esi,DWORD [4+ebp]
-+	mov	ecx,DWORD [8+ebp]
-+	add	edi,ebx
-+	add	esi,ebx
-+	sub	ecx,ebx
-+	mov	ebx,512
-+	jz	NEAR L$023cbc_break
-+	cmp	ecx,ebx
-+	jae	NEAR L$019cbc_loop
-+L$020cbc_unaligned_tail:
-+	xor	eax,eax
-+	cmp	esp,ebp
-+	cmove	eax,ecx
-+	sub	esp,eax
-+	mov	eax,edi
-+	mov	ebx,ecx
-+	shr	ecx,2
-+	lea	edi,[esp]
-+db	243,165
-+	mov	esi,esp
-+	mov	edi,eax
-+	mov	ecx,ebx
-+	jmp	NEAR L$019cbc_loop
-+align	16
-+L$023cbc_break:
-+	cmp	esp,ebp
-+	je	NEAR L$024cbc_done
-+	pxor	xmm0,xmm0
-+	lea	eax,[esp]
-+L$025cbc_bzero:
-+	movaps	[eax],xmm0
-+	lea	eax,[16+eax]
-+	cmp	ebp,eax
-+	ja	NEAR L$025cbc_bzero
-+L$024cbc_done:
-+	mov	ebp,DWORD [16+ebp]
-+	lea	esp,[24+ebp]
-+	jmp	NEAR L$026cbc_exit
-+align	16
-+L$018cbc_aligned:
-+	lea	ebp,[ecx*1+esi]
-+	neg	ebp
-+	and	ebp,4095
-+	xor	eax,eax
-+	cmp	ebp,64
-+	mov	ebp,63
-+	cmovae	ebp,eax
-+	and	ebp,ecx
-+	sub	ecx,ebp
-+	jz	NEAR L$027cbc_aligned_tail
-+	lea	eax,[edx-16]
-+	lea	ebx,[16+edx]
-+	shr	ecx,4
-+db	243,15,167,208
-+	movaps	xmm0,[eax]
-+	movaps	[edx-16],xmm0
-+	test	ebp,ebp
-+	jz	NEAR L$026cbc_exit
-+L$027cbc_aligned_tail:
-+	mov	ecx,ebp
-+	lea	ebp,[esp-24]
-+	mov	esp,ebp
-+	mov	eax,ebp
-+	sub	esp,ecx
-+	and	ebp,-16
-+	and	esp,-16
-+	mov	DWORD [16+ebp],eax
-+	mov	eax,edi
-+	mov	ebx,ecx
-+	shr	ecx,2
-+	lea	edi,[esp]
-+db	243,165
-+	mov	esi,esp
-+	mov	edi,eax
-+	mov	ecx,ebx
-+	jmp	NEAR L$019cbc_loop
-+L$026cbc_exit:
-+	mov	eax,1
-+	lea	esp,[4+esp]
-+L$016cbc_abort:
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_padlock_cfb_encrypt
-+align	16
-+_padlock_cfb_encrypt:
-+L$_padlock_cfb_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	edi,DWORD [20+esp]
-+	mov	esi,DWORD [24+esp]
-+	mov	edx,DWORD [28+esp]
-+	mov	ecx,DWORD [32+esp]
-+	test	edx,15
-+	jnz	NEAR L$028cfb_abort
-+	test	ecx,15
-+	jnz	NEAR L$028cfb_abort
-+	lea	eax,[L$padlock_saved_context]
-+	pushfd
-+	cld
-+	call	__padlock_verify_ctx
-+L$029cfb_pic_point:
-+	lea	edx,[16+edx]
-+	xor	eax,eax
-+	xor	ebx,ebx
-+	test	DWORD [edx],32
-+	jnz	NEAR L$030cfb_aligned
-+	test	edi,15
-+	setz	al
-+	test	esi,15
-+	setz	bl
-+	test	eax,ebx
-+	jnz	NEAR L$030cfb_aligned
-+	neg	eax
-+	mov	ebx,512
-+	not	eax
-+	lea	ebp,[esp-24]
-+	cmp	ecx,ebx
-+	cmovc	ebx,ecx
-+	and	eax,ebx
-+	mov	ebx,ecx
-+	neg	eax
-+	and	ebx,511
-+	lea	esp,[ebp*1+eax]
-+	mov	eax,512
-+	cmovz	ebx,eax
-+	mov	eax,ebp
-+	and	ebp,-16
-+	and	esp,-16
-+	mov	DWORD [16+ebp],eax
-+	jmp	NEAR L$031cfb_loop
-+align	16
-+L$031cfb_loop:
-+	mov	DWORD [ebp],edi
-+	mov	DWORD [4+ebp],esi
-+	mov	DWORD [8+ebp],ecx
-+	mov	ecx,ebx
-+	mov	DWORD [12+ebp],ebx
-+	test	edi,15
-+	cmovnz	edi,esp
-+	test	esi,15
-+	jz	NEAR L$032cfb_inp_aligned
-+	shr	ecx,2
-+db	243,165
-+	sub	edi,ebx
-+	mov	ecx,ebx
-+	mov	esi,edi
-+L$032cfb_inp_aligned:
-+	lea	eax,[edx-16]
-+	lea	ebx,[16+edx]
-+	shr	ecx,4
-+db	243,15,167,224
-+	movaps	xmm0,[eax]
-+	movaps	[edx-16],xmm0
-+	mov	edi,DWORD [ebp]
-+	mov	ebx,DWORD [12+ebp]
-+	test	edi,15
-+	jz	NEAR L$033cfb_out_aligned
-+	mov	ecx,ebx
-+	lea	esi,[esp]
-+	shr	ecx,2
-+db	243,165
-+	sub	edi,ebx
-+L$033cfb_out_aligned:
-+	mov	esi,DWORD [4+ebp]
-+	mov	ecx,DWORD [8+ebp]
-+	add	edi,ebx
-+	add	esi,ebx
-+	sub	ecx,ebx
-+	mov	ebx,512
-+	jnz	NEAR L$031cfb_loop
-+	cmp	esp,ebp
-+	je	NEAR L$034cfb_done
-+	pxor	xmm0,xmm0
-+	lea	eax,[esp]
-+L$035cfb_bzero:
-+	movaps	[eax],xmm0
-+	lea	eax,[16+eax]
-+	cmp	ebp,eax
-+	ja	NEAR L$035cfb_bzero
-+L$034cfb_done:
-+	mov	ebp,DWORD [16+ebp]
-+	lea	esp,[24+ebp]
-+	jmp	NEAR L$036cfb_exit
-+align	16
-+L$030cfb_aligned:
-+	lea	eax,[edx-16]
-+	lea	ebx,[16+edx]
-+	shr	ecx,4
-+db	243,15,167,224
-+	movaps	xmm0,[eax]
-+	movaps	[edx-16],xmm0
-+L$036cfb_exit:
-+	mov	eax,1
-+	lea	esp,[4+esp]
-+L$028cfb_abort:
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_padlock_ofb_encrypt
-+align	16
-+_padlock_ofb_encrypt:
-+L$_padlock_ofb_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	edi,DWORD [20+esp]
-+	mov	esi,DWORD [24+esp]
-+	mov	edx,DWORD [28+esp]
-+	mov	ecx,DWORD [32+esp]
-+	test	edx,15
-+	jnz	NEAR L$037ofb_abort
-+	test	ecx,15
-+	jnz	NEAR L$037ofb_abort
-+	lea	eax,[L$padlock_saved_context]
-+	pushfd
-+	cld
-+	call	__padlock_verify_ctx
-+L$038ofb_pic_point:
-+	lea	edx,[16+edx]
-+	xor	eax,eax
-+	xor	ebx,ebx
-+	test	DWORD [edx],32
-+	jnz	NEAR L$039ofb_aligned
-+	test	edi,15
-+	setz	al
-+	test	esi,15
-+	setz	bl
-+	test	eax,ebx
-+	jnz	NEAR L$039ofb_aligned
-+	neg	eax
-+	mov	ebx,512
-+	not	eax
-+	lea	ebp,[esp-24]
-+	cmp	ecx,ebx
-+	cmovc	ebx,ecx
-+	and	eax,ebx
-+	mov	ebx,ecx
-+	neg	eax
-+	and	ebx,511
-+	lea	esp,[ebp*1+eax]
-+	mov	eax,512
-+	cmovz	ebx,eax
-+	mov	eax,ebp
-+	and	ebp,-16
-+	and	esp,-16
-+	mov	DWORD [16+ebp],eax
-+	jmp	NEAR L$040ofb_loop
-+align	16
-+L$040ofb_loop:
-+	mov	DWORD [ebp],edi
-+	mov	DWORD [4+ebp],esi
-+	mov	DWORD [8+ebp],ecx
-+	mov	ecx,ebx
-+	mov	DWORD [12+ebp],ebx
-+	test	edi,15
-+	cmovnz	edi,esp
-+	test	esi,15
-+	jz	NEAR L$041ofb_inp_aligned
-+	shr	ecx,2
-+db	243,165
-+	sub	edi,ebx
-+	mov	ecx,ebx
-+	mov	esi,edi
-+L$041ofb_inp_aligned:
-+	lea	eax,[edx-16]
-+	lea	ebx,[16+edx]
-+	shr	ecx,4
-+db	243,15,167,232
-+	movaps	xmm0,[eax]
-+	movaps	[edx-16],xmm0
-+	mov	edi,DWORD [ebp]
-+	mov	ebx,DWORD [12+ebp]
-+	test	edi,15
-+	jz	NEAR L$042ofb_out_aligned
-+	mov	ecx,ebx
-+	lea	esi,[esp]
-+	shr	ecx,2
-+db	243,165
-+	sub	edi,ebx
-+L$042ofb_out_aligned:
-+	mov	esi,DWORD [4+ebp]
-+	mov	ecx,DWORD [8+ebp]
-+	add	edi,ebx
-+	add	esi,ebx
-+	sub	ecx,ebx
-+	mov	ebx,512
-+	jnz	NEAR L$040ofb_loop
-+	cmp	esp,ebp
-+	je	NEAR L$043ofb_done
-+	pxor	xmm0,xmm0
-+	lea	eax,[esp]
-+L$044ofb_bzero:
-+	movaps	[eax],xmm0
-+	lea	eax,[16+eax]
-+	cmp	ebp,eax
-+	ja	NEAR L$044ofb_bzero
-+L$043ofb_done:
-+	mov	ebp,DWORD [16+ebp]
-+	lea	esp,[24+ebp]
-+	jmp	NEAR L$045ofb_exit
-+align	16
-+L$039ofb_aligned:
-+	lea	eax,[edx-16]
-+	lea	ebx,[16+edx]
-+	shr	ecx,4
-+db	243,15,167,232
-+	movaps	xmm0,[eax]
-+	movaps	[edx-16],xmm0
-+L$045ofb_exit:
-+	mov	eax,1
-+	lea	esp,[4+esp]
-+L$037ofb_abort:
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_padlock_ctr32_encrypt
-+align	16
-+_padlock_ctr32_encrypt:
-+L$_padlock_ctr32_encrypt_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	edi,DWORD [20+esp]
-+	mov	esi,DWORD [24+esp]
-+	mov	edx,DWORD [28+esp]
-+	mov	ecx,DWORD [32+esp]
-+	test	edx,15
-+	jnz	NEAR L$046ctr32_abort
-+	test	ecx,15
-+	jnz	NEAR L$046ctr32_abort
-+	lea	eax,[L$padlock_saved_context]
-+	pushfd
-+	cld
-+	call	__padlock_verify_ctx
-+L$047ctr32_pic_point:
-+	lea	edx,[16+edx]
-+	xor	eax,eax
-+	movq	mm0,[edx-16]
-+	mov	ebx,512
-+	not	eax
-+	lea	ebp,[esp-24]
-+	cmp	ecx,ebx
-+	cmovc	ebx,ecx
-+	and	eax,ebx
-+	mov	ebx,ecx
-+	neg	eax
-+	and	ebx,511
-+	lea	esp,[ebp*1+eax]
-+	mov	eax,512
-+	cmovz	ebx,eax
-+	mov	eax,ebp
-+	and	ebp,-16
-+	and	esp,-16
-+	mov	DWORD [16+ebp],eax
-+	jmp	NEAR L$048ctr32_loop
-+align	16
-+L$048ctr32_loop:
-+	mov	DWORD [ebp],edi
-+	mov	DWORD [4+ebp],esi
-+	mov	DWORD [8+ebp],ecx
-+	mov	ecx,ebx
-+	mov	DWORD [12+ebp],ebx
-+	mov	ecx,DWORD [edx-4]
-+	xor	edi,edi
-+	mov	eax,DWORD [edx-8]
-+L$049ctr32_prepare:
-+	mov	DWORD [12+edi*1+esp],ecx
-+	bswap	ecx
-+	movq	[edi*1+esp],mm0
-+	inc	ecx
-+	mov	DWORD [8+edi*1+esp],eax
-+	bswap	ecx
-+	lea	edi,[16+edi]
-+	cmp	edi,ebx
-+	jb	NEAR L$049ctr32_prepare
-+	mov	DWORD [edx-4],ecx
-+	lea	esi,[esp]
-+	lea	edi,[esp]
-+	mov	ecx,ebx
-+	lea	eax,[edx-16]
-+	lea	ebx,[16+edx]
-+	shr	ecx,4
-+db	243,15,167,200
-+	mov	edi,DWORD [ebp]
-+	mov	ebx,DWORD [12+ebp]
-+	mov	esi,DWORD [4+ebp]
-+	xor	ecx,ecx
-+L$050ctr32_xor:
-+	movups	xmm1,[ecx*1+esi]
-+	lea	ecx,[16+ecx]
-+	pxor	xmm1,[ecx*1+esp-16]
-+	movups	[ecx*1+edi-16],xmm1
-+	cmp	ecx,ebx
-+	jb	NEAR L$050ctr32_xor
-+	mov	ecx,DWORD [8+ebp]
-+	add	edi,ebx
-+	add	esi,ebx
-+	sub	ecx,ebx
-+	mov	ebx,512
-+	jnz	NEAR L$048ctr32_loop
-+	pxor	xmm0,xmm0
-+	lea	eax,[esp]
-+L$051ctr32_bzero:
-+	movaps	[eax],xmm0
-+	lea	eax,[16+eax]
-+	cmp	ebp,eax
-+	ja	NEAR L$051ctr32_bzero
-+L$052ctr32_done:
-+	mov	ebp,DWORD [16+ebp]
-+	lea	esp,[24+ebp]
-+	mov	eax,1
-+	lea	esp,[4+esp]
-+	emms
-+L$046ctr32_abort:
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_padlock_xstore
-+align	16
-+_padlock_xstore:
-+L$_padlock_xstore_begin:
-+	push	edi
-+	mov	edi,DWORD [8+esp]
-+	mov	edx,DWORD [12+esp]
-+db	15,167,192
-+	pop	edi
-+	ret
-+align	16
-+__win32_segv_handler:
-+	mov	eax,1
-+	mov	edx,DWORD [4+esp]
-+	mov	ecx,DWORD [12+esp]
-+	cmp	DWORD [edx],3221225477
-+	jne	NEAR L$053ret
-+	add	DWORD [184+ecx],4
-+	mov	eax,0
-+L$053ret:
-+	ret
-+%if	__NASM_VERSION_ID__ >= 0x02030000
-+safeseh	__win32_segv_handler
-+%endif
-+global	_padlock_sha1_oneshot
-+align	16
-+_padlock_sha1_oneshot:
-+L$_padlock_sha1_oneshot_begin:
-+	push	edi
-+	push	esi
-+	xor	eax,eax
-+	mov	edi,DWORD [12+esp]
-+	mov	esi,DWORD [16+esp]
-+	mov	ecx,DWORD [20+esp]
-+	push	__win32_segv_handler
-+db	100,255,48
-+db	100,137,32
-+	mov	edx,esp
-+	add	esp,-128
-+	movups	xmm0,[edi]
-+	and	esp,-16
-+	mov	eax,DWORD [16+edi]
-+	movaps	[esp],xmm0
-+	mov	edi,esp
-+	mov	DWORD [16+esp],eax
-+	xor	eax,eax
-+db	243,15,166,200
-+	movaps	xmm0,[esp]
-+	mov	eax,DWORD [16+esp]
-+	mov	esp,edx
-+db	100,143,5,0,0,0,0
-+	lea	esp,[4+esp]
-+	mov	edi,DWORD [16+esp]
-+	movups	[edi],xmm0
-+	mov	DWORD [16+edi],eax
-+	pop	esi
-+	pop	edi
-+	ret
-+global	_padlock_sha1_blocks
-+align	16
-+_padlock_sha1_blocks:
-+L$_padlock_sha1_blocks_begin:
-+	push	edi
-+	push	esi
-+	mov	edi,DWORD [12+esp]
-+	mov	esi,DWORD [16+esp]
-+	mov	edx,esp
-+	mov	ecx,DWORD [20+esp]
-+	add	esp,-128
-+	movups	xmm0,[edi]
-+	and	esp,-16
-+	mov	eax,DWORD [16+edi]
-+	movaps	[esp],xmm0
-+	mov	edi,esp
-+	mov	DWORD [16+esp],eax
-+	mov	eax,-1
-+db	243,15,166,200
-+	movaps	xmm0,[esp]
-+	mov	eax,DWORD [16+esp]
-+	mov	esp,edx
-+	mov	edi,DWORD [12+esp]
-+	movups	[edi],xmm0
-+	mov	DWORD [16+edi],eax
-+	pop	esi
-+	pop	edi
-+	ret
-+global	_padlock_sha256_oneshot
-+align	16
-+_padlock_sha256_oneshot:
-+L$_padlock_sha256_oneshot_begin:
-+	push	edi
-+	push	esi
-+	xor	eax,eax
-+	mov	edi,DWORD [12+esp]
-+	mov	esi,DWORD [16+esp]
-+	mov	ecx,DWORD [20+esp]
-+	push	__win32_segv_handler
-+db	100,255,48
-+db	100,137,32
-+	mov	edx,esp
-+	add	esp,-128
-+	movups	xmm0,[edi]
-+	and	esp,-16
-+	movups	xmm1,[16+edi]
-+	movaps	[esp],xmm0
-+	mov	edi,esp
-+	movaps	[16+esp],xmm1
-+	xor	eax,eax
-+db	243,15,166,208
-+	movaps	xmm0,[esp]
-+	movaps	xmm1,[16+esp]
-+	mov	esp,edx
-+db	100,143,5,0,0,0,0
-+	lea	esp,[4+esp]
-+	mov	edi,DWORD [16+esp]
-+	movups	[edi],xmm0
-+	movups	[16+edi],xmm1
-+	pop	esi
-+	pop	edi
-+	ret
-+global	_padlock_sha256_blocks
-+align	16
-+_padlock_sha256_blocks:
-+L$_padlock_sha256_blocks_begin:
-+	push	edi
-+	push	esi
-+	mov	edi,DWORD [12+esp]
-+	mov	esi,DWORD [16+esp]
-+	mov	ecx,DWORD [20+esp]
-+	mov	edx,esp
-+	add	esp,-128
-+	movups	xmm0,[edi]
-+	and	esp,-16
-+	movups	xmm1,[16+edi]
-+	movaps	[esp],xmm0
-+	mov	edi,esp
-+	movaps	[16+esp],xmm1
-+	mov	eax,-1
-+db	243,15,166,208
-+	movaps	xmm0,[esp]
-+	movaps	xmm1,[16+esp]
-+	mov	esp,edx
-+	mov	edi,DWORD [12+esp]
-+	movups	[edi],xmm0
-+	movups	[16+edi],xmm1
-+	pop	esi
-+	pop	edi
-+	ret
-+global	_padlock_sha512_blocks
-+align	16
-+_padlock_sha512_blocks:
-+L$_padlock_sha512_blocks_begin:
-+	push	edi
-+	push	esi
-+	mov	edi,DWORD [12+esp]
-+	mov	esi,DWORD [16+esp]
-+	mov	ecx,DWORD [20+esp]
-+	mov	edx,esp
-+	add	esp,-128
-+	movups	xmm0,[edi]
-+	and	esp,-16
-+	movups	xmm1,[16+edi]
-+	movups	xmm2,[32+edi]
-+	movups	xmm3,[48+edi]
-+	movaps	[esp],xmm0
-+	mov	edi,esp
-+	movaps	[16+esp],xmm1
-+	movaps	[32+esp],xmm2
-+	movaps	[48+esp],xmm3
-+db	243,15,166,224
-+	movaps	xmm0,[esp]
-+	movaps	xmm1,[16+esp]
-+	movaps	xmm2,[32+esp]
-+	movaps	xmm3,[48+esp]
-+	mov	esp,edx
-+	mov	edi,DWORD [12+esp]
-+	movups	[edi],xmm0
-+	movups	[16+edi],xmm1
-+	movups	[32+edi],xmm2
-+	movups	[48+edi],xmm3
-+	pop	esi
-+	pop	edi
-+	ret
-+db	86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
-+db	109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
-+db	77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
-+db	110,115,115,108,46,111,114,103,62,0
-+align	16
-+section	.data align=4
-+align	4
-+L$padlock_saved_context:
-+dd	0
-diff --git a/SMP/lib/accelerated/x86/coff/e_padlock-x86_64.asm b/SMP/lib/accelerated/x86/coff/e_padlock-x86_64.asm
-new file mode 100644
-index 0000000..1cb48ea
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/e_padlock-x86_64.asm
-@@ -0,0 +1,1171 @@
-+default	rel
-+%define XMMWORD
-+%define YMMWORD
-+%define ZMMWORD
-+section	.text code align=64
-+
-+global	padlock_capability
-+
-+ALIGN	16
-+padlock_capability:
-+	mov	r8,rbx
-+	xor	eax,eax
-+	cpuid
-+	xor	eax,eax
-+	cmp	ebx,0x746e6543
-+	jne	NEAR $L$noluck
-+	cmp	edx,0x48727561
-+	jne	NEAR $L$noluck
-+	cmp	ecx,0x736c7561
-+	jne	NEAR $L$noluck
-+	mov	eax,0xC0000000
-+	cpuid
-+	mov	edx,eax
-+	xor	eax,eax
-+	cmp	edx,0xC0000001
-+	jb	NEAR $L$noluck
-+	mov	eax,0xC0000001
-+	cpuid
-+	mov	eax,edx
-+	and	eax,0xffffffef
-+	or	eax,0x10
-+$L$noluck:
-+	mov	rbx,r8
-+	DB	0F3h,0C3h		;repret
-+
-+
-+global	padlock_key_bswap
-+
-+ALIGN	16
-+padlock_key_bswap:
-+	mov	edx,DWORD[240+rcx]
-+$L$bswap_loop:
-+	mov	eax,DWORD[rcx]
-+	bswap	eax
-+	mov	DWORD[rcx],eax
-+	lea	rcx,[4+rcx]
-+	sub	edx,1
-+	jnz	NEAR $L$bswap_loop
-+	DB	0F3h,0C3h		;repret
-+
-+
-+global	padlock_verify_context
-+
-+ALIGN	16
-+padlock_verify_context:
-+	mov	rdx,rcx
-+	pushf
-+	lea	rax,[$L$padlock_saved_context]
-+	call	_padlock_verify_ctx
-+	lea	rsp,[8+rsp]
-+	DB	0F3h,0C3h		;repret
-+
-+
-+
-+ALIGN	16
-+_padlock_verify_ctx:
-+	mov	r8,QWORD[8+rsp]
-+	bt	r8,30
-+	jnc	NEAR $L$verified
-+	cmp	rdx,QWORD[rax]
-+	je	NEAR $L$verified
-+	pushf
-+	popf
-+$L$verified:
-+	mov	QWORD[rax],rdx
-+	DB	0F3h,0C3h		;repret
-+
-+
-+global	padlock_reload_key
-+
-+ALIGN	16
-+padlock_reload_key:
-+	pushf
-+	popf
-+	DB	0F3h,0C3h		;repret
-+
-+
-+global	padlock_aes_block
-+
-+ALIGN	16
-+padlock_aes_block:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_aes_block:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	mov	r8,rbx
-+	mov	rcx,1
-+	lea	rbx,[32+rdx]
-+	lea	rdx,[16+rdx]
-+DB	0xf3,0x0f,0xa7,0xc8
-+	mov	rbx,r8
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_aes_block:
-+
-+global	padlock_xstore
-+
-+ALIGN	16
-+padlock_xstore:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_xstore:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+
-+
-+	mov	edx,esi
-+DB	0x0f,0xa7,0xc0
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_xstore:
-+
-+global	padlock_sha1_oneshot
-+
-+ALIGN	16
-+padlock_sha1_oneshot:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_sha1_oneshot:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	mov	rcx,rdx
-+	mov	rdx,rdi
-+	movups	xmm0,XMMWORD[rdi]
-+	sub	rsp,128+8
-+	mov	eax,DWORD[16+rdi]
-+	movaps	XMMWORD[rsp],xmm0
-+	mov	rdi,rsp
-+	mov	DWORD[16+rsp],eax
-+	xor	rax,rax
-+DB	0xf3,0x0f,0xa6,0xc8
-+	movaps	xmm0,XMMWORD[rsp]
-+	mov	eax,DWORD[16+rsp]
-+	add	rsp,128+8
-+	movups	XMMWORD[rdx],xmm0
-+	mov	DWORD[16+rdx],eax
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_sha1_oneshot:
-+
-+global	padlock_sha1_blocks
-+
-+ALIGN	16
-+padlock_sha1_blocks:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_sha1_blocks:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	mov	rcx,rdx
-+	mov	rdx,rdi
-+	movups	xmm0,XMMWORD[rdi]
-+	sub	rsp,128+8
-+	mov	eax,DWORD[16+rdi]
-+	movaps	XMMWORD[rsp],xmm0
-+	mov	rdi,rsp
-+	mov	DWORD[16+rsp],eax
-+	mov	rax,-1
-+DB	0xf3,0x0f,0xa6,0xc8
-+	movaps	xmm0,XMMWORD[rsp]
-+	mov	eax,DWORD[16+rsp]
-+	add	rsp,128+8
-+	movups	XMMWORD[rdx],xmm0
-+	mov	DWORD[16+rdx],eax
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_sha1_blocks:
-+
-+global	padlock_sha256_oneshot
-+
-+ALIGN	16
-+padlock_sha256_oneshot:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_sha256_oneshot:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	mov	rcx,rdx
-+	mov	rdx,rdi
-+	movups	xmm0,XMMWORD[rdi]
-+	sub	rsp,128+8
-+	movups	xmm1,XMMWORD[16+rdi]
-+	movaps	XMMWORD[rsp],xmm0
-+	mov	rdi,rsp
-+	movaps	XMMWORD[16+rsp],xmm1
-+	xor	rax,rax
-+DB	0xf3,0x0f,0xa6,0xd0
-+	movaps	xmm0,XMMWORD[rsp]
-+	movaps	xmm1,XMMWORD[16+rsp]
-+	add	rsp,128+8
-+	movups	XMMWORD[rdx],xmm0
-+	movups	XMMWORD[16+rdx],xmm1
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_sha256_oneshot:
-+
-+global	padlock_sha256_blocks
-+
-+ALIGN	16
-+padlock_sha256_blocks:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_sha256_blocks:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	mov	rcx,rdx
-+	mov	rdx,rdi
-+	movups	xmm0,XMMWORD[rdi]
-+	sub	rsp,128+8
-+	movups	xmm1,XMMWORD[16+rdi]
-+	movaps	XMMWORD[rsp],xmm0
-+	mov	rdi,rsp
-+	movaps	XMMWORD[16+rsp],xmm1
-+	mov	rax,-1
-+DB	0xf3,0x0f,0xa6,0xd0
-+	movaps	xmm0,XMMWORD[rsp]
-+	movaps	xmm1,XMMWORD[16+rsp]
-+	add	rsp,128+8
-+	movups	XMMWORD[rdx],xmm0
-+	movups	XMMWORD[16+rdx],xmm1
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_sha256_blocks:
-+
-+global	padlock_sha512_blocks
-+
-+ALIGN	16
-+padlock_sha512_blocks:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_sha512_blocks:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	mov	rcx,rdx
-+	mov	rdx,rdi
-+	movups	xmm0,XMMWORD[rdi]
-+	sub	rsp,128+8
-+	movups	xmm1,XMMWORD[16+rdi]
-+	movups	xmm2,XMMWORD[32+rdi]
-+	movups	xmm3,XMMWORD[48+rdi]
-+	movaps	XMMWORD[rsp],xmm0
-+	mov	rdi,rsp
-+	movaps	XMMWORD[16+rsp],xmm1
-+	movaps	XMMWORD[32+rsp],xmm2
-+	movaps	XMMWORD[48+rsp],xmm3
-+DB	0xf3,0x0f,0xa6,0xe0
-+	movaps	xmm0,XMMWORD[rsp]
-+	movaps	xmm1,XMMWORD[16+rsp]
-+	movaps	xmm2,XMMWORD[32+rsp]
-+	movaps	xmm3,XMMWORD[48+rsp]
-+	add	rsp,128+8
-+	movups	XMMWORD[rdx],xmm0
-+	movups	XMMWORD[16+rdx],xmm1
-+	movups	XMMWORD[32+rdx],xmm2
-+	movups	XMMWORD[48+rdx],xmm3
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_sha512_blocks:
-+global	padlock_ecb_encrypt
-+
-+ALIGN	16
-+padlock_ecb_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_ecb_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+
-+
-+	push	rbp
-+	push	rbx
-+
-+	xor	eax,eax
-+	test	rdx,15
-+	jnz	NEAR $L$ecb_abort
-+	test	rcx,15
-+	jnz	NEAR $L$ecb_abort
-+	lea	rax,[$L$padlock_saved_context]
-+	pushf
-+	cld
-+	call	_padlock_verify_ctx
-+	lea	rdx,[16+rdx]
-+	xor	eax,eax
-+	xor	ebx,ebx
-+	test	DWORD[rdx],32
-+	jnz	NEAR $L$ecb_aligned
-+	test	rdi,0x0f
-+	setz	al
-+	test	rsi,0x0f
-+	setz	bl
-+	test	eax,ebx
-+	jnz	NEAR $L$ecb_aligned
-+	neg	rax
-+	mov	rbx,512
-+	not	rax
-+	lea	rbp,[rsp]
-+	cmp	rcx,rbx
-+	cmovc	rbx,rcx
-+	and	rax,rbx
-+	mov	rbx,rcx
-+	neg	rax
-+	and	rbx,512-1
-+	lea	rsp,[rbp*1+rax]
-+	mov	rax,512
-+	cmovz	rbx,rax
-+	cmp	rcx,rbx
-+	ja	NEAR $L$ecb_loop
-+	mov	rax,rsi
-+	cmp	rbp,rsp
-+	cmove	rax,rdi
-+	add	rax,rcx
-+	neg	rax
-+	and	rax,0xfff
-+	cmp	rax,128
-+	mov	rax,-128
-+	cmovae	rax,rbx
-+	and	rbx,rax
-+	jz	NEAR $L$ecb_unaligned_tail
-+	jmp	NEAR $L$ecb_loop
-+ALIGN	16
-+$L$ecb_loop:
-+	cmp	rbx,rcx
-+	cmova	rbx,rcx
-+	mov	r8,rdi
-+	mov	r9,rsi
-+	mov	r10,rcx
-+	mov	rcx,rbx
-+	mov	r11,rbx
-+	test	rdi,0x0f
-+	cmovnz	rdi,rsp
-+	test	rsi,0x0f
-+	jz	NEAR $L$ecb_inp_aligned
-+	shr	rcx,3
-+DB	0xf3,0x48,0xa5
-+	sub	rdi,rbx
-+	mov	rcx,rbx
-+	mov	rsi,rdi
-+$L$ecb_inp_aligned:
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,200
-+	mov	rdi,r8
-+	mov	rbx,r11
-+	test	rdi,0x0f
-+	jz	NEAR $L$ecb_out_aligned
-+	mov	rcx,rbx
-+	lea	rsi,[rsp]
-+	shr	rcx,3
-+DB	0xf3,0x48,0xa5
-+	sub	rdi,rbx
-+$L$ecb_out_aligned:
-+	mov	rsi,r9
-+	mov	rcx,r10
-+	add	rdi,rbx
-+	add	rsi,rbx
-+	sub	rcx,rbx
-+	mov	rbx,512
-+	jz	NEAR $L$ecb_break
-+	cmp	rcx,rbx
-+	jae	NEAR $L$ecb_loop
-+$L$ecb_unaligned_tail:
-+	xor	eax,eax
-+	cmp	rbp,rsp
-+	cmove	rax,rcx
-+	mov	r8,rdi
-+	mov	rbx,rcx
-+	sub	rsp,rax
-+	shr	rcx,3
-+	lea	rdi,[rsp]
-+DB	0xf3,0x48,0xa5
-+	mov	rsi,rsp
-+	mov	rdi,r8
-+	mov	rcx,rbx
-+	jmp	NEAR $L$ecb_loop
-+ALIGN	16
-+$L$ecb_break:
-+	cmp	rsp,rbp
-+	je	NEAR $L$ecb_done
-+
-+	pxor	xmm0,xmm0
-+	lea	rax,[rsp]
-+$L$ecb_bzero:
-+	movaps	XMMWORD[rax],xmm0
-+	lea	rax,[16+rax]
-+	cmp	rbp,rax
-+	ja	NEAR $L$ecb_bzero
-+
-+$L$ecb_done:
-+	lea	rsp,[rbp]
-+	jmp	NEAR $L$ecb_exit
-+
-+ALIGN	16
-+$L$ecb_aligned:
-+	lea	rbp,[rcx*1+rsi]
-+	neg	rbp
-+	and	rbp,0xfff
-+	xor	eax,eax
-+	cmp	rbp,128
-+	mov	rbp,128-1
-+	cmovae	rbp,rax
-+	and	rbp,rcx
-+	sub	rcx,rbp
-+	jz	NEAR $L$ecb_aligned_tail
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,200
-+	test	rbp,rbp
-+	jz	NEAR $L$ecb_exit
-+
-+$L$ecb_aligned_tail:
-+	mov	r8,rdi
-+	mov	rbx,rbp
-+	mov	rcx,rbp
-+	lea	rbp,[rsp]
-+	sub	rsp,rcx
-+	shr	rcx,3
-+	lea	rdi,[rsp]
-+DB	0xf3,0x48,0xa5
-+	lea	rdi,[r8]
-+	lea	rsi,[rsp]
-+	mov	rcx,rbx
-+	jmp	NEAR $L$ecb_loop
-+$L$ecb_exit:
-+	mov	eax,1
-+	lea	rsp,[8+rsp]
-+$L$ecb_abort:
-+	pop	rbx
-+	pop	rbp
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_ecb_encrypt:
-+global	padlock_cbc_encrypt
-+
-+ALIGN	16
-+padlock_cbc_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_cbc_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+
-+
-+	push	rbp
-+	push	rbx
-+
-+	xor	eax,eax
-+	test	rdx,15
-+	jnz	NEAR $L$cbc_abort
-+	test	rcx,15
-+	jnz	NEAR $L$cbc_abort
-+	lea	rax,[$L$padlock_saved_context]
-+	pushf
-+	cld
-+	call	_padlock_verify_ctx
-+	lea	rdx,[16+rdx]
-+	xor	eax,eax
-+	xor	ebx,ebx
-+	test	DWORD[rdx],32
-+	jnz	NEAR $L$cbc_aligned
-+	test	rdi,0x0f
-+	setz	al
-+	test	rsi,0x0f
-+	setz	bl
-+	test	eax,ebx
-+	jnz	NEAR $L$cbc_aligned
-+	neg	rax
-+	mov	rbx,512
-+	not	rax
-+	lea	rbp,[rsp]
-+	cmp	rcx,rbx
-+	cmovc	rbx,rcx
-+	and	rax,rbx
-+	mov	rbx,rcx
-+	neg	rax
-+	and	rbx,512-1
-+	lea	rsp,[rbp*1+rax]
-+	mov	rax,512
-+	cmovz	rbx,rax
-+	cmp	rcx,rbx
-+	ja	NEAR $L$cbc_loop
-+	mov	rax,rsi
-+	cmp	rbp,rsp
-+	cmove	rax,rdi
-+	add	rax,rcx
-+	neg	rax
-+	and	rax,0xfff
-+	cmp	rax,64
-+	mov	rax,-64
-+	cmovae	rax,rbx
-+	and	rbx,rax
-+	jz	NEAR $L$cbc_unaligned_tail
-+	jmp	NEAR $L$cbc_loop
-+ALIGN	16
-+$L$cbc_loop:
-+	cmp	rbx,rcx
-+	cmova	rbx,rcx
-+	mov	r8,rdi
-+	mov	r9,rsi
-+	mov	r10,rcx
-+	mov	rcx,rbx
-+	mov	r11,rbx
-+	test	rdi,0x0f
-+	cmovnz	rdi,rsp
-+	test	rsi,0x0f
-+	jz	NEAR $L$cbc_inp_aligned
-+	shr	rcx,3
-+DB	0xf3,0x48,0xa5
-+	sub	rdi,rbx
-+	mov	rcx,rbx
-+	mov	rsi,rdi
-+$L$cbc_inp_aligned:
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,208
-+	movdqa	xmm0,XMMWORD[rax]
-+	movdqa	XMMWORD[(-16)+rdx],xmm0
-+	mov	rdi,r8
-+	mov	rbx,r11
-+	test	rdi,0x0f
-+	jz	NEAR $L$cbc_out_aligned
-+	mov	rcx,rbx
-+	lea	rsi,[rsp]
-+	shr	rcx,3
-+DB	0xf3,0x48,0xa5
-+	sub	rdi,rbx
-+$L$cbc_out_aligned:
-+	mov	rsi,r9
-+	mov	rcx,r10
-+	add	rdi,rbx
-+	add	rsi,rbx
-+	sub	rcx,rbx
-+	mov	rbx,512
-+	jz	NEAR $L$cbc_break
-+	cmp	rcx,rbx
-+	jae	NEAR $L$cbc_loop
-+$L$cbc_unaligned_tail:
-+	xor	eax,eax
-+	cmp	rbp,rsp
-+	cmove	rax,rcx
-+	mov	r8,rdi
-+	mov	rbx,rcx
-+	sub	rsp,rax
-+	shr	rcx,3
-+	lea	rdi,[rsp]
-+DB	0xf3,0x48,0xa5
-+	mov	rsi,rsp
-+	mov	rdi,r8
-+	mov	rcx,rbx
-+	jmp	NEAR $L$cbc_loop
-+ALIGN	16
-+$L$cbc_break:
-+	cmp	rsp,rbp
-+	je	NEAR $L$cbc_done
-+
-+	pxor	xmm0,xmm0
-+	lea	rax,[rsp]
-+$L$cbc_bzero:
-+	movaps	XMMWORD[rax],xmm0
-+	lea	rax,[16+rax]
-+	cmp	rbp,rax
-+	ja	NEAR $L$cbc_bzero
-+
-+$L$cbc_done:
-+	lea	rsp,[rbp]
-+	jmp	NEAR $L$cbc_exit
-+
-+ALIGN	16
-+$L$cbc_aligned:
-+	lea	rbp,[rcx*1+rsi]
-+	neg	rbp
-+	and	rbp,0xfff
-+	xor	eax,eax
-+	cmp	rbp,64
-+	mov	rbp,64-1
-+	cmovae	rbp,rax
-+	and	rbp,rcx
-+	sub	rcx,rbp
-+	jz	NEAR $L$cbc_aligned_tail
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,208
-+	movdqa	xmm0,XMMWORD[rax]
-+	movdqa	XMMWORD[(-16)+rdx],xmm0
-+	test	rbp,rbp
-+	jz	NEAR $L$cbc_exit
-+
-+$L$cbc_aligned_tail:
-+	mov	r8,rdi
-+	mov	rbx,rbp
-+	mov	rcx,rbp
-+	lea	rbp,[rsp]
-+	sub	rsp,rcx
-+	shr	rcx,3
-+	lea	rdi,[rsp]
-+DB	0xf3,0x48,0xa5
-+	lea	rdi,[r8]
-+	lea	rsi,[rsp]
-+	mov	rcx,rbx
-+	jmp	NEAR $L$cbc_loop
-+$L$cbc_exit:
-+	mov	eax,1
-+	lea	rsp,[8+rsp]
-+$L$cbc_abort:
-+	pop	rbx
-+	pop	rbp
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_cbc_encrypt:
-+global	padlock_cfb_encrypt
-+
-+ALIGN	16
-+padlock_cfb_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_cfb_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+
-+
-+	push	rbp
-+	push	rbx
-+
-+	xor	eax,eax
-+	test	rdx,15
-+	jnz	NEAR $L$cfb_abort
-+	test	rcx,15
-+	jnz	NEAR $L$cfb_abort
-+	lea	rax,[$L$padlock_saved_context]
-+	pushf
-+	cld
-+	call	_padlock_verify_ctx
-+	lea	rdx,[16+rdx]
-+	xor	eax,eax
-+	xor	ebx,ebx
-+	test	DWORD[rdx],32
-+	jnz	NEAR $L$cfb_aligned
-+	test	rdi,0x0f
-+	setz	al
-+	test	rsi,0x0f
-+	setz	bl
-+	test	eax,ebx
-+	jnz	NEAR $L$cfb_aligned
-+	neg	rax
-+	mov	rbx,512
-+	not	rax
-+	lea	rbp,[rsp]
-+	cmp	rcx,rbx
-+	cmovc	rbx,rcx
-+	and	rax,rbx
-+	mov	rbx,rcx
-+	neg	rax
-+	and	rbx,512-1
-+	lea	rsp,[rbp*1+rax]
-+	mov	rax,512
-+	cmovz	rbx,rax
-+	jmp	NEAR $L$cfb_loop
-+ALIGN	16
-+$L$cfb_loop:
-+	cmp	rbx,rcx
-+	cmova	rbx,rcx
-+	mov	r8,rdi
-+	mov	r9,rsi
-+	mov	r10,rcx
-+	mov	rcx,rbx
-+	mov	r11,rbx
-+	test	rdi,0x0f
-+	cmovnz	rdi,rsp
-+	test	rsi,0x0f
-+	jz	NEAR $L$cfb_inp_aligned
-+	shr	rcx,3
-+DB	0xf3,0x48,0xa5
-+	sub	rdi,rbx
-+	mov	rcx,rbx
-+	mov	rsi,rdi
-+$L$cfb_inp_aligned:
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,224
-+	movdqa	xmm0,XMMWORD[rax]
-+	movdqa	XMMWORD[(-16)+rdx],xmm0
-+	mov	rdi,r8
-+	mov	rbx,r11
-+	test	rdi,0x0f
-+	jz	NEAR $L$cfb_out_aligned
-+	mov	rcx,rbx
-+	lea	rsi,[rsp]
-+	shr	rcx,3
-+DB	0xf3,0x48,0xa5
-+	sub	rdi,rbx
-+$L$cfb_out_aligned:
-+	mov	rsi,r9
-+	mov	rcx,r10
-+	add	rdi,rbx
-+	add	rsi,rbx
-+	sub	rcx,rbx
-+	mov	rbx,512
-+	jnz	NEAR $L$cfb_loop
-+	cmp	rsp,rbp
-+	je	NEAR $L$cfb_done
-+
-+	pxor	xmm0,xmm0
-+	lea	rax,[rsp]
-+$L$cfb_bzero:
-+	movaps	XMMWORD[rax],xmm0
-+	lea	rax,[16+rax]
-+	cmp	rbp,rax
-+	ja	NEAR $L$cfb_bzero
-+
-+$L$cfb_done:
-+	lea	rsp,[rbp]
-+	jmp	NEAR $L$cfb_exit
-+
-+ALIGN	16
-+$L$cfb_aligned:
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,224
-+	movdqa	xmm0,XMMWORD[rax]
-+	movdqa	XMMWORD[(-16)+rdx],xmm0
-+$L$cfb_exit:
-+	mov	eax,1
-+	lea	rsp,[8+rsp]
-+$L$cfb_abort:
-+	pop	rbx
-+	pop	rbp
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_cfb_encrypt:
-+global	padlock_ofb_encrypt
-+
-+ALIGN	16
-+padlock_ofb_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_ofb_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+
-+
-+	push	rbp
-+	push	rbx
-+
-+	xor	eax,eax
-+	test	rdx,15
-+	jnz	NEAR $L$ofb_abort
-+	test	rcx,15
-+	jnz	NEAR $L$ofb_abort
-+	lea	rax,[$L$padlock_saved_context]
-+	pushf
-+	cld
-+	call	_padlock_verify_ctx
-+	lea	rdx,[16+rdx]
-+	xor	eax,eax
-+	xor	ebx,ebx
-+	test	DWORD[rdx],32
-+	jnz	NEAR $L$ofb_aligned
-+	test	rdi,0x0f
-+	setz	al
-+	test	rsi,0x0f
-+	setz	bl
-+	test	eax,ebx
-+	jnz	NEAR $L$ofb_aligned
-+	neg	rax
-+	mov	rbx,512
-+	not	rax
-+	lea	rbp,[rsp]
-+	cmp	rcx,rbx
-+	cmovc	rbx,rcx
-+	and	rax,rbx
-+	mov	rbx,rcx
-+	neg	rax
-+	and	rbx,512-1
-+	lea	rsp,[rbp*1+rax]
-+	mov	rax,512
-+	cmovz	rbx,rax
-+	jmp	NEAR $L$ofb_loop
-+ALIGN	16
-+$L$ofb_loop:
-+	cmp	rbx,rcx
-+	cmova	rbx,rcx
-+	mov	r8,rdi
-+	mov	r9,rsi
-+	mov	r10,rcx
-+	mov	rcx,rbx
-+	mov	r11,rbx
-+	test	rdi,0x0f
-+	cmovnz	rdi,rsp
-+	test	rsi,0x0f
-+	jz	NEAR $L$ofb_inp_aligned
-+	shr	rcx,3
-+DB	0xf3,0x48,0xa5
-+	sub	rdi,rbx
-+	mov	rcx,rbx
-+	mov	rsi,rdi
-+$L$ofb_inp_aligned:
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,232
-+	movdqa	xmm0,XMMWORD[rax]
-+	movdqa	XMMWORD[(-16)+rdx],xmm0
-+	mov	rdi,r8
-+	mov	rbx,r11
-+	test	rdi,0x0f
-+	jz	NEAR $L$ofb_out_aligned
-+	mov	rcx,rbx
-+	lea	rsi,[rsp]
-+	shr	rcx,3
-+DB	0xf3,0x48,0xa5
-+	sub	rdi,rbx
-+$L$ofb_out_aligned:
-+	mov	rsi,r9
-+	mov	rcx,r10
-+	add	rdi,rbx
-+	add	rsi,rbx
-+	sub	rcx,rbx
-+	mov	rbx,512
-+	jnz	NEAR $L$ofb_loop
-+	cmp	rsp,rbp
-+	je	NEAR $L$ofb_done
-+
-+	pxor	xmm0,xmm0
-+	lea	rax,[rsp]
-+$L$ofb_bzero:
-+	movaps	XMMWORD[rax],xmm0
-+	lea	rax,[16+rax]
-+	cmp	rbp,rax
-+	ja	NEAR $L$ofb_bzero
-+
-+$L$ofb_done:
-+	lea	rsp,[rbp]
-+	jmp	NEAR $L$ofb_exit
-+
-+ALIGN	16
-+$L$ofb_aligned:
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,232
-+	movdqa	xmm0,XMMWORD[rax]
-+	movdqa	XMMWORD[(-16)+rdx],xmm0
-+$L$ofb_exit:
-+	mov	eax,1
-+	lea	rsp,[8+rsp]
-+$L$ofb_abort:
-+	pop	rbx
-+	pop	rbp
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_ofb_encrypt:
-+global	padlock_ctr32_encrypt
-+
-+ALIGN	16
-+padlock_ctr32_encrypt:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_padlock_ctr32_encrypt:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+
-+
-+	push	rbp
-+	push	rbx
-+
-+	xor	eax,eax
-+	test	rdx,15
-+	jnz	NEAR $L$ctr32_abort
-+	test	rcx,15
-+	jnz	NEAR $L$ctr32_abort
-+	lea	rax,[$L$padlock_saved_context]
-+	pushf
-+	cld
-+	call	_padlock_verify_ctx
-+	lea	rdx,[16+rdx]
-+	xor	eax,eax
-+	xor	ebx,ebx
-+	test	DWORD[rdx],32
-+	jnz	NEAR $L$ctr32_aligned
-+	test	rdi,0x0f
-+	setz	al
-+	test	rsi,0x0f
-+	setz	bl
-+	test	eax,ebx
-+	jnz	NEAR $L$ctr32_aligned
-+	neg	rax
-+	mov	rbx,512
-+	not	rax
-+	lea	rbp,[rsp]
-+	cmp	rcx,rbx
-+	cmovc	rbx,rcx
-+	and	rax,rbx
-+	mov	rbx,rcx
-+	neg	rax
-+	and	rbx,512-1
-+	lea	rsp,[rbp*1+rax]
-+	mov	rax,512
-+	cmovz	rbx,rax
-+$L$ctr32_reenter:
-+	mov	eax,DWORD[((-4))+rdx]
-+	bswap	eax
-+	neg	eax
-+	and	eax,31
-+	mov	rbx,512
-+	shl	eax,4
-+	cmovz	rax,rbx
-+	cmp	rcx,rax
-+	cmova	rbx,rax
-+	cmovbe	rbx,rcx
-+	cmp	rcx,rbx
-+	ja	NEAR $L$ctr32_loop
-+	mov	rax,rsi
-+	cmp	rbp,rsp
-+	cmove	rax,rdi
-+	add	rax,rcx
-+	neg	rax
-+	and	rax,0xfff
-+	cmp	rax,32
-+	mov	rax,-32
-+	cmovae	rax,rbx
-+	and	rbx,rax
-+	jz	NEAR $L$ctr32_unaligned_tail
-+	jmp	NEAR $L$ctr32_loop
-+ALIGN	16
-+$L$ctr32_loop:
-+	cmp	rbx,rcx
-+	cmova	rbx,rcx
-+	mov	r8,rdi
-+	mov	r9,rsi
-+	mov	r10,rcx
-+	mov	rcx,rbx
-+	mov	r11,rbx
-+	test	rdi,0x0f
-+	cmovnz	rdi,rsp
-+	test	rsi,0x0f
-+	jz	NEAR $L$ctr32_inp_aligned
-+	shr	rcx,3
-+DB	0xf3,0x48,0xa5
-+	sub	rdi,rbx
-+	mov	rcx,rbx
-+	mov	rsi,rdi
-+$L$ctr32_inp_aligned:
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,216
-+	mov	eax,DWORD[((-4))+rdx]
-+	test	eax,0xffff0000
-+	jnz	NEAR $L$ctr32_no_carry
-+	bswap	eax
-+	add	eax,0x10000
-+	bswap	eax
-+	mov	DWORD[((-4))+rdx],eax
-+$L$ctr32_no_carry:
-+	mov	rdi,r8
-+	mov	rbx,r11
-+	test	rdi,0x0f
-+	jz	NEAR $L$ctr32_out_aligned
-+	mov	rcx,rbx
-+	lea	rsi,[rsp]
-+	shr	rcx,3
-+DB	0xf3,0x48,0xa5
-+	sub	rdi,rbx
-+$L$ctr32_out_aligned:
-+	mov	rsi,r9
-+	mov	rcx,r10
-+	add	rdi,rbx
-+	add	rsi,rbx
-+	sub	rcx,rbx
-+	mov	rbx,512
-+	jz	NEAR $L$ctr32_break
-+	cmp	rcx,rbx
-+	jae	NEAR $L$ctr32_loop
-+	mov	rbx,rcx
-+	mov	rax,rsi
-+	cmp	rbp,rsp
-+	cmove	rax,rdi
-+	add	rax,rcx
-+	neg	rax
-+	and	rax,0xfff
-+	cmp	rax,32
-+	mov	rax,-32
-+	cmovae	rax,rbx
-+	and	rbx,rax
-+	jnz	NEAR $L$ctr32_loop
-+$L$ctr32_unaligned_tail:
-+	xor	eax,eax
-+	cmp	rbp,rsp
-+	cmove	rax,rcx
-+	mov	r8,rdi
-+	mov	rbx,rcx
-+	sub	rsp,rax
-+	shr	rcx,3
-+	lea	rdi,[rsp]
-+DB	0xf3,0x48,0xa5
-+	mov	rsi,rsp
-+	mov	rdi,r8
-+	mov	rcx,rbx
-+	jmp	NEAR $L$ctr32_loop
-+ALIGN	16
-+$L$ctr32_break:
-+	cmp	rsp,rbp
-+	je	NEAR $L$ctr32_done
-+
-+	pxor	xmm0,xmm0
-+	lea	rax,[rsp]
-+$L$ctr32_bzero:
-+	movaps	XMMWORD[rax],xmm0
-+	lea	rax,[16+rax]
-+	cmp	rbp,rax
-+	ja	NEAR $L$ctr32_bzero
-+
-+$L$ctr32_done:
-+	lea	rsp,[rbp]
-+	jmp	NEAR $L$ctr32_exit
-+
-+ALIGN	16
-+$L$ctr32_aligned:
-+	mov	eax,DWORD[((-4))+rdx]
-+	bswap	eax
-+	neg	eax
-+	and	eax,0xffff
-+	mov	rbx,1048576
-+	shl	eax,4
-+	cmovz	rax,rbx
-+	cmp	rcx,rax
-+	cmova	rbx,rax
-+	cmovbe	rbx,rcx
-+	jbe	NEAR $L$ctr32_aligned_skip
-+
-+$L$ctr32_aligned_loop:
-+	mov	r10,rcx
-+	mov	rcx,rbx
-+	mov	r11,rbx
-+
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,216
-+
-+	mov	eax,DWORD[((-4))+rdx]
-+	bswap	eax
-+	add	eax,0x10000
-+	bswap	eax
-+	mov	DWORD[((-4))+rdx],eax
-+
-+	mov	rcx,r10
-+	sub	rcx,r11
-+	mov	rbx,1048576
-+	jz	NEAR $L$ctr32_exit
-+	cmp	rcx,rbx
-+	jae	NEAR $L$ctr32_aligned_loop
-+
-+$L$ctr32_aligned_skip:
-+	lea	rbp,[rcx*1+rsi]
-+	neg	rbp
-+	and	rbp,0xfff
-+	xor	eax,eax
-+	cmp	rbp,32
-+	mov	rbp,32-1
-+	cmovae	rbp,rax
-+	and	rbp,rcx
-+	sub	rcx,rbp
-+	jz	NEAR $L$ctr32_aligned_tail
-+	lea	rax,[((-16))+rdx]
-+	lea	rbx,[16+rdx]
-+	shr	rcx,4
-+DB	0xf3,0x0f,0xa7,216
-+	test	rbp,rbp
-+	jz	NEAR $L$ctr32_exit
-+
-+$L$ctr32_aligned_tail:
-+	mov	r8,rdi
-+	mov	rbx,rbp
-+	mov	rcx,rbp
-+	lea	rbp,[rsp]
-+	sub	rsp,rcx
-+	shr	rcx,3
-+	lea	rdi,[rsp]
-+DB	0xf3,0x48,0xa5
-+	lea	rdi,[r8]
-+	lea	rsi,[rsp]
-+	mov	rcx,rbx
-+	jmp	NEAR $L$ctr32_loop
-+$L$ctr32_exit:
-+	mov	eax,1
-+	lea	rsp,[8+rsp]
-+$L$ctr32_abort:
-+	pop	rbx
-+	pop	rbp
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_padlock_ctr32_encrypt:
-+DB	86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,95
-+DB	54,52,32,109,111,100,117,108,101,44,32,67,82,89,80,84
-+DB	79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64
-+DB	111,112,101,110,115,115,108,46,111,114,103,62,0
-+ALIGN	16
-+section	.data data align=8
-+
-+ALIGN	8
-+$L$padlock_saved_context:
-+	DQ	0
-diff --git a/SMP/lib/accelerated/x86/coff/ghash-x86.asm b/SMP/lib/accelerated/x86/coff/ghash-x86.asm
-new file mode 100644
-index 0000000..3dfb7d8
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/ghash-x86.asm
-@@ -0,0 +1,692 @@
-+%ifidn __OUTPUT_FORMAT__,obj
-+section	code	use32 class=code align=64
-+%elifidn __OUTPUT_FORMAT__,win32
-+%ifndef __YASM_VER__
-+$@feat.00 equ 1
-+%endif
-+section	.text	code align=64
-+%else
-+section	.text	code
-+%endif
-+global	_gcm_gmult_4bit_x86
-+align	16
-+_gcm_gmult_4bit_x86:
-+L$_gcm_gmult_4bit_x86_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	sub	esp,84
-+	mov	edi,DWORD [104+esp]
-+	mov	esi,DWORD [108+esp]
-+	mov	ebp,DWORD [edi]
-+	mov	edx,DWORD [4+edi]
-+	mov	ecx,DWORD [8+edi]
-+	mov	ebx,DWORD [12+edi]
-+	mov	DWORD [16+esp],0
-+	mov	DWORD [20+esp],471859200
-+	mov	DWORD [24+esp],943718400
-+	mov	DWORD [28+esp],610271232
-+	mov	DWORD [32+esp],1887436800
-+	mov	DWORD [36+esp],1822425088
-+	mov	DWORD [40+esp],1220542464
-+	mov	DWORD [44+esp],1423966208
-+	mov	DWORD [48+esp],3774873600
-+	mov	DWORD [52+esp],4246732800
-+	mov	DWORD [56+esp],3644850176
-+	mov	DWORD [60+esp],3311403008
-+	mov	DWORD [64+esp],2441084928
-+	mov	DWORD [68+esp],2376073216
-+	mov	DWORD [72+esp],2847932416
-+	mov	DWORD [76+esp],3051356160
-+	mov	DWORD [esp],ebp
-+	mov	DWORD [4+esp],edx
-+	mov	DWORD [8+esp],ecx
-+	mov	DWORD [12+esp],ebx
-+	shr	ebx,20
-+	and	ebx,240
-+	mov	ebp,DWORD [4+ebx*1+esi]
-+	mov	edx,DWORD [ebx*1+esi]
-+	mov	ecx,DWORD [12+ebx*1+esi]
-+	mov	ebx,DWORD [8+ebx*1+esi]
-+	xor	eax,eax
-+	mov	edi,15
-+	jmp	NEAR L$000x86_loop
-+align	16
-+L$000x86_loop:
-+	mov	al,bl
-+	shrd	ebx,ecx,4
-+	and	al,15
-+	shrd	ecx,edx,4
-+	shrd	edx,ebp,4
-+	shr	ebp,4
-+	xor	ebp,DWORD [16+eax*4+esp]
-+	mov	al,BYTE [edi*1+esp]
-+	and	al,240
-+	xor	ebx,DWORD [8+eax*1+esi]
-+	xor	ecx,DWORD [12+eax*1+esi]
-+	xor	edx,DWORD [eax*1+esi]
-+	xor	ebp,DWORD [4+eax*1+esi]
-+	dec	edi
-+	js	NEAR L$001x86_break
-+	mov	al,bl
-+	shrd	ebx,ecx,4
-+	and	al,15
-+	shrd	ecx,edx,4
-+	shrd	edx,ebp,4
-+	shr	ebp,4
-+	xor	ebp,DWORD [16+eax*4+esp]
-+	mov	al,BYTE [edi*1+esp]
-+	shl	al,4
-+	xor	ebx,DWORD [8+eax*1+esi]
-+	xor	ecx,DWORD [12+eax*1+esi]
-+	xor	edx,DWORD [eax*1+esi]
-+	xor	ebp,DWORD [4+eax*1+esi]
-+	jmp	NEAR L$000x86_loop
-+align	16
-+L$001x86_break:
-+	bswap	ebx
-+	bswap	ecx
-+	bswap	edx
-+	bswap	ebp
-+	mov	edi,DWORD [104+esp]
-+	mov	DWORD [12+edi],ebx
-+	mov	DWORD [8+edi],ecx
-+	mov	DWORD [4+edi],edx
-+	mov	DWORD [edi],ebp
-+	add	esp,84
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_gcm_ghash_4bit_x86
-+align	16
-+_gcm_ghash_4bit_x86:
-+L$_gcm_ghash_4bit_x86_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	sub	esp,84
-+	mov	ebx,DWORD [104+esp]
-+	mov	esi,DWORD [108+esp]
-+	mov	edi,DWORD [112+esp]
-+	mov	ecx,DWORD [116+esp]
-+	add	ecx,edi
-+	mov	DWORD [116+esp],ecx
-+	mov	ebp,DWORD [ebx]
-+	mov	edx,DWORD [4+ebx]
-+	mov	ecx,DWORD [8+ebx]
-+	mov	ebx,DWORD [12+ebx]
-+	mov	DWORD [16+esp],0
-+	mov	DWORD [20+esp],471859200
-+	mov	DWORD [24+esp],943718400
-+	mov	DWORD [28+esp],610271232
-+	mov	DWORD [32+esp],1887436800
-+	mov	DWORD [36+esp],1822425088
-+	mov	DWORD [40+esp],1220542464
-+	mov	DWORD [44+esp],1423966208
-+	mov	DWORD [48+esp],3774873600
-+	mov	DWORD [52+esp],4246732800
-+	mov	DWORD [56+esp],3644850176
-+	mov	DWORD [60+esp],3311403008
-+	mov	DWORD [64+esp],2441084928
-+	mov	DWORD [68+esp],2376073216
-+	mov	DWORD [72+esp],2847932416
-+	mov	DWORD [76+esp],3051356160
-+align	16
-+L$002x86_outer_loop:
-+	xor	ebx,DWORD [12+edi]
-+	xor	ecx,DWORD [8+edi]
-+	xor	edx,DWORD [4+edi]
-+	xor	ebp,DWORD [edi]
-+	mov	DWORD [12+esp],ebx
-+	mov	DWORD [8+esp],ecx
-+	mov	DWORD [4+esp],edx
-+	mov	DWORD [esp],ebp
-+	shr	ebx,20
-+	and	ebx,240
-+	mov	ebp,DWORD [4+ebx*1+esi]
-+	mov	edx,DWORD [ebx*1+esi]
-+	mov	ecx,DWORD [12+ebx*1+esi]
-+	mov	ebx,DWORD [8+ebx*1+esi]
-+	xor	eax,eax
-+	mov	edi,15
-+	jmp	NEAR L$003x86_loop
-+align	16
-+L$003x86_loop:
-+	mov	al,bl
-+	shrd	ebx,ecx,4
-+	and	al,15
-+	shrd	ecx,edx,4
-+	shrd	edx,ebp,4
-+	shr	ebp,4
-+	xor	ebp,DWORD [16+eax*4+esp]
-+	mov	al,BYTE [edi*1+esp]
-+	and	al,240
-+	xor	ebx,DWORD [8+eax*1+esi]
-+	xor	ecx,DWORD [12+eax*1+esi]
-+	xor	edx,DWORD [eax*1+esi]
-+	xor	ebp,DWORD [4+eax*1+esi]
-+	dec	edi
-+	js	NEAR L$004x86_break
-+	mov	al,bl
-+	shrd	ebx,ecx,4
-+	and	al,15
-+	shrd	ecx,edx,4
-+	shrd	edx,ebp,4
-+	shr	ebp,4
-+	xor	ebp,DWORD [16+eax*4+esp]
-+	mov	al,BYTE [edi*1+esp]
-+	shl	al,4
-+	xor	ebx,DWORD [8+eax*1+esi]
-+	xor	ecx,DWORD [12+eax*1+esi]
-+	xor	edx,DWORD [eax*1+esi]
-+	xor	ebp,DWORD [4+eax*1+esi]
-+	jmp	NEAR L$003x86_loop
-+align	16
-+L$004x86_break:
-+	bswap	ebx
-+	bswap	ecx
-+	bswap	edx
-+	bswap	ebp
-+	mov	edi,DWORD [112+esp]
-+	lea	edi,[16+edi]
-+	cmp	edi,DWORD [116+esp]
-+	mov	DWORD [112+esp],edi
-+	jb	NEAR L$002x86_outer_loop
-+	mov	edi,DWORD [104+esp]
-+	mov	DWORD [12+edi],ebx
-+	mov	DWORD [8+edi],ecx
-+	mov	DWORD [4+edi],edx
-+	mov	DWORD [edi],ebp
-+	add	esp,84
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+align	16
-+__mmx_gmult_4bit_inner:
-+	xor	ecx,ecx
-+	mov	edx,ebx
-+	mov	cl,dl
-+	shl	cl,4
-+	and	edx,240
-+	movq	mm0,[8+ecx*1+esi]
-+	movq	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [14+edi]
-+	psllq	mm2,60
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [13+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [12+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [11+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [10+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [9+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [8+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [7+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [6+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [5+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [4+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [3+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [2+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [1+edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	mov	cl,BYTE [edi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	mov	edx,ecx
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	shl	cl,4
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+ecx*1+esi]
-+	psllq	mm2,60
-+	and	edx,240
-+	pxor	mm1,[ebp*8+eax]
-+	and	ebx,15
-+	pxor	mm1,[ecx*1+esi]
-+	movd	ebp,mm0
-+	pxor	mm0,mm2
-+	psrlq	mm0,4
-+	movq	mm2,mm1
-+	psrlq	mm1,4
-+	pxor	mm0,[8+edx*1+esi]
-+	psllq	mm2,60
-+	pxor	mm1,[ebx*8+eax]
-+	and	ebp,15
-+	pxor	mm1,[edx*1+esi]
-+	movd	ebx,mm0
-+	pxor	mm0,mm2
-+	mov	edi,DWORD [4+ebp*8+eax]
-+	psrlq	mm0,32
-+	movd	edx,mm1
-+	psrlq	mm1,32
-+	movd	ecx,mm0
-+	movd	ebp,mm1
-+	shl	edi,4
-+	bswap	ebx
-+	bswap	edx
-+	bswap	ecx
-+	xor	ebp,edi
-+	bswap	ebp
-+	ret
-+global	_gcm_gmult_4bit_mmx
-+align	16
-+_gcm_gmult_4bit_mmx:
-+L$_gcm_gmult_4bit_mmx_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	edi,DWORD [20+esp]
-+	mov	esi,DWORD [24+esp]
-+	call	L$005pic_point
-+L$005pic_point:
-+	pop	eax
-+	lea	eax,[(L$rem_4bit-L$005pic_point)+eax]
-+	movzx	ebx,BYTE [15+edi]
-+	call	__mmx_gmult_4bit_inner
-+	mov	edi,DWORD [20+esp]
-+	emms
-+	mov	DWORD [12+edi],ebx
-+	mov	DWORD [4+edi],edx
-+	mov	DWORD [8+edi],ecx
-+	mov	DWORD [edi],ebp
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+global	_gcm_ghash_4bit_mmx
-+align	16
-+_gcm_ghash_4bit_mmx:
-+L$_gcm_ghash_4bit_mmx_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	ebp,DWORD [20+esp]
-+	mov	esi,DWORD [24+esp]
-+	mov	edi,DWORD [28+esp]
-+	mov	ecx,DWORD [32+esp]
-+	call	L$006pic_point
-+L$006pic_point:
-+	pop	eax
-+	lea	eax,[(L$rem_4bit-L$006pic_point)+eax]
-+	add	ecx,edi
-+	mov	DWORD [32+esp],ecx
-+	sub	esp,20
-+	mov	ebx,DWORD [12+ebp]
-+	mov	edx,DWORD [4+ebp]
-+	mov	ecx,DWORD [8+ebp]
-+	mov	ebp,DWORD [ebp]
-+	jmp	NEAR L$007mmx_outer_loop
-+align	16
-+L$007mmx_outer_loop:
-+	xor	ebx,DWORD [12+edi]
-+	xor	edx,DWORD [4+edi]
-+	xor	ecx,DWORD [8+edi]
-+	xor	ebp,DWORD [edi]
-+	mov	DWORD [48+esp],edi
-+	mov	DWORD [12+esp],ebx
-+	mov	DWORD [4+esp],edx
-+	mov	DWORD [8+esp],ecx
-+	mov	DWORD [esp],ebp
-+	mov	edi,esp
-+	shr	ebx,24
-+	call	__mmx_gmult_4bit_inner
-+	mov	edi,DWORD [48+esp]
-+	lea	edi,[16+edi]
-+	cmp	edi,DWORD [52+esp]
-+	jb	NEAR L$007mmx_outer_loop
-+	mov	edi,DWORD [40+esp]
-+	emms
-+	mov	DWORD [12+edi],ebx
-+	mov	DWORD [4+edi],edx
-+	mov	DWORD [8+edi],ecx
-+	mov	DWORD [edi],ebp
-+	add	esp,20
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+align	64
-+L$rem_4bit:
-+dd	0,0,0,29491200,0,58982400,0,38141952
-+dd	0,117964800,0,113901568,0,76283904,0,88997888
-+dd	0,235929600,0,265420800,0,227803136,0,206962688
-+dd	0,152567808,0,148504576,0,177995776,0,190709760
-+db	71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
-+db	82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
-+db	112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
-+db	0
-diff --git a/SMP/lib/accelerated/x86/coff/ghash-x86_64.asm b/SMP/lib/accelerated/x86/coff/ghash-x86_64.asm
-new file mode 100644
-index 0000000..adedc83
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/ghash-x86_64.asm
-@@ -0,0 +1,2018 @@
-+default	rel
-+%define XMMWORD
-+%define YMMWORD
-+%define ZMMWORD
-+section	.text code align=64
-+
-+EXTERN	_gnutls_x86_cpuid_s
-+
-+global	gcm_gmult_4bit
-+
-+ALIGN	16
-+gcm_gmult_4bit:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_gcm_gmult_4bit:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+
-+
-+	push	rbx
-+	push	rbp
-+	push	r12
-+$L$gmult_prologue:
-+
-+	movzx	r8,BYTE[15+rdi]
-+	lea	r11,[$L$rem_4bit]
-+	xor	rax,rax
-+	xor	rbx,rbx
-+	mov	al,r8b
-+	mov	bl,r8b
-+	shl	al,4
-+	mov	rcx,14
-+	mov	r8,QWORD[8+rax*1+rsi]
-+	mov	r9,QWORD[rax*1+rsi]
-+	and	bl,0xf0
-+	mov	rdx,r8
-+	jmp	NEAR $L$oop1
-+
-+ALIGN	16
-+$L$oop1:
-+	shr	r8,4
-+	and	rdx,0xf
-+	mov	r10,r9
-+	mov	al,BYTE[rcx*1+rdi]
-+	shr	r9,4
-+	xor	r8,QWORD[8+rbx*1+rsi]
-+	shl	r10,60
-+	xor	r9,QWORD[rbx*1+rsi]
-+	mov	bl,al
-+	xor	r9,QWORD[rdx*8+r11]
-+	mov	rdx,r8
-+	shl	al,4
-+	xor	r8,r10
-+	dec	rcx
-+	js	NEAR $L$break1
-+
-+	shr	r8,4
-+	and	rdx,0xf
-+	mov	r10,r9
-+	shr	r9,4
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	shl	r10,60
-+	xor	r9,QWORD[rax*1+rsi]
-+	and	bl,0xf0
-+	xor	r9,QWORD[rdx*8+r11]
-+	mov	rdx,r8
-+	xor	r8,r10
-+	jmp	NEAR $L$oop1
-+
-+ALIGN	16
-+$L$break1:
-+	shr	r8,4
-+	and	rdx,0xf
-+	mov	r10,r9
-+	shr	r9,4
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	shl	r10,60
-+	xor	r9,QWORD[rax*1+rsi]
-+	and	bl,0xf0
-+	xor	r9,QWORD[rdx*8+r11]
-+	mov	rdx,r8
-+	xor	r8,r10
-+
-+	shr	r8,4
-+	and	rdx,0xf
-+	mov	r10,r9
-+	shr	r9,4
-+	xor	r8,QWORD[8+rbx*1+rsi]
-+	shl	r10,60
-+	xor	r9,QWORD[rbx*1+rsi]
-+	xor	r8,r10
-+	xor	r9,QWORD[rdx*8+r11]
-+
-+	bswap	r8
-+	bswap	r9
-+	mov	QWORD[8+rdi],r8
-+	mov	QWORD[rdi],r9
-+
-+	mov	rbx,QWORD[16+rsp]
-+	lea	rsp,[24+rsp]
-+$L$gmult_epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_gcm_gmult_4bit:
-+global	gcm_ghash_4bit
-+
-+ALIGN	16
-+gcm_ghash_4bit:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_gcm_ghash_4bit:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+	mov	rcx,r9
-+
-+
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	sub	rsp,280
-+$L$ghash_prologue:
-+	mov	r14,rdx
-+	mov	r15,rcx
-+	sub	rsi,-128
-+	lea	rbp,[((16+128))+rsp]
-+	xor	edx,edx
-+	mov	r8,QWORD[((0+0-128))+rsi]
-+	mov	rax,QWORD[((0+8-128))+rsi]
-+	mov	dl,al
-+	shr	rax,4
-+	mov	r10,r8
-+	shr	r8,4
-+	mov	r9,QWORD[((16+0-128))+rsi]
-+	shl	dl,4
-+	mov	rbx,QWORD[((16+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[rsp],dl
-+	or	rax,r10
-+	mov	dl,bl
-+	shr	rbx,4
-+	mov	r10,r9
-+	shr	r9,4
-+	mov	QWORD[rbp],r8
-+	mov	r8,QWORD[((32+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((0-128))+rbp],rax
-+	mov	rax,QWORD[((32+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[1+rsp],dl
-+	or	rbx,r10
-+	mov	dl,al
-+	shr	rax,4
-+	mov	r10,r8
-+	shr	r8,4
-+	mov	QWORD[8+rbp],r9
-+	mov	r9,QWORD[((48+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((8-128))+rbp],rbx
-+	mov	rbx,QWORD[((48+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[2+rsp],dl
-+	or	rax,r10
-+	mov	dl,bl
-+	shr	rbx,4
-+	mov	r10,r9
-+	shr	r9,4
-+	mov	QWORD[16+rbp],r8
-+	mov	r8,QWORD[((64+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((16-128))+rbp],rax
-+	mov	rax,QWORD[((64+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[3+rsp],dl
-+	or	rbx,r10
-+	mov	dl,al
-+	shr	rax,4
-+	mov	r10,r8
-+	shr	r8,4
-+	mov	QWORD[24+rbp],r9
-+	mov	r9,QWORD[((80+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((24-128))+rbp],rbx
-+	mov	rbx,QWORD[((80+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[4+rsp],dl
-+	or	rax,r10
-+	mov	dl,bl
-+	shr	rbx,4
-+	mov	r10,r9
-+	shr	r9,4
-+	mov	QWORD[32+rbp],r8
-+	mov	r8,QWORD[((96+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((32-128))+rbp],rax
-+	mov	rax,QWORD[((96+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[5+rsp],dl
-+	or	rbx,r10
-+	mov	dl,al
-+	shr	rax,4
-+	mov	r10,r8
-+	shr	r8,4
-+	mov	QWORD[40+rbp],r9
-+	mov	r9,QWORD[((112+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((40-128))+rbp],rbx
-+	mov	rbx,QWORD[((112+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[6+rsp],dl
-+	or	rax,r10
-+	mov	dl,bl
-+	shr	rbx,4
-+	mov	r10,r9
-+	shr	r9,4
-+	mov	QWORD[48+rbp],r8
-+	mov	r8,QWORD[((128+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((48-128))+rbp],rax
-+	mov	rax,QWORD[((128+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[7+rsp],dl
-+	or	rbx,r10
-+	mov	dl,al
-+	shr	rax,4
-+	mov	r10,r8
-+	shr	r8,4
-+	mov	QWORD[56+rbp],r9
-+	mov	r9,QWORD[((144+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((56-128))+rbp],rbx
-+	mov	rbx,QWORD[((144+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[8+rsp],dl
-+	or	rax,r10
-+	mov	dl,bl
-+	shr	rbx,4
-+	mov	r10,r9
-+	shr	r9,4
-+	mov	QWORD[64+rbp],r8
-+	mov	r8,QWORD[((160+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((64-128))+rbp],rax
-+	mov	rax,QWORD[((160+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[9+rsp],dl
-+	or	rbx,r10
-+	mov	dl,al
-+	shr	rax,4
-+	mov	r10,r8
-+	shr	r8,4
-+	mov	QWORD[72+rbp],r9
-+	mov	r9,QWORD[((176+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((72-128))+rbp],rbx
-+	mov	rbx,QWORD[((176+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[10+rsp],dl
-+	or	rax,r10
-+	mov	dl,bl
-+	shr	rbx,4
-+	mov	r10,r9
-+	shr	r9,4
-+	mov	QWORD[80+rbp],r8
-+	mov	r8,QWORD[((192+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((80-128))+rbp],rax
-+	mov	rax,QWORD[((192+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[11+rsp],dl
-+	or	rbx,r10
-+	mov	dl,al
-+	shr	rax,4
-+	mov	r10,r8
-+	shr	r8,4
-+	mov	QWORD[88+rbp],r9
-+	mov	r9,QWORD[((208+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((88-128))+rbp],rbx
-+	mov	rbx,QWORD[((208+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[12+rsp],dl
-+	or	rax,r10
-+	mov	dl,bl
-+	shr	rbx,4
-+	mov	r10,r9
-+	shr	r9,4
-+	mov	QWORD[96+rbp],r8
-+	mov	r8,QWORD[((224+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((96-128))+rbp],rax
-+	mov	rax,QWORD[((224+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[13+rsp],dl
-+	or	rbx,r10
-+	mov	dl,al
-+	shr	rax,4
-+	mov	r10,r8
-+	shr	r8,4
-+	mov	QWORD[104+rbp],r9
-+	mov	r9,QWORD[((240+0-128))+rsi]
-+	shl	dl,4
-+	mov	QWORD[((104-128))+rbp],rbx
-+	mov	rbx,QWORD[((240+8-128))+rsi]
-+	shl	r10,60
-+	mov	BYTE[14+rsp],dl
-+	or	rax,r10
-+	mov	dl,bl
-+	shr	rbx,4
-+	mov	r10,r9
-+	shr	r9,4
-+	mov	QWORD[112+rbp],r8
-+	shl	dl,4
-+	mov	QWORD[((112-128))+rbp],rax
-+	shl	r10,60
-+	mov	BYTE[15+rsp],dl
-+	or	rbx,r10
-+	mov	QWORD[120+rbp],r9
-+	mov	QWORD[((120-128))+rbp],rbx
-+	add	rsi,-128
-+	mov	r8,QWORD[8+rdi]
-+	mov	r9,QWORD[rdi]
-+	add	r15,r14
-+	lea	r11,[$L$rem_8bit]
-+	jmp	NEAR $L$outer_loop
-+ALIGN	16
-+$L$outer_loop:
-+	xor	r9,QWORD[r14]
-+	mov	rdx,QWORD[8+r14]
-+	lea	r14,[16+r14]
-+	xor	rdx,r8
-+	mov	QWORD[rdi],r9
-+	mov	QWORD[8+rdi],rdx
-+	shr	rdx,32
-+	xor	rax,rax
-+	rol	edx,8
-+	mov	al,dl
-+	movzx	ebx,dl
-+	shl	al,4
-+	shr	ebx,4
-+	rol	edx,8
-+	mov	r8,QWORD[8+rax*1+rsi]
-+	mov	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	movzx	ecx,dl
-+	shl	al,4
-+	movzx	r12,BYTE[rbx*1+rsp]
-+	shr	ecx,4
-+	xor	r12,r8
-+	mov	r10,r9
-+	shr	r8,8
-+	movzx	r12,r12b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rbx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rbx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r12,WORD[r12*2+r11]
-+	movzx	ebx,dl
-+	shl	al,4
-+	movzx	r13,BYTE[rcx*1+rsp]
-+	shr	ebx,4
-+	shl	r12,48
-+	xor	r13,r8
-+	mov	r10,r9
-+	xor	r9,r12
-+	shr	r8,8
-+	movzx	r13,r13b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rcx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rcx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r13,WORD[r13*2+r11]
-+	movzx	ecx,dl
-+	shl	al,4
-+	movzx	r12,BYTE[rbx*1+rsp]
-+	shr	ecx,4
-+	shl	r13,48
-+	xor	r12,r8
-+	mov	r10,r9
-+	xor	r9,r13
-+	shr	r8,8
-+	movzx	r12,r12b
-+	mov	edx,DWORD[8+rdi]
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rbx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rbx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r12,WORD[r12*2+r11]
-+	movzx	ebx,dl
-+	shl	al,4
-+	movzx	r13,BYTE[rcx*1+rsp]
-+	shr	ebx,4
-+	shl	r12,48
-+	xor	r13,r8
-+	mov	r10,r9
-+	xor	r9,r12
-+	shr	r8,8
-+	movzx	r13,r13b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rcx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rcx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r13,WORD[r13*2+r11]
-+	movzx	ecx,dl
-+	shl	al,4
-+	movzx	r12,BYTE[rbx*1+rsp]
-+	shr	ecx,4
-+	shl	r13,48
-+	xor	r12,r8
-+	mov	r10,r9
-+	xor	r9,r13
-+	shr	r8,8
-+	movzx	r12,r12b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rbx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rbx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r12,WORD[r12*2+r11]
-+	movzx	ebx,dl
-+	shl	al,4
-+	movzx	r13,BYTE[rcx*1+rsp]
-+	shr	ebx,4
-+	shl	r12,48
-+	xor	r13,r8
-+	mov	r10,r9
-+	xor	r9,r12
-+	shr	r8,8
-+	movzx	r13,r13b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rcx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rcx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r13,WORD[r13*2+r11]
-+	movzx	ecx,dl
-+	shl	al,4
-+	movzx	r12,BYTE[rbx*1+rsp]
-+	shr	ecx,4
-+	shl	r13,48
-+	xor	r12,r8
-+	mov	r10,r9
-+	xor	r9,r13
-+	shr	r8,8
-+	movzx	r12,r12b
-+	mov	edx,DWORD[4+rdi]
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rbx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rbx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r12,WORD[r12*2+r11]
-+	movzx	ebx,dl
-+	shl	al,4
-+	movzx	r13,BYTE[rcx*1+rsp]
-+	shr	ebx,4
-+	shl	r12,48
-+	xor	r13,r8
-+	mov	r10,r9
-+	xor	r9,r12
-+	shr	r8,8
-+	movzx	r13,r13b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rcx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rcx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r13,WORD[r13*2+r11]
-+	movzx	ecx,dl
-+	shl	al,4
-+	movzx	r12,BYTE[rbx*1+rsp]
-+	shr	ecx,4
-+	shl	r13,48
-+	xor	r12,r8
-+	mov	r10,r9
-+	xor	r9,r13
-+	shr	r8,8
-+	movzx	r12,r12b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rbx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rbx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r12,WORD[r12*2+r11]
-+	movzx	ebx,dl
-+	shl	al,4
-+	movzx	r13,BYTE[rcx*1+rsp]
-+	shr	ebx,4
-+	shl	r12,48
-+	xor	r13,r8
-+	mov	r10,r9
-+	xor	r9,r12
-+	shr	r8,8
-+	movzx	r13,r13b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rcx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rcx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r13,WORD[r13*2+r11]
-+	movzx	ecx,dl
-+	shl	al,4
-+	movzx	r12,BYTE[rbx*1+rsp]
-+	shr	ecx,4
-+	shl	r13,48
-+	xor	r12,r8
-+	mov	r10,r9
-+	xor	r9,r13
-+	shr	r8,8
-+	movzx	r12,r12b
-+	mov	edx,DWORD[rdi]
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rbx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rbx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r12,WORD[r12*2+r11]
-+	movzx	ebx,dl
-+	shl	al,4
-+	movzx	r13,BYTE[rcx*1+rsp]
-+	shr	ebx,4
-+	shl	r12,48
-+	xor	r13,r8
-+	mov	r10,r9
-+	xor	r9,r12
-+	shr	r8,8
-+	movzx	r13,r13b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rcx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rcx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r13,WORD[r13*2+r11]
-+	movzx	ecx,dl
-+	shl	al,4
-+	movzx	r12,BYTE[rbx*1+rsp]
-+	shr	ecx,4
-+	shl	r13,48
-+	xor	r12,r8
-+	mov	r10,r9
-+	xor	r9,r13
-+	shr	r8,8
-+	movzx	r12,r12b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rbx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rbx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r12,WORD[r12*2+r11]
-+	movzx	ebx,dl
-+	shl	al,4
-+	movzx	r13,BYTE[rcx*1+rsp]
-+	shr	ebx,4
-+	shl	r12,48
-+	xor	r13,r8
-+	mov	r10,r9
-+	xor	r9,r12
-+	shr	r8,8
-+	movzx	r13,r13b
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rcx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rcx*8+rbp]
-+	rol	edx,8
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	mov	al,dl
-+	xor	r8,r10
-+	movzx	r13,WORD[r13*2+r11]
-+	movzx	ecx,dl
-+	shl	al,4
-+	movzx	r12,BYTE[rbx*1+rsp]
-+	and	ecx,240
-+	shl	r13,48
-+	xor	r12,r8
-+	mov	r10,r9
-+	xor	r9,r13
-+	shr	r8,8
-+	movzx	r12,r12b
-+	mov	edx,DWORD[((-4))+rdi]
-+	shr	r9,8
-+	xor	r8,QWORD[((-128))+rbx*8+rbp]
-+	shl	r10,56
-+	xor	r9,QWORD[rbx*8+rbp]
-+	movzx	r12,WORD[r12*2+r11]
-+	xor	r8,QWORD[8+rax*1+rsi]
-+	xor	r9,QWORD[rax*1+rsi]
-+	shl	r12,48
-+	xor	r8,r10
-+	xor	r9,r12
-+	movzx	r13,r8b
-+	shr	r8,4
-+	mov	r10,r9
-+	shl	r13b,4
-+	shr	r9,4
-+	xor	r8,QWORD[8+rcx*1+rsi]
-+	movzx	r13,WORD[r13*2+r11]
-+	shl	r10,60
-+	xor	r9,QWORD[rcx*1+rsi]
-+	xor	r8,r10
-+	shl	r13,48
-+	bswap	r8
-+	xor	r9,r13
-+	bswap	r9
-+	cmp	r14,r15
-+	jb	NEAR $L$outer_loop
-+	mov	QWORD[8+rdi],r8
-+	mov	QWORD[rdi],r9
-+
-+	lea	rsi,[280+rsp]
-+	mov	r15,QWORD[rsi]
-+	mov	r14,QWORD[8+rsi]
-+	mov	r13,QWORD[16+rsi]
-+	mov	r12,QWORD[24+rsi]
-+	mov	rbp,QWORD[32+rsi]
-+	mov	rbx,QWORD[40+rsi]
-+	lea	rsp,[48+rsi]
-+$L$ghash_epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_gcm_ghash_4bit:
-+global	gcm_init_clmul
-+
-+ALIGN	16
-+gcm_init_clmul:
-+$L$_init_clmul:
-+$L$SEH_begin_gcm_init_clmul:
-+
-+DB	0x48,0x83,0xec,0x18
-+DB	0x0f,0x29,0x34,0x24
-+	movdqu	xmm2,XMMWORD[rdx]
-+	pshufd	xmm2,xmm2,78
-+
-+
-+	pshufd	xmm4,xmm2,255
-+	movdqa	xmm3,xmm2
-+	psllq	xmm2,1
-+	pxor	xmm5,xmm5
-+	psrlq	xmm3,63
-+	pcmpgtd	xmm5,xmm4
-+	pslldq	xmm3,8
-+	por	xmm2,xmm3
-+
-+
-+	pand	xmm5,XMMWORD[$L$0x1c2_polynomial]
-+	pxor	xmm2,xmm5
-+
-+
-+	pshufd	xmm6,xmm2,78
-+	movdqa	xmm0,xmm2
-+	pxor	xmm6,xmm2
-+	movdqa	xmm1,xmm0
-+	pshufd	xmm3,xmm0,78
-+	pxor	xmm3,xmm0
-+DB	102,15,58,68,194,0
-+DB	102,15,58,68,202,17
-+DB	102,15,58,68,222,0
-+	pxor	xmm3,xmm0
-+	pxor	xmm3,xmm1
-+
-+	movdqa	xmm4,xmm3
-+	psrldq	xmm3,8
-+	pslldq	xmm4,8
-+	pxor	xmm1,xmm3
-+	pxor	xmm0,xmm4
-+
-+	movdqa	xmm4,xmm0
-+	movdqa	xmm3,xmm0
-+	psllq	xmm0,5
-+	pxor	xmm3,xmm0
-+	psllq	xmm0,1
-+	pxor	xmm0,xmm3
-+	psllq	xmm0,57
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,8
-+	psrldq	xmm3,8
-+	pxor	xmm0,xmm4
-+	pxor	xmm1,xmm3
-+
-+
-+	movdqa	xmm4,xmm0
-+	psrlq	xmm0,1
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm0
-+	psrlq	xmm0,5
-+	pxor	xmm0,xmm4
-+	psrlq	xmm0,1
-+	pxor	xmm0,xmm1
-+	pshufd	xmm3,xmm2,78
-+	pshufd	xmm4,xmm0,78
-+	pxor	xmm3,xmm2
-+	movdqu	XMMWORD[rcx],xmm2
-+	pxor	xmm4,xmm0
-+	movdqu	XMMWORD[16+rcx],xmm0
-+DB	102,15,58,15,227,8
-+	movdqu	XMMWORD[32+rcx],xmm4
-+	movdqa	xmm1,xmm0
-+	pshufd	xmm3,xmm0,78
-+	pxor	xmm3,xmm0
-+DB	102,15,58,68,194,0
-+DB	102,15,58,68,202,17
-+DB	102,15,58,68,222,0
-+	pxor	xmm3,xmm0
-+	pxor	xmm3,xmm1
-+
-+	movdqa	xmm4,xmm3
-+	psrldq	xmm3,8
-+	pslldq	xmm4,8
-+	pxor	xmm1,xmm3
-+	pxor	xmm0,xmm4
-+
-+	movdqa	xmm4,xmm0
-+	movdqa	xmm3,xmm0
-+	psllq	xmm0,5
-+	pxor	xmm3,xmm0
-+	psllq	xmm0,1
-+	pxor	xmm0,xmm3
-+	psllq	xmm0,57
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,8
-+	psrldq	xmm3,8
-+	pxor	xmm0,xmm4
-+	pxor	xmm1,xmm3
-+
-+
-+	movdqa	xmm4,xmm0
-+	psrlq	xmm0,1
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm0
-+	psrlq	xmm0,5
-+	pxor	xmm0,xmm4
-+	psrlq	xmm0,1
-+	pxor	xmm0,xmm1
-+	movdqa	xmm5,xmm0
-+	movdqa	xmm1,xmm0
-+	pshufd	xmm3,xmm0,78
-+	pxor	xmm3,xmm0
-+DB	102,15,58,68,194,0
-+DB	102,15,58,68,202,17
-+DB	102,15,58,68,222,0
-+	pxor	xmm3,xmm0
-+	pxor	xmm3,xmm1
-+
-+	movdqa	xmm4,xmm3
-+	psrldq	xmm3,8
-+	pslldq	xmm4,8
-+	pxor	xmm1,xmm3
-+	pxor	xmm0,xmm4
-+
-+	movdqa	xmm4,xmm0
-+	movdqa	xmm3,xmm0
-+	psllq	xmm0,5
-+	pxor	xmm3,xmm0
-+	psllq	xmm0,1
-+	pxor	xmm0,xmm3
-+	psllq	xmm0,57
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,8
-+	psrldq	xmm3,8
-+	pxor	xmm0,xmm4
-+	pxor	xmm1,xmm3
-+
-+
-+	movdqa	xmm4,xmm0
-+	psrlq	xmm0,1
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm0
-+	psrlq	xmm0,5
-+	pxor	xmm0,xmm4
-+	psrlq	xmm0,1
-+	pxor	xmm0,xmm1
-+	pshufd	xmm3,xmm5,78
-+	pshufd	xmm4,xmm0,78
-+	pxor	xmm3,xmm5
-+	movdqu	XMMWORD[48+rcx],xmm5
-+	pxor	xmm4,xmm0
-+	movdqu	XMMWORD[64+rcx],xmm0
-+DB	102,15,58,15,227,8
-+	movdqu	XMMWORD[80+rcx],xmm4
-+	movaps	xmm6,XMMWORD[rsp]
-+	lea	rsp,[24+rsp]
-+$L$SEH_end_gcm_init_clmul:
-+	DB	0F3h,0C3h		;repret
-+
-+global	gcm_gmult_clmul
-+
-+ALIGN	16
-+gcm_gmult_clmul:
-+$L$_gmult_clmul:
-+	movdqu	xmm0,XMMWORD[rcx]
-+	movdqa	xmm5,XMMWORD[$L$bswap_mask]
-+	movdqu	xmm2,XMMWORD[rdx]
-+	movdqu	xmm4,XMMWORD[32+rdx]
-+DB	102,15,56,0,197
-+	movdqa	xmm1,xmm0
-+	pshufd	xmm3,xmm0,78
-+	pxor	xmm3,xmm0
-+DB	102,15,58,68,194,0
-+DB	102,15,58,68,202,17
-+DB	102,15,58,68,220,0
-+	pxor	xmm3,xmm0
-+	pxor	xmm3,xmm1
-+
-+	movdqa	xmm4,xmm3
-+	psrldq	xmm3,8
-+	pslldq	xmm4,8
-+	pxor	xmm1,xmm3
-+	pxor	xmm0,xmm4
-+
-+	movdqa	xmm4,xmm0
-+	movdqa	xmm3,xmm0
-+	psllq	xmm0,5
-+	pxor	xmm3,xmm0
-+	psllq	xmm0,1
-+	pxor	xmm0,xmm3
-+	psllq	xmm0,57
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,8
-+	psrldq	xmm3,8
-+	pxor	xmm0,xmm4
-+	pxor	xmm1,xmm3
-+
-+
-+	movdqa	xmm4,xmm0
-+	psrlq	xmm0,1
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm0
-+	psrlq	xmm0,5
-+	pxor	xmm0,xmm4
-+	psrlq	xmm0,1
-+	pxor	xmm0,xmm1
-+DB	102,15,56,0,197
-+	movdqu	XMMWORD[rcx],xmm0
-+	DB	0F3h,0C3h		;repret
-+
-+global	gcm_ghash_clmul
-+
-+ALIGN	32
-+gcm_ghash_clmul:
-+$L$_ghash_clmul:
-+	lea	rax,[((-136))+rsp]
-+$L$SEH_begin_gcm_ghash_clmul:
-+
-+DB	0x48,0x8d,0x60,0xe0
-+DB	0x0f,0x29,0x70,0xe0
-+DB	0x0f,0x29,0x78,0xf0
-+DB	0x44,0x0f,0x29,0x00
-+DB	0x44,0x0f,0x29,0x48,0x10
-+DB	0x44,0x0f,0x29,0x50,0x20
-+DB	0x44,0x0f,0x29,0x58,0x30
-+DB	0x44,0x0f,0x29,0x60,0x40
-+DB	0x44,0x0f,0x29,0x68,0x50
-+DB	0x44,0x0f,0x29,0x70,0x60
-+DB	0x44,0x0f,0x29,0x78,0x70
-+	movdqa	xmm10,XMMWORD[$L$bswap_mask]
-+
-+	movdqu	xmm0,XMMWORD[rcx]
-+	movdqu	xmm2,XMMWORD[rdx]
-+	movdqu	xmm7,XMMWORD[32+rdx]
-+DB	102,65,15,56,0,194
-+
-+	sub	r9,0x10
-+	jz	NEAR $L$odd_tail
-+
-+	movdqu	xmm6,XMMWORD[16+rdx]
-+	mov	eax,DWORD[((_gnutls_x86_cpuid_s+4))]
-+	cmp	r9,0x30
-+	jb	NEAR $L$skip4x
-+
-+	and	eax,71303168
-+	cmp	eax,4194304
-+	je	NEAR $L$skip4x
-+
-+	sub	r9,0x30
-+	mov	rax,0xA040608020C0E000
-+	movdqu	xmm14,XMMWORD[48+rdx]
-+	movdqu	xmm15,XMMWORD[64+rdx]
-+
-+
-+
-+
-+	movdqu	xmm3,XMMWORD[48+r8]
-+	movdqu	xmm11,XMMWORD[32+r8]
-+DB	102,65,15,56,0,218
-+DB	102,69,15,56,0,218
-+	movdqa	xmm5,xmm3
-+	pshufd	xmm4,xmm3,78
-+	pxor	xmm4,xmm3
-+DB	102,15,58,68,218,0
-+DB	102,15,58,68,234,17
-+DB	102,15,58,68,231,0
-+
-+	movdqa	xmm13,xmm11
-+	pshufd	xmm12,xmm11,78
-+	pxor	xmm12,xmm11
-+DB	102,68,15,58,68,222,0
-+DB	102,68,15,58,68,238,17
-+DB	102,68,15,58,68,231,16
-+	xorps	xmm3,xmm11
-+	xorps	xmm5,xmm13
-+	movups	xmm7,XMMWORD[80+rdx]
-+	xorps	xmm4,xmm12
-+
-+	movdqu	xmm11,XMMWORD[16+r8]
-+	movdqu	xmm8,XMMWORD[r8]
-+DB	102,69,15,56,0,218
-+DB	102,69,15,56,0,194
-+	movdqa	xmm13,xmm11
-+	pshufd	xmm12,xmm11,78
-+	pxor	xmm0,xmm8
-+	pxor	xmm12,xmm11
-+DB	102,69,15,58,68,222,0
-+	movdqa	xmm1,xmm0
-+	pshufd	xmm8,xmm0,78
-+	pxor	xmm8,xmm0
-+DB	102,69,15,58,68,238,17
-+DB	102,68,15,58,68,231,0
-+	xorps	xmm3,xmm11
-+	xorps	xmm5,xmm13
-+
-+	lea	r8,[64+r8]
-+	sub	r9,0x40
-+	jc	NEAR $L$tail4x
-+
-+	jmp	NEAR $L$mod4_loop
-+ALIGN	32
-+$L$mod4_loop:
-+DB	102,65,15,58,68,199,0
-+	xorps	xmm4,xmm12
-+	movdqu	xmm11,XMMWORD[48+r8]
-+DB	102,69,15,56,0,218
-+DB	102,65,15,58,68,207,17
-+	xorps	xmm0,xmm3
-+	movdqu	xmm3,XMMWORD[32+r8]
-+	movdqa	xmm13,xmm11
-+DB	102,68,15,58,68,199,16
-+	pshufd	xmm12,xmm11,78
-+	xorps	xmm1,xmm5
-+	pxor	xmm12,xmm11
-+DB	102,65,15,56,0,218
-+	movups	xmm7,XMMWORD[32+rdx]
-+	xorps	xmm8,xmm4
-+DB	102,68,15,58,68,218,0
-+	pshufd	xmm4,xmm3,78
-+
-+	pxor	xmm8,xmm0
-+	movdqa	xmm5,xmm3
-+	pxor	xmm8,xmm1
-+	pxor	xmm4,xmm3
-+	movdqa	xmm9,xmm8
-+DB	102,68,15,58,68,234,17
-+	pslldq	xmm8,8
-+	psrldq	xmm9,8
-+	pxor	xmm0,xmm8
-+	movdqa	xmm8,XMMWORD[$L$7_mask]
-+	pxor	xmm1,xmm9
-+DB	102,76,15,110,200
-+
-+	pand	xmm8,xmm0
-+DB	102,69,15,56,0,200
-+	pxor	xmm9,xmm0
-+DB	102,68,15,58,68,231,0
-+	psllq	xmm9,57
-+	movdqa	xmm8,xmm9
-+	pslldq	xmm9,8
-+DB	102,15,58,68,222,0
-+	psrldq	xmm8,8
-+	pxor	xmm0,xmm9
-+	pxor	xmm1,xmm8
-+	movdqu	xmm8,XMMWORD[r8]
-+
-+	movdqa	xmm9,xmm0
-+	psrlq	xmm0,1
-+DB	102,15,58,68,238,17
-+	xorps	xmm3,xmm11
-+	movdqu	xmm11,XMMWORD[16+r8]
-+DB	102,69,15,56,0,218
-+DB	102,15,58,68,231,16
-+	xorps	xmm5,xmm13
-+	movups	xmm7,XMMWORD[80+rdx]
-+DB	102,69,15,56,0,194
-+	pxor	xmm1,xmm9
-+	pxor	xmm9,xmm0
-+	psrlq	xmm0,5
-+
-+	movdqa	xmm13,xmm11
-+	pxor	xmm4,xmm12
-+	pshufd	xmm12,xmm11,78
-+	pxor	xmm0,xmm9
-+	pxor	xmm1,xmm8
-+	pxor	xmm12,xmm11
-+DB	102,69,15,58,68,222,0
-+	psrlq	xmm0,1
-+	pxor	xmm0,xmm1
-+	movdqa	xmm1,xmm0
-+DB	102,69,15,58,68,238,17
-+	xorps	xmm3,xmm11
-+	pshufd	xmm8,xmm0,78
-+	pxor	xmm8,xmm0
-+
-+DB	102,68,15,58,68,231,0
-+	xorps	xmm5,xmm13
-+
-+	lea	r8,[64+r8]
-+	sub	r9,0x40
-+	jnc	NEAR $L$mod4_loop
-+
-+$L$tail4x:
-+DB	102,65,15,58,68,199,0
-+DB	102,65,15,58,68,207,17
-+DB	102,68,15,58,68,199,16
-+	xorps	xmm4,xmm12
-+	xorps	xmm0,xmm3
-+	xorps	xmm1,xmm5
-+	pxor	xmm1,xmm0
-+	pxor	xmm8,xmm4
-+
-+	pxor	xmm8,xmm1
-+	pxor	xmm1,xmm0
-+
-+	movdqa	xmm9,xmm8
-+	psrldq	xmm8,8
-+	pslldq	xmm9,8
-+	pxor	xmm1,xmm8
-+	pxor	xmm0,xmm9
-+
-+	movdqa	xmm4,xmm0
-+	movdqa	xmm3,xmm0
-+	psllq	xmm0,5
-+	pxor	xmm3,xmm0
-+	psllq	xmm0,1
-+	pxor	xmm0,xmm3
-+	psllq	xmm0,57
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,8
-+	psrldq	xmm3,8
-+	pxor	xmm0,xmm4
-+	pxor	xmm1,xmm3
-+
-+
-+	movdqa	xmm4,xmm0
-+	psrlq	xmm0,1
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm0
-+	psrlq	xmm0,5
-+	pxor	xmm0,xmm4
-+	psrlq	xmm0,1
-+	pxor	xmm0,xmm1
-+	add	r9,0x40
-+	jz	NEAR $L$done
-+	movdqu	xmm7,XMMWORD[32+rdx]
-+	sub	r9,0x10
-+	jz	NEAR $L$odd_tail
-+$L$skip4x:
-+
-+
-+
-+
-+
-+	movdqu	xmm8,XMMWORD[r8]
-+	movdqu	xmm3,XMMWORD[16+r8]
-+DB	102,69,15,56,0,194
-+DB	102,65,15,56,0,218
-+	pxor	xmm0,xmm8
-+
-+	movdqa	xmm5,xmm3
-+	pshufd	xmm4,xmm3,78
-+	pxor	xmm4,xmm3
-+DB	102,15,58,68,218,0
-+DB	102,15,58,68,234,17
-+DB	102,15,58,68,231,0
-+
-+	lea	r8,[32+r8]
-+	nop
-+	sub	r9,0x20
-+	jbe	NEAR $L$even_tail
-+	nop
-+	jmp	NEAR $L$mod_loop
-+
-+ALIGN	32
-+$L$mod_loop:
-+	movdqa	xmm1,xmm0
-+	movdqa	xmm8,xmm4
-+	pshufd	xmm4,xmm0,78
-+	pxor	xmm4,xmm0
-+
-+DB	102,15,58,68,198,0
-+DB	102,15,58,68,206,17
-+DB	102,15,58,68,231,16
-+
-+	pxor	xmm0,xmm3
-+	pxor	xmm1,xmm5
-+	movdqu	xmm9,XMMWORD[r8]
-+	pxor	xmm8,xmm0
-+DB	102,69,15,56,0,202
-+	movdqu	xmm3,XMMWORD[16+r8]
-+
-+	pxor	xmm8,xmm1
-+	pxor	xmm1,xmm9
-+	pxor	xmm4,xmm8
-+DB	102,65,15,56,0,218
-+	movdqa	xmm8,xmm4
-+	psrldq	xmm8,8
-+	pslldq	xmm4,8
-+	pxor	xmm1,xmm8
-+	pxor	xmm0,xmm4
-+
-+	movdqa	xmm5,xmm3
-+
-+	movdqa	xmm9,xmm0
-+	movdqa	xmm8,xmm0
-+	psllq	xmm0,5
-+	pxor	xmm8,xmm0
-+DB	102,15,58,68,218,0
-+	psllq	xmm0,1
-+	pxor	xmm0,xmm8
-+	psllq	xmm0,57
-+	movdqa	xmm8,xmm0
-+	pslldq	xmm0,8
-+	psrldq	xmm8,8
-+	pxor	xmm0,xmm9
-+	pshufd	xmm4,xmm5,78
-+	pxor	xmm1,xmm8
-+	pxor	xmm4,xmm5
-+
-+	movdqa	xmm9,xmm0
-+	psrlq	xmm0,1
-+DB	102,15,58,68,234,17
-+	pxor	xmm1,xmm9
-+	pxor	xmm9,xmm0
-+	psrlq	xmm0,5
-+	pxor	xmm0,xmm9
-+	lea	r8,[32+r8]
-+	psrlq	xmm0,1
-+DB	102,15,58,68,231,0
-+	pxor	xmm0,xmm1
-+
-+	sub	r9,0x20
-+	ja	NEAR $L$mod_loop
-+
-+$L$even_tail:
-+	movdqa	xmm1,xmm0
-+	movdqa	xmm8,xmm4
-+	pshufd	xmm4,xmm0,78
-+	pxor	xmm4,xmm0
-+
-+DB	102,15,58,68,198,0
-+DB	102,15,58,68,206,17
-+DB	102,15,58,68,231,16
-+
-+	pxor	xmm0,xmm3
-+	pxor	xmm1,xmm5
-+	pxor	xmm8,xmm0
-+	pxor	xmm8,xmm1
-+	pxor	xmm4,xmm8
-+	movdqa	xmm8,xmm4
-+	psrldq	xmm8,8
-+	pslldq	xmm4,8
-+	pxor	xmm1,xmm8
-+	pxor	xmm0,xmm4
-+
-+	movdqa	xmm4,xmm0
-+	movdqa	xmm3,xmm0
-+	psllq	xmm0,5
-+	pxor	xmm3,xmm0
-+	psllq	xmm0,1
-+	pxor	xmm0,xmm3
-+	psllq	xmm0,57
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,8
-+	psrldq	xmm3,8
-+	pxor	xmm0,xmm4
-+	pxor	xmm1,xmm3
-+
-+
-+	movdqa	xmm4,xmm0
-+	psrlq	xmm0,1
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm0
-+	psrlq	xmm0,5
-+	pxor	xmm0,xmm4
-+	psrlq	xmm0,1
-+	pxor	xmm0,xmm1
-+	test	r9,r9
-+	jnz	NEAR $L$done
-+
-+$L$odd_tail:
-+	movdqu	xmm8,XMMWORD[r8]
-+DB	102,69,15,56,0,194
-+	pxor	xmm0,xmm8
-+	movdqa	xmm1,xmm0
-+	pshufd	xmm3,xmm0,78
-+	pxor	xmm3,xmm0
-+DB	102,15,58,68,194,0
-+DB	102,15,58,68,202,17
-+DB	102,15,58,68,223,0
-+	pxor	xmm3,xmm0
-+	pxor	xmm3,xmm1
-+
-+	movdqa	xmm4,xmm3
-+	psrldq	xmm3,8
-+	pslldq	xmm4,8
-+	pxor	xmm1,xmm3
-+	pxor	xmm0,xmm4
-+
-+	movdqa	xmm4,xmm0
-+	movdqa	xmm3,xmm0
-+	psllq	xmm0,5
-+	pxor	xmm3,xmm0
-+	psllq	xmm0,1
-+	pxor	xmm0,xmm3
-+	psllq	xmm0,57
-+	movdqa	xmm3,xmm0
-+	pslldq	xmm0,8
-+	psrldq	xmm3,8
-+	pxor	xmm0,xmm4
-+	pxor	xmm1,xmm3
-+
-+
-+	movdqa	xmm4,xmm0
-+	psrlq	xmm0,1
-+	pxor	xmm1,xmm4
-+	pxor	xmm4,xmm0
-+	psrlq	xmm0,5
-+	pxor	xmm0,xmm4
-+	psrlq	xmm0,1
-+	pxor	xmm0,xmm1
-+$L$done:
-+DB	102,65,15,56,0,194
-+	movdqu	XMMWORD[rcx],xmm0
-+	movaps	xmm6,XMMWORD[rsp]
-+	movaps	xmm7,XMMWORD[16+rsp]
-+	movaps	xmm8,XMMWORD[32+rsp]
-+	movaps	xmm9,XMMWORD[48+rsp]
-+	movaps	xmm10,XMMWORD[64+rsp]
-+	movaps	xmm11,XMMWORD[80+rsp]
-+	movaps	xmm12,XMMWORD[96+rsp]
-+	movaps	xmm13,XMMWORD[112+rsp]
-+	movaps	xmm14,XMMWORD[128+rsp]
-+	movaps	xmm15,XMMWORD[144+rsp]
-+	lea	rsp,[168+rsp]
-+$L$SEH_end_gcm_ghash_clmul:
-+	DB	0F3h,0C3h		;repret
-+
-+global	gcm_init_avx
-+
-+ALIGN	32
-+gcm_init_avx:
-+$L$SEH_begin_gcm_init_avx:
-+
-+DB	0x48,0x83,0xec,0x18
-+DB	0x0f,0x29,0x34,0x24
-+	vzeroupper
-+
-+	vmovdqu	xmm2,XMMWORD[rdx]
-+	vpshufd	xmm2,xmm2,78
-+
-+
-+	vpshufd	xmm4,xmm2,255
-+	vpsrlq	xmm3,xmm2,63
-+	vpsllq	xmm2,xmm2,1
-+	vpxor	xmm5,xmm5,xmm5
-+	vpcmpgtd	xmm5,xmm5,xmm4
-+	vpslldq	xmm3,xmm3,8
-+	vpor	xmm2,xmm2,xmm3
-+
-+
-+	vpand	xmm5,xmm5,XMMWORD[$L$0x1c2_polynomial]
-+	vpxor	xmm2,xmm2,xmm5
-+
-+	vpunpckhqdq	xmm6,xmm2,xmm2
-+	vmovdqa	xmm0,xmm2
-+	vpxor	xmm6,xmm6,xmm2
-+	mov	r10,4
-+	jmp	NEAR $L$init_start_avx
-+ALIGN	32
-+$L$init_loop_avx:
-+	vpalignr	xmm5,xmm4,xmm3,8
-+	vmovdqu	XMMWORD[(-16)+rcx],xmm5
-+	vpunpckhqdq	xmm3,xmm0,xmm0
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm1,xmm0,xmm2,0x11
-+	vpclmulqdq	xmm0,xmm0,xmm2,0x00
-+	vpclmulqdq	xmm3,xmm3,xmm6,0x00
-+	vpxor	xmm4,xmm1,xmm0
-+	vpxor	xmm3,xmm3,xmm4
-+
-+	vpslldq	xmm4,xmm3,8
-+	vpsrldq	xmm3,xmm3,8
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm1,xmm1,xmm3
-+	vpsllq	xmm3,xmm0,57
-+	vpsllq	xmm4,xmm0,62
-+	vpxor	xmm4,xmm4,xmm3
-+	vpsllq	xmm3,xmm0,63
-+	vpxor	xmm4,xmm4,xmm3
-+	vpslldq	xmm3,xmm4,8
-+	vpsrldq	xmm4,xmm4,8
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm1,xmm1,xmm4
-+
-+	vpsrlq	xmm4,xmm0,1
-+	vpxor	xmm1,xmm1,xmm0
-+	vpxor	xmm0,xmm0,xmm4
-+	vpsrlq	xmm4,xmm4,5
-+	vpxor	xmm0,xmm0,xmm4
-+	vpsrlq	xmm0,xmm0,1
-+	vpxor	xmm0,xmm0,xmm1
-+$L$init_start_avx:
-+	vmovdqa	xmm5,xmm0
-+	vpunpckhqdq	xmm3,xmm0,xmm0
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm1,xmm0,xmm2,0x11
-+	vpclmulqdq	xmm0,xmm0,xmm2,0x00
-+	vpclmulqdq	xmm3,xmm3,xmm6,0x00
-+	vpxor	xmm4,xmm1,xmm0
-+	vpxor	xmm3,xmm3,xmm4
-+
-+	vpslldq	xmm4,xmm3,8
-+	vpsrldq	xmm3,xmm3,8
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm1,xmm1,xmm3
-+	vpsllq	xmm3,xmm0,57
-+	vpsllq	xmm4,xmm0,62
-+	vpxor	xmm4,xmm4,xmm3
-+	vpsllq	xmm3,xmm0,63
-+	vpxor	xmm4,xmm4,xmm3
-+	vpslldq	xmm3,xmm4,8
-+	vpsrldq	xmm4,xmm4,8
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm1,xmm1,xmm4
-+
-+	vpsrlq	xmm4,xmm0,1
-+	vpxor	xmm1,xmm1,xmm0
-+	vpxor	xmm0,xmm0,xmm4
-+	vpsrlq	xmm4,xmm4,5
-+	vpxor	xmm0,xmm0,xmm4
-+	vpsrlq	xmm0,xmm0,1
-+	vpxor	xmm0,xmm0,xmm1
-+	vpshufd	xmm3,xmm5,78
-+	vpshufd	xmm4,xmm0,78
-+	vpxor	xmm3,xmm3,xmm5
-+	vmovdqu	XMMWORD[rcx],xmm5
-+	vpxor	xmm4,xmm4,xmm0
-+	vmovdqu	XMMWORD[16+rcx],xmm0
-+	lea	rcx,[48+rcx]
-+	sub	r10,1
-+	jnz	NEAR $L$init_loop_avx
-+
-+	vpalignr	xmm5,xmm3,xmm4,8
-+	vmovdqu	XMMWORD[(-16)+rcx],xmm5
-+
-+	vzeroupper
-+	movaps	xmm6,XMMWORD[rsp]
-+	lea	rsp,[24+rsp]
-+$L$SEH_end_gcm_init_avx:
-+	DB	0F3h,0C3h		;repret
-+
-+global	gcm_gmult_avx
-+
-+ALIGN	32
-+gcm_gmult_avx:
-+	jmp	NEAR $L$_gmult_clmul
-+
-+global	gcm_ghash_avx
-+
-+ALIGN	32
-+gcm_ghash_avx:
-+	lea	rax,[((-136))+rsp]
-+$L$SEH_begin_gcm_ghash_avx:
-+
-+DB	0x48,0x8d,0x60,0xe0
-+DB	0x0f,0x29,0x70,0xe0
-+DB	0x0f,0x29,0x78,0xf0
-+DB	0x44,0x0f,0x29,0x00
-+DB	0x44,0x0f,0x29,0x48,0x10
-+DB	0x44,0x0f,0x29,0x50,0x20
-+DB	0x44,0x0f,0x29,0x58,0x30
-+DB	0x44,0x0f,0x29,0x60,0x40
-+DB	0x44,0x0f,0x29,0x68,0x50
-+DB	0x44,0x0f,0x29,0x70,0x60
-+DB	0x44,0x0f,0x29,0x78,0x70
-+	vzeroupper
-+
-+	vmovdqu	xmm10,XMMWORD[rcx]
-+	lea	r10,[$L$0x1c2_polynomial]
-+	lea	rdx,[64+rdx]
-+	vmovdqu	xmm13,XMMWORD[$L$bswap_mask]
-+	vpshufb	xmm10,xmm10,xmm13
-+	cmp	r9,0x80
-+	jb	NEAR $L$short_avx
-+	sub	r9,0x80
-+
-+	vmovdqu	xmm14,XMMWORD[112+r8]
-+	vmovdqu	xmm6,XMMWORD[((0-64))+rdx]
-+	vpshufb	xmm14,xmm14,xmm13
-+	vmovdqu	xmm7,XMMWORD[((32-64))+rdx]
-+
-+	vpunpckhqdq	xmm9,xmm14,xmm14
-+	vmovdqu	xmm15,XMMWORD[96+r8]
-+	vpclmulqdq	xmm0,xmm14,xmm6,0x00
-+	vpxor	xmm9,xmm9,xmm14
-+	vpshufb	xmm15,xmm15,xmm13
-+	vpclmulqdq	xmm1,xmm14,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((16-64))+rdx]
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vmovdqu	xmm14,XMMWORD[80+r8]
-+	vpclmulqdq	xmm2,xmm9,xmm7,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+
-+	vpshufb	xmm14,xmm14,xmm13
-+	vpclmulqdq	xmm3,xmm15,xmm6,0x00
-+	vpunpckhqdq	xmm9,xmm14,xmm14
-+	vpclmulqdq	xmm4,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((48-64))+rdx]
-+	vpxor	xmm9,xmm9,xmm14
-+	vmovdqu	xmm15,XMMWORD[64+r8]
-+	vpclmulqdq	xmm5,xmm8,xmm7,0x10
-+	vmovdqu	xmm7,XMMWORD[((80-64))+rdx]
-+
-+	vpshufb	xmm15,xmm15,xmm13
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm0,xmm14,xmm6,0x00
-+	vpxor	xmm4,xmm4,xmm1
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpclmulqdq	xmm1,xmm14,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((64-64))+rdx]
-+	vpxor	xmm5,xmm5,xmm2
-+	vpclmulqdq	xmm2,xmm9,xmm7,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+
-+	vmovdqu	xmm14,XMMWORD[48+r8]
-+	vpxor	xmm0,xmm0,xmm3
-+	vpclmulqdq	xmm3,xmm15,xmm6,0x00
-+	vpxor	xmm1,xmm1,xmm4
-+	vpshufb	xmm14,xmm14,xmm13
-+	vpclmulqdq	xmm4,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((96-64))+rdx]
-+	vpxor	xmm2,xmm2,xmm5
-+	vpunpckhqdq	xmm9,xmm14,xmm14
-+	vpclmulqdq	xmm5,xmm8,xmm7,0x10
-+	vmovdqu	xmm7,XMMWORD[((128-64))+rdx]
-+	vpxor	xmm9,xmm9,xmm14
-+
-+	vmovdqu	xmm15,XMMWORD[32+r8]
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm0,xmm14,xmm6,0x00
-+	vpxor	xmm4,xmm4,xmm1
-+	vpshufb	xmm15,xmm15,xmm13
-+	vpclmulqdq	xmm1,xmm14,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((112-64))+rdx]
-+	vpxor	xmm5,xmm5,xmm2
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpclmulqdq	xmm2,xmm9,xmm7,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+
-+	vmovdqu	xmm14,XMMWORD[16+r8]
-+	vpxor	xmm0,xmm0,xmm3
-+	vpclmulqdq	xmm3,xmm15,xmm6,0x00
-+	vpxor	xmm1,xmm1,xmm4
-+	vpshufb	xmm14,xmm14,xmm13
-+	vpclmulqdq	xmm4,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((144-64))+rdx]
-+	vpxor	xmm2,xmm2,xmm5
-+	vpunpckhqdq	xmm9,xmm14,xmm14
-+	vpclmulqdq	xmm5,xmm8,xmm7,0x10
-+	vmovdqu	xmm7,XMMWORD[((176-64))+rdx]
-+	vpxor	xmm9,xmm9,xmm14
-+
-+	vmovdqu	xmm15,XMMWORD[r8]
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm0,xmm14,xmm6,0x00
-+	vpxor	xmm4,xmm4,xmm1
-+	vpshufb	xmm15,xmm15,xmm13
-+	vpclmulqdq	xmm1,xmm14,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((160-64))+rdx]
-+	vpxor	xmm5,xmm5,xmm2
-+	vpclmulqdq	xmm2,xmm9,xmm7,0x10
-+
-+	lea	r8,[128+r8]
-+	cmp	r9,0x80
-+	jb	NEAR $L$tail_avx
-+
-+	vpxor	xmm15,xmm15,xmm10
-+	sub	r9,0x80
-+	jmp	NEAR $L$oop8x_avx
-+
-+ALIGN	32
-+$L$oop8x_avx:
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vmovdqu	xmm14,XMMWORD[112+r8]
-+	vpxor	xmm3,xmm3,xmm0
-+	vpxor	xmm8,xmm8,xmm15
-+	vpclmulqdq	xmm10,xmm15,xmm6,0x00
-+	vpshufb	xmm14,xmm14,xmm13
-+	vpxor	xmm4,xmm4,xmm1
-+	vpclmulqdq	xmm11,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((0-64))+rdx]
-+	vpunpckhqdq	xmm9,xmm14,xmm14
-+	vpxor	xmm5,xmm5,xmm2
-+	vpclmulqdq	xmm12,xmm8,xmm7,0x00
-+	vmovdqu	xmm7,XMMWORD[((32-64))+rdx]
-+	vpxor	xmm9,xmm9,xmm14
-+
-+	vmovdqu	xmm15,XMMWORD[96+r8]
-+	vpclmulqdq	xmm0,xmm14,xmm6,0x00
-+	vpxor	xmm10,xmm10,xmm3
-+	vpshufb	xmm15,xmm15,xmm13
-+	vpclmulqdq	xmm1,xmm14,xmm6,0x11
-+	vxorps	xmm11,xmm11,xmm4
-+	vmovdqu	xmm6,XMMWORD[((16-64))+rdx]
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpclmulqdq	xmm2,xmm9,xmm7,0x00
-+	vpxor	xmm12,xmm12,xmm5
-+	vxorps	xmm8,xmm8,xmm15
-+
-+	vmovdqu	xmm14,XMMWORD[80+r8]
-+	vpxor	xmm12,xmm12,xmm10
-+	vpclmulqdq	xmm3,xmm15,xmm6,0x00
-+	vpxor	xmm12,xmm12,xmm11
-+	vpslldq	xmm9,xmm12,8
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm4,xmm15,xmm6,0x11
-+	vpsrldq	xmm12,xmm12,8
-+	vpxor	xmm10,xmm10,xmm9
-+	vmovdqu	xmm6,XMMWORD[((48-64))+rdx]
-+	vpshufb	xmm14,xmm14,xmm13
-+	vxorps	xmm11,xmm11,xmm12
-+	vpxor	xmm4,xmm4,xmm1
-+	vpunpckhqdq	xmm9,xmm14,xmm14
-+	vpclmulqdq	xmm5,xmm8,xmm7,0x10
-+	vmovdqu	xmm7,XMMWORD[((80-64))+rdx]
-+	vpxor	xmm9,xmm9,xmm14
-+	vpxor	xmm5,xmm5,xmm2
-+
-+	vmovdqu	xmm15,XMMWORD[64+r8]
-+	vpalignr	xmm12,xmm10,xmm10,8
-+	vpclmulqdq	xmm0,xmm14,xmm6,0x00
-+	vpshufb	xmm15,xmm15,xmm13
-+	vpxor	xmm0,xmm0,xmm3
-+	vpclmulqdq	xmm1,xmm14,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((64-64))+rdx]
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpxor	xmm1,xmm1,xmm4
-+	vpclmulqdq	xmm2,xmm9,xmm7,0x00
-+	vxorps	xmm8,xmm8,xmm15
-+	vpxor	xmm2,xmm2,xmm5
-+
-+	vmovdqu	xmm14,XMMWORD[48+r8]
-+	vpclmulqdq	xmm10,xmm10,XMMWORD[r10],0x10
-+	vpclmulqdq	xmm3,xmm15,xmm6,0x00
-+	vpshufb	xmm14,xmm14,xmm13
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm4,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((96-64))+rdx]
-+	vpunpckhqdq	xmm9,xmm14,xmm14
-+	vpxor	xmm4,xmm4,xmm1
-+	vpclmulqdq	xmm5,xmm8,xmm7,0x10
-+	vmovdqu	xmm7,XMMWORD[((128-64))+rdx]
-+	vpxor	xmm9,xmm9,xmm14
-+	vpxor	xmm5,xmm5,xmm2
-+
-+	vmovdqu	xmm15,XMMWORD[32+r8]
-+	vpclmulqdq	xmm0,xmm14,xmm6,0x00
-+	vpshufb	xmm15,xmm15,xmm13
-+	vpxor	xmm0,xmm0,xmm3
-+	vpclmulqdq	xmm1,xmm14,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((112-64))+rdx]
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpxor	xmm1,xmm1,xmm4
-+	vpclmulqdq	xmm2,xmm9,xmm7,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+	vpxor	xmm2,xmm2,xmm5
-+	vxorps	xmm10,xmm10,xmm12
-+
-+	vmovdqu	xmm14,XMMWORD[16+r8]
-+	vpalignr	xmm12,xmm10,xmm10,8
-+	vpclmulqdq	xmm3,xmm15,xmm6,0x00
-+	vpshufb	xmm14,xmm14,xmm13
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm4,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((144-64))+rdx]
-+	vpclmulqdq	xmm10,xmm10,XMMWORD[r10],0x10
-+	vxorps	xmm12,xmm12,xmm11
-+	vpunpckhqdq	xmm9,xmm14,xmm14
-+	vpxor	xmm4,xmm4,xmm1
-+	vpclmulqdq	xmm5,xmm8,xmm7,0x10
-+	vmovdqu	xmm7,XMMWORD[((176-64))+rdx]
-+	vpxor	xmm9,xmm9,xmm14
-+	vpxor	xmm5,xmm5,xmm2
-+
-+	vmovdqu	xmm15,XMMWORD[r8]
-+	vpclmulqdq	xmm0,xmm14,xmm6,0x00
-+	vpshufb	xmm15,xmm15,xmm13
-+	vpclmulqdq	xmm1,xmm14,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((160-64))+rdx]
-+	vpxor	xmm15,xmm15,xmm12
-+	vpclmulqdq	xmm2,xmm9,xmm7,0x10
-+	vpxor	xmm15,xmm15,xmm10
-+
-+	lea	r8,[128+r8]
-+	sub	r9,0x80
-+	jnc	NEAR $L$oop8x_avx
-+
-+	add	r9,0x80
-+	jmp	NEAR $L$tail_no_xor_avx
-+
-+ALIGN	32
-+$L$short_avx:
-+	vmovdqu	xmm14,XMMWORD[((-16))+r9*1+r8]
-+	lea	r8,[r9*1+r8]
-+	vmovdqu	xmm6,XMMWORD[((0-64))+rdx]
-+	vmovdqu	xmm7,XMMWORD[((32-64))+rdx]
-+	vpshufb	xmm15,xmm14,xmm13
-+
-+	vmovdqa	xmm3,xmm0
-+	vmovdqa	xmm4,xmm1
-+	vmovdqa	xmm5,xmm2
-+	sub	r9,0x10
-+	jz	NEAR $L$tail_avx
-+
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm0,xmm15,xmm6,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+	vmovdqu	xmm14,XMMWORD[((-32))+r8]
-+	vpxor	xmm4,xmm4,xmm1
-+	vpclmulqdq	xmm1,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((16-64))+rdx]
-+	vpshufb	xmm15,xmm14,xmm13
-+	vpxor	xmm5,xmm5,xmm2
-+	vpclmulqdq	xmm2,xmm8,xmm7,0x00
-+	vpsrldq	xmm7,xmm7,8
-+	sub	r9,0x10
-+	jz	NEAR $L$tail_avx
-+
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm0,xmm15,xmm6,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+	vmovdqu	xmm14,XMMWORD[((-48))+r8]
-+	vpxor	xmm4,xmm4,xmm1
-+	vpclmulqdq	xmm1,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((48-64))+rdx]
-+	vpshufb	xmm15,xmm14,xmm13
-+	vpxor	xmm5,xmm5,xmm2
-+	vpclmulqdq	xmm2,xmm8,xmm7,0x00
-+	vmovdqu	xmm7,XMMWORD[((80-64))+rdx]
-+	sub	r9,0x10
-+	jz	NEAR $L$tail_avx
-+
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm0,xmm15,xmm6,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+	vmovdqu	xmm14,XMMWORD[((-64))+r8]
-+	vpxor	xmm4,xmm4,xmm1
-+	vpclmulqdq	xmm1,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((64-64))+rdx]
-+	vpshufb	xmm15,xmm14,xmm13
-+	vpxor	xmm5,xmm5,xmm2
-+	vpclmulqdq	xmm2,xmm8,xmm7,0x00
-+	vpsrldq	xmm7,xmm7,8
-+	sub	r9,0x10
-+	jz	NEAR $L$tail_avx
-+
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm0,xmm15,xmm6,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+	vmovdqu	xmm14,XMMWORD[((-80))+r8]
-+	vpxor	xmm4,xmm4,xmm1
-+	vpclmulqdq	xmm1,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((96-64))+rdx]
-+	vpshufb	xmm15,xmm14,xmm13
-+	vpxor	xmm5,xmm5,xmm2
-+	vpclmulqdq	xmm2,xmm8,xmm7,0x00
-+	vmovdqu	xmm7,XMMWORD[((128-64))+rdx]
-+	sub	r9,0x10
-+	jz	NEAR $L$tail_avx
-+
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm0,xmm15,xmm6,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+	vmovdqu	xmm14,XMMWORD[((-96))+r8]
-+	vpxor	xmm4,xmm4,xmm1
-+	vpclmulqdq	xmm1,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((112-64))+rdx]
-+	vpshufb	xmm15,xmm14,xmm13
-+	vpxor	xmm5,xmm5,xmm2
-+	vpclmulqdq	xmm2,xmm8,xmm7,0x00
-+	vpsrldq	xmm7,xmm7,8
-+	sub	r9,0x10
-+	jz	NEAR $L$tail_avx
-+
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm0,xmm15,xmm6,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+	vmovdqu	xmm14,XMMWORD[((-112))+r8]
-+	vpxor	xmm4,xmm4,xmm1
-+	vpclmulqdq	xmm1,xmm15,xmm6,0x11
-+	vmovdqu	xmm6,XMMWORD[((144-64))+rdx]
-+	vpshufb	xmm15,xmm14,xmm13
-+	vpxor	xmm5,xmm5,xmm2
-+	vpclmulqdq	xmm2,xmm8,xmm7,0x00
-+	vmovq	xmm7,QWORD[((184-64))+rdx]
-+	sub	r9,0x10
-+	jmp	NEAR $L$tail_avx
-+
-+ALIGN	32
-+$L$tail_avx:
-+	vpxor	xmm15,xmm15,xmm10
-+$L$tail_no_xor_avx:
-+	vpunpckhqdq	xmm8,xmm15,xmm15
-+	vpxor	xmm3,xmm3,xmm0
-+	vpclmulqdq	xmm0,xmm15,xmm6,0x00
-+	vpxor	xmm8,xmm8,xmm15
-+	vpxor	xmm4,xmm4,xmm1
-+	vpclmulqdq	xmm1,xmm15,xmm6,0x11
-+	vpxor	xmm5,xmm5,xmm2
-+	vpclmulqdq	xmm2,xmm8,xmm7,0x00
-+
-+	vmovdqu	xmm12,XMMWORD[r10]
-+
-+	vpxor	xmm10,xmm3,xmm0
-+	vpxor	xmm11,xmm4,xmm1
-+	vpxor	xmm5,xmm5,xmm2
-+
-+	vpxor	xmm5,xmm5,xmm10
-+	vpxor	xmm5,xmm5,xmm11
-+	vpslldq	xmm9,xmm5,8
-+	vpsrldq	xmm5,xmm5,8
-+	vpxor	xmm10,xmm10,xmm9
-+	vpxor	xmm11,xmm11,xmm5
-+
-+	vpclmulqdq	xmm9,xmm10,xmm12,0x10
-+	vpalignr	xmm10,xmm10,xmm10,8
-+	vpxor	xmm10,xmm10,xmm9
-+
-+	vpclmulqdq	xmm9,xmm10,xmm12,0x10
-+	vpalignr	xmm10,xmm10,xmm10,8
-+	vpxor	xmm10,xmm10,xmm11
-+	vpxor	xmm10,xmm10,xmm9
-+
-+	cmp	r9,0
-+	jne	NEAR $L$short_avx
-+
-+	vpshufb	xmm10,xmm10,xmm13
-+	vmovdqu	XMMWORD[rcx],xmm10
-+	vzeroupper
-+	movaps	xmm6,XMMWORD[rsp]
-+	movaps	xmm7,XMMWORD[16+rsp]
-+	movaps	xmm8,XMMWORD[32+rsp]
-+	movaps	xmm9,XMMWORD[48+rsp]
-+	movaps	xmm10,XMMWORD[64+rsp]
-+	movaps	xmm11,XMMWORD[80+rsp]
-+	movaps	xmm12,XMMWORD[96+rsp]
-+	movaps	xmm13,XMMWORD[112+rsp]
-+	movaps	xmm14,XMMWORD[128+rsp]
-+	movaps	xmm15,XMMWORD[144+rsp]
-+	lea	rsp,[168+rsp]
-+$L$SEH_end_gcm_ghash_avx:
-+	DB	0F3h,0C3h		;repret
-+
-+ALIGN	64
-+$L$bswap_mask:
-+DB	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
-+$L$0x1c2_polynomial:
-+DB	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xc2
-+$L$7_mask:
-+	DD	7,0,7,0
-+$L$7_mask_poly:
-+	DD	7,0,450,0
-+ALIGN	64
-+
-+$L$rem_4bit:
-+	DD	0,0,0,471859200,0,943718400,0,610271232
-+	DD	0,1887436800,0,1822425088,0,1220542464,0,1423966208
-+	DD	0,3774873600,0,4246732800,0,3644850176,0,3311403008
-+	DD	0,2441084928,0,2376073216,0,2847932416,0,3051356160
-+
-+$L$rem_8bit:
-+	DW	0x0000,0x01C2,0x0384,0x0246,0x0708,0x06CA,0x048C,0x054E
-+	DW	0x0E10,0x0FD2,0x0D94,0x0C56,0x0918,0x08DA,0x0A9C,0x0B5E
-+	DW	0x1C20,0x1DE2,0x1FA4,0x1E66,0x1B28,0x1AEA,0x18AC,0x196E
-+	DW	0x1230,0x13F2,0x11B4,0x1076,0x1538,0x14FA,0x16BC,0x177E
-+	DW	0x3840,0x3982,0x3BC4,0x3A06,0x3F48,0x3E8A,0x3CCC,0x3D0E
-+	DW	0x3650,0x3792,0x35D4,0x3416,0x3158,0x309A,0x32DC,0x331E
-+	DW	0x2460,0x25A2,0x27E4,0x2626,0x2368,0x22AA,0x20EC,0x212E
-+	DW	0x2A70,0x2BB2,0x29F4,0x2836,0x2D78,0x2CBA,0x2EFC,0x2F3E
-+	DW	0x7080,0x7142,0x7304,0x72C6,0x7788,0x764A,0x740C,0x75CE
-+	DW	0x7E90,0x7F52,0x7D14,0x7CD6,0x7998,0x785A,0x7A1C,0x7BDE
-+	DW	0x6CA0,0x6D62,0x6F24,0x6EE6,0x6BA8,0x6A6A,0x682C,0x69EE
-+	DW	0x62B0,0x6372,0x6134,0x60F6,0x65B8,0x647A,0x663C,0x67FE
-+	DW	0x48C0,0x4902,0x4B44,0x4A86,0x4FC8,0x4E0A,0x4C4C,0x4D8E
-+	DW	0x46D0,0x4712,0x4554,0x4496,0x41D8,0x401A,0x425C,0x439E
-+	DW	0x54E0,0x5522,0x5764,0x56A6,0x53E8,0x522A,0x506C,0x51AE
-+	DW	0x5AF0,0x5B32,0x5974,0x58B6,0x5DF8,0x5C3A,0x5E7C,0x5FBE
-+	DW	0xE100,0xE0C2,0xE284,0xE346,0xE608,0xE7CA,0xE58C,0xE44E
-+	DW	0xEF10,0xEED2,0xEC94,0xED56,0xE818,0xE9DA,0xEB9C,0xEA5E
-+	DW	0xFD20,0xFCE2,0xFEA4,0xFF66,0xFA28,0xFBEA,0xF9AC,0xF86E
-+	DW	0xF330,0xF2F2,0xF0B4,0xF176,0xF438,0xF5FA,0xF7BC,0xF67E
-+	DW	0xD940,0xD882,0xDAC4,0xDB06,0xDE48,0xDF8A,0xDDCC,0xDC0E
-+	DW	0xD750,0xD692,0xD4D4,0xD516,0xD058,0xD19A,0xD3DC,0xD21E
-+	DW	0xC560,0xC4A2,0xC6E4,0xC726,0xC268,0xC3AA,0xC1EC,0xC02E
-+	DW	0xCB70,0xCAB2,0xC8F4,0xC936,0xCC78,0xCDBA,0xCFFC,0xCE3E
-+	DW	0x9180,0x9042,0x9204,0x93C6,0x9688,0x974A,0x950C,0x94CE
-+	DW	0x9F90,0x9E52,0x9C14,0x9DD6,0x9898,0x995A,0x9B1C,0x9ADE
-+	DW	0x8DA0,0x8C62,0x8E24,0x8FE6,0x8AA8,0x8B6A,0x892C,0x88EE
-+	DW	0x83B0,0x8272,0x8034,0x81F6,0x84B8,0x857A,0x873C,0x86FE
-+	DW	0xA9C0,0xA802,0xAA44,0xAB86,0xAEC8,0xAF0A,0xAD4C,0xAC8E
-+	DW	0xA7D0,0xA612,0xA454,0xA596,0xA0D8,0xA11A,0xA35C,0xA29E
-+	DW	0xB5E0,0xB422,0xB664,0xB7A6,0xB2E8,0xB32A,0xB16C,0xB0AE
-+	DW	0xBBF0,0xBA32,0xB874,0xB9B6,0xBCF8,0xBD3A,0xBF7C,0xBEBE
-+
-+DB	71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52
-+DB	44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32
-+DB	60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111
-+DB	114,103,62,0
-+ALIGN	64
-+EXTERN	__imp_RtlVirtualUnwind
-+
-+ALIGN	16
-+se_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	mov	rsi,QWORD[8+r9]
-+	mov	r11,QWORD[56+r9]
-+
-+	mov	r10d,DWORD[r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jb	NEAR $L$in_prologue
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	mov	r10d,DWORD[4+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$in_prologue
-+
-+	lea	rax,[24+rax]
-+
-+	mov	rbx,QWORD[((-8))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	r12,QWORD[((-24))+rax]
-+	mov	QWORD[144+r8],rbx
-+	mov	QWORD[160+r8],rbp
-+	mov	QWORD[216+r8],r12
-+
-+$L$in_prologue:
-+	mov	rdi,QWORD[8+rax]
-+	mov	rsi,QWORD[16+rax]
-+	mov	QWORD[152+r8],rax
-+	mov	QWORD[168+r8],rsi
-+	mov	QWORD[176+r8],rdi
-+
-+	mov	rdi,QWORD[40+r9]
-+	mov	rsi,r8
-+	mov	ecx,154
-+	DD	0xa548f3fc
-+
-+	mov	rsi,r9
-+	xor	rcx,rcx
-+	mov	rdx,QWORD[8+rsi]
-+	mov	r8,QWORD[rsi]
-+	mov	r9,QWORD[16+rsi]
-+	mov	r10,QWORD[40+rsi]
-+	lea	r11,[56+rsi]
-+	lea	r12,[24+rsi]
-+	mov	QWORD[32+rsp],r10
-+	mov	QWORD[40+rsp],r11
-+	mov	QWORD[48+rsp],r12
-+	mov	QWORD[56+rsp],rcx
-+	call	QWORD[__imp_RtlVirtualUnwind]
-+
-+	mov	eax,1
-+	add	rsp,64
-+	popfq
-+	pop	r15
-+	pop	r14
-+	pop	r13
-+	pop	r12
-+	pop	rbp
-+	pop	rbx
-+	pop	rdi
-+	pop	rsi
-+	DB	0F3h,0C3h		;repret
-+
-+
-+section	.pdata rdata align=4
-+ALIGN	4
-+	DD	$L$SEH_begin_gcm_gmult_4bit wrt ..imagebase
-+	DD	$L$SEH_end_gcm_gmult_4bit wrt ..imagebase
-+	DD	$L$SEH_info_gcm_gmult_4bit wrt ..imagebase
-+
-+	DD	$L$SEH_begin_gcm_ghash_4bit wrt ..imagebase
-+	DD	$L$SEH_end_gcm_ghash_4bit wrt ..imagebase
-+	DD	$L$SEH_info_gcm_ghash_4bit wrt ..imagebase
-+
-+	DD	$L$SEH_begin_gcm_init_clmul wrt ..imagebase
-+	DD	$L$SEH_end_gcm_init_clmul wrt ..imagebase
-+	DD	$L$SEH_info_gcm_init_clmul wrt ..imagebase
-+
-+	DD	$L$SEH_begin_gcm_ghash_clmul wrt ..imagebase
-+	DD	$L$SEH_end_gcm_ghash_clmul wrt ..imagebase
-+	DD	$L$SEH_info_gcm_ghash_clmul wrt ..imagebase
-+	DD	$L$SEH_begin_gcm_init_avx wrt ..imagebase
-+	DD	$L$SEH_end_gcm_init_avx wrt ..imagebase
-+	DD	$L$SEH_info_gcm_init_clmul wrt ..imagebase
-+
-+	DD	$L$SEH_begin_gcm_ghash_avx wrt ..imagebase
-+	DD	$L$SEH_end_gcm_ghash_avx wrt ..imagebase
-+	DD	$L$SEH_info_gcm_ghash_clmul wrt ..imagebase
-+section	.xdata rdata align=8
-+ALIGN	8
-+$L$SEH_info_gcm_gmult_4bit:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$gmult_prologue wrt ..imagebase,$L$gmult_epilogue wrt ..imagebase
-+$L$SEH_info_gcm_ghash_4bit:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$ghash_prologue wrt ..imagebase,$L$ghash_epilogue wrt ..imagebase
-+$L$SEH_info_gcm_init_clmul:
-+DB	0x01,0x08,0x03,0x00
-+DB	0x08,0x68,0x00,0x00
-+DB	0x04,0x22,0x00,0x00
-+$L$SEH_info_gcm_ghash_clmul:
-+DB	0x01,0x33,0x16,0x00
-+DB	0x33,0xf8,0x09,0x00
-+DB	0x2e,0xe8,0x08,0x00
-+DB	0x29,0xd8,0x07,0x00
-+DB	0x24,0xc8,0x06,0x00
-+DB	0x1f,0xb8,0x05,0x00
-+DB	0x1a,0xa8,0x04,0x00
-+DB	0x15,0x98,0x03,0x00
-+DB	0x10,0x88,0x02,0x00
-+DB	0x0c,0x78,0x01,0x00
-+DB	0x08,0x68,0x00,0x00
-+DB	0x04,0x01,0x15,0x00
-diff --git a/SMP/lib/accelerated/x86/coff/sha1-ssse3-x86.asm b/SMP/lib/accelerated/x86/coff/sha1-ssse3-x86.asm
-new file mode 100644
-index 0000000..0dfcc2e
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/sha1-ssse3-x86.asm
-@@ -0,0 +1,1386 @@
-+%ifidn __OUTPUT_FORMAT__,obj
-+section	code	use32 class=code align=64
-+%elifidn __OUTPUT_FORMAT__,win32
-+%ifndef __YASM_VER__
-+$@feat.00 equ 1
-+%endif
-+section	.text	code align=64
-+%else
-+section	.text	code
-+%endif
-+global	_sha1_block_data_order
-+align	16
-+_sha1_block_data_order:
-+L$_sha1_block_data_order_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	ebp,DWORD [20+esp]
-+	mov	esi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	sub	esp,76
-+	shl	eax,6
-+	add	eax,esi
-+	mov	DWORD [104+esp],eax
-+	mov	edi,DWORD [16+ebp]
-+	jmp	NEAR L$000loop
-+align	16
-+L$000loop:
-+	mov	eax,DWORD [esi]
-+	mov	ebx,DWORD [4+esi]
-+	mov	ecx,DWORD [8+esi]
-+	mov	edx,DWORD [12+esi]
-+	bswap	eax
-+	bswap	ebx
-+	bswap	ecx
-+	bswap	edx
-+	mov	DWORD [esp],eax
-+	mov	DWORD [4+esp],ebx
-+	mov	DWORD [8+esp],ecx
-+	mov	DWORD [12+esp],edx
-+	mov	eax,DWORD [16+esi]
-+	mov	ebx,DWORD [20+esi]
-+	mov	ecx,DWORD [24+esi]
-+	mov	edx,DWORD [28+esi]
-+	bswap	eax
-+	bswap	ebx
-+	bswap	ecx
-+	bswap	edx
-+	mov	DWORD [16+esp],eax
-+	mov	DWORD [20+esp],ebx
-+	mov	DWORD [24+esp],ecx
-+	mov	DWORD [28+esp],edx
-+	mov	eax,DWORD [32+esi]
-+	mov	ebx,DWORD [36+esi]
-+	mov	ecx,DWORD [40+esi]
-+	mov	edx,DWORD [44+esi]
-+	bswap	eax
-+	bswap	ebx
-+	bswap	ecx
-+	bswap	edx
-+	mov	DWORD [32+esp],eax
-+	mov	DWORD [36+esp],ebx
-+	mov	DWORD [40+esp],ecx
-+	mov	DWORD [44+esp],edx
-+	mov	eax,DWORD [48+esi]
-+	mov	ebx,DWORD [52+esi]
-+	mov	ecx,DWORD [56+esi]
-+	mov	edx,DWORD [60+esi]
-+	bswap	eax
-+	bswap	ebx
-+	bswap	ecx
-+	bswap	edx
-+	mov	DWORD [48+esp],eax
-+	mov	DWORD [52+esp],ebx
-+	mov	DWORD [56+esp],ecx
-+	mov	DWORD [60+esp],edx
-+	mov	DWORD [100+esp],esi
-+	mov	eax,DWORD [ebp]
-+	mov	ebx,DWORD [4+ebp]
-+	mov	ecx,DWORD [8+ebp]
-+	mov	edx,DWORD [12+ebp]
-+	; 00_15 0
-+	mov	esi,ecx
-+	mov	ebp,eax
-+	rol	ebp,5
-+	xor	esi,edx
-+	add	ebp,edi
-+	mov	edi,DWORD [esp]
-+	and	esi,ebx
-+	ror	ebx,2
-+	xor	esi,edx
-+	lea	ebp,[1518500249+edi*1+ebp]
-+	add	ebp,esi
-+	; 00_15 1
-+	mov	edi,ebx
-+	mov	esi,ebp
-+	rol	ebp,5
-+	xor	edi,ecx
-+	add	ebp,edx
-+	mov	edx,DWORD [4+esp]
-+	and	edi,eax
-+	ror	eax,2
-+	xor	edi,ecx
-+	lea	ebp,[1518500249+edx*1+ebp]
-+	add	ebp,edi
-+	; 00_15 2
-+	mov	edx,eax
-+	mov	edi,ebp
-+	rol	ebp,5
-+	xor	edx,ebx
-+	add	ebp,ecx
-+	mov	ecx,DWORD [8+esp]
-+	and	edx,esi
-+	ror	esi,2
-+	xor	edx,ebx
-+	lea	ebp,[1518500249+ecx*1+ebp]
-+	add	ebp,edx
-+	; 00_15 3
-+	mov	ecx,esi
-+	mov	edx,ebp
-+	rol	ebp,5
-+	xor	ecx,eax
-+	add	ebp,ebx
-+	mov	ebx,DWORD [12+esp]
-+	and	ecx,edi
-+	ror	edi,2
-+	xor	ecx,eax
-+	lea	ebp,[1518500249+ebx*1+ebp]
-+	add	ebp,ecx
-+	; 00_15 4
-+	mov	ebx,edi
-+	mov	ecx,ebp
-+	rol	ebp,5
-+	xor	ebx,esi
-+	add	ebp,eax
-+	mov	eax,DWORD [16+esp]
-+	and	ebx,edx
-+	ror	edx,2
-+	xor	ebx,esi
-+	lea	ebp,[1518500249+eax*1+ebp]
-+	add	ebp,ebx
-+	; 00_15 5
-+	mov	eax,edx
-+	mov	ebx,ebp
-+	rol	ebp,5
-+	xor	eax,edi
-+	add	ebp,esi
-+	mov	esi,DWORD [20+esp]
-+	and	eax,ecx
-+	ror	ecx,2
-+	xor	eax,edi
-+	lea	ebp,[1518500249+esi*1+ebp]
-+	add	ebp,eax
-+	; 00_15 6
-+	mov	esi,ecx
-+	mov	eax,ebp
-+	rol	ebp,5
-+	xor	esi,edx
-+	add	ebp,edi
-+	mov	edi,DWORD [24+esp]
-+	and	esi,ebx
-+	ror	ebx,2
-+	xor	esi,edx
-+	lea	ebp,[1518500249+edi*1+ebp]
-+	add	ebp,esi
-+	; 00_15 7
-+	mov	edi,ebx
-+	mov	esi,ebp
-+	rol	ebp,5
-+	xor	edi,ecx
-+	add	ebp,edx
-+	mov	edx,DWORD [28+esp]
-+	and	edi,eax
-+	ror	eax,2
-+	xor	edi,ecx
-+	lea	ebp,[1518500249+edx*1+ebp]
-+	add	ebp,edi
-+	; 00_15 8
-+	mov	edx,eax
-+	mov	edi,ebp
-+	rol	ebp,5
-+	xor	edx,ebx
-+	add	ebp,ecx
-+	mov	ecx,DWORD [32+esp]
-+	and	edx,esi
-+	ror	esi,2
-+	xor	edx,ebx
-+	lea	ebp,[1518500249+ecx*1+ebp]
-+	add	ebp,edx
-+	; 00_15 9
-+	mov	ecx,esi
-+	mov	edx,ebp
-+	rol	ebp,5
-+	xor	ecx,eax
-+	add	ebp,ebx
-+	mov	ebx,DWORD [36+esp]
-+	and	ecx,edi
-+	ror	edi,2
-+	xor	ecx,eax
-+	lea	ebp,[1518500249+ebx*1+ebp]
-+	add	ebp,ecx
-+	; 00_15 10
-+	mov	ebx,edi
-+	mov	ecx,ebp
-+	rol	ebp,5
-+	xor	ebx,esi
-+	add	ebp,eax
-+	mov	eax,DWORD [40+esp]
-+	and	ebx,edx
-+	ror	edx,2
-+	xor	ebx,esi
-+	lea	ebp,[1518500249+eax*1+ebp]
-+	add	ebp,ebx
-+	; 00_15 11
-+	mov	eax,edx
-+	mov	ebx,ebp
-+	rol	ebp,5
-+	xor	eax,edi
-+	add	ebp,esi
-+	mov	esi,DWORD [44+esp]
-+	and	eax,ecx
-+	ror	ecx,2
-+	xor	eax,edi
-+	lea	ebp,[1518500249+esi*1+ebp]
-+	add	ebp,eax
-+	; 00_15 12
-+	mov	esi,ecx
-+	mov	eax,ebp
-+	rol	ebp,5
-+	xor	esi,edx
-+	add	ebp,edi
-+	mov	edi,DWORD [48+esp]
-+	and	esi,ebx
-+	ror	ebx,2
-+	xor	esi,edx
-+	lea	ebp,[1518500249+edi*1+ebp]
-+	add	ebp,esi
-+	; 00_15 13
-+	mov	edi,ebx
-+	mov	esi,ebp
-+	rol	ebp,5
-+	xor	edi,ecx
-+	add	ebp,edx
-+	mov	edx,DWORD [52+esp]
-+	and	edi,eax
-+	ror	eax,2
-+	xor	edi,ecx
-+	lea	ebp,[1518500249+edx*1+ebp]
-+	add	ebp,edi
-+	; 00_15 14
-+	mov	edx,eax
-+	mov	edi,ebp
-+	rol	ebp,5
-+	xor	edx,ebx
-+	add	ebp,ecx
-+	mov	ecx,DWORD [56+esp]
-+	and	edx,esi
-+	ror	esi,2
-+	xor	edx,ebx
-+	lea	ebp,[1518500249+ecx*1+ebp]
-+	add	ebp,edx
-+	; 00_15 15
-+	mov	ecx,esi
-+	mov	edx,ebp
-+	rol	ebp,5
-+	xor	ecx,eax
-+	add	ebp,ebx
-+	mov	ebx,DWORD [60+esp]
-+	and	ecx,edi
-+	ror	edi,2
-+	xor	ecx,eax
-+	lea	ebp,[1518500249+ebx*1+ebp]
-+	mov	ebx,DWORD [esp]
-+	add	ecx,ebp
-+	; 16_19 16
-+	mov	ebp,edi
-+	xor	ebx,DWORD [8+esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [32+esp]
-+	and	ebp,edx
-+	xor	ebx,DWORD [52+esp]
-+	rol	ebx,1
-+	xor	ebp,esi
-+	add	eax,ebp
-+	mov	ebp,ecx
-+	ror	edx,2
-+	mov	DWORD [esp],ebx
-+	rol	ebp,5
-+	lea	ebx,[1518500249+eax*1+ebx]
-+	mov	eax,DWORD [4+esp]
-+	add	ebx,ebp
-+	; 16_19 17
-+	mov	ebp,edx
-+	xor	eax,DWORD [12+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [36+esp]
-+	and	ebp,ecx
-+	xor	eax,DWORD [56+esp]
-+	rol	eax,1
-+	xor	ebp,edi
-+	add	esi,ebp
-+	mov	ebp,ebx
-+	ror	ecx,2
-+	mov	DWORD [4+esp],eax
-+	rol	ebp,5
-+	lea	eax,[1518500249+esi*1+eax]
-+	mov	esi,DWORD [8+esp]
-+	add	eax,ebp
-+	; 16_19 18
-+	mov	ebp,ecx
-+	xor	esi,DWORD [16+esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [40+esp]
-+	and	ebp,ebx
-+	xor	esi,DWORD [60+esp]
-+	rol	esi,1
-+	xor	ebp,edx
-+	add	edi,ebp
-+	mov	ebp,eax
-+	ror	ebx,2
-+	mov	DWORD [8+esp],esi
-+	rol	ebp,5
-+	lea	esi,[1518500249+edi*1+esi]
-+	mov	edi,DWORD [12+esp]
-+	add	esi,ebp
-+	; 16_19 19
-+	mov	ebp,ebx
-+	xor	edi,DWORD [20+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [44+esp]
-+	and	ebp,eax
-+	xor	edi,DWORD [esp]
-+	rol	edi,1
-+	xor	ebp,ecx
-+	add	edx,ebp
-+	mov	ebp,esi
-+	ror	eax,2
-+	mov	DWORD [12+esp],edi
-+	rol	ebp,5
-+	lea	edi,[1518500249+edx*1+edi]
-+	mov	edx,DWORD [16+esp]
-+	add	edi,ebp
-+	; 20_39 20
-+	mov	ebp,esi
-+	xor	edx,DWORD [24+esp]
-+	xor	ebp,eax
-+	xor	edx,DWORD [48+esp]
-+	xor	ebp,ebx
-+	xor	edx,DWORD [4+esp]
-+	rol	edx,1
-+	add	ecx,ebp
-+	ror	esi,2
-+	mov	ebp,edi
-+	rol	ebp,5
-+	mov	DWORD [16+esp],edx
-+	lea	edx,[1859775393+ecx*1+edx]
-+	mov	ecx,DWORD [20+esp]
-+	add	edx,ebp
-+	; 20_39 21
-+	mov	ebp,edi
-+	xor	ecx,DWORD [28+esp]
-+	xor	ebp,esi
-+	xor	ecx,DWORD [52+esp]
-+	xor	ebp,eax
-+	xor	ecx,DWORD [8+esp]
-+	rol	ecx,1
-+	add	ebx,ebp
-+	ror	edi,2
-+	mov	ebp,edx
-+	rol	ebp,5
-+	mov	DWORD [20+esp],ecx
-+	lea	ecx,[1859775393+ebx*1+ecx]
-+	mov	ebx,DWORD [24+esp]
-+	add	ecx,ebp
-+	; 20_39 22
-+	mov	ebp,edx
-+	xor	ebx,DWORD [32+esp]
-+	xor	ebp,edi
-+	xor	ebx,DWORD [56+esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [12+esp]
-+	rol	ebx,1
-+	add	eax,ebp
-+	ror	edx,2
-+	mov	ebp,ecx
-+	rol	ebp,5
-+	mov	DWORD [24+esp],ebx
-+	lea	ebx,[1859775393+eax*1+ebx]
-+	mov	eax,DWORD [28+esp]
-+	add	ebx,ebp
-+	; 20_39 23
-+	mov	ebp,ecx
-+	xor	eax,DWORD [36+esp]
-+	xor	ebp,edx
-+	xor	eax,DWORD [60+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [16+esp]
-+	rol	eax,1
-+	add	esi,ebp
-+	ror	ecx,2
-+	mov	ebp,ebx
-+	rol	ebp,5
-+	mov	DWORD [28+esp],eax
-+	lea	eax,[1859775393+esi*1+eax]
-+	mov	esi,DWORD [32+esp]
-+	add	eax,ebp
-+	; 20_39 24
-+	mov	ebp,ebx
-+	xor	esi,DWORD [40+esp]
-+	xor	ebp,ecx
-+	xor	esi,DWORD [esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [20+esp]
-+	rol	esi,1
-+	add	edi,ebp
-+	ror	ebx,2
-+	mov	ebp,eax
-+	rol	ebp,5
-+	mov	DWORD [32+esp],esi
-+	lea	esi,[1859775393+edi*1+esi]
-+	mov	edi,DWORD [36+esp]
-+	add	esi,ebp
-+	; 20_39 25
-+	mov	ebp,eax
-+	xor	edi,DWORD [44+esp]
-+	xor	ebp,ebx
-+	xor	edi,DWORD [4+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [24+esp]
-+	rol	edi,1
-+	add	edx,ebp
-+	ror	eax,2
-+	mov	ebp,esi
-+	rol	ebp,5
-+	mov	DWORD [36+esp],edi
-+	lea	edi,[1859775393+edx*1+edi]
-+	mov	edx,DWORD [40+esp]
-+	add	edi,ebp
-+	; 20_39 26
-+	mov	ebp,esi
-+	xor	edx,DWORD [48+esp]
-+	xor	ebp,eax
-+	xor	edx,DWORD [8+esp]
-+	xor	ebp,ebx
-+	xor	edx,DWORD [28+esp]
-+	rol	edx,1
-+	add	ecx,ebp
-+	ror	esi,2
-+	mov	ebp,edi
-+	rol	ebp,5
-+	mov	DWORD [40+esp],edx
-+	lea	edx,[1859775393+ecx*1+edx]
-+	mov	ecx,DWORD [44+esp]
-+	add	edx,ebp
-+	; 20_39 27
-+	mov	ebp,edi
-+	xor	ecx,DWORD [52+esp]
-+	xor	ebp,esi
-+	xor	ecx,DWORD [12+esp]
-+	xor	ebp,eax
-+	xor	ecx,DWORD [32+esp]
-+	rol	ecx,1
-+	add	ebx,ebp
-+	ror	edi,2
-+	mov	ebp,edx
-+	rol	ebp,5
-+	mov	DWORD [44+esp],ecx
-+	lea	ecx,[1859775393+ebx*1+ecx]
-+	mov	ebx,DWORD [48+esp]
-+	add	ecx,ebp
-+	; 20_39 28
-+	mov	ebp,edx
-+	xor	ebx,DWORD [56+esp]
-+	xor	ebp,edi
-+	xor	ebx,DWORD [16+esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [36+esp]
-+	rol	ebx,1
-+	add	eax,ebp
-+	ror	edx,2
-+	mov	ebp,ecx
-+	rol	ebp,5
-+	mov	DWORD [48+esp],ebx
-+	lea	ebx,[1859775393+eax*1+ebx]
-+	mov	eax,DWORD [52+esp]
-+	add	ebx,ebp
-+	; 20_39 29
-+	mov	ebp,ecx
-+	xor	eax,DWORD [60+esp]
-+	xor	ebp,edx
-+	xor	eax,DWORD [20+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [40+esp]
-+	rol	eax,1
-+	add	esi,ebp
-+	ror	ecx,2
-+	mov	ebp,ebx
-+	rol	ebp,5
-+	mov	DWORD [52+esp],eax
-+	lea	eax,[1859775393+esi*1+eax]
-+	mov	esi,DWORD [56+esp]
-+	add	eax,ebp
-+	; 20_39 30
-+	mov	ebp,ebx
-+	xor	esi,DWORD [esp]
-+	xor	ebp,ecx
-+	xor	esi,DWORD [24+esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [44+esp]
-+	rol	esi,1
-+	add	edi,ebp
-+	ror	ebx,2
-+	mov	ebp,eax
-+	rol	ebp,5
-+	mov	DWORD [56+esp],esi
-+	lea	esi,[1859775393+edi*1+esi]
-+	mov	edi,DWORD [60+esp]
-+	add	esi,ebp
-+	; 20_39 31
-+	mov	ebp,eax
-+	xor	edi,DWORD [4+esp]
-+	xor	ebp,ebx
-+	xor	edi,DWORD [28+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [48+esp]
-+	rol	edi,1
-+	add	edx,ebp
-+	ror	eax,2
-+	mov	ebp,esi
-+	rol	ebp,5
-+	mov	DWORD [60+esp],edi
-+	lea	edi,[1859775393+edx*1+edi]
-+	mov	edx,DWORD [esp]
-+	add	edi,ebp
-+	; 20_39 32
-+	mov	ebp,esi
-+	xor	edx,DWORD [8+esp]
-+	xor	ebp,eax
-+	xor	edx,DWORD [32+esp]
-+	xor	ebp,ebx
-+	xor	edx,DWORD [52+esp]
-+	rol	edx,1
-+	add	ecx,ebp
-+	ror	esi,2
-+	mov	ebp,edi
-+	rol	ebp,5
-+	mov	DWORD [esp],edx
-+	lea	edx,[1859775393+ecx*1+edx]
-+	mov	ecx,DWORD [4+esp]
-+	add	edx,ebp
-+	; 20_39 33
-+	mov	ebp,edi
-+	xor	ecx,DWORD [12+esp]
-+	xor	ebp,esi
-+	xor	ecx,DWORD [36+esp]
-+	xor	ebp,eax
-+	xor	ecx,DWORD [56+esp]
-+	rol	ecx,1
-+	add	ebx,ebp
-+	ror	edi,2
-+	mov	ebp,edx
-+	rol	ebp,5
-+	mov	DWORD [4+esp],ecx
-+	lea	ecx,[1859775393+ebx*1+ecx]
-+	mov	ebx,DWORD [8+esp]
-+	add	ecx,ebp
-+	; 20_39 34
-+	mov	ebp,edx
-+	xor	ebx,DWORD [16+esp]
-+	xor	ebp,edi
-+	xor	ebx,DWORD [40+esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [60+esp]
-+	rol	ebx,1
-+	add	eax,ebp
-+	ror	edx,2
-+	mov	ebp,ecx
-+	rol	ebp,5
-+	mov	DWORD [8+esp],ebx
-+	lea	ebx,[1859775393+eax*1+ebx]
-+	mov	eax,DWORD [12+esp]
-+	add	ebx,ebp
-+	; 20_39 35
-+	mov	ebp,ecx
-+	xor	eax,DWORD [20+esp]
-+	xor	ebp,edx
-+	xor	eax,DWORD [44+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [esp]
-+	rol	eax,1
-+	add	esi,ebp
-+	ror	ecx,2
-+	mov	ebp,ebx
-+	rol	ebp,5
-+	mov	DWORD [12+esp],eax
-+	lea	eax,[1859775393+esi*1+eax]
-+	mov	esi,DWORD [16+esp]
-+	add	eax,ebp
-+	; 20_39 36
-+	mov	ebp,ebx
-+	xor	esi,DWORD [24+esp]
-+	xor	ebp,ecx
-+	xor	esi,DWORD [48+esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [4+esp]
-+	rol	esi,1
-+	add	edi,ebp
-+	ror	ebx,2
-+	mov	ebp,eax
-+	rol	ebp,5
-+	mov	DWORD [16+esp],esi
-+	lea	esi,[1859775393+edi*1+esi]
-+	mov	edi,DWORD [20+esp]
-+	add	esi,ebp
-+	; 20_39 37
-+	mov	ebp,eax
-+	xor	edi,DWORD [28+esp]
-+	xor	ebp,ebx
-+	xor	edi,DWORD [52+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [8+esp]
-+	rol	edi,1
-+	add	edx,ebp
-+	ror	eax,2
-+	mov	ebp,esi
-+	rol	ebp,5
-+	mov	DWORD [20+esp],edi
-+	lea	edi,[1859775393+edx*1+edi]
-+	mov	edx,DWORD [24+esp]
-+	add	edi,ebp
-+	; 20_39 38
-+	mov	ebp,esi
-+	xor	edx,DWORD [32+esp]
-+	xor	ebp,eax
-+	xor	edx,DWORD [56+esp]
-+	xor	ebp,ebx
-+	xor	edx,DWORD [12+esp]
-+	rol	edx,1
-+	add	ecx,ebp
-+	ror	esi,2
-+	mov	ebp,edi
-+	rol	ebp,5
-+	mov	DWORD [24+esp],edx
-+	lea	edx,[1859775393+ecx*1+edx]
-+	mov	ecx,DWORD [28+esp]
-+	add	edx,ebp
-+	; 20_39 39
-+	mov	ebp,edi
-+	xor	ecx,DWORD [36+esp]
-+	xor	ebp,esi
-+	xor	ecx,DWORD [60+esp]
-+	xor	ebp,eax
-+	xor	ecx,DWORD [16+esp]
-+	rol	ecx,1
-+	add	ebx,ebp
-+	ror	edi,2
-+	mov	ebp,edx
-+	rol	ebp,5
-+	mov	DWORD [28+esp],ecx
-+	lea	ecx,[1859775393+ebx*1+ecx]
-+	mov	ebx,DWORD [32+esp]
-+	add	ecx,ebp
-+	; 40_59 40
-+	mov	ebp,edi
-+	xor	ebx,DWORD [40+esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [esp]
-+	and	ebp,edx
-+	xor	ebx,DWORD [20+esp]
-+	rol	ebx,1
-+	add	ebp,eax
-+	ror	edx,2
-+	mov	eax,ecx
-+	rol	eax,5
-+	mov	DWORD [32+esp],ebx
-+	lea	ebx,[2400959708+ebp*1+ebx]
-+	mov	ebp,edi
-+	add	ebx,eax
-+	and	ebp,esi
-+	mov	eax,DWORD [36+esp]
-+	add	ebx,ebp
-+	; 40_59 41
-+	mov	ebp,edx
-+	xor	eax,DWORD [44+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [4+esp]
-+	and	ebp,ecx
-+	xor	eax,DWORD [24+esp]
-+	rol	eax,1
-+	add	ebp,esi
-+	ror	ecx,2
-+	mov	esi,ebx
-+	rol	esi,5
-+	mov	DWORD [36+esp],eax
-+	lea	eax,[2400959708+ebp*1+eax]
-+	mov	ebp,edx
-+	add	eax,esi
-+	and	ebp,edi
-+	mov	esi,DWORD [40+esp]
-+	add	eax,ebp
-+	; 40_59 42
-+	mov	ebp,ecx
-+	xor	esi,DWORD [48+esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [8+esp]
-+	and	ebp,ebx
-+	xor	esi,DWORD [28+esp]
-+	rol	esi,1
-+	add	ebp,edi
-+	ror	ebx,2
-+	mov	edi,eax
-+	rol	edi,5
-+	mov	DWORD [40+esp],esi
-+	lea	esi,[2400959708+ebp*1+esi]
-+	mov	ebp,ecx
-+	add	esi,edi
-+	and	ebp,edx
-+	mov	edi,DWORD [44+esp]
-+	add	esi,ebp
-+	; 40_59 43
-+	mov	ebp,ebx
-+	xor	edi,DWORD [52+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [12+esp]
-+	and	ebp,eax
-+	xor	edi,DWORD [32+esp]
-+	rol	edi,1
-+	add	ebp,edx
-+	ror	eax,2
-+	mov	edx,esi
-+	rol	edx,5
-+	mov	DWORD [44+esp],edi
-+	lea	edi,[2400959708+ebp*1+edi]
-+	mov	ebp,ebx
-+	add	edi,edx
-+	and	ebp,ecx
-+	mov	edx,DWORD [48+esp]
-+	add	edi,ebp
-+	; 40_59 44
-+	mov	ebp,eax
-+	xor	edx,DWORD [56+esp]
-+	xor	ebp,ebx
-+	xor	edx,DWORD [16+esp]
-+	and	ebp,esi
-+	xor	edx,DWORD [36+esp]
-+	rol	edx,1
-+	add	ebp,ecx
-+	ror	esi,2
-+	mov	ecx,edi
-+	rol	ecx,5
-+	mov	DWORD [48+esp],edx
-+	lea	edx,[2400959708+ebp*1+edx]
-+	mov	ebp,eax
-+	add	edx,ecx
-+	and	ebp,ebx
-+	mov	ecx,DWORD [52+esp]
-+	add	edx,ebp
-+	; 40_59 45
-+	mov	ebp,esi
-+	xor	ecx,DWORD [60+esp]
-+	xor	ebp,eax
-+	xor	ecx,DWORD [20+esp]
-+	and	ebp,edi
-+	xor	ecx,DWORD [40+esp]
-+	rol	ecx,1
-+	add	ebp,ebx
-+	ror	edi,2
-+	mov	ebx,edx
-+	rol	ebx,5
-+	mov	DWORD [52+esp],ecx
-+	lea	ecx,[2400959708+ebp*1+ecx]
-+	mov	ebp,esi
-+	add	ecx,ebx
-+	and	ebp,eax
-+	mov	ebx,DWORD [56+esp]
-+	add	ecx,ebp
-+	; 40_59 46
-+	mov	ebp,edi
-+	xor	ebx,DWORD [esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [24+esp]
-+	and	ebp,edx
-+	xor	ebx,DWORD [44+esp]
-+	rol	ebx,1
-+	add	ebp,eax
-+	ror	edx,2
-+	mov	eax,ecx
-+	rol	eax,5
-+	mov	DWORD [56+esp],ebx
-+	lea	ebx,[2400959708+ebp*1+ebx]
-+	mov	ebp,edi
-+	add	ebx,eax
-+	and	ebp,esi
-+	mov	eax,DWORD [60+esp]
-+	add	ebx,ebp
-+	; 40_59 47
-+	mov	ebp,edx
-+	xor	eax,DWORD [4+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [28+esp]
-+	and	ebp,ecx
-+	xor	eax,DWORD [48+esp]
-+	rol	eax,1
-+	add	ebp,esi
-+	ror	ecx,2
-+	mov	esi,ebx
-+	rol	esi,5
-+	mov	DWORD [60+esp],eax
-+	lea	eax,[2400959708+ebp*1+eax]
-+	mov	ebp,edx
-+	add	eax,esi
-+	and	ebp,edi
-+	mov	esi,DWORD [esp]
-+	add	eax,ebp
-+	; 40_59 48
-+	mov	ebp,ecx
-+	xor	esi,DWORD [8+esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [32+esp]
-+	and	ebp,ebx
-+	xor	esi,DWORD [52+esp]
-+	rol	esi,1
-+	add	ebp,edi
-+	ror	ebx,2
-+	mov	edi,eax
-+	rol	edi,5
-+	mov	DWORD [esp],esi
-+	lea	esi,[2400959708+ebp*1+esi]
-+	mov	ebp,ecx
-+	add	esi,edi
-+	and	ebp,edx
-+	mov	edi,DWORD [4+esp]
-+	add	esi,ebp
-+	; 40_59 49
-+	mov	ebp,ebx
-+	xor	edi,DWORD [12+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [36+esp]
-+	and	ebp,eax
-+	xor	edi,DWORD [56+esp]
-+	rol	edi,1
-+	add	ebp,edx
-+	ror	eax,2
-+	mov	edx,esi
-+	rol	edx,5
-+	mov	DWORD [4+esp],edi
-+	lea	edi,[2400959708+ebp*1+edi]
-+	mov	ebp,ebx
-+	add	edi,edx
-+	and	ebp,ecx
-+	mov	edx,DWORD [8+esp]
-+	add	edi,ebp
-+	; 40_59 50
-+	mov	ebp,eax
-+	xor	edx,DWORD [16+esp]
-+	xor	ebp,ebx
-+	xor	edx,DWORD [40+esp]
-+	and	ebp,esi
-+	xor	edx,DWORD [60+esp]
-+	rol	edx,1
-+	add	ebp,ecx
-+	ror	esi,2
-+	mov	ecx,edi
-+	rol	ecx,5
-+	mov	DWORD [8+esp],edx
-+	lea	edx,[2400959708+ebp*1+edx]
-+	mov	ebp,eax
-+	add	edx,ecx
-+	and	ebp,ebx
-+	mov	ecx,DWORD [12+esp]
-+	add	edx,ebp
-+	; 40_59 51
-+	mov	ebp,esi
-+	xor	ecx,DWORD [20+esp]
-+	xor	ebp,eax
-+	xor	ecx,DWORD [44+esp]
-+	and	ebp,edi
-+	xor	ecx,DWORD [esp]
-+	rol	ecx,1
-+	add	ebp,ebx
-+	ror	edi,2
-+	mov	ebx,edx
-+	rol	ebx,5
-+	mov	DWORD [12+esp],ecx
-+	lea	ecx,[2400959708+ebp*1+ecx]
-+	mov	ebp,esi
-+	add	ecx,ebx
-+	and	ebp,eax
-+	mov	ebx,DWORD [16+esp]
-+	add	ecx,ebp
-+	; 40_59 52
-+	mov	ebp,edi
-+	xor	ebx,DWORD [24+esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [48+esp]
-+	and	ebp,edx
-+	xor	ebx,DWORD [4+esp]
-+	rol	ebx,1
-+	add	ebp,eax
-+	ror	edx,2
-+	mov	eax,ecx
-+	rol	eax,5
-+	mov	DWORD [16+esp],ebx
-+	lea	ebx,[2400959708+ebp*1+ebx]
-+	mov	ebp,edi
-+	add	ebx,eax
-+	and	ebp,esi
-+	mov	eax,DWORD [20+esp]
-+	add	ebx,ebp
-+	; 40_59 53
-+	mov	ebp,edx
-+	xor	eax,DWORD [28+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [52+esp]
-+	and	ebp,ecx
-+	xor	eax,DWORD [8+esp]
-+	rol	eax,1
-+	add	ebp,esi
-+	ror	ecx,2
-+	mov	esi,ebx
-+	rol	esi,5
-+	mov	DWORD [20+esp],eax
-+	lea	eax,[2400959708+ebp*1+eax]
-+	mov	ebp,edx
-+	add	eax,esi
-+	and	ebp,edi
-+	mov	esi,DWORD [24+esp]
-+	add	eax,ebp
-+	; 40_59 54
-+	mov	ebp,ecx
-+	xor	esi,DWORD [32+esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [56+esp]
-+	and	ebp,ebx
-+	xor	esi,DWORD [12+esp]
-+	rol	esi,1
-+	add	ebp,edi
-+	ror	ebx,2
-+	mov	edi,eax
-+	rol	edi,5
-+	mov	DWORD [24+esp],esi
-+	lea	esi,[2400959708+ebp*1+esi]
-+	mov	ebp,ecx
-+	add	esi,edi
-+	and	ebp,edx
-+	mov	edi,DWORD [28+esp]
-+	add	esi,ebp
-+	; 40_59 55
-+	mov	ebp,ebx
-+	xor	edi,DWORD [36+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [60+esp]
-+	and	ebp,eax
-+	xor	edi,DWORD [16+esp]
-+	rol	edi,1
-+	add	ebp,edx
-+	ror	eax,2
-+	mov	edx,esi
-+	rol	edx,5
-+	mov	DWORD [28+esp],edi
-+	lea	edi,[2400959708+ebp*1+edi]
-+	mov	ebp,ebx
-+	add	edi,edx
-+	and	ebp,ecx
-+	mov	edx,DWORD [32+esp]
-+	add	edi,ebp
-+	; 40_59 56
-+	mov	ebp,eax
-+	xor	edx,DWORD [40+esp]
-+	xor	ebp,ebx
-+	xor	edx,DWORD [esp]
-+	and	ebp,esi
-+	xor	edx,DWORD [20+esp]
-+	rol	edx,1
-+	add	ebp,ecx
-+	ror	esi,2
-+	mov	ecx,edi
-+	rol	ecx,5
-+	mov	DWORD [32+esp],edx
-+	lea	edx,[2400959708+ebp*1+edx]
-+	mov	ebp,eax
-+	add	edx,ecx
-+	and	ebp,ebx
-+	mov	ecx,DWORD [36+esp]
-+	add	edx,ebp
-+	; 40_59 57
-+	mov	ebp,esi
-+	xor	ecx,DWORD [44+esp]
-+	xor	ebp,eax
-+	xor	ecx,DWORD [4+esp]
-+	and	ebp,edi
-+	xor	ecx,DWORD [24+esp]
-+	rol	ecx,1
-+	add	ebp,ebx
-+	ror	edi,2
-+	mov	ebx,edx
-+	rol	ebx,5
-+	mov	DWORD [36+esp],ecx
-+	lea	ecx,[2400959708+ebp*1+ecx]
-+	mov	ebp,esi
-+	add	ecx,ebx
-+	and	ebp,eax
-+	mov	ebx,DWORD [40+esp]
-+	add	ecx,ebp
-+	; 40_59 58
-+	mov	ebp,edi
-+	xor	ebx,DWORD [48+esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [8+esp]
-+	and	ebp,edx
-+	xor	ebx,DWORD [28+esp]
-+	rol	ebx,1
-+	add	ebp,eax
-+	ror	edx,2
-+	mov	eax,ecx
-+	rol	eax,5
-+	mov	DWORD [40+esp],ebx
-+	lea	ebx,[2400959708+ebp*1+ebx]
-+	mov	ebp,edi
-+	add	ebx,eax
-+	and	ebp,esi
-+	mov	eax,DWORD [44+esp]
-+	add	ebx,ebp
-+	; 40_59 59
-+	mov	ebp,edx
-+	xor	eax,DWORD [52+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [12+esp]
-+	and	ebp,ecx
-+	xor	eax,DWORD [32+esp]
-+	rol	eax,1
-+	add	ebp,esi
-+	ror	ecx,2
-+	mov	esi,ebx
-+	rol	esi,5
-+	mov	DWORD [44+esp],eax
-+	lea	eax,[2400959708+ebp*1+eax]
-+	mov	ebp,edx
-+	add	eax,esi
-+	and	ebp,edi
-+	mov	esi,DWORD [48+esp]
-+	add	eax,ebp
-+	; 20_39 60
-+	mov	ebp,ebx
-+	xor	esi,DWORD [56+esp]
-+	xor	ebp,ecx
-+	xor	esi,DWORD [16+esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [36+esp]
-+	rol	esi,1
-+	add	edi,ebp
-+	ror	ebx,2
-+	mov	ebp,eax
-+	rol	ebp,5
-+	mov	DWORD [48+esp],esi
-+	lea	esi,[3395469782+edi*1+esi]
-+	mov	edi,DWORD [52+esp]
-+	add	esi,ebp
-+	; 20_39 61
-+	mov	ebp,eax
-+	xor	edi,DWORD [60+esp]
-+	xor	ebp,ebx
-+	xor	edi,DWORD [20+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [40+esp]
-+	rol	edi,1
-+	add	edx,ebp
-+	ror	eax,2
-+	mov	ebp,esi
-+	rol	ebp,5
-+	mov	DWORD [52+esp],edi
-+	lea	edi,[3395469782+edx*1+edi]
-+	mov	edx,DWORD [56+esp]
-+	add	edi,ebp
-+	; 20_39 62
-+	mov	ebp,esi
-+	xor	edx,DWORD [esp]
-+	xor	ebp,eax
-+	xor	edx,DWORD [24+esp]
-+	xor	ebp,ebx
-+	xor	edx,DWORD [44+esp]
-+	rol	edx,1
-+	add	ecx,ebp
-+	ror	esi,2
-+	mov	ebp,edi
-+	rol	ebp,5
-+	mov	DWORD [56+esp],edx
-+	lea	edx,[3395469782+ecx*1+edx]
-+	mov	ecx,DWORD [60+esp]
-+	add	edx,ebp
-+	; 20_39 63
-+	mov	ebp,edi
-+	xor	ecx,DWORD [4+esp]
-+	xor	ebp,esi
-+	xor	ecx,DWORD [28+esp]
-+	xor	ebp,eax
-+	xor	ecx,DWORD [48+esp]
-+	rol	ecx,1
-+	add	ebx,ebp
-+	ror	edi,2
-+	mov	ebp,edx
-+	rol	ebp,5
-+	mov	DWORD [60+esp],ecx
-+	lea	ecx,[3395469782+ebx*1+ecx]
-+	mov	ebx,DWORD [esp]
-+	add	ecx,ebp
-+	; 20_39 64
-+	mov	ebp,edx
-+	xor	ebx,DWORD [8+esp]
-+	xor	ebp,edi
-+	xor	ebx,DWORD [32+esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [52+esp]
-+	rol	ebx,1
-+	add	eax,ebp
-+	ror	edx,2
-+	mov	ebp,ecx
-+	rol	ebp,5
-+	mov	DWORD [esp],ebx
-+	lea	ebx,[3395469782+eax*1+ebx]
-+	mov	eax,DWORD [4+esp]
-+	add	ebx,ebp
-+	; 20_39 65
-+	mov	ebp,ecx
-+	xor	eax,DWORD [12+esp]
-+	xor	ebp,edx
-+	xor	eax,DWORD [36+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [56+esp]
-+	rol	eax,1
-+	add	esi,ebp
-+	ror	ecx,2
-+	mov	ebp,ebx
-+	rol	ebp,5
-+	mov	DWORD [4+esp],eax
-+	lea	eax,[3395469782+esi*1+eax]
-+	mov	esi,DWORD [8+esp]
-+	add	eax,ebp
-+	; 20_39 66
-+	mov	ebp,ebx
-+	xor	esi,DWORD [16+esp]
-+	xor	ebp,ecx
-+	xor	esi,DWORD [40+esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [60+esp]
-+	rol	esi,1
-+	add	edi,ebp
-+	ror	ebx,2
-+	mov	ebp,eax
-+	rol	ebp,5
-+	mov	DWORD [8+esp],esi
-+	lea	esi,[3395469782+edi*1+esi]
-+	mov	edi,DWORD [12+esp]
-+	add	esi,ebp
-+	; 20_39 67
-+	mov	ebp,eax
-+	xor	edi,DWORD [20+esp]
-+	xor	ebp,ebx
-+	xor	edi,DWORD [44+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [esp]
-+	rol	edi,1
-+	add	edx,ebp
-+	ror	eax,2
-+	mov	ebp,esi
-+	rol	ebp,5
-+	mov	DWORD [12+esp],edi
-+	lea	edi,[3395469782+edx*1+edi]
-+	mov	edx,DWORD [16+esp]
-+	add	edi,ebp
-+	; 20_39 68
-+	mov	ebp,esi
-+	xor	edx,DWORD [24+esp]
-+	xor	ebp,eax
-+	xor	edx,DWORD [48+esp]
-+	xor	ebp,ebx
-+	xor	edx,DWORD [4+esp]
-+	rol	edx,1
-+	add	ecx,ebp
-+	ror	esi,2
-+	mov	ebp,edi
-+	rol	ebp,5
-+	mov	DWORD [16+esp],edx
-+	lea	edx,[3395469782+ecx*1+edx]
-+	mov	ecx,DWORD [20+esp]
-+	add	edx,ebp
-+	; 20_39 69
-+	mov	ebp,edi
-+	xor	ecx,DWORD [28+esp]
-+	xor	ebp,esi
-+	xor	ecx,DWORD [52+esp]
-+	xor	ebp,eax
-+	xor	ecx,DWORD [8+esp]
-+	rol	ecx,1
-+	add	ebx,ebp
-+	ror	edi,2
-+	mov	ebp,edx
-+	rol	ebp,5
-+	mov	DWORD [20+esp],ecx
-+	lea	ecx,[3395469782+ebx*1+ecx]
-+	mov	ebx,DWORD [24+esp]
-+	add	ecx,ebp
-+	; 20_39 70
-+	mov	ebp,edx
-+	xor	ebx,DWORD [32+esp]
-+	xor	ebp,edi
-+	xor	ebx,DWORD [56+esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [12+esp]
-+	rol	ebx,1
-+	add	eax,ebp
-+	ror	edx,2
-+	mov	ebp,ecx
-+	rol	ebp,5
-+	mov	DWORD [24+esp],ebx
-+	lea	ebx,[3395469782+eax*1+ebx]
-+	mov	eax,DWORD [28+esp]
-+	add	ebx,ebp
-+	; 20_39 71
-+	mov	ebp,ecx
-+	xor	eax,DWORD [36+esp]
-+	xor	ebp,edx
-+	xor	eax,DWORD [60+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [16+esp]
-+	rol	eax,1
-+	add	esi,ebp
-+	ror	ecx,2
-+	mov	ebp,ebx
-+	rol	ebp,5
-+	mov	DWORD [28+esp],eax
-+	lea	eax,[3395469782+esi*1+eax]
-+	mov	esi,DWORD [32+esp]
-+	add	eax,ebp
-+	; 20_39 72
-+	mov	ebp,ebx
-+	xor	esi,DWORD [40+esp]
-+	xor	ebp,ecx
-+	xor	esi,DWORD [esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [20+esp]
-+	rol	esi,1
-+	add	edi,ebp
-+	ror	ebx,2
-+	mov	ebp,eax
-+	rol	ebp,5
-+	mov	DWORD [32+esp],esi
-+	lea	esi,[3395469782+edi*1+esi]
-+	mov	edi,DWORD [36+esp]
-+	add	esi,ebp
-+	; 20_39 73
-+	mov	ebp,eax
-+	xor	edi,DWORD [44+esp]
-+	xor	ebp,ebx
-+	xor	edi,DWORD [4+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [24+esp]
-+	rol	edi,1
-+	add	edx,ebp
-+	ror	eax,2
-+	mov	ebp,esi
-+	rol	ebp,5
-+	mov	DWORD [36+esp],edi
-+	lea	edi,[3395469782+edx*1+edi]
-+	mov	edx,DWORD [40+esp]
-+	add	edi,ebp
-+	; 20_39 74
-+	mov	ebp,esi
-+	xor	edx,DWORD [48+esp]
-+	xor	ebp,eax
-+	xor	edx,DWORD [8+esp]
-+	xor	ebp,ebx
-+	xor	edx,DWORD [28+esp]
-+	rol	edx,1
-+	add	ecx,ebp
-+	ror	esi,2
-+	mov	ebp,edi
-+	rol	ebp,5
-+	mov	DWORD [40+esp],edx
-+	lea	edx,[3395469782+ecx*1+edx]
-+	mov	ecx,DWORD [44+esp]
-+	add	edx,ebp
-+	; 20_39 75
-+	mov	ebp,edi
-+	xor	ecx,DWORD [52+esp]
-+	xor	ebp,esi
-+	xor	ecx,DWORD [12+esp]
-+	xor	ebp,eax
-+	xor	ecx,DWORD [32+esp]
-+	rol	ecx,1
-+	add	ebx,ebp
-+	ror	edi,2
-+	mov	ebp,edx
-+	rol	ebp,5
-+	mov	DWORD [44+esp],ecx
-+	lea	ecx,[3395469782+ebx*1+ecx]
-+	mov	ebx,DWORD [48+esp]
-+	add	ecx,ebp
-+	; 20_39 76
-+	mov	ebp,edx
-+	xor	ebx,DWORD [56+esp]
-+	xor	ebp,edi
-+	xor	ebx,DWORD [16+esp]
-+	xor	ebp,esi
-+	xor	ebx,DWORD [36+esp]
-+	rol	ebx,1
-+	add	eax,ebp
-+	ror	edx,2
-+	mov	ebp,ecx
-+	rol	ebp,5
-+	mov	DWORD [48+esp],ebx
-+	lea	ebx,[3395469782+eax*1+ebx]
-+	mov	eax,DWORD [52+esp]
-+	add	ebx,ebp
-+	; 20_39 77
-+	mov	ebp,ecx
-+	xor	eax,DWORD [60+esp]
-+	xor	ebp,edx
-+	xor	eax,DWORD [20+esp]
-+	xor	ebp,edi
-+	xor	eax,DWORD [40+esp]
-+	rol	eax,1
-+	add	esi,ebp
-+	ror	ecx,2
-+	mov	ebp,ebx
-+	rol	ebp,5
-+	lea	eax,[3395469782+esi*1+eax]
-+	mov	esi,DWORD [56+esp]
-+	add	eax,ebp
-+	; 20_39 78
-+	mov	ebp,ebx
-+	xor	esi,DWORD [esp]
-+	xor	ebp,ecx
-+	xor	esi,DWORD [24+esp]
-+	xor	ebp,edx
-+	xor	esi,DWORD [44+esp]
-+	rol	esi,1
-+	add	edi,ebp
-+	ror	ebx,2
-+	mov	ebp,eax
-+	rol	ebp,5
-+	lea	esi,[3395469782+edi*1+esi]
-+	mov	edi,DWORD [60+esp]
-+	add	esi,ebp
-+	; 20_39 79
-+	mov	ebp,eax
-+	xor	edi,DWORD [4+esp]
-+	xor	ebp,ebx
-+	xor	edi,DWORD [28+esp]
-+	xor	ebp,ecx
-+	xor	edi,DWORD [48+esp]
-+	rol	edi,1
-+	add	edx,ebp
-+	ror	eax,2
-+	mov	ebp,esi
-+	rol	ebp,5
-+	lea	edi,[3395469782+edx*1+edi]
-+	add	edi,ebp
-+	mov	ebp,DWORD [96+esp]
-+	mov	edx,DWORD [100+esp]
-+	add	edi,DWORD [ebp]
-+	add	esi,DWORD [4+ebp]
-+	add	eax,DWORD [8+ebp]
-+	add	ebx,DWORD [12+ebp]
-+	add	ecx,DWORD [16+ebp]
-+	mov	DWORD [ebp],edi
-+	add	edx,64
-+	mov	DWORD [4+ebp],esi
-+	cmp	edx,DWORD [104+esp]
-+	mov	DWORD [8+ebp],eax
-+	mov	edi,ecx
-+	mov	DWORD [12+ebp],ebx
-+	mov	esi,edx
-+	mov	DWORD [16+ebp],ecx
-+	jb	NEAR L$000loop
-+	add	esp,76
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+db	83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
-+db	102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82
-+db	89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
-+db	114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
-diff --git a/SMP/lib/accelerated/x86/coff/sha1-ssse3-x86_64.asm b/SMP/lib/accelerated/x86/coff/sha1-ssse3-x86_64.asm
-new file mode 100644
-index 0000000..98d9dcb
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/sha1-ssse3-x86_64.asm
-@@ -0,0 +1,5714 @@
-+default	rel
-+%define XMMWORD
-+%define YMMWORD
-+%define ZMMWORD
-+section	.text code align=64
-+
-+EXTERN	_gnutls_x86_cpuid_s
-+
-+global	sha1_block_data_order
-+
-+ALIGN	16
-+sha1_block_data_order:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha1_block_data_order:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	mov	r9d,DWORD[((_gnutls_x86_cpuid_s+0))]
-+	mov	r8d,DWORD[((_gnutls_x86_cpuid_s+4))]
-+	mov	r10d,DWORD[((_gnutls_x86_cpuid_s+8))]
-+	test	r8d,512
-+	jz	NEAR $L$ialu
-+	test	r10d,536870912
-+	jnz	NEAR _shaext_shortcut
-+	and	r10d,296
-+	cmp	r10d,296
-+	je	NEAR _avx2_shortcut
-+	and	r8d,268435456
-+	and	r9d,1073741824
-+	or	r8d,r9d
-+	cmp	r8d,1342177280
-+	je	NEAR _avx_shortcut
-+	jmp	NEAR _ssse3_shortcut
-+
-+ALIGN	16
-+$L$ialu:
-+	mov	rax,rsp
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	mov	r8,rdi
-+	sub	rsp,72
-+	mov	r9,rsi
-+	and	rsp,-64
-+	mov	r10,rdx
-+	mov	QWORD[64+rsp],rax
-+$L$prologue:
-+
-+	mov	esi,DWORD[r8]
-+	mov	edi,DWORD[4+r8]
-+	mov	r11d,DWORD[8+r8]
-+	mov	r12d,DWORD[12+r8]
-+	mov	r13d,DWORD[16+r8]
-+	jmp	NEAR $L$loop
-+
-+ALIGN	16
-+$L$loop:
-+	mov	edx,DWORD[r9]
-+	bswap	edx
-+	mov	ebp,DWORD[4+r9]
-+	mov	eax,r12d
-+	mov	DWORD[rsp],edx
-+	mov	ecx,esi
-+	bswap	ebp
-+	xor	eax,r11d
-+	rol	ecx,5
-+	and	eax,edi
-+	lea	r13d,[1518500249+r13*1+rdx]
-+	add	r13d,ecx
-+	xor	eax,r12d
-+	rol	edi,30
-+	add	r13d,eax
-+	mov	r14d,DWORD[8+r9]
-+	mov	eax,r11d
-+	mov	DWORD[4+rsp],ebp
-+	mov	ecx,r13d
-+	bswap	r14d
-+	xor	eax,edi
-+	rol	ecx,5
-+	and	eax,esi
-+	lea	r12d,[1518500249+r12*1+rbp]
-+	add	r12d,ecx
-+	xor	eax,r11d
-+	rol	esi,30
-+	add	r12d,eax
-+	mov	edx,DWORD[12+r9]
-+	mov	eax,edi
-+	mov	DWORD[8+rsp],r14d
-+	mov	ecx,r12d
-+	bswap	edx
-+	xor	eax,esi
-+	rol	ecx,5
-+	and	eax,r13d
-+	lea	r11d,[1518500249+r11*1+r14]
-+	add	r11d,ecx
-+	xor	eax,edi
-+	rol	r13d,30
-+	add	r11d,eax
-+	mov	ebp,DWORD[16+r9]
-+	mov	eax,esi
-+	mov	DWORD[12+rsp],edx
-+	mov	ecx,r11d
-+	bswap	ebp
-+	xor	eax,r13d
-+	rol	ecx,5
-+	and	eax,r12d
-+	lea	edi,[1518500249+rdi*1+rdx]
-+	add	edi,ecx
-+	xor	eax,esi
-+	rol	r12d,30
-+	add	edi,eax
-+	mov	r14d,DWORD[20+r9]
-+	mov	eax,r13d
-+	mov	DWORD[16+rsp],ebp
-+	mov	ecx,edi
-+	bswap	r14d
-+	xor	eax,r12d
-+	rol	ecx,5
-+	and	eax,r11d
-+	lea	esi,[1518500249+rsi*1+rbp]
-+	add	esi,ecx
-+	xor	eax,r13d
-+	rol	r11d,30
-+	add	esi,eax
-+	mov	edx,DWORD[24+r9]
-+	mov	eax,r12d
-+	mov	DWORD[20+rsp],r14d
-+	mov	ecx,esi
-+	bswap	edx
-+	xor	eax,r11d
-+	rol	ecx,5
-+	and	eax,edi
-+	lea	r13d,[1518500249+r13*1+r14]
-+	add	r13d,ecx
-+	xor	eax,r12d
-+	rol	edi,30
-+	add	r13d,eax
-+	mov	ebp,DWORD[28+r9]
-+	mov	eax,r11d
-+	mov	DWORD[24+rsp],edx
-+	mov	ecx,r13d
-+	bswap	ebp
-+	xor	eax,edi
-+	rol	ecx,5
-+	and	eax,esi
-+	lea	r12d,[1518500249+r12*1+rdx]
-+	add	r12d,ecx
-+	xor	eax,r11d
-+	rol	esi,30
-+	add	r12d,eax
-+	mov	r14d,DWORD[32+r9]
-+	mov	eax,edi
-+	mov	DWORD[28+rsp],ebp
-+	mov	ecx,r12d
-+	bswap	r14d
-+	xor	eax,esi
-+	rol	ecx,5
-+	and	eax,r13d
-+	lea	r11d,[1518500249+r11*1+rbp]
-+	add	r11d,ecx
-+	xor	eax,edi
-+	rol	r13d,30
-+	add	r11d,eax
-+	mov	edx,DWORD[36+r9]
-+	mov	eax,esi
-+	mov	DWORD[32+rsp],r14d
-+	mov	ecx,r11d
-+	bswap	edx
-+	xor	eax,r13d
-+	rol	ecx,5
-+	and	eax,r12d
-+	lea	edi,[1518500249+rdi*1+r14]
-+	add	edi,ecx
-+	xor	eax,esi
-+	rol	r12d,30
-+	add	edi,eax
-+	mov	ebp,DWORD[40+r9]
-+	mov	eax,r13d
-+	mov	DWORD[36+rsp],edx
-+	mov	ecx,edi
-+	bswap	ebp
-+	xor	eax,r12d
-+	rol	ecx,5
-+	and	eax,r11d
-+	lea	esi,[1518500249+rsi*1+rdx]
-+	add	esi,ecx
-+	xor	eax,r13d
-+	rol	r11d,30
-+	add	esi,eax
-+	mov	r14d,DWORD[44+r9]
-+	mov	eax,r12d
-+	mov	DWORD[40+rsp],ebp
-+	mov	ecx,esi
-+	bswap	r14d
-+	xor	eax,r11d
-+	rol	ecx,5
-+	and	eax,edi
-+	lea	r13d,[1518500249+r13*1+rbp]
-+	add	r13d,ecx
-+	xor	eax,r12d
-+	rol	edi,30
-+	add	r13d,eax
-+	mov	edx,DWORD[48+r9]
-+	mov	eax,r11d
-+	mov	DWORD[44+rsp],r14d
-+	mov	ecx,r13d
-+	bswap	edx
-+	xor	eax,edi
-+	rol	ecx,5
-+	and	eax,esi
-+	lea	r12d,[1518500249+r12*1+r14]
-+	add	r12d,ecx
-+	xor	eax,r11d
-+	rol	esi,30
-+	add	r12d,eax
-+	mov	ebp,DWORD[52+r9]
-+	mov	eax,edi
-+	mov	DWORD[48+rsp],edx
-+	mov	ecx,r12d
-+	bswap	ebp
-+	xor	eax,esi
-+	rol	ecx,5
-+	and	eax,r13d
-+	lea	r11d,[1518500249+r11*1+rdx]
-+	add	r11d,ecx
-+	xor	eax,edi
-+	rol	r13d,30
-+	add	r11d,eax
-+	mov	r14d,DWORD[56+r9]
-+	mov	eax,esi
-+	mov	DWORD[52+rsp],ebp
-+	mov	ecx,r11d
-+	bswap	r14d
-+	xor	eax,r13d
-+	rol	ecx,5
-+	and	eax,r12d
-+	lea	edi,[1518500249+rdi*1+rbp]
-+	add	edi,ecx
-+	xor	eax,esi
-+	rol	r12d,30
-+	add	edi,eax
-+	mov	edx,DWORD[60+r9]
-+	mov	eax,r13d
-+	mov	DWORD[56+rsp],r14d
-+	mov	ecx,edi
-+	bswap	edx
-+	xor	eax,r12d
-+	rol	ecx,5
-+	and	eax,r11d
-+	lea	esi,[1518500249+rsi*1+r14]
-+	add	esi,ecx
-+	xor	eax,r13d
-+	rol	r11d,30
-+	add	esi,eax
-+	xor	ebp,DWORD[rsp]
-+	mov	eax,r12d
-+	mov	DWORD[60+rsp],edx
-+	mov	ecx,esi
-+	xor	ebp,DWORD[8+rsp]
-+	xor	eax,r11d
-+	rol	ecx,5
-+	xor	ebp,DWORD[32+rsp]
-+	and	eax,edi
-+	lea	r13d,[1518500249+r13*1+rdx]
-+	rol	edi,30
-+	xor	eax,r12d
-+	add	r13d,ecx
-+	rol	ebp,1
-+	add	r13d,eax
-+	xor	r14d,DWORD[4+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[rsp],ebp
-+	mov	ecx,r13d
-+	xor	r14d,DWORD[12+rsp]
-+	xor	eax,edi
-+	rol	ecx,5
-+	xor	r14d,DWORD[36+rsp]
-+	and	eax,esi
-+	lea	r12d,[1518500249+r12*1+rbp]
-+	rol	esi,30
-+	xor	eax,r11d
-+	add	r12d,ecx
-+	rol	r14d,1
-+	add	r12d,eax
-+	xor	edx,DWORD[8+rsp]
-+	mov	eax,edi
-+	mov	DWORD[4+rsp],r14d
-+	mov	ecx,r12d
-+	xor	edx,DWORD[16+rsp]
-+	xor	eax,esi
-+	rol	ecx,5
-+	xor	edx,DWORD[40+rsp]
-+	and	eax,r13d
-+	lea	r11d,[1518500249+r11*1+r14]
-+	rol	r13d,30
-+	xor	eax,edi
-+	add	r11d,ecx
-+	rol	edx,1
-+	add	r11d,eax
-+	xor	ebp,DWORD[12+rsp]
-+	mov	eax,esi
-+	mov	DWORD[8+rsp],edx
-+	mov	ecx,r11d
-+	xor	ebp,DWORD[20+rsp]
-+	xor	eax,r13d
-+	rol	ecx,5
-+	xor	ebp,DWORD[44+rsp]
-+	and	eax,r12d
-+	lea	edi,[1518500249+rdi*1+rdx]
-+	rol	r12d,30
-+	xor	eax,esi
-+	add	edi,ecx
-+	rol	ebp,1
-+	add	edi,eax
-+	xor	r14d,DWORD[16+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[12+rsp],ebp
-+	mov	ecx,edi
-+	xor	r14d,DWORD[24+rsp]
-+	xor	eax,r12d
-+	rol	ecx,5
-+	xor	r14d,DWORD[48+rsp]
-+	and	eax,r11d
-+	lea	esi,[1518500249+rsi*1+rbp]
-+	rol	r11d,30
-+	xor	eax,r13d
-+	add	esi,ecx
-+	rol	r14d,1
-+	add	esi,eax
-+	xor	edx,DWORD[20+rsp]
-+	mov	eax,edi
-+	mov	DWORD[16+rsp],r14d
-+	mov	ecx,esi
-+	xor	edx,DWORD[28+rsp]
-+	xor	eax,r12d
-+	rol	ecx,5
-+	xor	edx,DWORD[52+rsp]
-+	lea	r13d,[1859775393+r13*1+r14]
-+	xor	eax,r11d
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[24+rsp]
-+	mov	eax,esi
-+	mov	DWORD[20+rsp],edx
-+	mov	ecx,r13d
-+	xor	ebp,DWORD[32+rsp]
-+	xor	eax,r11d
-+	rol	ecx,5
-+	xor	ebp,DWORD[56+rsp]
-+	lea	r12d,[1859775393+r12*1+rdx]
-+	xor	eax,edi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[28+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[24+rsp],ebp
-+	mov	ecx,r12d
-+	xor	r14d,DWORD[36+rsp]
-+	xor	eax,edi
-+	rol	ecx,5
-+	xor	r14d,DWORD[60+rsp]
-+	lea	r11d,[1859775393+r11*1+rbp]
-+	xor	eax,esi
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[32+rsp]
-+	mov	eax,r12d
-+	mov	DWORD[28+rsp],r14d
-+	mov	ecx,r11d
-+	xor	edx,DWORD[40+rsp]
-+	xor	eax,esi
-+	rol	ecx,5
-+	xor	edx,DWORD[rsp]
-+	lea	edi,[1859775393+rdi*1+r14]
-+	xor	eax,r13d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[36+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[32+rsp],edx
-+	mov	ecx,edi
-+	xor	ebp,DWORD[44+rsp]
-+	xor	eax,r13d
-+	rol	ecx,5
-+	xor	ebp,DWORD[4+rsp]
-+	lea	esi,[1859775393+rsi*1+rdx]
-+	xor	eax,r12d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[40+rsp]
-+	mov	eax,edi
-+	mov	DWORD[36+rsp],ebp
-+	mov	ecx,esi
-+	xor	r14d,DWORD[48+rsp]
-+	xor	eax,r12d
-+	rol	ecx,5
-+	xor	r14d,DWORD[8+rsp]
-+	lea	r13d,[1859775393+r13*1+rbp]
-+	xor	eax,r11d
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[44+rsp]
-+	mov	eax,esi
-+	mov	DWORD[40+rsp],r14d
-+	mov	ecx,r13d
-+	xor	edx,DWORD[52+rsp]
-+	xor	eax,r11d
-+	rol	ecx,5
-+	xor	edx,DWORD[12+rsp]
-+	lea	r12d,[1859775393+r12*1+r14]
-+	xor	eax,edi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[48+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[44+rsp],edx
-+	mov	ecx,r12d
-+	xor	ebp,DWORD[56+rsp]
-+	xor	eax,edi
-+	rol	ecx,5
-+	xor	ebp,DWORD[16+rsp]
-+	lea	r11d,[1859775393+r11*1+rdx]
-+	xor	eax,esi
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[52+rsp]
-+	mov	eax,r12d
-+	mov	DWORD[48+rsp],ebp
-+	mov	ecx,r11d
-+	xor	r14d,DWORD[60+rsp]
-+	xor	eax,esi
-+	rol	ecx,5
-+	xor	r14d,DWORD[20+rsp]
-+	lea	edi,[1859775393+rdi*1+rbp]
-+	xor	eax,r13d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[56+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[52+rsp],r14d
-+	mov	ecx,edi
-+	xor	edx,DWORD[rsp]
-+	xor	eax,r13d
-+	rol	ecx,5
-+	xor	edx,DWORD[24+rsp]
-+	lea	esi,[1859775393+rsi*1+r14]
-+	xor	eax,r12d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[60+rsp]
-+	mov	eax,edi
-+	mov	DWORD[56+rsp],edx
-+	mov	ecx,esi
-+	xor	ebp,DWORD[4+rsp]
-+	xor	eax,r12d
-+	rol	ecx,5
-+	xor	ebp,DWORD[28+rsp]
-+	lea	r13d,[1859775393+r13*1+rdx]
-+	xor	eax,r11d
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[rsp]
-+	mov	eax,esi
-+	mov	DWORD[60+rsp],ebp
-+	mov	ecx,r13d
-+	xor	r14d,DWORD[8+rsp]
-+	xor	eax,r11d
-+	rol	ecx,5
-+	xor	r14d,DWORD[32+rsp]
-+	lea	r12d,[1859775393+r12*1+rbp]
-+	xor	eax,edi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[4+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[rsp],r14d
-+	mov	ecx,r12d
-+	xor	edx,DWORD[12+rsp]
-+	xor	eax,edi
-+	rol	ecx,5
-+	xor	edx,DWORD[36+rsp]
-+	lea	r11d,[1859775393+r11*1+r14]
-+	xor	eax,esi
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[8+rsp]
-+	mov	eax,r12d
-+	mov	DWORD[4+rsp],edx
-+	mov	ecx,r11d
-+	xor	ebp,DWORD[16+rsp]
-+	xor	eax,esi
-+	rol	ecx,5
-+	xor	ebp,DWORD[40+rsp]
-+	lea	edi,[1859775393+rdi*1+rdx]
-+	xor	eax,r13d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[12+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[8+rsp],ebp
-+	mov	ecx,edi
-+	xor	r14d,DWORD[20+rsp]
-+	xor	eax,r13d
-+	rol	ecx,5
-+	xor	r14d,DWORD[44+rsp]
-+	lea	esi,[1859775393+rsi*1+rbp]
-+	xor	eax,r12d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[16+rsp]
-+	mov	eax,edi
-+	mov	DWORD[12+rsp],r14d
-+	mov	ecx,esi
-+	xor	edx,DWORD[24+rsp]
-+	xor	eax,r12d
-+	rol	ecx,5
-+	xor	edx,DWORD[48+rsp]
-+	lea	r13d,[1859775393+r13*1+r14]
-+	xor	eax,r11d
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[20+rsp]
-+	mov	eax,esi
-+	mov	DWORD[16+rsp],edx
-+	mov	ecx,r13d
-+	xor	ebp,DWORD[28+rsp]
-+	xor	eax,r11d
-+	rol	ecx,5
-+	xor	ebp,DWORD[52+rsp]
-+	lea	r12d,[1859775393+r12*1+rdx]
-+	xor	eax,edi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[24+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[20+rsp],ebp
-+	mov	ecx,r12d
-+	xor	r14d,DWORD[32+rsp]
-+	xor	eax,edi
-+	rol	ecx,5
-+	xor	r14d,DWORD[56+rsp]
-+	lea	r11d,[1859775393+r11*1+rbp]
-+	xor	eax,esi
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[28+rsp]
-+	mov	eax,r12d
-+	mov	DWORD[24+rsp],r14d
-+	mov	ecx,r11d
-+	xor	edx,DWORD[36+rsp]
-+	xor	eax,esi
-+	rol	ecx,5
-+	xor	edx,DWORD[60+rsp]
-+	lea	edi,[1859775393+rdi*1+r14]
-+	xor	eax,r13d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[32+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[28+rsp],edx
-+	mov	ecx,edi
-+	xor	ebp,DWORD[40+rsp]
-+	xor	eax,r13d
-+	rol	ecx,5
-+	xor	ebp,DWORD[rsp]
-+	lea	esi,[1859775393+rsi*1+rdx]
-+	xor	eax,r12d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[36+rsp]
-+	mov	eax,r12d
-+	mov	DWORD[32+rsp],ebp
-+	mov	ebx,r12d
-+	xor	r14d,DWORD[44+rsp]
-+	and	eax,r11d
-+	mov	ecx,esi
-+	xor	r14d,DWORD[4+rsp]
-+	lea	r13d,[((-1894007588))+r13*1+rbp]
-+	xor	ebx,r11d
-+	rol	ecx,5
-+	add	r13d,eax
-+	rol	r14d,1
-+	and	ebx,edi
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,ebx
-+	xor	edx,DWORD[40+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[36+rsp],r14d
-+	mov	ebx,r11d
-+	xor	edx,DWORD[48+rsp]
-+	and	eax,edi
-+	mov	ecx,r13d
-+	xor	edx,DWORD[8+rsp]
-+	lea	r12d,[((-1894007588))+r12*1+r14]
-+	xor	ebx,edi
-+	rol	ecx,5
-+	add	r12d,eax
-+	rol	edx,1
-+	and	ebx,esi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,ebx
-+	xor	ebp,DWORD[44+rsp]
-+	mov	eax,edi
-+	mov	DWORD[40+rsp],edx
-+	mov	ebx,edi
-+	xor	ebp,DWORD[52+rsp]
-+	and	eax,esi
-+	mov	ecx,r12d
-+	xor	ebp,DWORD[12+rsp]
-+	lea	r11d,[((-1894007588))+r11*1+rdx]
-+	xor	ebx,esi
-+	rol	ecx,5
-+	add	r11d,eax
-+	rol	ebp,1
-+	and	ebx,r13d
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,ebx
-+	xor	r14d,DWORD[48+rsp]
-+	mov	eax,esi
-+	mov	DWORD[44+rsp],ebp
-+	mov	ebx,esi
-+	xor	r14d,DWORD[56+rsp]
-+	and	eax,r13d
-+	mov	ecx,r11d
-+	xor	r14d,DWORD[16+rsp]
-+	lea	edi,[((-1894007588))+rdi*1+rbp]
-+	xor	ebx,r13d
-+	rol	ecx,5
-+	add	edi,eax
-+	rol	r14d,1
-+	and	ebx,r12d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,ebx
-+	xor	edx,DWORD[52+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[48+rsp],r14d
-+	mov	ebx,r13d
-+	xor	edx,DWORD[60+rsp]
-+	and	eax,r12d
-+	mov	ecx,edi
-+	xor	edx,DWORD[20+rsp]
-+	lea	esi,[((-1894007588))+rsi*1+r14]
-+	xor	ebx,r12d
-+	rol	ecx,5
-+	add	esi,eax
-+	rol	edx,1
-+	and	ebx,r11d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,ebx
-+	xor	ebp,DWORD[56+rsp]
-+	mov	eax,r12d
-+	mov	DWORD[52+rsp],edx
-+	mov	ebx,r12d
-+	xor	ebp,DWORD[rsp]
-+	and	eax,r11d
-+	mov	ecx,esi
-+	xor	ebp,DWORD[24+rsp]
-+	lea	r13d,[((-1894007588))+r13*1+rdx]
-+	xor	ebx,r11d
-+	rol	ecx,5
-+	add	r13d,eax
-+	rol	ebp,1
-+	and	ebx,edi
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,ebx
-+	xor	r14d,DWORD[60+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[56+rsp],ebp
-+	mov	ebx,r11d
-+	xor	r14d,DWORD[4+rsp]
-+	and	eax,edi
-+	mov	ecx,r13d
-+	xor	r14d,DWORD[28+rsp]
-+	lea	r12d,[((-1894007588))+r12*1+rbp]
-+	xor	ebx,edi
-+	rol	ecx,5
-+	add	r12d,eax
-+	rol	r14d,1
-+	and	ebx,esi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,ebx
-+	xor	edx,DWORD[rsp]
-+	mov	eax,edi
-+	mov	DWORD[60+rsp],r14d
-+	mov	ebx,edi
-+	xor	edx,DWORD[8+rsp]
-+	and	eax,esi
-+	mov	ecx,r12d
-+	xor	edx,DWORD[32+rsp]
-+	lea	r11d,[((-1894007588))+r11*1+r14]
-+	xor	ebx,esi
-+	rol	ecx,5
-+	add	r11d,eax
-+	rol	edx,1
-+	and	ebx,r13d
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,ebx
-+	xor	ebp,DWORD[4+rsp]
-+	mov	eax,esi
-+	mov	DWORD[rsp],edx
-+	mov	ebx,esi
-+	xor	ebp,DWORD[12+rsp]
-+	and	eax,r13d
-+	mov	ecx,r11d
-+	xor	ebp,DWORD[36+rsp]
-+	lea	edi,[((-1894007588))+rdi*1+rdx]
-+	xor	ebx,r13d
-+	rol	ecx,5
-+	add	edi,eax
-+	rol	ebp,1
-+	and	ebx,r12d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,ebx
-+	xor	r14d,DWORD[8+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[4+rsp],ebp
-+	mov	ebx,r13d
-+	xor	r14d,DWORD[16+rsp]
-+	and	eax,r12d
-+	mov	ecx,edi
-+	xor	r14d,DWORD[40+rsp]
-+	lea	esi,[((-1894007588))+rsi*1+rbp]
-+	xor	ebx,r12d
-+	rol	ecx,5
-+	add	esi,eax
-+	rol	r14d,1
-+	and	ebx,r11d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,ebx
-+	xor	edx,DWORD[12+rsp]
-+	mov	eax,r12d
-+	mov	DWORD[8+rsp],r14d
-+	mov	ebx,r12d
-+	xor	edx,DWORD[20+rsp]
-+	and	eax,r11d
-+	mov	ecx,esi
-+	xor	edx,DWORD[44+rsp]
-+	lea	r13d,[((-1894007588))+r13*1+r14]
-+	xor	ebx,r11d
-+	rol	ecx,5
-+	add	r13d,eax
-+	rol	edx,1
-+	and	ebx,edi
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,ebx
-+	xor	ebp,DWORD[16+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[12+rsp],edx
-+	mov	ebx,r11d
-+	xor	ebp,DWORD[24+rsp]
-+	and	eax,edi
-+	mov	ecx,r13d
-+	xor	ebp,DWORD[48+rsp]
-+	lea	r12d,[((-1894007588))+r12*1+rdx]
-+	xor	ebx,edi
-+	rol	ecx,5
-+	add	r12d,eax
-+	rol	ebp,1
-+	and	ebx,esi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,ebx
-+	xor	r14d,DWORD[20+rsp]
-+	mov	eax,edi
-+	mov	DWORD[16+rsp],ebp
-+	mov	ebx,edi
-+	xor	r14d,DWORD[28+rsp]
-+	and	eax,esi
-+	mov	ecx,r12d
-+	xor	r14d,DWORD[52+rsp]
-+	lea	r11d,[((-1894007588))+r11*1+rbp]
-+	xor	ebx,esi
-+	rol	ecx,5
-+	add	r11d,eax
-+	rol	r14d,1
-+	and	ebx,r13d
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,ebx
-+	xor	edx,DWORD[24+rsp]
-+	mov	eax,esi
-+	mov	DWORD[20+rsp],r14d
-+	mov	ebx,esi
-+	xor	edx,DWORD[32+rsp]
-+	and	eax,r13d
-+	mov	ecx,r11d
-+	xor	edx,DWORD[56+rsp]
-+	lea	edi,[((-1894007588))+rdi*1+r14]
-+	xor	ebx,r13d
-+	rol	ecx,5
-+	add	edi,eax
-+	rol	edx,1
-+	and	ebx,r12d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,ebx
-+	xor	ebp,DWORD[28+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[24+rsp],edx
-+	mov	ebx,r13d
-+	xor	ebp,DWORD[36+rsp]
-+	and	eax,r12d
-+	mov	ecx,edi
-+	xor	ebp,DWORD[60+rsp]
-+	lea	esi,[((-1894007588))+rsi*1+rdx]
-+	xor	ebx,r12d
-+	rol	ecx,5
-+	add	esi,eax
-+	rol	ebp,1
-+	and	ebx,r11d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,ebx
-+	xor	r14d,DWORD[32+rsp]
-+	mov	eax,r12d
-+	mov	DWORD[28+rsp],ebp
-+	mov	ebx,r12d
-+	xor	r14d,DWORD[40+rsp]
-+	and	eax,r11d
-+	mov	ecx,esi
-+	xor	r14d,DWORD[rsp]
-+	lea	r13d,[((-1894007588))+r13*1+rbp]
-+	xor	ebx,r11d
-+	rol	ecx,5
-+	add	r13d,eax
-+	rol	r14d,1
-+	and	ebx,edi
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,ebx
-+	xor	edx,DWORD[36+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[32+rsp],r14d
-+	mov	ebx,r11d
-+	xor	edx,DWORD[44+rsp]
-+	and	eax,edi
-+	mov	ecx,r13d
-+	xor	edx,DWORD[4+rsp]
-+	lea	r12d,[((-1894007588))+r12*1+r14]
-+	xor	ebx,edi
-+	rol	ecx,5
-+	add	r12d,eax
-+	rol	edx,1
-+	and	ebx,esi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,ebx
-+	xor	ebp,DWORD[40+rsp]
-+	mov	eax,edi
-+	mov	DWORD[36+rsp],edx
-+	mov	ebx,edi
-+	xor	ebp,DWORD[48+rsp]
-+	and	eax,esi
-+	mov	ecx,r12d
-+	xor	ebp,DWORD[8+rsp]
-+	lea	r11d,[((-1894007588))+r11*1+rdx]
-+	xor	ebx,esi
-+	rol	ecx,5
-+	add	r11d,eax
-+	rol	ebp,1
-+	and	ebx,r13d
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,ebx
-+	xor	r14d,DWORD[44+rsp]
-+	mov	eax,esi
-+	mov	DWORD[40+rsp],ebp
-+	mov	ebx,esi
-+	xor	r14d,DWORD[52+rsp]
-+	and	eax,r13d
-+	mov	ecx,r11d
-+	xor	r14d,DWORD[12+rsp]
-+	lea	edi,[((-1894007588))+rdi*1+rbp]
-+	xor	ebx,r13d
-+	rol	ecx,5
-+	add	edi,eax
-+	rol	r14d,1
-+	and	ebx,r12d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,ebx
-+	xor	edx,DWORD[48+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[44+rsp],r14d
-+	mov	ebx,r13d
-+	xor	edx,DWORD[56+rsp]
-+	and	eax,r12d
-+	mov	ecx,edi
-+	xor	edx,DWORD[16+rsp]
-+	lea	esi,[((-1894007588))+rsi*1+r14]
-+	xor	ebx,r12d
-+	rol	ecx,5
-+	add	esi,eax
-+	rol	edx,1
-+	and	ebx,r11d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,ebx
-+	xor	ebp,DWORD[52+rsp]
-+	mov	eax,edi
-+	mov	DWORD[48+rsp],edx
-+	mov	ecx,esi
-+	xor	ebp,DWORD[60+rsp]
-+	xor	eax,r12d
-+	rol	ecx,5
-+	xor	ebp,DWORD[20+rsp]
-+	lea	r13d,[((-899497514))+r13*1+rdx]
-+	xor	eax,r11d
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[56+rsp]
-+	mov	eax,esi
-+	mov	DWORD[52+rsp],ebp
-+	mov	ecx,r13d
-+	xor	r14d,DWORD[rsp]
-+	xor	eax,r11d
-+	rol	ecx,5
-+	xor	r14d,DWORD[24+rsp]
-+	lea	r12d,[((-899497514))+r12*1+rbp]
-+	xor	eax,edi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[60+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[56+rsp],r14d
-+	mov	ecx,r12d
-+	xor	edx,DWORD[4+rsp]
-+	xor	eax,edi
-+	rol	ecx,5
-+	xor	edx,DWORD[28+rsp]
-+	lea	r11d,[((-899497514))+r11*1+r14]
-+	xor	eax,esi
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[rsp]
-+	mov	eax,r12d
-+	mov	DWORD[60+rsp],edx
-+	mov	ecx,r11d
-+	xor	ebp,DWORD[8+rsp]
-+	xor	eax,esi
-+	rol	ecx,5
-+	xor	ebp,DWORD[32+rsp]
-+	lea	edi,[((-899497514))+rdi*1+rdx]
-+	xor	eax,r13d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[4+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[rsp],ebp
-+	mov	ecx,edi
-+	xor	r14d,DWORD[12+rsp]
-+	xor	eax,r13d
-+	rol	ecx,5
-+	xor	r14d,DWORD[36+rsp]
-+	lea	esi,[((-899497514))+rsi*1+rbp]
-+	xor	eax,r12d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[8+rsp]
-+	mov	eax,edi
-+	mov	DWORD[4+rsp],r14d
-+	mov	ecx,esi
-+	xor	edx,DWORD[16+rsp]
-+	xor	eax,r12d
-+	rol	ecx,5
-+	xor	edx,DWORD[40+rsp]
-+	lea	r13d,[((-899497514))+r13*1+r14]
-+	xor	eax,r11d
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[12+rsp]
-+	mov	eax,esi
-+	mov	DWORD[8+rsp],edx
-+	mov	ecx,r13d
-+	xor	ebp,DWORD[20+rsp]
-+	xor	eax,r11d
-+	rol	ecx,5
-+	xor	ebp,DWORD[44+rsp]
-+	lea	r12d,[((-899497514))+r12*1+rdx]
-+	xor	eax,edi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[16+rsp]
-+	mov	eax,r13d
-+	mov	DWORD[12+rsp],ebp
-+	mov	ecx,r12d
-+	xor	r14d,DWORD[24+rsp]
-+	xor	eax,edi
-+	rol	ecx,5
-+	xor	r14d,DWORD[48+rsp]
-+	lea	r11d,[((-899497514))+r11*1+rbp]
-+	xor	eax,esi
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[20+rsp]
-+	mov	eax,r12d
-+	mov	DWORD[16+rsp],r14d
-+	mov	ecx,r11d
-+	xor	edx,DWORD[28+rsp]
-+	xor	eax,esi
-+	rol	ecx,5
-+	xor	edx,DWORD[52+rsp]
-+	lea	edi,[((-899497514))+rdi*1+r14]
-+	xor	eax,r13d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[24+rsp]
-+	mov	eax,r11d
-+	mov	DWORD[20+rsp],edx
-+	mov	ecx,edi
-+	xor	ebp,DWORD[32+rsp]
-+	xor	eax,r13d
-+	rol	ecx,5
-+	xor	ebp,DWORD[56+rsp]
-+	lea	esi,[((-899497514))+rsi*1+rdx]
-+	xor	eax,r12d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[28+rsp]
-+	mov	eax,edi
-+	mov	DWORD[24+rsp],ebp
-+	mov	ecx,esi
-+	xor	r14d,DWORD[36+rsp]
-+	xor	eax,r12d
-+	rol	ecx,5
-+	xor	r14d,DWORD[60+rsp]
-+	lea	r13d,[((-899497514))+r13*1+rbp]
-+	xor	eax,r11d
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[32+rsp]
-+	mov	eax,esi
-+	mov	DWORD[28+rsp],r14d
-+	mov	ecx,r13d
-+	xor	edx,DWORD[40+rsp]
-+	xor	eax,r11d
-+	rol	ecx,5
-+	xor	edx,DWORD[rsp]
-+	lea	r12d,[((-899497514))+r12*1+r14]
-+	xor	eax,edi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[36+rsp]
-+	mov	eax,r13d
-+
-+	mov	ecx,r12d
-+	xor	ebp,DWORD[44+rsp]
-+	xor	eax,edi
-+	rol	ecx,5
-+	xor	ebp,DWORD[4+rsp]
-+	lea	r11d,[((-899497514))+r11*1+rdx]
-+	xor	eax,esi
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[40+rsp]
-+	mov	eax,r12d
-+
-+	mov	ecx,r11d
-+	xor	r14d,DWORD[48+rsp]
-+	xor	eax,esi
-+	rol	ecx,5
-+	xor	r14d,DWORD[8+rsp]
-+	lea	edi,[((-899497514))+rdi*1+rbp]
-+	xor	eax,r13d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[44+rsp]
-+	mov	eax,r11d
-+
-+	mov	ecx,edi
-+	xor	edx,DWORD[52+rsp]
-+	xor	eax,r13d
-+	rol	ecx,5
-+	xor	edx,DWORD[12+rsp]
-+	lea	esi,[((-899497514))+rsi*1+r14]
-+	xor	eax,r12d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[48+rsp]
-+	mov	eax,edi
-+
-+	mov	ecx,esi
-+	xor	ebp,DWORD[56+rsp]
-+	xor	eax,r12d
-+	rol	ecx,5
-+	xor	ebp,DWORD[16+rsp]
-+	lea	r13d,[((-899497514))+r13*1+rdx]
-+	xor	eax,r11d
-+	add	r13d,ecx
-+	rol	edi,30
-+	add	r13d,eax
-+	rol	ebp,1
-+	xor	r14d,DWORD[52+rsp]
-+	mov	eax,esi
-+
-+	mov	ecx,r13d
-+	xor	r14d,DWORD[60+rsp]
-+	xor	eax,r11d
-+	rol	ecx,5
-+	xor	r14d,DWORD[20+rsp]
-+	lea	r12d,[((-899497514))+r12*1+rbp]
-+	xor	eax,edi
-+	add	r12d,ecx
-+	rol	esi,30
-+	add	r12d,eax
-+	rol	r14d,1
-+	xor	edx,DWORD[56+rsp]
-+	mov	eax,r13d
-+
-+	mov	ecx,r12d
-+	xor	edx,DWORD[rsp]
-+	xor	eax,edi
-+	rol	ecx,5
-+	xor	edx,DWORD[24+rsp]
-+	lea	r11d,[((-899497514))+r11*1+r14]
-+	xor	eax,esi
-+	add	r11d,ecx
-+	rol	r13d,30
-+	add	r11d,eax
-+	rol	edx,1
-+	xor	ebp,DWORD[60+rsp]
-+	mov	eax,r12d
-+
-+	mov	ecx,r11d
-+	xor	ebp,DWORD[4+rsp]
-+	xor	eax,esi
-+	rol	ecx,5
-+	xor	ebp,DWORD[28+rsp]
-+	lea	edi,[((-899497514))+rdi*1+rdx]
-+	xor	eax,r13d
-+	add	edi,ecx
-+	rol	r12d,30
-+	add	edi,eax
-+	rol	ebp,1
-+	mov	eax,r11d
-+	mov	ecx,edi
-+	xor	eax,r13d
-+	lea	esi,[((-899497514))+rsi*1+rbp]
-+	rol	ecx,5
-+	xor	eax,r12d
-+	add	esi,ecx
-+	rol	r11d,30
-+	add	esi,eax
-+	add	esi,DWORD[r8]
-+	add	edi,DWORD[4+r8]
-+	add	r11d,DWORD[8+r8]
-+	add	r12d,DWORD[12+r8]
-+	add	r13d,DWORD[16+r8]
-+	mov	DWORD[r8],esi
-+	mov	DWORD[4+r8],edi
-+	mov	DWORD[8+r8],r11d
-+	mov	DWORD[12+r8],r12d
-+	mov	DWORD[16+r8],r13d
-+
-+	sub	r10,1
-+	lea	r9,[64+r9]
-+	jnz	NEAR $L$loop
-+
-+	mov	rsi,QWORD[64+rsp]
-+	mov	r14,QWORD[((-40))+rsi]
-+	mov	r13,QWORD[((-32))+rsi]
-+	mov	r12,QWORD[((-24))+rsi]
-+	mov	rbp,QWORD[((-16))+rsi]
-+	mov	rbx,QWORD[((-8))+rsi]
-+	lea	rsp,[rsi]
-+$L$epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha1_block_data_order:
-+
-+ALIGN	32
-+sha1_block_data_order_shaext:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha1_block_data_order_shaext:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+_shaext_shortcut:
-+	lea	rsp,[((-72))+rsp]
-+	movaps	XMMWORD[(-8-64)+rax],xmm6
-+	movaps	XMMWORD[(-8-48)+rax],xmm7
-+	movaps	XMMWORD[(-8-32)+rax],xmm8
-+	movaps	XMMWORD[(-8-16)+rax],xmm9
-+$L$prologue_shaext:
-+	movdqu	xmm0,XMMWORD[rdi]
-+	movd	xmm1,DWORD[16+rdi]
-+	movdqa	xmm3,XMMWORD[((K_XX_XX+160))]
-+
-+	movdqu	xmm4,XMMWORD[rsi]
-+	pshufd	xmm0,xmm0,27
-+	movdqu	xmm5,XMMWORD[16+rsi]
-+	pshufd	xmm1,xmm1,27
-+	movdqu	xmm6,XMMWORD[32+rsi]
-+DB	102,15,56,0,227
-+	movdqu	xmm7,XMMWORD[48+rsi]
-+DB	102,15,56,0,235
-+DB	102,15,56,0,243
-+	movdqa	xmm9,xmm1
-+DB	102,15,56,0,251
-+	jmp	NEAR $L$oop_shaext
-+
-+ALIGN	16
-+$L$oop_shaext:
-+	dec	rdx
-+	lea	r8,[64+rsi]
-+	paddd	xmm1,xmm4
-+	cmovne	rsi,r8
-+	movdqa	xmm8,xmm0
-+DB	15,56,201,229
-+	movdqa	xmm2,xmm0
-+DB	15,58,204,193,0
-+DB	15,56,200,213
-+	pxor	xmm4,xmm6
-+DB	15,56,201,238
-+DB	15,56,202,231
-+
-+	movdqa	xmm1,xmm0
-+DB	15,58,204,194,0
-+DB	15,56,200,206
-+	pxor	xmm5,xmm7
-+DB	15,56,202,236
-+DB	15,56,201,247
-+	movdqa	xmm2,xmm0
-+DB	15,58,204,193,0
-+DB	15,56,200,215
-+	pxor	xmm6,xmm4
-+DB	15,56,201,252
-+DB	15,56,202,245
-+
-+	movdqa	xmm1,xmm0
-+DB	15,58,204,194,0
-+DB	15,56,200,204
-+	pxor	xmm7,xmm5
-+DB	15,56,202,254
-+DB	15,56,201,229
-+	movdqa	xmm2,xmm0
-+DB	15,58,204,193,0
-+DB	15,56,200,213
-+	pxor	xmm4,xmm6
-+DB	15,56,201,238
-+DB	15,56,202,231
-+
-+	movdqa	xmm1,xmm0
-+DB	15,58,204,194,1
-+DB	15,56,200,206
-+	pxor	xmm5,xmm7
-+DB	15,56,202,236
-+DB	15,56,201,247
-+	movdqa	xmm2,xmm0
-+DB	15,58,204,193,1
-+DB	15,56,200,215
-+	pxor	xmm6,xmm4
-+DB	15,56,201,252
-+DB	15,56,202,245
-+
-+	movdqa	xmm1,xmm0
-+DB	15,58,204,194,1
-+DB	15,56,200,204
-+	pxor	xmm7,xmm5
-+DB	15,56,202,254
-+DB	15,56,201,229
-+	movdqa	xmm2,xmm0
-+DB	15,58,204,193,1
-+DB	15,56,200,213
-+	pxor	xmm4,xmm6
-+DB	15,56,201,238
-+DB	15,56,202,231
-+
-+	movdqa	xmm1,xmm0
-+DB	15,58,204,194,1
-+DB	15,56,200,206
-+	pxor	xmm5,xmm7
-+DB	15,56,202,236
-+DB	15,56,201,247
-+	movdqa	xmm2,xmm0
-+DB	15,58,204,193,2
-+DB	15,56,200,215
-+	pxor	xmm6,xmm4
-+DB	15,56,201,252
-+DB	15,56,202,245
-+
-+	movdqa	xmm1,xmm0
-+DB	15,58,204,194,2
-+DB	15,56,200,204
-+	pxor	xmm7,xmm5
-+DB	15,56,202,254
-+DB	15,56,201,229
-+	movdqa	xmm2,xmm0
-+DB	15,58,204,193,2
-+DB	15,56,200,213
-+	pxor	xmm4,xmm6
-+DB	15,56,201,238
-+DB	15,56,202,231
-+
-+	movdqa	xmm1,xmm0
-+DB	15,58,204,194,2
-+DB	15,56,200,206
-+	pxor	xmm5,xmm7
-+DB	15,56,202,236
-+DB	15,56,201,247
-+	movdqa	xmm2,xmm0
-+DB	15,58,204,193,2
-+DB	15,56,200,215
-+	pxor	xmm6,xmm4
-+DB	15,56,201,252
-+DB	15,56,202,245
-+
-+	movdqa	xmm1,xmm0
-+DB	15,58,204,194,3
-+DB	15,56,200,204
-+	pxor	xmm7,xmm5
-+DB	15,56,202,254
-+	movdqu	xmm4,XMMWORD[rsi]
-+	movdqa	xmm2,xmm0
-+DB	15,58,204,193,3
-+DB	15,56,200,213
-+	movdqu	xmm5,XMMWORD[16+rsi]
-+DB	102,15,56,0,227
-+
-+	movdqa	xmm1,xmm0
-+DB	15,58,204,194,3
-+DB	15,56,200,206
-+	movdqu	xmm6,XMMWORD[32+rsi]
-+DB	102,15,56,0,235
-+
-+	movdqa	xmm2,xmm0
-+DB	15,58,204,193,3
-+DB	15,56,200,215
-+	movdqu	xmm7,XMMWORD[48+rsi]
-+DB	102,15,56,0,243
-+
-+	movdqa	xmm1,xmm0
-+DB	15,58,204,194,3
-+DB	65,15,56,200,201
-+DB	102,15,56,0,251
-+
-+	paddd	xmm0,xmm8
-+	movdqa	xmm9,xmm1
-+
-+	jnz	NEAR $L$oop_shaext
-+
-+	pshufd	xmm0,xmm0,27
-+	pshufd	xmm1,xmm1,27
-+	movdqu	XMMWORD[rdi],xmm0
-+	movd	DWORD[16+rdi],xmm1
-+	movaps	xmm6,XMMWORD[((-8-64))+rax]
-+	movaps	xmm7,XMMWORD[((-8-48))+rax]
-+	movaps	xmm8,XMMWORD[((-8-32))+rax]
-+	movaps	xmm9,XMMWORD[((-8-16))+rax]
-+	mov	rsp,rax
-+$L$epilogue_shaext:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha1_block_data_order_shaext:
-+
-+ALIGN	16
-+sha1_block_data_order_ssse3:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha1_block_data_order_ssse3:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+_ssse3_shortcut:
-+	mov	rax,rsp
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	lea	rsp,[((-160))+rsp]
-+	movaps	XMMWORD[(-40-96)+rax],xmm6
-+	movaps	XMMWORD[(-40-80)+rax],xmm7
-+	movaps	XMMWORD[(-40-64)+rax],xmm8
-+	movaps	XMMWORD[(-40-48)+rax],xmm9
-+	movaps	XMMWORD[(-40-32)+rax],xmm10
-+	movaps	XMMWORD[(-40-16)+rax],xmm11
-+$L$prologue_ssse3:
-+	mov	r14,rax
-+	and	rsp,-64
-+	mov	r8,rdi
-+	mov	r9,rsi
-+	mov	r10,rdx
-+
-+	shl	r10,6
-+	add	r10,r9
-+	lea	r11,[((K_XX_XX+64))]
-+
-+	mov	eax,DWORD[r8]
-+	mov	ebx,DWORD[4+r8]
-+	mov	ecx,DWORD[8+r8]
-+	mov	edx,DWORD[12+r8]
-+	mov	esi,ebx
-+	mov	ebp,DWORD[16+r8]
-+	mov	edi,ecx
-+	xor	edi,edx
-+	and	esi,edi
-+
-+	movdqa	xmm6,XMMWORD[64+r11]
-+	movdqa	xmm9,XMMWORD[((-64))+r11]
-+	movdqu	xmm0,XMMWORD[r9]
-+	movdqu	xmm1,XMMWORD[16+r9]
-+	movdqu	xmm2,XMMWORD[32+r9]
-+	movdqu	xmm3,XMMWORD[48+r9]
-+DB	102,15,56,0,198
-+DB	102,15,56,0,206
-+DB	102,15,56,0,214
-+	add	r9,64
-+	paddd	xmm0,xmm9
-+DB	102,15,56,0,222
-+	paddd	xmm1,xmm9
-+	paddd	xmm2,xmm9
-+	movdqa	XMMWORD[rsp],xmm0
-+	psubd	xmm0,xmm9
-+	movdqa	XMMWORD[16+rsp],xmm1
-+	psubd	xmm1,xmm9
-+	movdqa	XMMWORD[32+rsp],xmm2
-+	psubd	xmm2,xmm9
-+	jmp	NEAR $L$oop_ssse3
-+ALIGN	16
-+$L$oop_ssse3:
-+	ror	ebx,2
-+	pshufd	xmm4,xmm0,238
-+	xor	esi,edx
-+	movdqa	xmm8,xmm3
-+	paddd	xmm9,xmm3
-+	mov	edi,eax
-+	add	ebp,DWORD[rsp]
-+	punpcklqdq	xmm4,xmm1
-+	xor	ebx,ecx
-+	rol	eax,5
-+	add	ebp,esi
-+	psrldq	xmm8,4
-+	and	edi,ebx
-+	xor	ebx,ecx
-+	pxor	xmm4,xmm0
-+	add	ebp,eax
-+	ror	eax,7
-+	pxor	xmm8,xmm2
-+	xor	edi,ecx
-+	mov	esi,ebp
-+	add	edx,DWORD[4+rsp]
-+	pxor	xmm4,xmm8
-+	xor	eax,ebx
-+	rol	ebp,5
-+	movdqa	XMMWORD[48+rsp],xmm9
-+	add	edx,edi
-+	and	esi,eax
-+	movdqa	xmm10,xmm4
-+	xor	eax,ebx
-+	add	edx,ebp
-+	ror	ebp,7
-+	movdqa	xmm8,xmm4
-+	xor	esi,ebx
-+	pslldq	xmm10,12
-+	paddd	xmm4,xmm4
-+	mov	edi,edx
-+	add	ecx,DWORD[8+rsp]
-+	psrld	xmm8,31
-+	xor	ebp,eax
-+	rol	edx,5
-+	add	ecx,esi
-+	movdqa	xmm9,xmm10
-+	and	edi,ebp
-+	xor	ebp,eax
-+	psrld	xmm10,30
-+	add	ecx,edx
-+	ror	edx,7
-+	por	xmm4,xmm8
-+	xor	edi,eax
-+	mov	esi,ecx
-+	add	ebx,DWORD[12+rsp]
-+	pslld	xmm9,2
-+	pxor	xmm4,xmm10
-+	xor	edx,ebp
-+	movdqa	xmm10,XMMWORD[((-64))+r11]
-+	rol	ecx,5
-+	add	ebx,edi
-+	and	esi,edx
-+	pxor	xmm4,xmm9
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	ror	ecx,7
-+	pshufd	xmm5,xmm1,238
-+	xor	esi,ebp
-+	movdqa	xmm9,xmm4
-+	paddd	xmm10,xmm4
-+	mov	edi,ebx
-+	add	eax,DWORD[16+rsp]
-+	punpcklqdq	xmm5,xmm2
-+	xor	ecx,edx
-+	rol	ebx,5
-+	add	eax,esi
-+	psrldq	xmm9,4
-+	and	edi,ecx
-+	xor	ecx,edx
-+	pxor	xmm5,xmm1
-+	add	eax,ebx
-+	ror	ebx,7
-+	pxor	xmm9,xmm3
-+	xor	edi,edx
-+	mov	esi,eax
-+	add	ebp,DWORD[20+rsp]
-+	pxor	xmm5,xmm9
-+	xor	ebx,ecx
-+	rol	eax,5
-+	movdqa	XMMWORD[rsp],xmm10
-+	add	ebp,edi
-+	and	esi,ebx
-+	movdqa	xmm8,xmm5
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	ror	eax,7
-+	movdqa	xmm9,xmm5
-+	xor	esi,ecx
-+	pslldq	xmm8,12
-+	paddd	xmm5,xmm5
-+	mov	edi,ebp
-+	add	edx,DWORD[24+rsp]
-+	psrld	xmm9,31
-+	xor	eax,ebx
-+	rol	ebp,5
-+	add	edx,esi
-+	movdqa	xmm10,xmm8
-+	and	edi,eax
-+	xor	eax,ebx
-+	psrld	xmm8,30
-+	add	edx,ebp
-+	ror	ebp,7
-+	por	xmm5,xmm9
-+	xor	edi,ebx
-+	mov	esi,edx
-+	add	ecx,DWORD[28+rsp]
-+	pslld	xmm10,2
-+	pxor	xmm5,xmm8
-+	xor	ebp,eax
-+	movdqa	xmm8,XMMWORD[((-32))+r11]
-+	rol	edx,5
-+	add	ecx,edi
-+	and	esi,ebp
-+	pxor	xmm5,xmm10
-+	xor	ebp,eax
-+	add	ecx,edx
-+	ror	edx,7
-+	pshufd	xmm6,xmm2,238
-+	xor	esi,eax
-+	movdqa	xmm10,xmm5
-+	paddd	xmm8,xmm5
-+	mov	edi,ecx
-+	add	ebx,DWORD[32+rsp]
-+	punpcklqdq	xmm6,xmm3
-+	xor	edx,ebp
-+	rol	ecx,5
-+	add	ebx,esi
-+	psrldq	xmm10,4
-+	and	edi,edx
-+	xor	edx,ebp
-+	pxor	xmm6,xmm2
-+	add	ebx,ecx
-+	ror	ecx,7
-+	pxor	xmm10,xmm4
-+	xor	edi,ebp
-+	mov	esi,ebx
-+	add	eax,DWORD[36+rsp]
-+	pxor	xmm6,xmm10
-+	xor	ecx,edx
-+	rol	ebx,5
-+	movdqa	XMMWORD[16+rsp],xmm8
-+	add	eax,edi
-+	and	esi,ecx
-+	movdqa	xmm9,xmm6
-+	xor	ecx,edx
-+	add	eax,ebx
-+	ror	ebx,7
-+	movdqa	xmm10,xmm6
-+	xor	esi,edx
-+	pslldq	xmm9,12
-+	paddd	xmm6,xmm6
-+	mov	edi,eax
-+	add	ebp,DWORD[40+rsp]
-+	psrld	xmm10,31
-+	xor	ebx,ecx
-+	rol	eax,5
-+	add	ebp,esi
-+	movdqa	xmm8,xmm9
-+	and	edi,ebx
-+	xor	ebx,ecx
-+	psrld	xmm9,30
-+	add	ebp,eax
-+	ror	eax,7
-+	por	xmm6,xmm10
-+	xor	edi,ecx
-+	mov	esi,ebp
-+	add	edx,DWORD[44+rsp]
-+	pslld	xmm8,2
-+	pxor	xmm6,xmm9
-+	xor	eax,ebx
-+	movdqa	xmm9,XMMWORD[((-32))+r11]
-+	rol	ebp,5
-+	add	edx,edi
-+	and	esi,eax
-+	pxor	xmm6,xmm8
-+	xor	eax,ebx
-+	add	edx,ebp
-+	ror	ebp,7
-+	pshufd	xmm7,xmm3,238
-+	xor	esi,ebx
-+	movdqa	xmm8,xmm6
-+	paddd	xmm9,xmm6
-+	mov	edi,edx
-+	add	ecx,DWORD[48+rsp]
-+	punpcklqdq	xmm7,xmm4
-+	xor	ebp,eax
-+	rol	edx,5
-+	add	ecx,esi
-+	psrldq	xmm8,4
-+	and	edi,ebp
-+	xor	ebp,eax
-+	pxor	xmm7,xmm3
-+	add	ecx,edx
-+	ror	edx,7
-+	pxor	xmm8,xmm5
-+	xor	edi,eax
-+	mov	esi,ecx
-+	add	ebx,DWORD[52+rsp]
-+	pxor	xmm7,xmm8
-+	xor	edx,ebp
-+	rol	ecx,5
-+	movdqa	XMMWORD[32+rsp],xmm9
-+	add	ebx,edi
-+	and	esi,edx
-+	movdqa	xmm10,xmm7
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	ror	ecx,7
-+	movdqa	xmm8,xmm7
-+	xor	esi,ebp
-+	pslldq	xmm10,12
-+	paddd	xmm7,xmm7
-+	mov	edi,ebx
-+	add	eax,DWORD[56+rsp]
-+	psrld	xmm8,31
-+	xor	ecx,edx
-+	rol	ebx,5
-+	add	eax,esi
-+	movdqa	xmm9,xmm10
-+	and	edi,ecx
-+	xor	ecx,edx
-+	psrld	xmm10,30
-+	add	eax,ebx
-+	ror	ebx,7
-+	por	xmm7,xmm8
-+	xor	edi,edx
-+	mov	esi,eax
-+	add	ebp,DWORD[60+rsp]
-+	pslld	xmm9,2
-+	pxor	xmm7,xmm10
-+	xor	ebx,ecx
-+	movdqa	xmm10,XMMWORD[((-32))+r11]
-+	rol	eax,5
-+	add	ebp,edi
-+	and	esi,ebx
-+	pxor	xmm7,xmm9
-+	pshufd	xmm9,xmm6,238
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	ror	eax,7
-+	pxor	xmm0,xmm4
-+	xor	esi,ecx
-+	mov	edi,ebp
-+	add	edx,DWORD[rsp]
-+	punpcklqdq	xmm9,xmm7
-+	xor	eax,ebx
-+	rol	ebp,5
-+	pxor	xmm0,xmm1
-+	add	edx,esi
-+	and	edi,eax
-+	movdqa	xmm8,xmm10
-+	xor	eax,ebx
-+	paddd	xmm10,xmm7
-+	add	edx,ebp
-+	pxor	xmm0,xmm9
-+	ror	ebp,7
-+	xor	edi,ebx
-+	mov	esi,edx
-+	add	ecx,DWORD[4+rsp]
-+	movdqa	xmm9,xmm0
-+	xor	ebp,eax
-+	rol	edx,5
-+	movdqa	XMMWORD[48+rsp],xmm10
-+	add	ecx,edi
-+	and	esi,ebp
-+	xor	ebp,eax
-+	pslld	xmm0,2
-+	add	ecx,edx
-+	ror	edx,7
-+	psrld	xmm9,30
-+	xor	esi,eax
-+	mov	edi,ecx
-+	add	ebx,DWORD[8+rsp]
-+	por	xmm0,xmm9
-+	xor	edx,ebp
-+	rol	ecx,5
-+	pshufd	xmm10,xmm7,238
-+	add	ebx,esi
-+	and	edi,edx
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	add	eax,DWORD[12+rsp]
-+	xor	edi,ebp
-+	mov	esi,ebx
-+	rol	ebx,5
-+	add	eax,edi
-+	xor	esi,edx
-+	ror	ecx,7
-+	add	eax,ebx
-+	pxor	xmm1,xmm5
-+	add	ebp,DWORD[16+rsp]
-+	xor	esi,ecx
-+	punpcklqdq	xmm10,xmm0
-+	mov	edi,eax
-+	rol	eax,5
-+	pxor	xmm1,xmm2
-+	add	ebp,esi
-+	xor	edi,ecx
-+	movdqa	xmm9,xmm8
-+	ror	ebx,7
-+	paddd	xmm8,xmm0
-+	add	ebp,eax
-+	pxor	xmm1,xmm10
-+	add	edx,DWORD[20+rsp]
-+	xor	edi,ebx
-+	mov	esi,ebp
-+	rol	ebp,5
-+	movdqa	xmm10,xmm1
-+	add	edx,edi
-+	xor	esi,ebx
-+	movdqa	XMMWORD[rsp],xmm8
-+	ror	eax,7
-+	add	edx,ebp
-+	add	ecx,DWORD[24+rsp]
-+	pslld	xmm1,2
-+	xor	esi,eax
-+	mov	edi,edx
-+	psrld	xmm10,30
-+	rol	edx,5
-+	add	ecx,esi
-+	xor	edi,eax
-+	ror	ebp,7
-+	por	xmm1,xmm10
-+	add	ecx,edx
-+	add	ebx,DWORD[28+rsp]
-+	pshufd	xmm8,xmm0,238
-+	xor	edi,ebp
-+	mov	esi,ecx
-+	rol	ecx,5
-+	add	ebx,edi
-+	xor	esi,ebp
-+	ror	edx,7
-+	add	ebx,ecx
-+	pxor	xmm2,xmm6
-+	add	eax,DWORD[32+rsp]
-+	xor	esi,edx
-+	punpcklqdq	xmm8,xmm1
-+	mov	edi,ebx
-+	rol	ebx,5
-+	pxor	xmm2,xmm3
-+	add	eax,esi
-+	xor	edi,edx
-+	movdqa	xmm10,XMMWORD[r11]
-+	ror	ecx,7
-+	paddd	xmm9,xmm1
-+	add	eax,ebx
-+	pxor	xmm2,xmm8
-+	add	ebp,DWORD[36+rsp]
-+	xor	edi,ecx
-+	mov	esi,eax
-+	rol	eax,5
-+	movdqa	xmm8,xmm2
-+	add	ebp,edi
-+	xor	esi,ecx
-+	movdqa	XMMWORD[16+rsp],xmm9
-+	ror	ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[40+rsp]
-+	pslld	xmm2,2
-+	xor	esi,ebx
-+	mov	edi,ebp
-+	psrld	xmm8,30
-+	rol	ebp,5
-+	add	edx,esi
-+	xor	edi,ebx
-+	ror	eax,7
-+	por	xmm2,xmm8
-+	add	edx,ebp
-+	add	ecx,DWORD[44+rsp]
-+	pshufd	xmm9,xmm1,238
-+	xor	edi,eax
-+	mov	esi,edx
-+	rol	edx,5
-+	add	ecx,edi
-+	xor	esi,eax
-+	ror	ebp,7
-+	add	ecx,edx
-+	pxor	xmm3,xmm7
-+	add	ebx,DWORD[48+rsp]
-+	xor	esi,ebp
-+	punpcklqdq	xmm9,xmm2
-+	mov	edi,ecx
-+	rol	ecx,5
-+	pxor	xmm3,xmm4
-+	add	ebx,esi
-+	xor	edi,ebp
-+	movdqa	xmm8,xmm10
-+	ror	edx,7
-+	paddd	xmm10,xmm2
-+	add	ebx,ecx
-+	pxor	xmm3,xmm9
-+	add	eax,DWORD[52+rsp]
-+	xor	edi,edx
-+	mov	esi,ebx
-+	rol	ebx,5
-+	movdqa	xmm9,xmm3
-+	add	eax,edi
-+	xor	esi,edx
-+	movdqa	XMMWORD[32+rsp],xmm10
-+	ror	ecx,7
-+	add	eax,ebx
-+	add	ebp,DWORD[56+rsp]
-+	pslld	xmm3,2
-+	xor	esi,ecx
-+	mov	edi,eax
-+	psrld	xmm9,30
-+	rol	eax,5
-+	add	ebp,esi
-+	xor	edi,ecx
-+	ror	ebx,7
-+	por	xmm3,xmm9
-+	add	ebp,eax
-+	add	edx,DWORD[60+rsp]
-+	pshufd	xmm10,xmm2,238
-+	xor	edi,ebx
-+	mov	esi,ebp
-+	rol	ebp,5
-+	add	edx,edi
-+	xor	esi,ebx
-+	ror	eax,7
-+	add	edx,ebp
-+	pxor	xmm4,xmm0
-+	add	ecx,DWORD[rsp]
-+	xor	esi,eax
-+	punpcklqdq	xmm10,xmm3
-+	mov	edi,edx
-+	rol	edx,5
-+	pxor	xmm4,xmm5
-+	add	ecx,esi
-+	xor	edi,eax
-+	movdqa	xmm9,xmm8
-+	ror	ebp,7
-+	paddd	xmm8,xmm3
-+	add	ecx,edx
-+	pxor	xmm4,xmm10
-+	add	ebx,DWORD[4+rsp]
-+	xor	edi,ebp
-+	mov	esi,ecx
-+	rol	ecx,5
-+	movdqa	xmm10,xmm4
-+	add	ebx,edi
-+	xor	esi,ebp
-+	movdqa	XMMWORD[48+rsp],xmm8
-+	ror	edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[8+rsp]
-+	pslld	xmm4,2
-+	xor	esi,edx
-+	mov	edi,ebx
-+	psrld	xmm10,30
-+	rol	ebx,5
-+	add	eax,esi
-+	xor	edi,edx
-+	ror	ecx,7
-+	por	xmm4,xmm10
-+	add	eax,ebx
-+	add	ebp,DWORD[12+rsp]
-+	pshufd	xmm8,xmm3,238
-+	xor	edi,ecx
-+	mov	esi,eax
-+	rol	eax,5
-+	add	ebp,edi
-+	xor	esi,ecx
-+	ror	ebx,7
-+	add	ebp,eax
-+	pxor	xmm5,xmm1
-+	add	edx,DWORD[16+rsp]
-+	xor	esi,ebx
-+	punpcklqdq	xmm8,xmm4
-+	mov	edi,ebp
-+	rol	ebp,5
-+	pxor	xmm5,xmm6
-+	add	edx,esi
-+	xor	edi,ebx
-+	movdqa	xmm10,xmm9
-+	ror	eax,7
-+	paddd	xmm9,xmm4
-+	add	edx,ebp
-+	pxor	xmm5,xmm8
-+	add	ecx,DWORD[20+rsp]
-+	xor	edi,eax
-+	mov	esi,edx
-+	rol	edx,5
-+	movdqa	xmm8,xmm5
-+	add	ecx,edi
-+	xor	esi,eax
-+	movdqa	XMMWORD[rsp],xmm9
-+	ror	ebp,7
-+	add	ecx,edx
-+	add	ebx,DWORD[24+rsp]
-+	pslld	xmm5,2
-+	xor	esi,ebp
-+	mov	edi,ecx
-+	psrld	xmm8,30
-+	rol	ecx,5
-+	add	ebx,esi
-+	xor	edi,ebp
-+	ror	edx,7
-+	por	xmm5,xmm8
-+	add	ebx,ecx
-+	add	eax,DWORD[28+rsp]
-+	pshufd	xmm9,xmm4,238
-+	ror	ecx,7
-+	mov	esi,ebx
-+	xor	edi,edx
-+	rol	ebx,5
-+	add	eax,edi
-+	xor	esi,ecx
-+	xor	ecx,edx
-+	add	eax,ebx
-+	pxor	xmm6,xmm2
-+	add	ebp,DWORD[32+rsp]
-+	and	esi,ecx
-+	xor	ecx,edx
-+	ror	ebx,7
-+	punpcklqdq	xmm9,xmm5
-+	mov	edi,eax
-+	xor	esi,ecx
-+	pxor	xmm6,xmm7
-+	rol	eax,5
-+	add	ebp,esi
-+	movdqa	xmm8,xmm10
-+	xor	edi,ebx
-+	paddd	xmm10,xmm5
-+	xor	ebx,ecx
-+	pxor	xmm6,xmm9
-+	add	ebp,eax
-+	add	edx,DWORD[36+rsp]
-+	and	edi,ebx
-+	xor	ebx,ecx
-+	ror	eax,7
-+	movdqa	xmm9,xmm6
-+	mov	esi,ebp
-+	xor	edi,ebx
-+	movdqa	XMMWORD[16+rsp],xmm10
-+	rol	ebp,5
-+	add	edx,edi
-+	xor	esi,eax
-+	pslld	xmm6,2
-+	xor	eax,ebx
-+	add	edx,ebp
-+	psrld	xmm9,30
-+	add	ecx,DWORD[40+rsp]
-+	and	esi,eax
-+	xor	eax,ebx
-+	por	xmm6,xmm9
-+	ror	ebp,7
-+	mov	edi,edx
-+	xor	esi,eax
-+	rol	edx,5
-+	pshufd	xmm10,xmm5,238
-+	add	ecx,esi
-+	xor	edi,ebp
-+	xor	ebp,eax
-+	add	ecx,edx
-+	add	ebx,DWORD[44+rsp]
-+	and	edi,ebp
-+	xor	ebp,eax
-+	ror	edx,7
-+	mov	esi,ecx
-+	xor	edi,ebp
-+	rol	ecx,5
-+	add	ebx,edi
-+	xor	esi,edx
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	pxor	xmm7,xmm3
-+	add	eax,DWORD[48+rsp]
-+	and	esi,edx
-+	xor	edx,ebp
-+	ror	ecx,7
-+	punpcklqdq	xmm10,xmm6
-+	mov	edi,ebx
-+	xor	esi,edx
-+	pxor	xmm7,xmm0
-+	rol	ebx,5
-+	add	eax,esi
-+	movdqa	xmm9,XMMWORD[32+r11]
-+	xor	edi,ecx
-+	paddd	xmm8,xmm6
-+	xor	ecx,edx
-+	pxor	xmm7,xmm10
-+	add	eax,ebx
-+	add	ebp,DWORD[52+rsp]
-+	and	edi,ecx
-+	xor	ecx,edx
-+	ror	ebx,7
-+	movdqa	xmm10,xmm7
-+	mov	esi,eax
-+	xor	edi,ecx
-+	movdqa	XMMWORD[32+rsp],xmm8
-+	rol	eax,5
-+	add	ebp,edi
-+	xor	esi,ebx
-+	pslld	xmm7,2
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	psrld	xmm10,30
-+	add	edx,DWORD[56+rsp]
-+	and	esi,ebx
-+	xor	ebx,ecx
-+	por	xmm7,xmm10
-+	ror	eax,7
-+	mov	edi,ebp
-+	xor	esi,ebx
-+	rol	ebp,5
-+	pshufd	xmm8,xmm6,238
-+	add	edx,esi
-+	xor	edi,eax
-+	xor	eax,ebx
-+	add	edx,ebp
-+	add	ecx,DWORD[60+rsp]
-+	and	edi,eax
-+	xor	eax,ebx
-+	ror	ebp,7
-+	mov	esi,edx
-+	xor	edi,eax
-+	rol	edx,5
-+	add	ecx,edi
-+	xor	esi,ebp
-+	xor	ebp,eax
-+	add	ecx,edx
-+	pxor	xmm0,xmm4
-+	add	ebx,DWORD[rsp]
-+	and	esi,ebp
-+	xor	ebp,eax
-+	ror	edx,7
-+	punpcklqdq	xmm8,xmm7
-+	mov	edi,ecx
-+	xor	esi,ebp
-+	pxor	xmm0,xmm1
-+	rol	ecx,5
-+	add	ebx,esi
-+	movdqa	xmm10,xmm9
-+	xor	edi,edx
-+	paddd	xmm9,xmm7
-+	xor	edx,ebp
-+	pxor	xmm0,xmm8
-+	add	ebx,ecx
-+	add	eax,DWORD[4+rsp]
-+	and	edi,edx
-+	xor	edx,ebp
-+	ror	ecx,7
-+	movdqa	xmm8,xmm0
-+	mov	esi,ebx
-+	xor	edi,edx
-+	movdqa	XMMWORD[48+rsp],xmm9
-+	rol	ebx,5
-+	add	eax,edi
-+	xor	esi,ecx
-+	pslld	xmm0,2
-+	xor	ecx,edx
-+	add	eax,ebx
-+	psrld	xmm8,30
-+	add	ebp,DWORD[8+rsp]
-+	and	esi,ecx
-+	xor	ecx,edx
-+	por	xmm0,xmm8
-+	ror	ebx,7
-+	mov	edi,eax
-+	xor	esi,ecx
-+	rol	eax,5
-+	pshufd	xmm9,xmm7,238
-+	add	ebp,esi
-+	xor	edi,ebx
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	add	edx,DWORD[12+rsp]
-+	and	edi,ebx
-+	xor	ebx,ecx
-+	ror	eax,7
-+	mov	esi,ebp
-+	xor	edi,ebx
-+	rol	ebp,5
-+	add	edx,edi
-+	xor	esi,eax
-+	xor	eax,ebx
-+	add	edx,ebp
-+	pxor	xmm1,xmm5
-+	add	ecx,DWORD[16+rsp]
-+	and	esi,eax
-+	xor	eax,ebx
-+	ror	ebp,7
-+	punpcklqdq	xmm9,xmm0
-+	mov	edi,edx
-+	xor	esi,eax
-+	pxor	xmm1,xmm2
-+	rol	edx,5
-+	add	ecx,esi
-+	movdqa	xmm8,xmm10
-+	xor	edi,ebp
-+	paddd	xmm10,xmm0
-+	xor	ebp,eax
-+	pxor	xmm1,xmm9
-+	add	ecx,edx
-+	add	ebx,DWORD[20+rsp]
-+	and	edi,ebp
-+	xor	ebp,eax
-+	ror	edx,7
-+	movdqa	xmm9,xmm1
-+	mov	esi,ecx
-+	xor	edi,ebp
-+	movdqa	XMMWORD[rsp],xmm10
-+	rol	ecx,5
-+	add	ebx,edi
-+	xor	esi,edx
-+	pslld	xmm1,2
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	psrld	xmm9,30
-+	add	eax,DWORD[24+rsp]
-+	and	esi,edx
-+	xor	edx,ebp
-+	por	xmm1,xmm9
-+	ror	ecx,7
-+	mov	edi,ebx
-+	xor	esi,edx
-+	rol	ebx,5
-+	pshufd	xmm10,xmm0,238
-+	add	eax,esi
-+	xor	edi,ecx
-+	xor	ecx,edx
-+	add	eax,ebx
-+	add	ebp,DWORD[28+rsp]
-+	and	edi,ecx
-+	xor	ecx,edx
-+	ror	ebx,7
-+	mov	esi,eax
-+	xor	edi,ecx
-+	rol	eax,5
-+	add	ebp,edi
-+	xor	esi,ebx
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	pxor	xmm2,xmm6
-+	add	edx,DWORD[32+rsp]
-+	and	esi,ebx
-+	xor	ebx,ecx
-+	ror	eax,7
-+	punpcklqdq	xmm10,xmm1
-+	mov	edi,ebp
-+	xor	esi,ebx
-+	pxor	xmm2,xmm3
-+	rol	ebp,5
-+	add	edx,esi
-+	movdqa	xmm9,xmm8
-+	xor	edi,eax
-+	paddd	xmm8,xmm1
-+	xor	eax,ebx
-+	pxor	xmm2,xmm10
-+	add	edx,ebp
-+	add	ecx,DWORD[36+rsp]
-+	and	edi,eax
-+	xor	eax,ebx
-+	ror	ebp,7
-+	movdqa	xmm10,xmm2
-+	mov	esi,edx
-+	xor	edi,eax
-+	movdqa	XMMWORD[16+rsp],xmm8
-+	rol	edx,5
-+	add	ecx,edi
-+	xor	esi,ebp
-+	pslld	xmm2,2
-+	xor	ebp,eax
-+	add	ecx,edx
-+	psrld	xmm10,30
-+	add	ebx,DWORD[40+rsp]
-+	and	esi,ebp
-+	xor	ebp,eax
-+	por	xmm2,xmm10
-+	ror	edx,7
-+	mov	edi,ecx
-+	xor	esi,ebp
-+	rol	ecx,5
-+	pshufd	xmm8,xmm1,238
-+	add	ebx,esi
-+	xor	edi,edx
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	add	eax,DWORD[44+rsp]
-+	and	edi,edx
-+	xor	edx,ebp
-+	ror	ecx,7
-+	mov	esi,ebx
-+	xor	edi,edx
-+	rol	ebx,5
-+	add	eax,edi
-+	xor	esi,edx
-+	add	eax,ebx
-+	pxor	xmm3,xmm7
-+	add	ebp,DWORD[48+rsp]
-+	xor	esi,ecx
-+	punpcklqdq	xmm8,xmm2
-+	mov	edi,eax
-+	rol	eax,5
-+	pxor	xmm3,xmm4
-+	add	ebp,esi
-+	xor	edi,ecx
-+	movdqa	xmm10,xmm9
-+	ror	ebx,7
-+	paddd	xmm9,xmm2
-+	add	ebp,eax
-+	pxor	xmm3,xmm8
-+	add	edx,DWORD[52+rsp]
-+	xor	edi,ebx
-+	mov	esi,ebp
-+	rol	ebp,5
-+	movdqa	xmm8,xmm3
-+	add	edx,edi
-+	xor	esi,ebx
-+	movdqa	XMMWORD[32+rsp],xmm9
-+	ror	eax,7
-+	add	edx,ebp
-+	add	ecx,DWORD[56+rsp]
-+	pslld	xmm3,2
-+	xor	esi,eax
-+	mov	edi,edx
-+	psrld	xmm8,30
-+	rol	edx,5
-+	add	ecx,esi
-+	xor	edi,eax
-+	ror	ebp,7
-+	por	xmm3,xmm8
-+	add	ecx,edx
-+	add	ebx,DWORD[60+rsp]
-+	xor	edi,ebp
-+	mov	esi,ecx
-+	rol	ecx,5
-+	add	ebx,edi
-+	xor	esi,ebp
-+	ror	edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[rsp]
-+	xor	esi,edx
-+	mov	edi,ebx
-+	rol	ebx,5
-+	paddd	xmm10,xmm3
-+	add	eax,esi
-+	xor	edi,edx
-+	movdqa	XMMWORD[48+rsp],xmm10
-+	ror	ecx,7
-+	add	eax,ebx
-+	add	ebp,DWORD[4+rsp]
-+	xor	edi,ecx
-+	mov	esi,eax
-+	rol	eax,5
-+	add	ebp,edi
-+	xor	esi,ecx
-+	ror	ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[8+rsp]
-+	xor	esi,ebx
-+	mov	edi,ebp
-+	rol	ebp,5
-+	add	edx,esi
-+	xor	edi,ebx
-+	ror	eax,7
-+	add	edx,ebp
-+	add	ecx,DWORD[12+rsp]
-+	xor	edi,eax
-+	mov	esi,edx
-+	rol	edx,5
-+	add	ecx,edi
-+	xor	esi,eax
-+	ror	ebp,7
-+	add	ecx,edx
-+	cmp	r9,r10
-+	je	NEAR $L$done_ssse3
-+	movdqa	xmm6,XMMWORD[64+r11]
-+	movdqa	xmm9,XMMWORD[((-64))+r11]
-+	movdqu	xmm0,XMMWORD[r9]
-+	movdqu	xmm1,XMMWORD[16+r9]
-+	movdqu	xmm2,XMMWORD[32+r9]
-+	movdqu	xmm3,XMMWORD[48+r9]
-+DB	102,15,56,0,198
-+	add	r9,64
-+	add	ebx,DWORD[16+rsp]
-+	xor	esi,ebp
-+	mov	edi,ecx
-+DB	102,15,56,0,206
-+	rol	ecx,5
-+	add	ebx,esi
-+	xor	edi,ebp
-+	ror	edx,7
-+	paddd	xmm0,xmm9
-+	add	ebx,ecx
-+	add	eax,DWORD[20+rsp]
-+	xor	edi,edx
-+	mov	esi,ebx
-+	movdqa	XMMWORD[rsp],xmm0
-+	rol	ebx,5
-+	add	eax,edi
-+	xor	esi,edx
-+	ror	ecx,7
-+	psubd	xmm0,xmm9
-+	add	eax,ebx
-+	add	ebp,DWORD[24+rsp]
-+	xor	esi,ecx
-+	mov	edi,eax
-+	rol	eax,5
-+	add	ebp,esi
-+	xor	edi,ecx
-+	ror	ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[28+rsp]
-+	xor	edi,ebx
-+	mov	esi,ebp
-+	rol	ebp,5
-+	add	edx,edi
-+	xor	esi,ebx
-+	ror	eax,7
-+	add	edx,ebp
-+	add	ecx,DWORD[32+rsp]
-+	xor	esi,eax
-+	mov	edi,edx
-+DB	102,15,56,0,214
-+	rol	edx,5
-+	add	ecx,esi
-+	xor	edi,eax
-+	ror	ebp,7
-+	paddd	xmm1,xmm9
-+	add	ecx,edx
-+	add	ebx,DWORD[36+rsp]
-+	xor	edi,ebp
-+	mov	esi,ecx
-+	movdqa	XMMWORD[16+rsp],xmm1
-+	rol	ecx,5
-+	add	ebx,edi
-+	xor	esi,ebp
-+	ror	edx,7
-+	psubd	xmm1,xmm9
-+	add	ebx,ecx
-+	add	eax,DWORD[40+rsp]
-+	xor	esi,edx
-+	mov	edi,ebx
-+	rol	ebx,5
-+	add	eax,esi
-+	xor	edi,edx
-+	ror	ecx,7
-+	add	eax,ebx
-+	add	ebp,DWORD[44+rsp]
-+	xor	edi,ecx
-+	mov	esi,eax
-+	rol	eax,5
-+	add	ebp,edi
-+	xor	esi,ecx
-+	ror	ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[48+rsp]
-+	xor	esi,ebx
-+	mov	edi,ebp
-+DB	102,15,56,0,222
-+	rol	ebp,5
-+	add	edx,esi
-+	xor	edi,ebx
-+	ror	eax,7
-+	paddd	xmm2,xmm9
-+	add	edx,ebp
-+	add	ecx,DWORD[52+rsp]
-+	xor	edi,eax
-+	mov	esi,edx
-+	movdqa	XMMWORD[32+rsp],xmm2
-+	rol	edx,5
-+	add	ecx,edi
-+	xor	esi,eax
-+	ror	ebp,7
-+	psubd	xmm2,xmm9
-+	add	ecx,edx
-+	add	ebx,DWORD[56+rsp]
-+	xor	esi,ebp
-+	mov	edi,ecx
-+	rol	ecx,5
-+	add	ebx,esi
-+	xor	edi,ebp
-+	ror	edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[60+rsp]
-+	xor	edi,edx
-+	mov	esi,ebx
-+	rol	ebx,5
-+	add	eax,edi
-+	ror	ecx,7
-+	add	eax,ebx
-+	add	eax,DWORD[r8]
-+	add	esi,DWORD[4+r8]
-+	add	ecx,DWORD[8+r8]
-+	add	edx,DWORD[12+r8]
-+	mov	DWORD[r8],eax
-+	add	ebp,DWORD[16+r8]
-+	mov	DWORD[4+r8],esi
-+	mov	ebx,esi
-+	mov	DWORD[8+r8],ecx
-+	mov	edi,ecx
-+	mov	DWORD[12+r8],edx
-+	xor	edi,edx
-+	mov	DWORD[16+r8],ebp
-+	and	esi,edi
-+	jmp	NEAR $L$oop_ssse3
-+
-+ALIGN	16
-+$L$done_ssse3:
-+	add	ebx,DWORD[16+rsp]
-+	xor	esi,ebp
-+	mov	edi,ecx
-+	rol	ecx,5
-+	add	ebx,esi
-+	xor	edi,ebp
-+	ror	edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[20+rsp]
-+	xor	edi,edx
-+	mov	esi,ebx
-+	rol	ebx,5
-+	add	eax,edi
-+	xor	esi,edx
-+	ror	ecx,7
-+	add	eax,ebx
-+	add	ebp,DWORD[24+rsp]
-+	xor	esi,ecx
-+	mov	edi,eax
-+	rol	eax,5
-+	add	ebp,esi
-+	xor	edi,ecx
-+	ror	ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[28+rsp]
-+	xor	edi,ebx
-+	mov	esi,ebp
-+	rol	ebp,5
-+	add	edx,edi
-+	xor	esi,ebx
-+	ror	eax,7
-+	add	edx,ebp
-+	add	ecx,DWORD[32+rsp]
-+	xor	esi,eax
-+	mov	edi,edx
-+	rol	edx,5
-+	add	ecx,esi
-+	xor	edi,eax
-+	ror	ebp,7
-+	add	ecx,edx
-+	add	ebx,DWORD[36+rsp]
-+	xor	edi,ebp
-+	mov	esi,ecx
-+	rol	ecx,5
-+	add	ebx,edi
-+	xor	esi,ebp
-+	ror	edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[40+rsp]
-+	xor	esi,edx
-+	mov	edi,ebx
-+	rol	ebx,5
-+	add	eax,esi
-+	xor	edi,edx
-+	ror	ecx,7
-+	add	eax,ebx
-+	add	ebp,DWORD[44+rsp]
-+	xor	edi,ecx
-+	mov	esi,eax
-+	rol	eax,5
-+	add	ebp,edi
-+	xor	esi,ecx
-+	ror	ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[48+rsp]
-+	xor	esi,ebx
-+	mov	edi,ebp
-+	rol	ebp,5
-+	add	edx,esi
-+	xor	edi,ebx
-+	ror	eax,7
-+	add	edx,ebp
-+	add	ecx,DWORD[52+rsp]
-+	xor	edi,eax
-+	mov	esi,edx
-+	rol	edx,5
-+	add	ecx,edi
-+	xor	esi,eax
-+	ror	ebp,7
-+	add	ecx,edx
-+	add	ebx,DWORD[56+rsp]
-+	xor	esi,ebp
-+	mov	edi,ecx
-+	rol	ecx,5
-+	add	ebx,esi
-+	xor	edi,ebp
-+	ror	edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[60+rsp]
-+	xor	edi,edx
-+	mov	esi,ebx
-+	rol	ebx,5
-+	add	eax,edi
-+	ror	ecx,7
-+	add	eax,ebx
-+	add	eax,DWORD[r8]
-+	add	esi,DWORD[4+r8]
-+	add	ecx,DWORD[8+r8]
-+	mov	DWORD[r8],eax
-+	add	edx,DWORD[12+r8]
-+	mov	DWORD[4+r8],esi
-+	add	ebp,DWORD[16+r8]
-+	mov	DWORD[8+r8],ecx
-+	mov	DWORD[12+r8],edx
-+	mov	DWORD[16+r8],ebp
-+	movaps	xmm6,XMMWORD[((-40-96))+r14]
-+	movaps	xmm7,XMMWORD[((-40-80))+r14]
-+	movaps	xmm8,XMMWORD[((-40-64))+r14]
-+	movaps	xmm9,XMMWORD[((-40-48))+r14]
-+	movaps	xmm10,XMMWORD[((-40-32))+r14]
-+	movaps	xmm11,XMMWORD[((-40-16))+r14]
-+	lea	rsi,[r14]
-+	mov	r14,QWORD[((-40))+rsi]
-+	mov	r13,QWORD[((-32))+rsi]
-+	mov	r12,QWORD[((-24))+rsi]
-+	mov	rbp,QWORD[((-16))+rsi]
-+	mov	rbx,QWORD[((-8))+rsi]
-+	lea	rsp,[rsi]
-+$L$epilogue_ssse3:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha1_block_data_order_ssse3:
-+
-+ALIGN	16
-+sha1_block_data_order_avx:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha1_block_data_order_avx:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+_avx_shortcut:
-+	mov	rax,rsp
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	lea	rsp,[((-160))+rsp]
-+	vzeroupper
-+	vmovaps	XMMWORD[(-40-96)+rax],xmm6
-+	vmovaps	XMMWORD[(-40-80)+rax],xmm7
-+	vmovaps	XMMWORD[(-40-64)+rax],xmm8
-+	vmovaps	XMMWORD[(-40-48)+rax],xmm9
-+	vmovaps	XMMWORD[(-40-32)+rax],xmm10
-+	vmovaps	XMMWORD[(-40-16)+rax],xmm11
-+$L$prologue_avx:
-+	mov	r14,rax
-+	and	rsp,-64
-+	mov	r8,rdi
-+	mov	r9,rsi
-+	mov	r10,rdx
-+
-+	shl	r10,6
-+	add	r10,r9
-+	lea	r11,[((K_XX_XX+64))]
-+
-+	mov	eax,DWORD[r8]
-+	mov	ebx,DWORD[4+r8]
-+	mov	ecx,DWORD[8+r8]
-+	mov	edx,DWORD[12+r8]
-+	mov	esi,ebx
-+	mov	ebp,DWORD[16+r8]
-+	mov	edi,ecx
-+	xor	edi,edx
-+	and	esi,edi
-+
-+	vmovdqa	xmm6,XMMWORD[64+r11]
-+	vmovdqa	xmm11,XMMWORD[((-64))+r11]
-+	vmovdqu	xmm0,XMMWORD[r9]
-+	vmovdqu	xmm1,XMMWORD[16+r9]
-+	vmovdqu	xmm2,XMMWORD[32+r9]
-+	vmovdqu	xmm3,XMMWORD[48+r9]
-+	vpshufb	xmm0,xmm0,xmm6
-+	add	r9,64
-+	vpshufb	xmm1,xmm1,xmm6
-+	vpshufb	xmm2,xmm2,xmm6
-+	vpshufb	xmm3,xmm3,xmm6
-+	vpaddd	xmm4,xmm0,xmm11
-+	vpaddd	xmm5,xmm1,xmm11
-+	vpaddd	xmm6,xmm2,xmm11
-+	vmovdqa	XMMWORD[rsp],xmm4
-+	vmovdqa	XMMWORD[16+rsp],xmm5
-+	vmovdqa	XMMWORD[32+rsp],xmm6
-+	jmp	NEAR $L$oop_avx
-+ALIGN	16
-+$L$oop_avx:
-+	shrd	ebx,ebx,2
-+	xor	esi,edx
-+	vpalignr	xmm4,xmm1,xmm0,8
-+	mov	edi,eax
-+	add	ebp,DWORD[rsp]
-+	vpaddd	xmm9,xmm11,xmm3
-+	xor	ebx,ecx
-+	shld	eax,eax,5
-+	vpsrldq	xmm8,xmm3,4
-+	add	ebp,esi
-+	and	edi,ebx
-+	vpxor	xmm4,xmm4,xmm0
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	vpxor	xmm8,xmm8,xmm2
-+	shrd	eax,eax,7
-+	xor	edi,ecx
-+	mov	esi,ebp
-+	add	edx,DWORD[4+rsp]
-+	vpxor	xmm4,xmm4,xmm8
-+	xor	eax,ebx
-+	shld	ebp,ebp,5
-+	vmovdqa	XMMWORD[48+rsp],xmm9
-+	add	edx,edi
-+	and	esi,eax
-+	vpsrld	xmm8,xmm4,31
-+	xor	eax,ebx
-+	add	edx,ebp
-+	shrd	ebp,ebp,7
-+	xor	esi,ebx
-+	vpslldq	xmm10,xmm4,12
-+	vpaddd	xmm4,xmm4,xmm4
-+	mov	edi,edx
-+	add	ecx,DWORD[8+rsp]
-+	xor	ebp,eax
-+	shld	edx,edx,5
-+	vpsrld	xmm9,xmm10,30
-+	vpor	xmm4,xmm4,xmm8
-+	add	ecx,esi
-+	and	edi,ebp
-+	xor	ebp,eax
-+	add	ecx,edx
-+	vpslld	xmm10,xmm10,2
-+	vpxor	xmm4,xmm4,xmm9
-+	shrd	edx,edx,7
-+	xor	edi,eax
-+	mov	esi,ecx
-+	add	ebx,DWORD[12+rsp]
-+	vpxor	xmm4,xmm4,xmm10
-+	xor	edx,ebp
-+	shld	ecx,ecx,5
-+	add	ebx,edi
-+	and	esi,edx
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	shrd	ecx,ecx,7
-+	xor	esi,ebp
-+	vpalignr	xmm5,xmm2,xmm1,8
-+	mov	edi,ebx
-+	add	eax,DWORD[16+rsp]
-+	vpaddd	xmm9,xmm11,xmm4
-+	xor	ecx,edx
-+	shld	ebx,ebx,5
-+	vpsrldq	xmm8,xmm4,4
-+	add	eax,esi
-+	and	edi,ecx
-+	vpxor	xmm5,xmm5,xmm1
-+	xor	ecx,edx
-+	add	eax,ebx
-+	vpxor	xmm8,xmm8,xmm3
-+	shrd	ebx,ebx,7
-+	xor	edi,edx
-+	mov	esi,eax
-+	add	ebp,DWORD[20+rsp]
-+	vpxor	xmm5,xmm5,xmm8
-+	xor	ebx,ecx
-+	shld	eax,eax,5
-+	vmovdqa	XMMWORD[rsp],xmm9
-+	add	ebp,edi
-+	and	esi,ebx
-+	vpsrld	xmm8,xmm5,31
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	shrd	eax,eax,7
-+	xor	esi,ecx
-+	vpslldq	xmm10,xmm5,12
-+	vpaddd	xmm5,xmm5,xmm5
-+	mov	edi,ebp
-+	add	edx,DWORD[24+rsp]
-+	xor	eax,ebx
-+	shld	ebp,ebp,5
-+	vpsrld	xmm9,xmm10,30
-+	vpor	xmm5,xmm5,xmm8
-+	add	edx,esi
-+	and	edi,eax
-+	xor	eax,ebx
-+	add	edx,ebp
-+	vpslld	xmm10,xmm10,2
-+	vpxor	xmm5,xmm5,xmm9
-+	shrd	ebp,ebp,7
-+	xor	edi,ebx
-+	mov	esi,edx
-+	add	ecx,DWORD[28+rsp]
-+	vpxor	xmm5,xmm5,xmm10
-+	xor	ebp,eax
-+	shld	edx,edx,5
-+	vmovdqa	xmm11,XMMWORD[((-32))+r11]
-+	add	ecx,edi
-+	and	esi,ebp
-+	xor	ebp,eax
-+	add	ecx,edx
-+	shrd	edx,edx,7
-+	xor	esi,eax
-+	vpalignr	xmm6,xmm3,xmm2,8
-+	mov	edi,ecx
-+	add	ebx,DWORD[32+rsp]
-+	vpaddd	xmm9,xmm11,xmm5
-+	xor	edx,ebp
-+	shld	ecx,ecx,5
-+	vpsrldq	xmm8,xmm5,4
-+	add	ebx,esi
-+	and	edi,edx
-+	vpxor	xmm6,xmm6,xmm2
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	vpxor	xmm8,xmm8,xmm4
-+	shrd	ecx,ecx,7
-+	xor	edi,ebp
-+	mov	esi,ebx
-+	add	eax,DWORD[36+rsp]
-+	vpxor	xmm6,xmm6,xmm8
-+	xor	ecx,edx
-+	shld	ebx,ebx,5
-+	vmovdqa	XMMWORD[16+rsp],xmm9
-+	add	eax,edi
-+	and	esi,ecx
-+	vpsrld	xmm8,xmm6,31
-+	xor	ecx,edx
-+	add	eax,ebx
-+	shrd	ebx,ebx,7
-+	xor	esi,edx
-+	vpslldq	xmm10,xmm6,12
-+	vpaddd	xmm6,xmm6,xmm6
-+	mov	edi,eax
-+	add	ebp,DWORD[40+rsp]
-+	xor	ebx,ecx
-+	shld	eax,eax,5
-+	vpsrld	xmm9,xmm10,30
-+	vpor	xmm6,xmm6,xmm8
-+	add	ebp,esi
-+	and	edi,ebx
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	vpslld	xmm10,xmm10,2
-+	vpxor	xmm6,xmm6,xmm9
-+	shrd	eax,eax,7
-+	xor	edi,ecx
-+	mov	esi,ebp
-+	add	edx,DWORD[44+rsp]
-+	vpxor	xmm6,xmm6,xmm10
-+	xor	eax,ebx
-+	shld	ebp,ebp,5
-+	add	edx,edi
-+	and	esi,eax
-+	xor	eax,ebx
-+	add	edx,ebp
-+	shrd	ebp,ebp,7
-+	xor	esi,ebx
-+	vpalignr	xmm7,xmm4,xmm3,8
-+	mov	edi,edx
-+	add	ecx,DWORD[48+rsp]
-+	vpaddd	xmm9,xmm11,xmm6
-+	xor	ebp,eax
-+	shld	edx,edx,5
-+	vpsrldq	xmm8,xmm6,4
-+	add	ecx,esi
-+	and	edi,ebp
-+	vpxor	xmm7,xmm7,xmm3
-+	xor	ebp,eax
-+	add	ecx,edx
-+	vpxor	xmm8,xmm8,xmm5
-+	shrd	edx,edx,7
-+	xor	edi,eax
-+	mov	esi,ecx
-+	add	ebx,DWORD[52+rsp]
-+	vpxor	xmm7,xmm7,xmm8
-+	xor	edx,ebp
-+	shld	ecx,ecx,5
-+	vmovdqa	XMMWORD[32+rsp],xmm9
-+	add	ebx,edi
-+	and	esi,edx
-+	vpsrld	xmm8,xmm7,31
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	shrd	ecx,ecx,7
-+	xor	esi,ebp
-+	vpslldq	xmm10,xmm7,12
-+	vpaddd	xmm7,xmm7,xmm7
-+	mov	edi,ebx
-+	add	eax,DWORD[56+rsp]
-+	xor	ecx,edx
-+	shld	ebx,ebx,5
-+	vpsrld	xmm9,xmm10,30
-+	vpor	xmm7,xmm7,xmm8
-+	add	eax,esi
-+	and	edi,ecx
-+	xor	ecx,edx
-+	add	eax,ebx
-+	vpslld	xmm10,xmm10,2
-+	vpxor	xmm7,xmm7,xmm9
-+	shrd	ebx,ebx,7
-+	xor	edi,edx
-+	mov	esi,eax
-+	add	ebp,DWORD[60+rsp]
-+	vpxor	xmm7,xmm7,xmm10
-+	xor	ebx,ecx
-+	shld	eax,eax,5
-+	add	ebp,edi
-+	and	esi,ebx
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	vpalignr	xmm8,xmm7,xmm6,8
-+	vpxor	xmm0,xmm0,xmm4
-+	shrd	eax,eax,7
-+	xor	esi,ecx
-+	mov	edi,ebp
-+	add	edx,DWORD[rsp]
-+	vpxor	xmm0,xmm0,xmm1
-+	xor	eax,ebx
-+	shld	ebp,ebp,5
-+	vpaddd	xmm9,xmm11,xmm7
-+	add	edx,esi
-+	and	edi,eax
-+	vpxor	xmm0,xmm0,xmm8
-+	xor	eax,ebx
-+	add	edx,ebp
-+	shrd	ebp,ebp,7
-+	xor	edi,ebx
-+	vpsrld	xmm8,xmm0,30
-+	vmovdqa	XMMWORD[48+rsp],xmm9
-+	mov	esi,edx
-+	add	ecx,DWORD[4+rsp]
-+	xor	ebp,eax
-+	shld	edx,edx,5
-+	vpslld	xmm0,xmm0,2
-+	add	ecx,edi
-+	and	esi,ebp
-+	xor	ebp,eax
-+	add	ecx,edx
-+	shrd	edx,edx,7
-+	xor	esi,eax
-+	mov	edi,ecx
-+	add	ebx,DWORD[8+rsp]
-+	vpor	xmm0,xmm0,xmm8
-+	xor	edx,ebp
-+	shld	ecx,ecx,5
-+	add	ebx,esi
-+	and	edi,edx
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	add	eax,DWORD[12+rsp]
-+	xor	edi,ebp
-+	mov	esi,ebx
-+	shld	ebx,ebx,5
-+	add	eax,edi
-+	xor	esi,edx
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	vpalignr	xmm8,xmm0,xmm7,8
-+	vpxor	xmm1,xmm1,xmm5
-+	add	ebp,DWORD[16+rsp]
-+	xor	esi,ecx
-+	mov	edi,eax
-+	shld	eax,eax,5
-+	vpxor	xmm1,xmm1,xmm2
-+	add	ebp,esi
-+	xor	edi,ecx
-+	vpaddd	xmm9,xmm11,xmm0
-+	shrd	ebx,ebx,7
-+	add	ebp,eax
-+	vpxor	xmm1,xmm1,xmm8
-+	add	edx,DWORD[20+rsp]
-+	xor	edi,ebx
-+	mov	esi,ebp
-+	shld	ebp,ebp,5
-+	vpsrld	xmm8,xmm1,30
-+	vmovdqa	XMMWORD[rsp],xmm9
-+	add	edx,edi
-+	xor	esi,ebx
-+	shrd	eax,eax,7
-+	add	edx,ebp
-+	vpslld	xmm1,xmm1,2
-+	add	ecx,DWORD[24+rsp]
-+	xor	esi,eax
-+	mov	edi,edx
-+	shld	edx,edx,5
-+	add	ecx,esi
-+	xor	edi,eax
-+	shrd	ebp,ebp,7
-+	add	ecx,edx
-+	vpor	xmm1,xmm1,xmm8
-+	add	ebx,DWORD[28+rsp]
-+	xor	edi,ebp
-+	mov	esi,ecx
-+	shld	ecx,ecx,5
-+	add	ebx,edi
-+	xor	esi,ebp
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	vpalignr	xmm8,xmm1,xmm0,8
-+	vpxor	xmm2,xmm2,xmm6
-+	add	eax,DWORD[32+rsp]
-+	xor	esi,edx
-+	mov	edi,ebx
-+	shld	ebx,ebx,5
-+	vpxor	xmm2,xmm2,xmm3
-+	add	eax,esi
-+	xor	edi,edx
-+	vpaddd	xmm9,xmm11,xmm1
-+	vmovdqa	xmm11,XMMWORD[r11]
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	vpxor	xmm2,xmm2,xmm8
-+	add	ebp,DWORD[36+rsp]
-+	xor	edi,ecx
-+	mov	esi,eax
-+	shld	eax,eax,5
-+	vpsrld	xmm8,xmm2,30
-+	vmovdqa	XMMWORD[16+rsp],xmm9
-+	add	ebp,edi
-+	xor	esi,ecx
-+	shrd	ebx,ebx,7
-+	add	ebp,eax
-+	vpslld	xmm2,xmm2,2
-+	add	edx,DWORD[40+rsp]
-+	xor	esi,ebx
-+	mov	edi,ebp
-+	shld	ebp,ebp,5
-+	add	edx,esi
-+	xor	edi,ebx
-+	shrd	eax,eax,7
-+	add	edx,ebp
-+	vpor	xmm2,xmm2,xmm8
-+	add	ecx,DWORD[44+rsp]
-+	xor	edi,eax
-+	mov	esi,edx
-+	shld	edx,edx,5
-+	add	ecx,edi
-+	xor	esi,eax
-+	shrd	ebp,ebp,7
-+	add	ecx,edx
-+	vpalignr	xmm8,xmm2,xmm1,8
-+	vpxor	xmm3,xmm3,xmm7
-+	add	ebx,DWORD[48+rsp]
-+	xor	esi,ebp
-+	mov	edi,ecx
-+	shld	ecx,ecx,5
-+	vpxor	xmm3,xmm3,xmm4
-+	add	ebx,esi
-+	xor	edi,ebp
-+	vpaddd	xmm9,xmm11,xmm2
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	vpxor	xmm3,xmm3,xmm8
-+	add	eax,DWORD[52+rsp]
-+	xor	edi,edx
-+	mov	esi,ebx
-+	shld	ebx,ebx,5
-+	vpsrld	xmm8,xmm3,30
-+	vmovdqa	XMMWORD[32+rsp],xmm9
-+	add	eax,edi
-+	xor	esi,edx
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	vpslld	xmm3,xmm3,2
-+	add	ebp,DWORD[56+rsp]
-+	xor	esi,ecx
-+	mov	edi,eax
-+	shld	eax,eax,5
-+	add	ebp,esi
-+	xor	edi,ecx
-+	shrd	ebx,ebx,7
-+	add	ebp,eax
-+	vpor	xmm3,xmm3,xmm8
-+	add	edx,DWORD[60+rsp]
-+	xor	edi,ebx
-+	mov	esi,ebp
-+	shld	ebp,ebp,5
-+	add	edx,edi
-+	xor	esi,ebx
-+	shrd	eax,eax,7
-+	add	edx,ebp
-+	vpalignr	xmm8,xmm3,xmm2,8
-+	vpxor	xmm4,xmm4,xmm0
-+	add	ecx,DWORD[rsp]
-+	xor	esi,eax
-+	mov	edi,edx
-+	shld	edx,edx,5
-+	vpxor	xmm4,xmm4,xmm5
-+	add	ecx,esi
-+	xor	edi,eax
-+	vpaddd	xmm9,xmm11,xmm3
-+	shrd	ebp,ebp,7
-+	add	ecx,edx
-+	vpxor	xmm4,xmm4,xmm8
-+	add	ebx,DWORD[4+rsp]
-+	xor	edi,ebp
-+	mov	esi,ecx
-+	shld	ecx,ecx,5
-+	vpsrld	xmm8,xmm4,30
-+	vmovdqa	XMMWORD[48+rsp],xmm9
-+	add	ebx,edi
-+	xor	esi,ebp
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	vpslld	xmm4,xmm4,2
-+	add	eax,DWORD[8+rsp]
-+	xor	esi,edx
-+	mov	edi,ebx
-+	shld	ebx,ebx,5
-+	add	eax,esi
-+	xor	edi,edx
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	vpor	xmm4,xmm4,xmm8
-+	add	ebp,DWORD[12+rsp]
-+	xor	edi,ecx
-+	mov	esi,eax
-+	shld	eax,eax,5
-+	add	ebp,edi
-+	xor	esi,ecx
-+	shrd	ebx,ebx,7
-+	add	ebp,eax
-+	vpalignr	xmm8,xmm4,xmm3,8
-+	vpxor	xmm5,xmm5,xmm1
-+	add	edx,DWORD[16+rsp]
-+	xor	esi,ebx
-+	mov	edi,ebp
-+	shld	ebp,ebp,5
-+	vpxor	xmm5,xmm5,xmm6
-+	add	edx,esi
-+	xor	edi,ebx
-+	vpaddd	xmm9,xmm11,xmm4
-+	shrd	eax,eax,7
-+	add	edx,ebp
-+	vpxor	xmm5,xmm5,xmm8
-+	add	ecx,DWORD[20+rsp]
-+	xor	edi,eax
-+	mov	esi,edx
-+	shld	edx,edx,5
-+	vpsrld	xmm8,xmm5,30
-+	vmovdqa	XMMWORD[rsp],xmm9
-+	add	ecx,edi
-+	xor	esi,eax
-+	shrd	ebp,ebp,7
-+	add	ecx,edx
-+	vpslld	xmm5,xmm5,2
-+	add	ebx,DWORD[24+rsp]
-+	xor	esi,ebp
-+	mov	edi,ecx
-+	shld	ecx,ecx,5
-+	add	ebx,esi
-+	xor	edi,ebp
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	vpor	xmm5,xmm5,xmm8
-+	add	eax,DWORD[28+rsp]
-+	shrd	ecx,ecx,7
-+	mov	esi,ebx
-+	xor	edi,edx
-+	shld	ebx,ebx,5
-+	add	eax,edi
-+	xor	esi,ecx
-+	xor	ecx,edx
-+	add	eax,ebx
-+	vpalignr	xmm8,xmm5,xmm4,8
-+	vpxor	xmm6,xmm6,xmm2
-+	add	ebp,DWORD[32+rsp]
-+	and	esi,ecx
-+	xor	ecx,edx
-+	shrd	ebx,ebx,7
-+	vpxor	xmm6,xmm6,xmm7
-+	mov	edi,eax
-+	xor	esi,ecx
-+	vpaddd	xmm9,xmm11,xmm5
-+	shld	eax,eax,5
-+	add	ebp,esi
-+	vpxor	xmm6,xmm6,xmm8
-+	xor	edi,ebx
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	add	edx,DWORD[36+rsp]
-+	vpsrld	xmm8,xmm6,30
-+	vmovdqa	XMMWORD[16+rsp],xmm9
-+	and	edi,ebx
-+	xor	ebx,ecx
-+	shrd	eax,eax,7
-+	mov	esi,ebp
-+	vpslld	xmm6,xmm6,2
-+	xor	edi,ebx
-+	shld	ebp,ebp,5
-+	add	edx,edi
-+	xor	esi,eax
-+	xor	eax,ebx
-+	add	edx,ebp
-+	add	ecx,DWORD[40+rsp]
-+	and	esi,eax
-+	vpor	xmm6,xmm6,xmm8
-+	xor	eax,ebx
-+	shrd	ebp,ebp,7
-+	mov	edi,edx
-+	xor	esi,eax
-+	shld	edx,edx,5
-+	add	ecx,esi
-+	xor	edi,ebp
-+	xor	ebp,eax
-+	add	ecx,edx
-+	add	ebx,DWORD[44+rsp]
-+	and	edi,ebp
-+	xor	ebp,eax
-+	shrd	edx,edx,7
-+	mov	esi,ecx
-+	xor	edi,ebp
-+	shld	ecx,ecx,5
-+	add	ebx,edi
-+	xor	esi,edx
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	vpalignr	xmm8,xmm6,xmm5,8
-+	vpxor	xmm7,xmm7,xmm3
-+	add	eax,DWORD[48+rsp]
-+	and	esi,edx
-+	xor	edx,ebp
-+	shrd	ecx,ecx,7
-+	vpxor	xmm7,xmm7,xmm0
-+	mov	edi,ebx
-+	xor	esi,edx
-+	vpaddd	xmm9,xmm11,xmm6
-+	vmovdqa	xmm11,XMMWORD[32+r11]
-+	shld	ebx,ebx,5
-+	add	eax,esi
-+	vpxor	xmm7,xmm7,xmm8
-+	xor	edi,ecx
-+	xor	ecx,edx
-+	add	eax,ebx
-+	add	ebp,DWORD[52+rsp]
-+	vpsrld	xmm8,xmm7,30
-+	vmovdqa	XMMWORD[32+rsp],xmm9
-+	and	edi,ecx
-+	xor	ecx,edx
-+	shrd	ebx,ebx,7
-+	mov	esi,eax
-+	vpslld	xmm7,xmm7,2
-+	xor	edi,ecx
-+	shld	eax,eax,5
-+	add	ebp,edi
-+	xor	esi,ebx
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	add	edx,DWORD[56+rsp]
-+	and	esi,ebx
-+	vpor	xmm7,xmm7,xmm8
-+	xor	ebx,ecx
-+	shrd	eax,eax,7
-+	mov	edi,ebp
-+	xor	esi,ebx
-+	shld	ebp,ebp,5
-+	add	edx,esi
-+	xor	edi,eax
-+	xor	eax,ebx
-+	add	edx,ebp
-+	add	ecx,DWORD[60+rsp]
-+	and	edi,eax
-+	xor	eax,ebx
-+	shrd	ebp,ebp,7
-+	mov	esi,edx
-+	xor	edi,eax
-+	shld	edx,edx,5
-+	add	ecx,edi
-+	xor	esi,ebp
-+	xor	ebp,eax
-+	add	ecx,edx
-+	vpalignr	xmm8,xmm7,xmm6,8
-+	vpxor	xmm0,xmm0,xmm4
-+	add	ebx,DWORD[rsp]
-+	and	esi,ebp
-+	xor	ebp,eax
-+	shrd	edx,edx,7
-+	vpxor	xmm0,xmm0,xmm1
-+	mov	edi,ecx
-+	xor	esi,ebp
-+	vpaddd	xmm9,xmm11,xmm7
-+	shld	ecx,ecx,5
-+	add	ebx,esi
-+	vpxor	xmm0,xmm0,xmm8
-+	xor	edi,edx
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	add	eax,DWORD[4+rsp]
-+	vpsrld	xmm8,xmm0,30
-+	vmovdqa	XMMWORD[48+rsp],xmm9
-+	and	edi,edx
-+	xor	edx,ebp
-+	shrd	ecx,ecx,7
-+	mov	esi,ebx
-+	vpslld	xmm0,xmm0,2
-+	xor	edi,edx
-+	shld	ebx,ebx,5
-+	add	eax,edi
-+	xor	esi,ecx
-+	xor	ecx,edx
-+	add	eax,ebx
-+	add	ebp,DWORD[8+rsp]
-+	and	esi,ecx
-+	vpor	xmm0,xmm0,xmm8
-+	xor	ecx,edx
-+	shrd	ebx,ebx,7
-+	mov	edi,eax
-+	xor	esi,ecx
-+	shld	eax,eax,5
-+	add	ebp,esi
-+	xor	edi,ebx
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	add	edx,DWORD[12+rsp]
-+	and	edi,ebx
-+	xor	ebx,ecx
-+	shrd	eax,eax,7
-+	mov	esi,ebp
-+	xor	edi,ebx
-+	shld	ebp,ebp,5
-+	add	edx,edi
-+	xor	esi,eax
-+	xor	eax,ebx
-+	add	edx,ebp
-+	vpalignr	xmm8,xmm0,xmm7,8
-+	vpxor	xmm1,xmm1,xmm5
-+	add	ecx,DWORD[16+rsp]
-+	and	esi,eax
-+	xor	eax,ebx
-+	shrd	ebp,ebp,7
-+	vpxor	xmm1,xmm1,xmm2
-+	mov	edi,edx
-+	xor	esi,eax
-+	vpaddd	xmm9,xmm11,xmm0
-+	shld	edx,edx,5
-+	add	ecx,esi
-+	vpxor	xmm1,xmm1,xmm8
-+	xor	edi,ebp
-+	xor	ebp,eax
-+	add	ecx,edx
-+	add	ebx,DWORD[20+rsp]
-+	vpsrld	xmm8,xmm1,30
-+	vmovdqa	XMMWORD[rsp],xmm9
-+	and	edi,ebp
-+	xor	ebp,eax
-+	shrd	edx,edx,7
-+	mov	esi,ecx
-+	vpslld	xmm1,xmm1,2
-+	xor	edi,ebp
-+	shld	ecx,ecx,5
-+	add	ebx,edi
-+	xor	esi,edx
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	add	eax,DWORD[24+rsp]
-+	and	esi,edx
-+	vpor	xmm1,xmm1,xmm8
-+	xor	edx,ebp
-+	shrd	ecx,ecx,7
-+	mov	edi,ebx
-+	xor	esi,edx
-+	shld	ebx,ebx,5
-+	add	eax,esi
-+	xor	edi,ecx
-+	xor	ecx,edx
-+	add	eax,ebx
-+	add	ebp,DWORD[28+rsp]
-+	and	edi,ecx
-+	xor	ecx,edx
-+	shrd	ebx,ebx,7
-+	mov	esi,eax
-+	xor	edi,ecx
-+	shld	eax,eax,5
-+	add	ebp,edi
-+	xor	esi,ebx
-+	xor	ebx,ecx
-+	add	ebp,eax
-+	vpalignr	xmm8,xmm1,xmm0,8
-+	vpxor	xmm2,xmm2,xmm6
-+	add	edx,DWORD[32+rsp]
-+	and	esi,ebx
-+	xor	ebx,ecx
-+	shrd	eax,eax,7
-+	vpxor	xmm2,xmm2,xmm3
-+	mov	edi,ebp
-+	xor	esi,ebx
-+	vpaddd	xmm9,xmm11,xmm1
-+	shld	ebp,ebp,5
-+	add	edx,esi
-+	vpxor	xmm2,xmm2,xmm8
-+	xor	edi,eax
-+	xor	eax,ebx
-+	add	edx,ebp
-+	add	ecx,DWORD[36+rsp]
-+	vpsrld	xmm8,xmm2,30
-+	vmovdqa	XMMWORD[16+rsp],xmm9
-+	and	edi,eax
-+	xor	eax,ebx
-+	shrd	ebp,ebp,7
-+	mov	esi,edx
-+	vpslld	xmm2,xmm2,2
-+	xor	edi,eax
-+	shld	edx,edx,5
-+	add	ecx,edi
-+	xor	esi,ebp
-+	xor	ebp,eax
-+	add	ecx,edx
-+	add	ebx,DWORD[40+rsp]
-+	and	esi,ebp
-+	vpor	xmm2,xmm2,xmm8
-+	xor	ebp,eax
-+	shrd	edx,edx,7
-+	mov	edi,ecx
-+	xor	esi,ebp
-+	shld	ecx,ecx,5
-+	add	ebx,esi
-+	xor	edi,edx
-+	xor	edx,ebp
-+	add	ebx,ecx
-+	add	eax,DWORD[44+rsp]
-+	and	edi,edx
-+	xor	edx,ebp
-+	shrd	ecx,ecx,7
-+	mov	esi,ebx
-+	xor	edi,edx
-+	shld	ebx,ebx,5
-+	add	eax,edi
-+	xor	esi,edx
-+	add	eax,ebx
-+	vpalignr	xmm8,xmm2,xmm1,8
-+	vpxor	xmm3,xmm3,xmm7
-+	add	ebp,DWORD[48+rsp]
-+	xor	esi,ecx
-+	mov	edi,eax
-+	shld	eax,eax,5
-+	vpxor	xmm3,xmm3,xmm4
-+	add	ebp,esi
-+	xor	edi,ecx
-+	vpaddd	xmm9,xmm11,xmm2
-+	shrd	ebx,ebx,7
-+	add	ebp,eax
-+	vpxor	xmm3,xmm3,xmm8
-+	add	edx,DWORD[52+rsp]
-+	xor	edi,ebx
-+	mov	esi,ebp
-+	shld	ebp,ebp,5
-+	vpsrld	xmm8,xmm3,30
-+	vmovdqa	XMMWORD[32+rsp],xmm9
-+	add	edx,edi
-+	xor	esi,ebx
-+	shrd	eax,eax,7
-+	add	edx,ebp
-+	vpslld	xmm3,xmm3,2
-+	add	ecx,DWORD[56+rsp]
-+	xor	esi,eax
-+	mov	edi,edx
-+	shld	edx,edx,5
-+	add	ecx,esi
-+	xor	edi,eax
-+	shrd	ebp,ebp,7
-+	add	ecx,edx
-+	vpor	xmm3,xmm3,xmm8
-+	add	ebx,DWORD[60+rsp]
-+	xor	edi,ebp
-+	mov	esi,ecx
-+	shld	ecx,ecx,5
-+	add	ebx,edi
-+	xor	esi,ebp
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[rsp]
-+	vpaddd	xmm9,xmm11,xmm3
-+	xor	esi,edx
-+	mov	edi,ebx
-+	shld	ebx,ebx,5
-+	add	eax,esi
-+	vmovdqa	XMMWORD[48+rsp],xmm9
-+	xor	edi,edx
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	add	ebp,DWORD[4+rsp]
-+	xor	edi,ecx
-+	mov	esi,eax
-+	shld	eax,eax,5
-+	add	ebp,edi
-+	xor	esi,ecx
-+	shrd	ebx,ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[8+rsp]
-+	xor	esi,ebx
-+	mov	edi,ebp
-+	shld	ebp,ebp,5
-+	add	edx,esi
-+	xor	edi,ebx
-+	shrd	eax,eax,7
-+	add	edx,ebp
-+	add	ecx,DWORD[12+rsp]
-+	xor	edi,eax
-+	mov	esi,edx
-+	shld	edx,edx,5
-+	add	ecx,edi
-+	xor	esi,eax
-+	shrd	ebp,ebp,7
-+	add	ecx,edx
-+	cmp	r9,r10
-+	je	NEAR $L$done_avx
-+	vmovdqa	xmm6,XMMWORD[64+r11]
-+	vmovdqa	xmm11,XMMWORD[((-64))+r11]
-+	vmovdqu	xmm0,XMMWORD[r9]
-+	vmovdqu	xmm1,XMMWORD[16+r9]
-+	vmovdqu	xmm2,XMMWORD[32+r9]
-+	vmovdqu	xmm3,XMMWORD[48+r9]
-+	vpshufb	xmm0,xmm0,xmm6
-+	add	r9,64
-+	add	ebx,DWORD[16+rsp]
-+	xor	esi,ebp
-+	vpshufb	xmm1,xmm1,xmm6
-+	mov	edi,ecx
-+	shld	ecx,ecx,5
-+	vpaddd	xmm4,xmm0,xmm11
-+	add	ebx,esi
-+	xor	edi,ebp
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	vmovdqa	XMMWORD[rsp],xmm4
-+	add	eax,DWORD[20+rsp]
-+	xor	edi,edx
-+	mov	esi,ebx
-+	shld	ebx,ebx,5
-+	add	eax,edi
-+	xor	esi,edx
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	add	ebp,DWORD[24+rsp]
-+	xor	esi,ecx
-+	mov	edi,eax
-+	shld	eax,eax,5
-+	add	ebp,esi
-+	xor	edi,ecx
-+	shrd	ebx,ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[28+rsp]
-+	xor	edi,ebx
-+	mov	esi,ebp
-+	shld	ebp,ebp,5
-+	add	edx,edi
-+	xor	esi,ebx
-+	shrd	eax,eax,7
-+	add	edx,ebp
-+	add	ecx,DWORD[32+rsp]
-+	xor	esi,eax
-+	vpshufb	xmm2,xmm2,xmm6
-+	mov	edi,edx
-+	shld	edx,edx,5
-+	vpaddd	xmm5,xmm1,xmm11
-+	add	ecx,esi
-+	xor	edi,eax
-+	shrd	ebp,ebp,7
-+	add	ecx,edx
-+	vmovdqa	XMMWORD[16+rsp],xmm5
-+	add	ebx,DWORD[36+rsp]
-+	xor	edi,ebp
-+	mov	esi,ecx
-+	shld	ecx,ecx,5
-+	add	ebx,edi
-+	xor	esi,ebp
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[40+rsp]
-+	xor	esi,edx
-+	mov	edi,ebx
-+	shld	ebx,ebx,5
-+	add	eax,esi
-+	xor	edi,edx
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	add	ebp,DWORD[44+rsp]
-+	xor	edi,ecx
-+	mov	esi,eax
-+	shld	eax,eax,5
-+	add	ebp,edi
-+	xor	esi,ecx
-+	shrd	ebx,ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[48+rsp]
-+	xor	esi,ebx
-+	vpshufb	xmm3,xmm3,xmm6
-+	mov	edi,ebp
-+	shld	ebp,ebp,5
-+	vpaddd	xmm6,xmm2,xmm11
-+	add	edx,esi
-+	xor	edi,ebx
-+	shrd	eax,eax,7
-+	add	edx,ebp
-+	vmovdqa	XMMWORD[32+rsp],xmm6
-+	add	ecx,DWORD[52+rsp]
-+	xor	edi,eax
-+	mov	esi,edx
-+	shld	edx,edx,5
-+	add	ecx,edi
-+	xor	esi,eax
-+	shrd	ebp,ebp,7
-+	add	ecx,edx
-+	add	ebx,DWORD[56+rsp]
-+	xor	esi,ebp
-+	mov	edi,ecx
-+	shld	ecx,ecx,5
-+	add	ebx,esi
-+	xor	edi,ebp
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[60+rsp]
-+	xor	edi,edx
-+	mov	esi,ebx
-+	shld	ebx,ebx,5
-+	add	eax,edi
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	add	eax,DWORD[r8]
-+	add	esi,DWORD[4+r8]
-+	add	ecx,DWORD[8+r8]
-+	add	edx,DWORD[12+r8]
-+	mov	DWORD[r8],eax
-+	add	ebp,DWORD[16+r8]
-+	mov	DWORD[4+r8],esi
-+	mov	ebx,esi
-+	mov	DWORD[8+r8],ecx
-+	mov	edi,ecx
-+	mov	DWORD[12+r8],edx
-+	xor	edi,edx
-+	mov	DWORD[16+r8],ebp
-+	and	esi,edi
-+	jmp	NEAR $L$oop_avx
-+
-+ALIGN	16
-+$L$done_avx:
-+	add	ebx,DWORD[16+rsp]
-+	xor	esi,ebp
-+	mov	edi,ecx
-+	shld	ecx,ecx,5
-+	add	ebx,esi
-+	xor	edi,ebp
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[20+rsp]
-+	xor	edi,edx
-+	mov	esi,ebx
-+	shld	ebx,ebx,5
-+	add	eax,edi
-+	xor	esi,edx
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	add	ebp,DWORD[24+rsp]
-+	xor	esi,ecx
-+	mov	edi,eax
-+	shld	eax,eax,5
-+	add	ebp,esi
-+	xor	edi,ecx
-+	shrd	ebx,ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[28+rsp]
-+	xor	edi,ebx
-+	mov	esi,ebp
-+	shld	ebp,ebp,5
-+	add	edx,edi
-+	xor	esi,ebx
-+	shrd	eax,eax,7
-+	add	edx,ebp
-+	add	ecx,DWORD[32+rsp]
-+	xor	esi,eax
-+	mov	edi,edx
-+	shld	edx,edx,5
-+	add	ecx,esi
-+	xor	edi,eax
-+	shrd	ebp,ebp,7
-+	add	ecx,edx
-+	add	ebx,DWORD[36+rsp]
-+	xor	edi,ebp
-+	mov	esi,ecx
-+	shld	ecx,ecx,5
-+	add	ebx,edi
-+	xor	esi,ebp
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[40+rsp]
-+	xor	esi,edx
-+	mov	edi,ebx
-+	shld	ebx,ebx,5
-+	add	eax,esi
-+	xor	edi,edx
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	add	ebp,DWORD[44+rsp]
-+	xor	edi,ecx
-+	mov	esi,eax
-+	shld	eax,eax,5
-+	add	ebp,edi
-+	xor	esi,ecx
-+	shrd	ebx,ebx,7
-+	add	ebp,eax
-+	add	edx,DWORD[48+rsp]
-+	xor	esi,ebx
-+	mov	edi,ebp
-+	shld	ebp,ebp,5
-+	add	edx,esi
-+	xor	edi,ebx
-+	shrd	eax,eax,7
-+	add	edx,ebp
-+	add	ecx,DWORD[52+rsp]
-+	xor	edi,eax
-+	mov	esi,edx
-+	shld	edx,edx,5
-+	add	ecx,edi
-+	xor	esi,eax
-+	shrd	ebp,ebp,7
-+	add	ecx,edx
-+	add	ebx,DWORD[56+rsp]
-+	xor	esi,ebp
-+	mov	edi,ecx
-+	shld	ecx,ecx,5
-+	add	ebx,esi
-+	xor	edi,ebp
-+	shrd	edx,edx,7
-+	add	ebx,ecx
-+	add	eax,DWORD[60+rsp]
-+	xor	edi,edx
-+	mov	esi,ebx
-+	shld	ebx,ebx,5
-+	add	eax,edi
-+	shrd	ecx,ecx,7
-+	add	eax,ebx
-+	vzeroupper
-+
-+	add	eax,DWORD[r8]
-+	add	esi,DWORD[4+r8]
-+	add	ecx,DWORD[8+r8]
-+	mov	DWORD[r8],eax
-+	add	edx,DWORD[12+r8]
-+	mov	DWORD[4+r8],esi
-+	add	ebp,DWORD[16+r8]
-+	mov	DWORD[8+r8],ecx
-+	mov	DWORD[12+r8],edx
-+	mov	DWORD[16+r8],ebp
-+	movaps	xmm6,XMMWORD[((-40-96))+r14]
-+	movaps	xmm7,XMMWORD[((-40-80))+r14]
-+	movaps	xmm8,XMMWORD[((-40-64))+r14]
-+	movaps	xmm9,XMMWORD[((-40-48))+r14]
-+	movaps	xmm10,XMMWORD[((-40-32))+r14]
-+	movaps	xmm11,XMMWORD[((-40-16))+r14]
-+	lea	rsi,[r14]
-+	mov	r14,QWORD[((-40))+rsi]
-+	mov	r13,QWORD[((-32))+rsi]
-+	mov	r12,QWORD[((-24))+rsi]
-+	mov	rbp,QWORD[((-16))+rsi]
-+	mov	rbx,QWORD[((-8))+rsi]
-+	lea	rsp,[rsi]
-+$L$epilogue_avx:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha1_block_data_order_avx:
-+
-+ALIGN	16
-+sha1_block_data_order_avx2:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha1_block_data_order_avx2:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+_avx2_shortcut:
-+	mov	rax,rsp
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	vzeroupper
-+	lea	rsp,[((-96))+rsp]
-+	vmovaps	XMMWORD[(-40-96)+rax],xmm6
-+	vmovaps	XMMWORD[(-40-80)+rax],xmm7
-+	vmovaps	XMMWORD[(-40-64)+rax],xmm8
-+	vmovaps	XMMWORD[(-40-48)+rax],xmm9
-+	vmovaps	XMMWORD[(-40-32)+rax],xmm10
-+	vmovaps	XMMWORD[(-40-16)+rax],xmm11
-+$L$prologue_avx2:
-+	mov	r14,rax
-+	mov	r8,rdi
-+	mov	r9,rsi
-+	mov	r10,rdx
-+
-+	lea	rsp,[((-640))+rsp]
-+	shl	r10,6
-+	lea	r13,[64+r9]
-+	and	rsp,-128
-+	add	r10,r9
-+	lea	r11,[((K_XX_XX+64))]
-+
-+	mov	eax,DWORD[r8]
-+	cmp	r13,r10
-+	cmovae	r13,r9
-+	mov	ebp,DWORD[4+r8]
-+	mov	ecx,DWORD[8+r8]
-+	mov	edx,DWORD[12+r8]
-+	mov	esi,DWORD[16+r8]
-+	vmovdqu	ymm6,YMMWORD[64+r11]
-+
-+	vmovdqu	xmm0,XMMWORD[r9]
-+	vmovdqu	xmm1,XMMWORD[16+r9]
-+	vmovdqu	xmm2,XMMWORD[32+r9]
-+	vmovdqu	xmm3,XMMWORD[48+r9]
-+	lea	r9,[64+r9]
-+	vinserti128	ymm0,ymm0,XMMWORD[r13],1
-+	vinserti128	ymm1,ymm1,XMMWORD[16+r13],1
-+	vpshufb	ymm0,ymm0,ymm6
-+	vinserti128	ymm2,ymm2,XMMWORD[32+r13],1
-+	vpshufb	ymm1,ymm1,ymm6
-+	vinserti128	ymm3,ymm3,XMMWORD[48+r13],1
-+	vpshufb	ymm2,ymm2,ymm6
-+	vmovdqu	ymm11,YMMWORD[((-64))+r11]
-+	vpshufb	ymm3,ymm3,ymm6
-+
-+	vpaddd	ymm4,ymm0,ymm11
-+	vpaddd	ymm5,ymm1,ymm11
-+	vmovdqu	YMMWORD[rsp],ymm4
-+	vpaddd	ymm6,ymm2,ymm11
-+	vmovdqu	YMMWORD[32+rsp],ymm5
-+	vpaddd	ymm7,ymm3,ymm11
-+	vmovdqu	YMMWORD[64+rsp],ymm6
-+	vmovdqu	YMMWORD[96+rsp],ymm7
-+	vpalignr	ymm4,ymm1,ymm0,8
-+	vpsrldq	ymm8,ymm3,4
-+	vpxor	ymm4,ymm4,ymm0
-+	vpxor	ymm8,ymm8,ymm2
-+	vpxor	ymm4,ymm4,ymm8
-+	vpsrld	ymm8,ymm4,31
-+	vpslldq	ymm10,ymm4,12
-+	vpaddd	ymm4,ymm4,ymm4
-+	vpsrld	ymm9,ymm10,30
-+	vpor	ymm4,ymm4,ymm8
-+	vpslld	ymm10,ymm10,2
-+	vpxor	ymm4,ymm4,ymm9
-+	vpxor	ymm4,ymm4,ymm10
-+	vpaddd	ymm9,ymm4,ymm11
-+	vmovdqu	YMMWORD[128+rsp],ymm9
-+	vpalignr	ymm5,ymm2,ymm1,8
-+	vpsrldq	ymm8,ymm4,4
-+	vpxor	ymm5,ymm5,ymm1
-+	vpxor	ymm8,ymm8,ymm3
-+	vpxor	ymm5,ymm5,ymm8
-+	vpsrld	ymm8,ymm5,31
-+	vmovdqu	ymm11,YMMWORD[((-32))+r11]
-+	vpslldq	ymm10,ymm5,12
-+	vpaddd	ymm5,ymm5,ymm5
-+	vpsrld	ymm9,ymm10,30
-+	vpor	ymm5,ymm5,ymm8
-+	vpslld	ymm10,ymm10,2
-+	vpxor	ymm5,ymm5,ymm9
-+	vpxor	ymm5,ymm5,ymm10
-+	vpaddd	ymm9,ymm5,ymm11
-+	vmovdqu	YMMWORD[160+rsp],ymm9
-+	vpalignr	ymm6,ymm3,ymm2,8
-+	vpsrldq	ymm8,ymm5,4
-+	vpxor	ymm6,ymm6,ymm2
-+	vpxor	ymm8,ymm8,ymm4
-+	vpxor	ymm6,ymm6,ymm8
-+	vpsrld	ymm8,ymm6,31
-+	vpslldq	ymm10,ymm6,12
-+	vpaddd	ymm6,ymm6,ymm6
-+	vpsrld	ymm9,ymm10,30
-+	vpor	ymm6,ymm6,ymm8
-+	vpslld	ymm10,ymm10,2
-+	vpxor	ymm6,ymm6,ymm9
-+	vpxor	ymm6,ymm6,ymm10
-+	vpaddd	ymm9,ymm6,ymm11
-+	vmovdqu	YMMWORD[192+rsp],ymm9
-+	vpalignr	ymm7,ymm4,ymm3,8
-+	vpsrldq	ymm8,ymm6,4
-+	vpxor	ymm7,ymm7,ymm3
-+	vpxor	ymm8,ymm8,ymm5
-+	vpxor	ymm7,ymm7,ymm8
-+	vpsrld	ymm8,ymm7,31
-+	vpslldq	ymm10,ymm7,12
-+	vpaddd	ymm7,ymm7,ymm7
-+	vpsrld	ymm9,ymm10,30
-+	vpor	ymm7,ymm7,ymm8
-+	vpslld	ymm10,ymm10,2
-+	vpxor	ymm7,ymm7,ymm9
-+	vpxor	ymm7,ymm7,ymm10
-+	vpaddd	ymm9,ymm7,ymm11
-+	vmovdqu	YMMWORD[224+rsp],ymm9
-+	lea	r13,[128+rsp]
-+	jmp	NEAR $L$oop_avx2
-+ALIGN	32
-+$L$oop_avx2:
-+	rorx	ebx,ebp,2
-+	andn	edi,ebp,edx
-+	and	ebp,ecx
-+	xor	ebp,edi
-+	jmp	NEAR $L$align32_1
-+ALIGN	32
-+$L$align32_1:
-+	vpalignr	ymm8,ymm7,ymm6,8
-+	vpxor	ymm0,ymm0,ymm4
-+	add	esi,DWORD[((-128))+r13]
-+	andn	edi,eax,ecx
-+	vpxor	ymm0,ymm0,ymm1
-+	add	esi,ebp
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	vpxor	ymm0,ymm0,ymm8
-+	and	eax,ebx
-+	add	esi,r12d
-+	xor	eax,edi
-+	vpsrld	ymm8,ymm0,30
-+	vpslld	ymm0,ymm0,2
-+	add	edx,DWORD[((-124))+r13]
-+	andn	edi,esi,ebx
-+	add	edx,eax
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	and	esi,ebp
-+	vpor	ymm0,ymm0,ymm8
-+	add	edx,r12d
-+	xor	esi,edi
-+	add	ecx,DWORD[((-120))+r13]
-+	andn	edi,edx,ebp
-+	vpaddd	ymm9,ymm0,ymm11
-+	add	ecx,esi
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	and	edx,eax
-+	vmovdqu	YMMWORD[256+rsp],ymm9
-+	add	ecx,r12d
-+	xor	edx,edi
-+	add	ebx,DWORD[((-116))+r13]
-+	andn	edi,ecx,eax
-+	add	ebx,edx
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	and	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,edi
-+	add	ebp,DWORD[((-96))+r13]
-+	andn	edi,ebx,esi
-+	add	ebp,ecx
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	and	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,edi
-+	vpalignr	ymm8,ymm0,ymm7,8
-+	vpxor	ymm1,ymm1,ymm5
-+	add	eax,DWORD[((-92))+r13]
-+	andn	edi,ebp,edx
-+	vpxor	ymm1,ymm1,ymm2
-+	add	eax,ebx
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	vpxor	ymm1,ymm1,ymm8
-+	and	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edi
-+	vpsrld	ymm8,ymm1,30
-+	vpslld	ymm1,ymm1,2
-+	add	esi,DWORD[((-88))+r13]
-+	andn	edi,eax,ecx
-+	add	esi,ebp
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	and	eax,ebx
-+	vpor	ymm1,ymm1,ymm8
-+	add	esi,r12d
-+	xor	eax,edi
-+	add	edx,DWORD[((-84))+r13]
-+	andn	edi,esi,ebx
-+	vpaddd	ymm9,ymm1,ymm11
-+	add	edx,eax
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	and	esi,ebp
-+	vmovdqu	YMMWORD[288+rsp],ymm9
-+	add	edx,r12d
-+	xor	esi,edi
-+	add	ecx,DWORD[((-64))+r13]
-+	andn	edi,edx,ebp
-+	add	ecx,esi
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	and	edx,eax
-+	add	ecx,r12d
-+	xor	edx,edi
-+	add	ebx,DWORD[((-60))+r13]
-+	andn	edi,ecx,eax
-+	add	ebx,edx
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	and	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,edi
-+	vpalignr	ymm8,ymm1,ymm0,8
-+	vpxor	ymm2,ymm2,ymm6
-+	add	ebp,DWORD[((-56))+r13]
-+	andn	edi,ebx,esi
-+	vpxor	ymm2,ymm2,ymm3
-+	vmovdqu	ymm11,YMMWORD[r11]
-+	add	ebp,ecx
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	vpxor	ymm2,ymm2,ymm8
-+	and	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,edi
-+	vpsrld	ymm8,ymm2,30
-+	vpslld	ymm2,ymm2,2
-+	add	eax,DWORD[((-52))+r13]
-+	andn	edi,ebp,edx
-+	add	eax,ebx
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	and	ebp,ecx
-+	vpor	ymm2,ymm2,ymm8
-+	add	eax,r12d
-+	xor	ebp,edi
-+	add	esi,DWORD[((-32))+r13]
-+	andn	edi,eax,ecx
-+	vpaddd	ymm9,ymm2,ymm11
-+	add	esi,ebp
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	and	eax,ebx
-+	vmovdqu	YMMWORD[320+rsp],ymm9
-+	add	esi,r12d
-+	xor	eax,edi
-+	add	edx,DWORD[((-28))+r13]
-+	andn	edi,esi,ebx
-+	add	edx,eax
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	and	esi,ebp
-+	add	edx,r12d
-+	xor	esi,edi
-+	add	ecx,DWORD[((-24))+r13]
-+	andn	edi,edx,ebp
-+	add	ecx,esi
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	and	edx,eax
-+	add	ecx,r12d
-+	xor	edx,edi
-+	vpalignr	ymm8,ymm2,ymm1,8
-+	vpxor	ymm3,ymm3,ymm7
-+	add	ebx,DWORD[((-20))+r13]
-+	andn	edi,ecx,eax
-+	vpxor	ymm3,ymm3,ymm4
-+	add	ebx,edx
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	vpxor	ymm3,ymm3,ymm8
-+	and	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,edi
-+	vpsrld	ymm8,ymm3,30
-+	vpslld	ymm3,ymm3,2
-+	add	ebp,DWORD[r13]
-+	andn	edi,ebx,esi
-+	add	ebp,ecx
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	and	ebx,edx
-+	vpor	ymm3,ymm3,ymm8
-+	add	ebp,r12d
-+	xor	ebx,edi
-+	add	eax,DWORD[4+r13]
-+	andn	edi,ebp,edx
-+	vpaddd	ymm9,ymm3,ymm11
-+	add	eax,ebx
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	and	ebp,ecx
-+	vmovdqu	YMMWORD[352+rsp],ymm9
-+	add	eax,r12d
-+	xor	ebp,edi
-+	add	esi,DWORD[8+r13]
-+	andn	edi,eax,ecx
-+	add	esi,ebp
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	and	eax,ebx
-+	add	esi,r12d
-+	xor	eax,edi
-+	add	edx,DWORD[12+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	vpalignr	ymm8,ymm3,ymm2,8
-+	vpxor	ymm4,ymm4,ymm0
-+	add	ecx,DWORD[32+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	vpxor	ymm4,ymm4,ymm5
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	vpxor	ymm4,ymm4,ymm8
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[36+r13]
-+	vpsrld	ymm8,ymm4,30
-+	vpslld	ymm4,ymm4,2
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	vpor	ymm4,ymm4,ymm8
-+	add	ebp,DWORD[40+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	vpaddd	ymm9,ymm4,ymm11
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	add	eax,DWORD[44+r13]
-+	vmovdqu	YMMWORD[384+rsp],ymm9
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	add	esi,DWORD[64+r13]
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	vpalignr	ymm8,ymm4,ymm3,8
-+	vpxor	ymm5,ymm5,ymm1
-+	add	edx,DWORD[68+r13]
-+	lea	edx,[rax*1+rdx]
-+	vpxor	ymm5,ymm5,ymm6
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	vpxor	ymm5,ymm5,ymm8
-+	add	edx,r12d
-+	xor	esi,ebx
-+	add	ecx,DWORD[72+r13]
-+	vpsrld	ymm8,ymm5,30
-+	vpslld	ymm5,ymm5,2
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	vpor	ymm5,ymm5,ymm8
-+	add	ebx,DWORD[76+r13]
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	vpaddd	ymm9,ymm5,ymm11
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	add	ebp,DWORD[96+r13]
-+	vmovdqu	YMMWORD[416+rsp],ymm9
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	add	eax,DWORD[100+r13]
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	vpalignr	ymm8,ymm5,ymm4,8
-+	vpxor	ymm6,ymm6,ymm2
-+	add	esi,DWORD[104+r13]
-+	lea	esi,[rbp*1+rsi]
-+	vpxor	ymm6,ymm6,ymm7
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	vpxor	ymm6,ymm6,ymm8
-+	add	esi,r12d
-+	xor	eax,ecx
-+	add	edx,DWORD[108+r13]
-+	lea	r13,[256+r13]
-+	vpsrld	ymm8,ymm6,30
-+	vpslld	ymm6,ymm6,2
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	vpor	ymm6,ymm6,ymm8
-+	add	ecx,DWORD[((-128))+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	vpaddd	ymm9,ymm6,ymm11
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[((-124))+r13]
-+	vmovdqu	YMMWORD[448+rsp],ymm9
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	add	ebp,DWORD[((-120))+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	vpalignr	ymm8,ymm6,ymm5,8
-+	vpxor	ymm7,ymm7,ymm3
-+	add	eax,DWORD[((-116))+r13]
-+	lea	eax,[rbx*1+rax]
-+	vpxor	ymm7,ymm7,ymm0
-+	vmovdqu	ymm11,YMMWORD[32+r11]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	vpxor	ymm7,ymm7,ymm8
-+	add	eax,r12d
-+	xor	ebp,edx
-+	add	esi,DWORD[((-96))+r13]
-+	vpsrld	ymm8,ymm7,30
-+	vpslld	ymm7,ymm7,2
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	vpor	ymm7,ymm7,ymm8
-+	add	edx,DWORD[((-92))+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	vpaddd	ymm9,ymm7,ymm11
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	add	ecx,DWORD[((-88))+r13]
-+	vmovdqu	YMMWORD[480+rsp],ymm9
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[((-84))+r13]
-+	mov	edi,esi
-+	xor	edi,eax
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	and	ecx,edi
-+	jmp	NEAR $L$align32_2
-+ALIGN	32
-+$L$align32_2:
-+	vpalignr	ymm8,ymm7,ymm6,8
-+	vpxor	ymm0,ymm0,ymm4
-+	add	ebp,DWORD[((-64))+r13]
-+	xor	ecx,esi
-+	vpxor	ymm0,ymm0,ymm1
-+	mov	edi,edx
-+	xor	edi,esi
-+	lea	ebp,[rbp*1+rcx]
-+	vpxor	ymm0,ymm0,ymm8
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	vpsrld	ymm8,ymm0,30
-+	vpslld	ymm0,ymm0,2
-+	add	ebp,r12d
-+	and	ebx,edi
-+	add	eax,DWORD[((-60))+r13]
-+	xor	ebx,edx
-+	mov	edi,ecx
-+	xor	edi,edx
-+	vpor	ymm0,ymm0,ymm8
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	vpaddd	ymm9,ymm0,ymm11
-+	add	eax,r12d
-+	and	ebp,edi
-+	add	esi,DWORD[((-56))+r13]
-+	xor	ebp,ecx
-+	vmovdqu	YMMWORD[512+rsp],ymm9
-+	mov	edi,ebx
-+	xor	edi,ecx
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	and	eax,edi
-+	add	edx,DWORD[((-52))+r13]
-+	xor	eax,ebx
-+	mov	edi,ebp
-+	xor	edi,ebx
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	and	esi,edi
-+	add	ecx,DWORD[((-32))+r13]
-+	xor	esi,ebp
-+	mov	edi,eax
-+	xor	edi,ebp
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	and	edx,edi
-+	vpalignr	ymm8,ymm0,ymm7,8
-+	vpxor	ymm1,ymm1,ymm5
-+	add	ebx,DWORD[((-28))+r13]
-+	xor	edx,eax
-+	vpxor	ymm1,ymm1,ymm2
-+	mov	edi,esi
-+	xor	edi,eax
-+	lea	ebx,[rdx*1+rbx]
-+	vpxor	ymm1,ymm1,ymm8
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	vpsrld	ymm8,ymm1,30
-+	vpslld	ymm1,ymm1,2
-+	add	ebx,r12d
-+	and	ecx,edi
-+	add	ebp,DWORD[((-24))+r13]
-+	xor	ecx,esi
-+	mov	edi,edx
-+	xor	edi,esi
-+	vpor	ymm1,ymm1,ymm8
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	vpaddd	ymm9,ymm1,ymm11
-+	add	ebp,r12d
-+	and	ebx,edi
-+	add	eax,DWORD[((-20))+r13]
-+	xor	ebx,edx
-+	vmovdqu	YMMWORD[544+rsp],ymm9
-+	mov	edi,ecx
-+	xor	edi,edx
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	and	ebp,edi
-+	add	esi,DWORD[r13]
-+	xor	ebp,ecx
-+	mov	edi,ebx
-+	xor	edi,ecx
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	and	eax,edi
-+	add	edx,DWORD[4+r13]
-+	xor	eax,ebx
-+	mov	edi,ebp
-+	xor	edi,ebx
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	and	esi,edi
-+	vpalignr	ymm8,ymm1,ymm0,8
-+	vpxor	ymm2,ymm2,ymm6
-+	add	ecx,DWORD[8+r13]
-+	xor	esi,ebp
-+	vpxor	ymm2,ymm2,ymm3
-+	mov	edi,eax
-+	xor	edi,ebp
-+	lea	ecx,[rsi*1+rcx]
-+	vpxor	ymm2,ymm2,ymm8
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	vpsrld	ymm8,ymm2,30
-+	vpslld	ymm2,ymm2,2
-+	add	ecx,r12d
-+	and	edx,edi
-+	add	ebx,DWORD[12+r13]
-+	xor	edx,eax
-+	mov	edi,esi
-+	xor	edi,eax
-+	vpor	ymm2,ymm2,ymm8
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	vpaddd	ymm9,ymm2,ymm11
-+	add	ebx,r12d
-+	and	ecx,edi
-+	add	ebp,DWORD[32+r13]
-+	xor	ecx,esi
-+	vmovdqu	YMMWORD[576+rsp],ymm9
-+	mov	edi,edx
-+	xor	edi,esi
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	and	ebx,edi
-+	add	eax,DWORD[36+r13]
-+	xor	ebx,edx
-+	mov	edi,ecx
-+	xor	edi,edx
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	and	ebp,edi
-+	add	esi,DWORD[40+r13]
-+	xor	ebp,ecx
-+	mov	edi,ebx
-+	xor	edi,ecx
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	and	eax,edi
-+	vpalignr	ymm8,ymm2,ymm1,8
-+	vpxor	ymm3,ymm3,ymm7
-+	add	edx,DWORD[44+r13]
-+	xor	eax,ebx
-+	vpxor	ymm3,ymm3,ymm4
-+	mov	edi,ebp
-+	xor	edi,ebx
-+	lea	edx,[rax*1+rdx]
-+	vpxor	ymm3,ymm3,ymm8
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	vpsrld	ymm8,ymm3,30
-+	vpslld	ymm3,ymm3,2
-+	add	edx,r12d
-+	and	esi,edi
-+	add	ecx,DWORD[64+r13]
-+	xor	esi,ebp
-+	mov	edi,eax
-+	xor	edi,ebp
-+	vpor	ymm3,ymm3,ymm8
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	vpaddd	ymm9,ymm3,ymm11
-+	add	ecx,r12d
-+	and	edx,edi
-+	add	ebx,DWORD[68+r13]
-+	xor	edx,eax
-+	vmovdqu	YMMWORD[608+rsp],ymm9
-+	mov	edi,esi
-+	xor	edi,eax
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	and	ecx,edi
-+	add	ebp,DWORD[72+r13]
-+	xor	ecx,esi
-+	mov	edi,edx
-+	xor	edi,esi
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	and	ebx,edi
-+	add	eax,DWORD[76+r13]
-+	xor	ebx,edx
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	add	esi,DWORD[96+r13]
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	add	edx,DWORD[100+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	add	ecx,DWORD[104+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[108+r13]
-+	lea	r13,[256+r13]
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	add	ebp,DWORD[((-128))+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	add	eax,DWORD[((-124))+r13]
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	add	esi,DWORD[((-120))+r13]
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	add	edx,DWORD[((-116))+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	add	ecx,DWORD[((-96))+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[((-92))+r13]
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	add	ebp,DWORD[((-88))+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	add	eax,DWORD[((-84))+r13]
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	add	esi,DWORD[((-64))+r13]
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	add	edx,DWORD[((-60))+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	add	ecx,DWORD[((-56))+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[((-52))+r13]
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	add	ebp,DWORD[((-32))+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	add	eax,DWORD[((-28))+r13]
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	add	esi,DWORD[((-24))+r13]
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	add	edx,DWORD[((-20))+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	add	edx,r12d
-+	lea	r13,[128+r9]
-+	lea	rdi,[128+r9]
-+	cmp	r13,r10
-+	cmovae	r13,r9
-+
-+
-+	add	edx,DWORD[r8]
-+	add	esi,DWORD[4+r8]
-+	add	ebp,DWORD[8+r8]
-+	mov	DWORD[r8],edx
-+	add	ebx,DWORD[12+r8]
-+	mov	DWORD[4+r8],esi
-+	mov	eax,edx
-+	add	ecx,DWORD[16+r8]
-+	mov	r12d,ebp
-+	mov	DWORD[8+r8],ebp
-+	mov	edx,ebx
-+
-+	mov	DWORD[12+r8],ebx
-+	mov	ebp,esi
-+	mov	DWORD[16+r8],ecx
-+
-+	mov	esi,ecx
-+	mov	ecx,r12d
-+
-+
-+	cmp	r9,r10
-+	je	NEAR $L$done_avx2
-+	vmovdqu	ymm6,YMMWORD[64+r11]
-+	cmp	rdi,r10
-+	ja	NEAR $L$ast_avx2
-+
-+	vmovdqu	xmm0,XMMWORD[((-64))+rdi]
-+	vmovdqu	xmm1,XMMWORD[((-48))+rdi]
-+	vmovdqu	xmm2,XMMWORD[((-32))+rdi]
-+	vmovdqu	xmm3,XMMWORD[((-16))+rdi]
-+	vinserti128	ymm0,ymm0,XMMWORD[r13],1
-+	vinserti128	ymm1,ymm1,XMMWORD[16+r13],1
-+	vinserti128	ymm2,ymm2,XMMWORD[32+r13],1
-+	vinserti128	ymm3,ymm3,XMMWORD[48+r13],1
-+	jmp	NEAR $L$ast_avx2
-+
-+ALIGN	32
-+$L$ast_avx2:
-+	lea	r13,[((128+16))+rsp]
-+	rorx	ebx,ebp,2
-+	andn	edi,ebp,edx
-+	and	ebp,ecx
-+	xor	ebp,edi
-+	sub	r9,-128
-+	add	esi,DWORD[((-128))+r13]
-+	andn	edi,eax,ecx
-+	add	esi,ebp
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	and	eax,ebx
-+	add	esi,r12d
-+	xor	eax,edi
-+	add	edx,DWORD[((-124))+r13]
-+	andn	edi,esi,ebx
-+	add	edx,eax
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	and	esi,ebp
-+	add	edx,r12d
-+	xor	esi,edi
-+	add	ecx,DWORD[((-120))+r13]
-+	andn	edi,edx,ebp
-+	add	ecx,esi
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	and	edx,eax
-+	add	ecx,r12d
-+	xor	edx,edi
-+	add	ebx,DWORD[((-116))+r13]
-+	andn	edi,ecx,eax
-+	add	ebx,edx
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	and	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,edi
-+	add	ebp,DWORD[((-96))+r13]
-+	andn	edi,ebx,esi
-+	add	ebp,ecx
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	and	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,edi
-+	add	eax,DWORD[((-92))+r13]
-+	andn	edi,ebp,edx
-+	add	eax,ebx
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	and	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edi
-+	add	esi,DWORD[((-88))+r13]
-+	andn	edi,eax,ecx
-+	add	esi,ebp
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	and	eax,ebx
-+	add	esi,r12d
-+	xor	eax,edi
-+	add	edx,DWORD[((-84))+r13]
-+	andn	edi,esi,ebx
-+	add	edx,eax
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	and	esi,ebp
-+	add	edx,r12d
-+	xor	esi,edi
-+	add	ecx,DWORD[((-64))+r13]
-+	andn	edi,edx,ebp
-+	add	ecx,esi
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	and	edx,eax
-+	add	ecx,r12d
-+	xor	edx,edi
-+	add	ebx,DWORD[((-60))+r13]
-+	andn	edi,ecx,eax
-+	add	ebx,edx
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	and	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,edi
-+	add	ebp,DWORD[((-56))+r13]
-+	andn	edi,ebx,esi
-+	add	ebp,ecx
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	and	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,edi
-+	add	eax,DWORD[((-52))+r13]
-+	andn	edi,ebp,edx
-+	add	eax,ebx
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	and	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edi
-+	add	esi,DWORD[((-32))+r13]
-+	andn	edi,eax,ecx
-+	add	esi,ebp
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	and	eax,ebx
-+	add	esi,r12d
-+	xor	eax,edi
-+	add	edx,DWORD[((-28))+r13]
-+	andn	edi,esi,ebx
-+	add	edx,eax
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	and	esi,ebp
-+	add	edx,r12d
-+	xor	esi,edi
-+	add	ecx,DWORD[((-24))+r13]
-+	andn	edi,edx,ebp
-+	add	ecx,esi
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	and	edx,eax
-+	add	ecx,r12d
-+	xor	edx,edi
-+	add	ebx,DWORD[((-20))+r13]
-+	andn	edi,ecx,eax
-+	add	ebx,edx
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	and	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,edi
-+	add	ebp,DWORD[r13]
-+	andn	edi,ebx,esi
-+	add	ebp,ecx
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	and	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,edi
-+	add	eax,DWORD[4+r13]
-+	andn	edi,ebp,edx
-+	add	eax,ebx
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	and	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edi
-+	add	esi,DWORD[8+r13]
-+	andn	edi,eax,ecx
-+	add	esi,ebp
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	and	eax,ebx
-+	add	esi,r12d
-+	xor	eax,edi
-+	add	edx,DWORD[12+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	add	ecx,DWORD[32+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[36+r13]
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	add	ebp,DWORD[40+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	add	eax,DWORD[44+r13]
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	add	esi,DWORD[64+r13]
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	vmovdqu	ymm11,YMMWORD[((-64))+r11]
-+	vpshufb	ymm0,ymm0,ymm6
-+	add	edx,DWORD[68+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	add	ecx,DWORD[72+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[76+r13]
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	add	ebp,DWORD[96+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	add	eax,DWORD[100+r13]
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	vpshufb	ymm1,ymm1,ymm6
-+	vpaddd	ymm8,ymm0,ymm11
-+	add	esi,DWORD[104+r13]
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	add	edx,DWORD[108+r13]
-+	lea	r13,[256+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	add	ecx,DWORD[((-128))+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[((-124))+r13]
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	add	ebp,DWORD[((-120))+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	vmovdqu	YMMWORD[rsp],ymm8
-+	vpshufb	ymm2,ymm2,ymm6
-+	vpaddd	ymm9,ymm1,ymm11
-+	add	eax,DWORD[((-116))+r13]
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	add	esi,DWORD[((-96))+r13]
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	add	edx,DWORD[((-92))+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	add	ecx,DWORD[((-88))+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[((-84))+r13]
-+	mov	edi,esi
-+	xor	edi,eax
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	and	ecx,edi
-+	vmovdqu	YMMWORD[32+rsp],ymm9
-+	vpshufb	ymm3,ymm3,ymm6
-+	vpaddd	ymm6,ymm2,ymm11
-+	add	ebp,DWORD[((-64))+r13]
-+	xor	ecx,esi
-+	mov	edi,edx
-+	xor	edi,esi
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	and	ebx,edi
-+	add	eax,DWORD[((-60))+r13]
-+	xor	ebx,edx
-+	mov	edi,ecx
-+	xor	edi,edx
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	and	ebp,edi
-+	add	esi,DWORD[((-56))+r13]
-+	xor	ebp,ecx
-+	mov	edi,ebx
-+	xor	edi,ecx
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	and	eax,edi
-+	add	edx,DWORD[((-52))+r13]
-+	xor	eax,ebx
-+	mov	edi,ebp
-+	xor	edi,ebx
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	and	esi,edi
-+	add	ecx,DWORD[((-32))+r13]
-+	xor	esi,ebp
-+	mov	edi,eax
-+	xor	edi,ebp
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	and	edx,edi
-+	jmp	NEAR $L$align32_3
-+ALIGN	32
-+$L$align32_3:
-+	vmovdqu	YMMWORD[64+rsp],ymm6
-+	vpaddd	ymm7,ymm3,ymm11
-+	add	ebx,DWORD[((-28))+r13]
-+	xor	edx,eax
-+	mov	edi,esi
-+	xor	edi,eax
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	and	ecx,edi
-+	add	ebp,DWORD[((-24))+r13]
-+	xor	ecx,esi
-+	mov	edi,edx
-+	xor	edi,esi
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	and	ebx,edi
-+	add	eax,DWORD[((-20))+r13]
-+	xor	ebx,edx
-+	mov	edi,ecx
-+	xor	edi,edx
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	and	ebp,edi
-+	add	esi,DWORD[r13]
-+	xor	ebp,ecx
-+	mov	edi,ebx
-+	xor	edi,ecx
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	and	eax,edi
-+	add	edx,DWORD[4+r13]
-+	xor	eax,ebx
-+	mov	edi,ebp
-+	xor	edi,ebx
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	and	esi,edi
-+	vmovdqu	YMMWORD[96+rsp],ymm7
-+	add	ecx,DWORD[8+r13]
-+	xor	esi,ebp
-+	mov	edi,eax
-+	xor	edi,ebp
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	and	edx,edi
-+	add	ebx,DWORD[12+r13]
-+	xor	edx,eax
-+	mov	edi,esi
-+	xor	edi,eax
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	and	ecx,edi
-+	add	ebp,DWORD[32+r13]
-+	xor	ecx,esi
-+	mov	edi,edx
-+	xor	edi,esi
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	and	ebx,edi
-+	add	eax,DWORD[36+r13]
-+	xor	ebx,edx
-+	mov	edi,ecx
-+	xor	edi,edx
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	and	ebp,edi
-+	add	esi,DWORD[40+r13]
-+	xor	ebp,ecx
-+	mov	edi,ebx
-+	xor	edi,ecx
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	and	eax,edi
-+	vpalignr	ymm4,ymm1,ymm0,8
-+	add	edx,DWORD[44+r13]
-+	xor	eax,ebx
-+	mov	edi,ebp
-+	xor	edi,ebx
-+	vpsrldq	ymm8,ymm3,4
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	vpxor	ymm4,ymm4,ymm0
-+	vpxor	ymm8,ymm8,ymm2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	vpxor	ymm4,ymm4,ymm8
-+	and	esi,edi
-+	add	ecx,DWORD[64+r13]
-+	xor	esi,ebp
-+	mov	edi,eax
-+	vpsrld	ymm8,ymm4,31
-+	xor	edi,ebp
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	vpslldq	ymm10,ymm4,12
-+	vpaddd	ymm4,ymm4,ymm4
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	vpsrld	ymm9,ymm10,30
-+	vpor	ymm4,ymm4,ymm8
-+	add	ecx,r12d
-+	and	edx,edi
-+	vpslld	ymm10,ymm10,2
-+	vpxor	ymm4,ymm4,ymm9
-+	add	ebx,DWORD[68+r13]
-+	xor	edx,eax
-+	vpxor	ymm4,ymm4,ymm10
-+	mov	edi,esi
-+	xor	edi,eax
-+	lea	ebx,[rdx*1+rbx]
-+	vpaddd	ymm9,ymm4,ymm11
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	vmovdqu	YMMWORD[128+rsp],ymm9
-+	add	ebx,r12d
-+	and	ecx,edi
-+	add	ebp,DWORD[72+r13]
-+	xor	ecx,esi
-+	mov	edi,edx
-+	xor	edi,esi
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	and	ebx,edi
-+	add	eax,DWORD[76+r13]
-+	xor	ebx,edx
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	vpalignr	ymm5,ymm2,ymm1,8
-+	add	esi,DWORD[96+r13]
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	vpsrldq	ymm8,ymm4,4
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	vpxor	ymm5,ymm5,ymm1
-+	vpxor	ymm8,ymm8,ymm3
-+	add	edx,DWORD[100+r13]
-+	lea	edx,[rax*1+rdx]
-+	vpxor	ymm5,ymm5,ymm8
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	xor	esi,ebp
-+	add	edx,r12d
-+	vpsrld	ymm8,ymm5,31
-+	vmovdqu	ymm11,YMMWORD[((-32))+r11]
-+	xor	esi,ebx
-+	add	ecx,DWORD[104+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	vpslldq	ymm10,ymm5,12
-+	vpaddd	ymm5,ymm5,ymm5
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	vpsrld	ymm9,ymm10,30
-+	vpor	ymm5,ymm5,ymm8
-+	xor	edx,eax
-+	add	ecx,r12d
-+	vpslld	ymm10,ymm10,2
-+	vpxor	ymm5,ymm5,ymm9
-+	xor	edx,ebp
-+	add	ebx,DWORD[108+r13]
-+	lea	r13,[256+r13]
-+	vpxor	ymm5,ymm5,ymm10
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	vpaddd	ymm9,ymm5,ymm11
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	vmovdqu	YMMWORD[160+rsp],ymm9
-+	add	ebp,DWORD[((-128))+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	vpalignr	ymm6,ymm3,ymm2,8
-+	add	eax,DWORD[((-124))+r13]
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	vpsrldq	ymm8,ymm5,4
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	vpxor	ymm6,ymm6,ymm2
-+	vpxor	ymm8,ymm8,ymm4
-+	add	esi,DWORD[((-120))+r13]
-+	lea	esi,[rbp*1+rsi]
-+	vpxor	ymm6,ymm6,ymm8
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	vpsrld	ymm8,ymm6,31
-+	xor	eax,ecx
-+	add	edx,DWORD[((-116))+r13]
-+	lea	edx,[rax*1+rdx]
-+	vpslldq	ymm10,ymm6,12
-+	vpaddd	ymm6,ymm6,ymm6
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	vpsrld	ymm9,ymm10,30
-+	vpor	ymm6,ymm6,ymm8
-+	xor	esi,ebp
-+	add	edx,r12d
-+	vpslld	ymm10,ymm10,2
-+	vpxor	ymm6,ymm6,ymm9
-+	xor	esi,ebx
-+	add	ecx,DWORD[((-96))+r13]
-+	vpxor	ymm6,ymm6,ymm10
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	vpaddd	ymm9,ymm6,ymm11
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	vmovdqu	YMMWORD[192+rsp],ymm9
-+	add	ebx,DWORD[((-92))+r13]
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	vpalignr	ymm7,ymm4,ymm3,8
-+	add	ebp,DWORD[((-88))+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	vpsrldq	ymm8,ymm6,4
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	vpxor	ymm7,ymm7,ymm3
-+	vpxor	ymm8,ymm8,ymm5
-+	add	eax,DWORD[((-84))+r13]
-+	lea	eax,[rbx*1+rax]
-+	vpxor	ymm7,ymm7,ymm8
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	vpsrld	ymm8,ymm7,31
-+	xor	ebp,edx
-+	add	esi,DWORD[((-64))+r13]
-+	lea	esi,[rbp*1+rsi]
-+	vpslldq	ymm10,ymm7,12
-+	vpaddd	ymm7,ymm7,ymm7
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	vpsrld	ymm9,ymm10,30
-+	vpor	ymm7,ymm7,ymm8
-+	xor	eax,ebx
-+	add	esi,r12d
-+	vpslld	ymm10,ymm10,2
-+	vpxor	ymm7,ymm7,ymm9
-+	xor	eax,ecx
-+	add	edx,DWORD[((-60))+r13]
-+	vpxor	ymm7,ymm7,ymm10
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	rorx	eax,esi,2
-+	vpaddd	ymm9,ymm7,ymm11
-+	xor	esi,ebp
-+	add	edx,r12d
-+	xor	esi,ebx
-+	vmovdqu	YMMWORD[224+rsp],ymm9
-+	add	ecx,DWORD[((-56))+r13]
-+	lea	ecx,[rsi*1+rcx]
-+	rorx	r12d,edx,27
-+	rorx	esi,edx,2
-+	xor	edx,eax
-+	add	ecx,r12d
-+	xor	edx,ebp
-+	add	ebx,DWORD[((-52))+r13]
-+	lea	ebx,[rdx*1+rbx]
-+	rorx	r12d,ecx,27
-+	rorx	edx,ecx,2
-+	xor	ecx,esi
-+	add	ebx,r12d
-+	xor	ecx,eax
-+	add	ebp,DWORD[((-32))+r13]
-+	lea	ebp,[rbp*1+rcx]
-+	rorx	r12d,ebx,27
-+	rorx	ecx,ebx,2
-+	xor	ebx,edx
-+	add	ebp,r12d
-+	xor	ebx,esi
-+	add	eax,DWORD[((-28))+r13]
-+	lea	eax,[rbx*1+rax]
-+	rorx	r12d,ebp,27
-+	rorx	ebx,ebp,2
-+	xor	ebp,ecx
-+	add	eax,r12d
-+	xor	ebp,edx
-+	add	esi,DWORD[((-24))+r13]
-+	lea	esi,[rbp*1+rsi]
-+	rorx	r12d,eax,27
-+	rorx	ebp,eax,2
-+	xor	eax,ebx
-+	add	esi,r12d
-+	xor	eax,ecx
-+	add	edx,DWORD[((-20))+r13]
-+	lea	edx,[rax*1+rdx]
-+	rorx	r12d,esi,27
-+	add	edx,r12d
-+	lea	r13,[128+rsp]
-+
-+
-+	add	edx,DWORD[r8]
-+	add	esi,DWORD[4+r8]
-+	add	ebp,DWORD[8+r8]
-+	mov	DWORD[r8],edx
-+	add	ebx,DWORD[12+r8]
-+	mov	DWORD[4+r8],esi
-+	mov	eax,edx
-+	add	ecx,DWORD[16+r8]
-+	mov	r12d,ebp
-+	mov	DWORD[8+r8],ebp
-+	mov	edx,ebx
-+
-+	mov	DWORD[12+r8],ebx
-+	mov	ebp,esi
-+	mov	DWORD[16+r8],ecx
-+
-+	mov	esi,ecx
-+	mov	ecx,r12d
-+
-+
-+	cmp	r9,r10
-+	jbe	NEAR $L$oop_avx2
-+
-+$L$done_avx2:
-+	vzeroupper
-+	movaps	xmm6,XMMWORD[((-40-96))+r14]
-+	movaps	xmm7,XMMWORD[((-40-80))+r14]
-+	movaps	xmm8,XMMWORD[((-40-64))+r14]
-+	movaps	xmm9,XMMWORD[((-40-48))+r14]
-+	movaps	xmm10,XMMWORD[((-40-32))+r14]
-+	movaps	xmm11,XMMWORD[((-40-16))+r14]
-+	lea	rsi,[r14]
-+	mov	r14,QWORD[((-40))+rsi]
-+	mov	r13,QWORD[((-32))+rsi]
-+	mov	r12,QWORD[((-24))+rsi]
-+	mov	rbp,QWORD[((-16))+rsi]
-+	mov	rbx,QWORD[((-8))+rsi]
-+	lea	rsp,[rsi]
-+$L$epilogue_avx2:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha1_block_data_order_avx2:
-+ALIGN	64
-+K_XX_XX:
-+	DD	0x5a827999,0x5a827999,0x5a827999,0x5a827999
-+	DD	0x5a827999,0x5a827999,0x5a827999,0x5a827999
-+	DD	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
-+	DD	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
-+	DD	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
-+	DD	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
-+	DD	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
-+	DD	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
-+	DD	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
-+	DD	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
-+DB	0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
-+DB	83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
-+DB	102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44
-+DB	32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60
-+DB	97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114
-+DB	103,62,0
-+ALIGN	64
-+EXTERN	__imp_RtlVirtualUnwind
-+
-+ALIGN	16
-+se_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	lea	r10,[$L$prologue]
-+	cmp	rbx,r10
-+	jb	NEAR $L$common_seh_tail
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	lea	r10,[$L$epilogue]
-+	cmp	rbx,r10
-+	jae	NEAR $L$common_seh_tail
-+
-+	mov	rax,QWORD[64+rax]
-+
-+	mov	rbx,QWORD[((-8))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	r12,QWORD[((-24))+rax]
-+	mov	r13,QWORD[((-32))+rax]
-+	mov	r14,QWORD[((-40))+rax]
-+	mov	QWORD[144+r8],rbx
-+	mov	QWORD[160+r8],rbp
-+	mov	QWORD[216+r8],r12
-+	mov	QWORD[224+r8],r13
-+	mov	QWORD[232+r8],r14
-+
-+	jmp	NEAR $L$common_seh_tail
-+
-+
-+ALIGN	16
-+shaext_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	lea	r10,[$L$prologue_shaext]
-+	cmp	rbx,r10
-+	jb	NEAR $L$common_seh_tail
-+
-+	lea	r10,[$L$epilogue_shaext]
-+	cmp	rbx,r10
-+	jae	NEAR $L$common_seh_tail
-+
-+	lea	rsi,[((-8-64))+rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,8
-+	DD	0xa548f3fc
-+
-+	jmp	NEAR $L$common_seh_tail
-+
-+
-+ALIGN	16
-+ssse3_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	mov	rsi,QWORD[8+r9]
-+	mov	r11,QWORD[56+r9]
-+
-+	mov	r10d,DWORD[r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jb	NEAR $L$common_seh_tail
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	mov	r10d,DWORD[4+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$common_seh_tail
-+
-+	mov	rax,QWORD[232+r8]
-+
-+	lea	rsi,[((-40-96))+rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,12
-+	DD	0xa548f3fc
-+
-+	mov	rbx,QWORD[((-8))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	r12,QWORD[((-24))+rax]
-+	mov	r13,QWORD[((-32))+rax]
-+	mov	r14,QWORD[((-40))+rax]
-+	mov	QWORD[144+r8],rbx
-+	mov	QWORD[160+r8],rbp
-+	mov	QWORD[216+r8],r12
-+	mov	QWORD[224+r8],r13
-+	mov	QWORD[232+r8],r14
-+
-+$L$common_seh_tail:
-+	mov	rdi,QWORD[8+rax]
-+	mov	rsi,QWORD[16+rax]
-+	mov	QWORD[152+r8],rax
-+	mov	QWORD[168+r8],rsi
-+	mov	QWORD[176+r8],rdi
-+
-+	mov	rdi,QWORD[40+r9]
-+	mov	rsi,r8
-+	mov	ecx,154
-+	DD	0xa548f3fc
-+
-+	mov	rsi,r9
-+	xor	rcx,rcx
-+	mov	rdx,QWORD[8+rsi]
-+	mov	r8,QWORD[rsi]
-+	mov	r9,QWORD[16+rsi]
-+	mov	r10,QWORD[40+rsi]
-+	lea	r11,[56+rsi]
-+	lea	r12,[24+rsi]
-+	mov	QWORD[32+rsp],r10
-+	mov	QWORD[40+rsp],r11
-+	mov	QWORD[48+rsp],r12
-+	mov	QWORD[56+rsp],rcx
-+	call	QWORD[__imp_RtlVirtualUnwind]
-+
-+	mov	eax,1
-+	add	rsp,64
-+	popfq
-+	pop	r15
-+	pop	r14
-+	pop	r13
-+	pop	r12
-+	pop	rbp
-+	pop	rbx
-+	pop	rdi
-+	pop	rsi
-+	DB	0F3h,0C3h		;repret
-+
-+
-+section	.pdata rdata align=4
-+ALIGN	4
-+	DD	$L$SEH_begin_sha1_block_data_order wrt ..imagebase
-+	DD	$L$SEH_end_sha1_block_data_order wrt ..imagebase
-+	DD	$L$SEH_info_sha1_block_data_order wrt ..imagebase
-+	DD	$L$SEH_begin_sha1_block_data_order_shaext wrt ..imagebase
-+	DD	$L$SEH_end_sha1_block_data_order_shaext wrt ..imagebase
-+	DD	$L$SEH_info_sha1_block_data_order_shaext wrt ..imagebase
-+	DD	$L$SEH_begin_sha1_block_data_order_ssse3 wrt ..imagebase
-+	DD	$L$SEH_end_sha1_block_data_order_ssse3 wrt ..imagebase
-+	DD	$L$SEH_info_sha1_block_data_order_ssse3 wrt ..imagebase
-+	DD	$L$SEH_begin_sha1_block_data_order_avx wrt ..imagebase
-+	DD	$L$SEH_end_sha1_block_data_order_avx wrt ..imagebase
-+	DD	$L$SEH_info_sha1_block_data_order_avx wrt ..imagebase
-+	DD	$L$SEH_begin_sha1_block_data_order_avx2 wrt ..imagebase
-+	DD	$L$SEH_end_sha1_block_data_order_avx2 wrt ..imagebase
-+	DD	$L$SEH_info_sha1_block_data_order_avx2 wrt ..imagebase
-+section	.xdata rdata align=8
-+ALIGN	8
-+$L$SEH_info_sha1_block_data_order:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+$L$SEH_info_sha1_block_data_order_shaext:
-+DB	9,0,0,0
-+	DD	shaext_handler wrt ..imagebase
-+$L$SEH_info_sha1_block_data_order_ssse3:
-+DB	9,0,0,0
-+	DD	ssse3_handler wrt ..imagebase
-+	DD	$L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase
-+$L$SEH_info_sha1_block_data_order_avx:
-+DB	9,0,0,0
-+	DD	ssse3_handler wrt ..imagebase
-+	DD	$L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase
-+$L$SEH_info_sha1_block_data_order_avx2:
-+DB	9,0,0,0
-+	DD	ssse3_handler wrt ..imagebase
-+	DD	$L$prologue_avx2 wrt ..imagebase,$L$epilogue_avx2 wrt ..imagebase
-diff --git a/SMP/lib/accelerated/x86/coff/sha256-avx-x86_64.asm b/SMP/lib/accelerated/x86/coff/sha256-avx-x86_64.asm
-new file mode 100644
-index 0000000..217199a
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/sha256-avx-x86_64.asm
-@@ -0,0 +1,8209 @@
-+default	rel
-+%define XMMWORD
-+%define YMMWORD
-+%define ZMMWORD
-+section	.text code align=64
-+
-+
-+EXTERN	_gnutls_x86_cpuid_s
-+
-+global	sha256_multi_block
-+
-+ALIGN	32
-+sha256_multi_block:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha256_multi_block:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	mov	rcx,QWORD[((_gnutls_x86_cpuid_s+4))]
-+	bt	rcx,61
-+	jc	NEAR _shaext_shortcut
-+	test	ecx,268435456
-+	jnz	NEAR _avx_shortcut
-+	mov	rax,rsp
-+	push	rbx
-+	push	rbp
-+	lea	rsp,[((-168))+rsp]
-+	movaps	XMMWORD[rsp],xmm6
-+	movaps	XMMWORD[16+rsp],xmm7
-+	movaps	XMMWORD[32+rsp],xmm8
-+	movaps	XMMWORD[48+rsp],xmm9
-+	movaps	XMMWORD[(-120)+rax],xmm10
-+	movaps	XMMWORD[(-104)+rax],xmm11
-+	movaps	XMMWORD[(-88)+rax],xmm12
-+	movaps	XMMWORD[(-72)+rax],xmm13
-+	movaps	XMMWORD[(-56)+rax],xmm14
-+	movaps	XMMWORD[(-40)+rax],xmm15
-+	sub	rsp,288
-+	and	rsp,-256
-+	mov	QWORD[272+rsp],rax
-+$L$body:
-+	lea	rbp,[((K256+128))]
-+	lea	rbx,[256+rsp]
-+	lea	rdi,[128+rdi]
-+
-+$L$oop_grande:
-+	mov	DWORD[280+rsp],edx
-+	xor	edx,edx
-+	mov	r8,QWORD[rsi]
-+	mov	ecx,DWORD[8+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[rbx],ecx
-+	cmovle	r8,rbp
-+	mov	r9,QWORD[16+rsi]
-+	mov	ecx,DWORD[24+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[4+rbx],ecx
-+	cmovle	r9,rbp
-+	mov	r10,QWORD[32+rsi]
-+	mov	ecx,DWORD[40+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[8+rbx],ecx
-+	cmovle	r10,rbp
-+	mov	r11,QWORD[48+rsi]
-+	mov	ecx,DWORD[56+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[12+rbx],ecx
-+	cmovle	r11,rbp
-+	test	edx,edx
-+	jz	NEAR $L$done
-+
-+	movdqu	xmm8,XMMWORD[((0-128))+rdi]
-+	lea	rax,[128+rsp]
-+	movdqu	xmm9,XMMWORD[((32-128))+rdi]
-+	movdqu	xmm10,XMMWORD[((64-128))+rdi]
-+	movdqu	xmm11,XMMWORD[((96-128))+rdi]
-+	movdqu	xmm12,XMMWORD[((128-128))+rdi]
-+	movdqu	xmm13,XMMWORD[((160-128))+rdi]
-+	movdqu	xmm14,XMMWORD[((192-128))+rdi]
-+	movdqu	xmm15,XMMWORD[((224-128))+rdi]
-+	movdqu	xmm6,XMMWORD[$L$pbswap]
-+	jmp	NEAR $L$oop
-+
-+ALIGN	32
-+$L$oop:
-+	movdqa	xmm4,xmm10
-+	pxor	xmm4,xmm9
-+	movd	xmm5,DWORD[r8]
-+	movd	xmm0,DWORD[r9]
-+	movd	xmm1,DWORD[r10]
-+	movd	xmm2,DWORD[r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm12
-+DB	102,15,56,0,238
-+	movdqa	xmm2,xmm12
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm12
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(0-128)+rax],xmm5
-+	paddd	xmm5,xmm15
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-128))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm12
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm12
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm14
-+	pand	xmm3,xmm13
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm8
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm8
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm9
-+	movdqa	xmm7,xmm8
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm8
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm15,xmm9
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm15,xmm4
-+	paddd	xmm11,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm15,xmm5
-+	paddd	xmm15,xmm7
-+	movd	xmm5,DWORD[4+r8]
-+	movd	xmm0,DWORD[4+r9]
-+	movd	xmm1,DWORD[4+r10]
-+	movd	xmm2,DWORD[4+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm11
-+
-+	movdqa	xmm2,xmm11
-+DB	102,15,56,0,238
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm11
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(16-128)+rax],xmm5
-+	paddd	xmm5,xmm14
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-96))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm11
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm11
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm13
-+	pand	xmm4,xmm12
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm15
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm15
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm8
-+	movdqa	xmm7,xmm15
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm15
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm14,xmm8
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm14,xmm3
-+	paddd	xmm10,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm14,xmm5
-+	paddd	xmm14,xmm7
-+	movd	xmm5,DWORD[8+r8]
-+	movd	xmm0,DWORD[8+r9]
-+	movd	xmm1,DWORD[8+r10]
-+	movd	xmm2,DWORD[8+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm10
-+DB	102,15,56,0,238
-+	movdqa	xmm2,xmm10
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm10
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(32-128)+rax],xmm5
-+	paddd	xmm5,xmm13
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-64))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm10
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm10
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm12
-+	pand	xmm3,xmm11
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm14
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm14
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm15
-+	movdqa	xmm7,xmm14
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm14
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm13,xmm15
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm13,xmm4
-+	paddd	xmm9,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm13,xmm5
-+	paddd	xmm13,xmm7
-+	movd	xmm5,DWORD[12+r8]
-+	movd	xmm0,DWORD[12+r9]
-+	movd	xmm1,DWORD[12+r10]
-+	movd	xmm2,DWORD[12+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm9
-+
-+	movdqa	xmm2,xmm9
-+DB	102,15,56,0,238
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm9
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(48-128)+rax],xmm5
-+	paddd	xmm5,xmm12
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-32))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm9
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm9
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm11
-+	pand	xmm4,xmm10
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm13
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm13
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm14
-+	movdqa	xmm7,xmm13
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm13
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm12,xmm14
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm12,xmm3
-+	paddd	xmm8,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm12,xmm5
-+	paddd	xmm12,xmm7
-+	movd	xmm5,DWORD[16+r8]
-+	movd	xmm0,DWORD[16+r9]
-+	movd	xmm1,DWORD[16+r10]
-+	movd	xmm2,DWORD[16+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm8
-+DB	102,15,56,0,238
-+	movdqa	xmm2,xmm8
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm8
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(64-128)+rax],xmm5
-+	paddd	xmm5,xmm11
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm8
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm8
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm10
-+	pand	xmm3,xmm9
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm12
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm12
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm13
-+	movdqa	xmm7,xmm12
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm12
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm11,xmm13
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm11,xmm4
-+	paddd	xmm15,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm11,xmm5
-+	paddd	xmm11,xmm7
-+	movd	xmm5,DWORD[20+r8]
-+	movd	xmm0,DWORD[20+r9]
-+	movd	xmm1,DWORD[20+r10]
-+	movd	xmm2,DWORD[20+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm15
-+
-+	movdqa	xmm2,xmm15
-+DB	102,15,56,0,238
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm15
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(80-128)+rax],xmm5
-+	paddd	xmm5,xmm10
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[32+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm15
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm15
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm9
-+	pand	xmm4,xmm8
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm11
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm11
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm12
-+	movdqa	xmm7,xmm11
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm11
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm10,xmm12
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm10,xmm3
-+	paddd	xmm14,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm10,xmm5
-+	paddd	xmm10,xmm7
-+	movd	xmm5,DWORD[24+r8]
-+	movd	xmm0,DWORD[24+r9]
-+	movd	xmm1,DWORD[24+r10]
-+	movd	xmm2,DWORD[24+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm14
-+DB	102,15,56,0,238
-+	movdqa	xmm2,xmm14
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm14
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(96-128)+rax],xmm5
-+	paddd	xmm5,xmm9
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[64+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm14
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm14
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm8
-+	pand	xmm3,xmm15
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm10
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm10
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm11
-+	movdqa	xmm7,xmm10
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm10
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm9,xmm11
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm9,xmm4
-+	paddd	xmm13,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm9,xmm5
-+	paddd	xmm9,xmm7
-+	movd	xmm5,DWORD[28+r8]
-+	movd	xmm0,DWORD[28+r9]
-+	movd	xmm1,DWORD[28+r10]
-+	movd	xmm2,DWORD[28+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm13
-+
-+	movdqa	xmm2,xmm13
-+DB	102,15,56,0,238
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm13
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(112-128)+rax],xmm5
-+	paddd	xmm5,xmm8
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[96+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm13
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm13
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm15
-+	pand	xmm4,xmm14
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm9
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm9
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm10
-+	movdqa	xmm7,xmm9
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm9
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm8,xmm10
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm8,xmm3
-+	paddd	xmm12,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm8,xmm5
-+	paddd	xmm8,xmm7
-+	lea	rbp,[256+rbp]
-+	movd	xmm5,DWORD[32+r8]
-+	movd	xmm0,DWORD[32+r9]
-+	movd	xmm1,DWORD[32+r10]
-+	movd	xmm2,DWORD[32+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm12
-+DB	102,15,56,0,238
-+	movdqa	xmm2,xmm12
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm12
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(128-128)+rax],xmm5
-+	paddd	xmm5,xmm15
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-128))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm12
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm12
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm14
-+	pand	xmm3,xmm13
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm8
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm8
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm9
-+	movdqa	xmm7,xmm8
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm8
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm15,xmm9
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm15,xmm4
-+	paddd	xmm11,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm15,xmm5
-+	paddd	xmm15,xmm7
-+	movd	xmm5,DWORD[36+r8]
-+	movd	xmm0,DWORD[36+r9]
-+	movd	xmm1,DWORD[36+r10]
-+	movd	xmm2,DWORD[36+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm11
-+
-+	movdqa	xmm2,xmm11
-+DB	102,15,56,0,238
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm11
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(144-128)+rax],xmm5
-+	paddd	xmm5,xmm14
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-96))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm11
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm11
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm13
-+	pand	xmm4,xmm12
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm15
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm15
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm8
-+	movdqa	xmm7,xmm15
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm15
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm14,xmm8
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm14,xmm3
-+	paddd	xmm10,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm14,xmm5
-+	paddd	xmm14,xmm7
-+	movd	xmm5,DWORD[40+r8]
-+	movd	xmm0,DWORD[40+r9]
-+	movd	xmm1,DWORD[40+r10]
-+	movd	xmm2,DWORD[40+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm10
-+DB	102,15,56,0,238
-+	movdqa	xmm2,xmm10
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm10
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(160-128)+rax],xmm5
-+	paddd	xmm5,xmm13
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-64))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm10
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm10
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm12
-+	pand	xmm3,xmm11
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm14
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm14
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm15
-+	movdqa	xmm7,xmm14
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm14
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm13,xmm15
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm13,xmm4
-+	paddd	xmm9,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm13,xmm5
-+	paddd	xmm13,xmm7
-+	movd	xmm5,DWORD[44+r8]
-+	movd	xmm0,DWORD[44+r9]
-+	movd	xmm1,DWORD[44+r10]
-+	movd	xmm2,DWORD[44+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm9
-+
-+	movdqa	xmm2,xmm9
-+DB	102,15,56,0,238
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm9
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(176-128)+rax],xmm5
-+	paddd	xmm5,xmm12
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-32))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm9
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm9
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm11
-+	pand	xmm4,xmm10
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm13
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm13
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm14
-+	movdqa	xmm7,xmm13
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm13
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm12,xmm14
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm12,xmm3
-+	paddd	xmm8,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm12,xmm5
-+	paddd	xmm12,xmm7
-+	movd	xmm5,DWORD[48+r8]
-+	movd	xmm0,DWORD[48+r9]
-+	movd	xmm1,DWORD[48+r10]
-+	movd	xmm2,DWORD[48+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm8
-+DB	102,15,56,0,238
-+	movdqa	xmm2,xmm8
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm8
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(192-128)+rax],xmm5
-+	paddd	xmm5,xmm11
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm8
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm8
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm10
-+	pand	xmm3,xmm9
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm12
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm12
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm13
-+	movdqa	xmm7,xmm12
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm12
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm11,xmm13
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm11,xmm4
-+	paddd	xmm15,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm11,xmm5
-+	paddd	xmm11,xmm7
-+	movd	xmm5,DWORD[52+r8]
-+	movd	xmm0,DWORD[52+r9]
-+	movd	xmm1,DWORD[52+r10]
-+	movd	xmm2,DWORD[52+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm15
-+
-+	movdqa	xmm2,xmm15
-+DB	102,15,56,0,238
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm15
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(208-128)+rax],xmm5
-+	paddd	xmm5,xmm10
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[32+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm15
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm15
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm9
-+	pand	xmm4,xmm8
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm11
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm11
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm12
-+	movdqa	xmm7,xmm11
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm11
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm10,xmm12
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm10,xmm3
-+	paddd	xmm14,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm10,xmm5
-+	paddd	xmm10,xmm7
-+	movd	xmm5,DWORD[56+r8]
-+	movd	xmm0,DWORD[56+r9]
-+	movd	xmm1,DWORD[56+r10]
-+	movd	xmm2,DWORD[56+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm14
-+DB	102,15,56,0,238
-+	movdqa	xmm2,xmm14
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm14
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(224-128)+rax],xmm5
-+	paddd	xmm5,xmm9
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[64+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm14
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm14
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm8
-+	pand	xmm3,xmm15
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm10
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm10
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm11
-+	movdqa	xmm7,xmm10
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm10
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm9,xmm11
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm9,xmm4
-+	paddd	xmm13,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm9,xmm5
-+	paddd	xmm9,xmm7
-+	movd	xmm5,DWORD[60+r8]
-+	lea	r8,[64+r8]
-+	movd	xmm0,DWORD[60+r9]
-+	lea	r9,[64+r9]
-+	movd	xmm1,DWORD[60+r10]
-+	lea	r10,[64+r10]
-+	movd	xmm2,DWORD[60+r11]
-+	lea	r11,[64+r11]
-+	punpckldq	xmm5,xmm1
-+	punpckldq	xmm0,xmm2
-+	punpckldq	xmm5,xmm0
-+	movdqa	xmm7,xmm13
-+
-+	movdqa	xmm2,xmm13
-+DB	102,15,56,0,238
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm13
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(240-128)+rax],xmm5
-+	paddd	xmm5,xmm8
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[96+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm13
-+	prefetcht0	[63+r8]
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm13
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm15
-+	pand	xmm4,xmm14
-+	pxor	xmm7,xmm1
-+
-+	prefetcht0	[63+r9]
-+	movdqa	xmm1,xmm9
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm9
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm10
-+	movdqa	xmm7,xmm9
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm9
-+
-+	prefetcht0	[63+r10]
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+	prefetcht0	[63+r11]
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm8,xmm10
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm8,xmm3
-+	paddd	xmm12,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm8,xmm5
-+	paddd	xmm8,xmm7
-+	lea	rbp,[256+rbp]
-+	movdqu	xmm5,XMMWORD[((0-128))+rax]
-+	mov	ecx,3
-+	jmp	NEAR $L$oop_16_xx
-+ALIGN	32
-+$L$oop_16_xx:
-+	movdqa	xmm6,XMMWORD[((16-128))+rax]
-+	paddd	xmm5,XMMWORD[((144-128))+rax]
-+
-+	movdqa	xmm7,xmm6
-+	movdqa	xmm1,xmm6
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm6
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((224-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm3,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm3
-+
-+	psrld	xmm3,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	psrld	xmm3,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm3
-+	pxor	xmm0,xmm1
-+	paddd	xmm5,xmm0
-+	movdqa	xmm7,xmm12
-+
-+	movdqa	xmm2,xmm12
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm12
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(0-128)+rax],xmm5
-+	paddd	xmm5,xmm15
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-128))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm12
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm12
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm14
-+	pand	xmm3,xmm13
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm8
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm8
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm9
-+	movdqa	xmm7,xmm8
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm8
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm15,xmm9
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm15,xmm4
-+	paddd	xmm11,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm15,xmm5
-+	paddd	xmm15,xmm7
-+	movdqa	xmm5,XMMWORD[((32-128))+rax]
-+	paddd	xmm6,XMMWORD[((160-128))+rax]
-+
-+	movdqa	xmm7,xmm5
-+	movdqa	xmm1,xmm5
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm5
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((240-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm4,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm4
-+
-+	psrld	xmm4,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	psrld	xmm4,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm4
-+	pxor	xmm0,xmm1
-+	paddd	xmm6,xmm0
-+	movdqa	xmm7,xmm11
-+
-+	movdqa	xmm2,xmm11
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm11
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(16-128)+rax],xmm6
-+	paddd	xmm6,xmm14
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm6,XMMWORD[((-96))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm11
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm11
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm13
-+	pand	xmm4,xmm12
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm15
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm15
-+	psrld	xmm1,2
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm8
-+	movdqa	xmm7,xmm15
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm15
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm6,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm14,xmm8
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm14,xmm3
-+	paddd	xmm10,xmm6
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm14,xmm6
-+	paddd	xmm14,xmm7
-+	movdqa	xmm6,XMMWORD[((48-128))+rax]
-+	paddd	xmm5,XMMWORD[((176-128))+rax]
-+
-+	movdqa	xmm7,xmm6
-+	movdqa	xmm1,xmm6
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm6
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((0-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm3,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm3
-+
-+	psrld	xmm3,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	psrld	xmm3,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm3
-+	pxor	xmm0,xmm1
-+	paddd	xmm5,xmm0
-+	movdqa	xmm7,xmm10
-+
-+	movdqa	xmm2,xmm10
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm10
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(32-128)+rax],xmm5
-+	paddd	xmm5,xmm13
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-64))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm10
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm10
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm12
-+	pand	xmm3,xmm11
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm14
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm14
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm15
-+	movdqa	xmm7,xmm14
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm14
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm13,xmm15
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm13,xmm4
-+	paddd	xmm9,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm13,xmm5
-+	paddd	xmm13,xmm7
-+	movdqa	xmm5,XMMWORD[((64-128))+rax]
-+	paddd	xmm6,XMMWORD[((192-128))+rax]
-+
-+	movdqa	xmm7,xmm5
-+	movdqa	xmm1,xmm5
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm5
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((16-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm4,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm4
-+
-+	psrld	xmm4,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	psrld	xmm4,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm4
-+	pxor	xmm0,xmm1
-+	paddd	xmm6,xmm0
-+	movdqa	xmm7,xmm9
-+
-+	movdqa	xmm2,xmm9
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm9
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(48-128)+rax],xmm6
-+	paddd	xmm6,xmm12
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm6,XMMWORD[((-32))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm9
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm9
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm11
-+	pand	xmm4,xmm10
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm13
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm13
-+	psrld	xmm1,2
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm14
-+	movdqa	xmm7,xmm13
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm13
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm6,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm12,xmm14
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm12,xmm3
-+	paddd	xmm8,xmm6
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm12,xmm6
-+	paddd	xmm12,xmm7
-+	movdqa	xmm6,XMMWORD[((80-128))+rax]
-+	paddd	xmm5,XMMWORD[((208-128))+rax]
-+
-+	movdqa	xmm7,xmm6
-+	movdqa	xmm1,xmm6
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm6
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((32-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm3,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm3
-+
-+	psrld	xmm3,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	psrld	xmm3,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm3
-+	pxor	xmm0,xmm1
-+	paddd	xmm5,xmm0
-+	movdqa	xmm7,xmm8
-+
-+	movdqa	xmm2,xmm8
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm8
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(64-128)+rax],xmm5
-+	paddd	xmm5,xmm11
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm8
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm8
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm10
-+	pand	xmm3,xmm9
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm12
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm12
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm13
-+	movdqa	xmm7,xmm12
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm12
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm11,xmm13
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm11,xmm4
-+	paddd	xmm15,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm11,xmm5
-+	paddd	xmm11,xmm7
-+	movdqa	xmm5,XMMWORD[((96-128))+rax]
-+	paddd	xmm6,XMMWORD[((224-128))+rax]
-+
-+	movdqa	xmm7,xmm5
-+	movdqa	xmm1,xmm5
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm5
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((48-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm4,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm4
-+
-+	psrld	xmm4,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	psrld	xmm4,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm4
-+	pxor	xmm0,xmm1
-+	paddd	xmm6,xmm0
-+	movdqa	xmm7,xmm15
-+
-+	movdqa	xmm2,xmm15
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm15
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(80-128)+rax],xmm6
-+	paddd	xmm6,xmm10
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm6,XMMWORD[32+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm15
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm15
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm9
-+	pand	xmm4,xmm8
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm11
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm11
-+	psrld	xmm1,2
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm12
-+	movdqa	xmm7,xmm11
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm11
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm6,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm10,xmm12
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm10,xmm3
-+	paddd	xmm14,xmm6
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm10,xmm6
-+	paddd	xmm10,xmm7
-+	movdqa	xmm6,XMMWORD[((112-128))+rax]
-+	paddd	xmm5,XMMWORD[((240-128))+rax]
-+
-+	movdqa	xmm7,xmm6
-+	movdqa	xmm1,xmm6
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm6
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((64-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm3,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm3
-+
-+	psrld	xmm3,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	psrld	xmm3,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm3
-+	pxor	xmm0,xmm1
-+	paddd	xmm5,xmm0
-+	movdqa	xmm7,xmm14
-+
-+	movdqa	xmm2,xmm14
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm14
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(96-128)+rax],xmm5
-+	paddd	xmm5,xmm9
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[64+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm14
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm14
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm8
-+	pand	xmm3,xmm15
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm10
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm10
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm11
-+	movdqa	xmm7,xmm10
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm10
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm9,xmm11
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm9,xmm4
-+	paddd	xmm13,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm9,xmm5
-+	paddd	xmm9,xmm7
-+	movdqa	xmm5,XMMWORD[((128-128))+rax]
-+	paddd	xmm6,XMMWORD[((0-128))+rax]
-+
-+	movdqa	xmm7,xmm5
-+	movdqa	xmm1,xmm5
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm5
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((80-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm4,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm4
-+
-+	psrld	xmm4,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	psrld	xmm4,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm4
-+	pxor	xmm0,xmm1
-+	paddd	xmm6,xmm0
-+	movdqa	xmm7,xmm13
-+
-+	movdqa	xmm2,xmm13
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm13
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(112-128)+rax],xmm6
-+	paddd	xmm6,xmm8
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm6,XMMWORD[96+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm13
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm13
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm15
-+	pand	xmm4,xmm14
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm9
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm9
-+	psrld	xmm1,2
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm10
-+	movdqa	xmm7,xmm9
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm9
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm6,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm8,xmm10
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm8,xmm3
-+	paddd	xmm12,xmm6
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm8,xmm6
-+	paddd	xmm8,xmm7
-+	lea	rbp,[256+rbp]
-+	movdqa	xmm6,XMMWORD[((144-128))+rax]
-+	paddd	xmm5,XMMWORD[((16-128))+rax]
-+
-+	movdqa	xmm7,xmm6
-+	movdqa	xmm1,xmm6
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm6
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((96-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm3,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm3
-+
-+	psrld	xmm3,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	psrld	xmm3,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm3
-+	pxor	xmm0,xmm1
-+	paddd	xmm5,xmm0
-+	movdqa	xmm7,xmm12
-+
-+	movdqa	xmm2,xmm12
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm12
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(128-128)+rax],xmm5
-+	paddd	xmm5,xmm15
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-128))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm12
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm12
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm14
-+	pand	xmm3,xmm13
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm8
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm8
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm9
-+	movdqa	xmm7,xmm8
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm8
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm15,xmm9
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm15,xmm4
-+	paddd	xmm11,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm15,xmm5
-+	paddd	xmm15,xmm7
-+	movdqa	xmm5,XMMWORD[((160-128))+rax]
-+	paddd	xmm6,XMMWORD[((32-128))+rax]
-+
-+	movdqa	xmm7,xmm5
-+	movdqa	xmm1,xmm5
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm5
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((112-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm4,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm4
-+
-+	psrld	xmm4,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	psrld	xmm4,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm4
-+	pxor	xmm0,xmm1
-+	paddd	xmm6,xmm0
-+	movdqa	xmm7,xmm11
-+
-+	movdqa	xmm2,xmm11
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm11
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(144-128)+rax],xmm6
-+	paddd	xmm6,xmm14
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm6,XMMWORD[((-96))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm11
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm11
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm13
-+	pand	xmm4,xmm12
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm15
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm15
-+	psrld	xmm1,2
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm8
-+	movdqa	xmm7,xmm15
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm15
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm6,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm14,xmm8
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm14,xmm3
-+	paddd	xmm10,xmm6
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm14,xmm6
-+	paddd	xmm14,xmm7
-+	movdqa	xmm6,XMMWORD[((176-128))+rax]
-+	paddd	xmm5,XMMWORD[((48-128))+rax]
-+
-+	movdqa	xmm7,xmm6
-+	movdqa	xmm1,xmm6
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm6
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((128-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm3,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm3
-+
-+	psrld	xmm3,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	psrld	xmm3,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm3
-+	pxor	xmm0,xmm1
-+	paddd	xmm5,xmm0
-+	movdqa	xmm7,xmm10
-+
-+	movdqa	xmm2,xmm10
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm10
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(160-128)+rax],xmm5
-+	paddd	xmm5,xmm13
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[((-64))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm10
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm10
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm12
-+	pand	xmm3,xmm11
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm14
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm14
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm15
-+	movdqa	xmm7,xmm14
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm14
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm13,xmm15
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm13,xmm4
-+	paddd	xmm9,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm13,xmm5
-+	paddd	xmm13,xmm7
-+	movdqa	xmm5,XMMWORD[((192-128))+rax]
-+	paddd	xmm6,XMMWORD[((64-128))+rax]
-+
-+	movdqa	xmm7,xmm5
-+	movdqa	xmm1,xmm5
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm5
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((144-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm4,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm4
-+
-+	psrld	xmm4,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	psrld	xmm4,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm4
-+	pxor	xmm0,xmm1
-+	paddd	xmm6,xmm0
-+	movdqa	xmm7,xmm9
-+
-+	movdqa	xmm2,xmm9
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm9
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(176-128)+rax],xmm6
-+	paddd	xmm6,xmm12
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm6,XMMWORD[((-32))+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm9
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm9
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm11
-+	pand	xmm4,xmm10
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm13
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm13
-+	psrld	xmm1,2
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm14
-+	movdqa	xmm7,xmm13
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm13
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm6,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm12,xmm14
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm12,xmm3
-+	paddd	xmm8,xmm6
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm12,xmm6
-+	paddd	xmm12,xmm7
-+	movdqa	xmm6,XMMWORD[((208-128))+rax]
-+	paddd	xmm5,XMMWORD[((80-128))+rax]
-+
-+	movdqa	xmm7,xmm6
-+	movdqa	xmm1,xmm6
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm6
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((160-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm3,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm3
-+
-+	psrld	xmm3,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	psrld	xmm3,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm3
-+	pxor	xmm0,xmm1
-+	paddd	xmm5,xmm0
-+	movdqa	xmm7,xmm8
-+
-+	movdqa	xmm2,xmm8
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm8
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(192-128)+rax],xmm5
-+	paddd	xmm5,xmm11
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm8
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm8
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm10
-+	pand	xmm3,xmm9
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm12
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm12
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm13
-+	movdqa	xmm7,xmm12
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm12
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm11,xmm13
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm11,xmm4
-+	paddd	xmm15,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm11,xmm5
-+	paddd	xmm11,xmm7
-+	movdqa	xmm5,XMMWORD[((224-128))+rax]
-+	paddd	xmm6,XMMWORD[((96-128))+rax]
-+
-+	movdqa	xmm7,xmm5
-+	movdqa	xmm1,xmm5
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm5
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((176-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm4,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm4
-+
-+	psrld	xmm4,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	psrld	xmm4,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm4
-+	pxor	xmm0,xmm1
-+	paddd	xmm6,xmm0
-+	movdqa	xmm7,xmm15
-+
-+	movdqa	xmm2,xmm15
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm15
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(208-128)+rax],xmm6
-+	paddd	xmm6,xmm10
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm6,XMMWORD[32+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm15
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm15
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm9
-+	pand	xmm4,xmm8
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm11
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm11
-+	psrld	xmm1,2
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm12
-+	movdqa	xmm7,xmm11
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm11
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm6,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm10,xmm12
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm10,xmm3
-+	paddd	xmm14,xmm6
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm10,xmm6
-+	paddd	xmm10,xmm7
-+	movdqa	xmm6,XMMWORD[((240-128))+rax]
-+	paddd	xmm5,XMMWORD[((112-128))+rax]
-+
-+	movdqa	xmm7,xmm6
-+	movdqa	xmm1,xmm6
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm6
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((192-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm3,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm3
-+
-+	psrld	xmm3,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	psrld	xmm3,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm3
-+	pxor	xmm0,xmm1
-+	paddd	xmm5,xmm0
-+	movdqa	xmm7,xmm14
-+
-+	movdqa	xmm2,xmm14
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm14
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(224-128)+rax],xmm5
-+	paddd	xmm5,xmm9
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm5,XMMWORD[64+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm14
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm3,xmm14
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm8
-+	pand	xmm3,xmm15
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm10
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm10
-+	psrld	xmm1,2
-+	paddd	xmm5,xmm7
-+	pxor	xmm0,xmm3
-+	movdqa	xmm3,xmm11
-+	movdqa	xmm7,xmm10
-+	pslld	xmm2,10
-+	pxor	xmm3,xmm10
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm5,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm4,xmm3
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm9,xmm11
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm9,xmm4
-+	paddd	xmm13,xmm5
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm9,xmm5
-+	paddd	xmm9,xmm7
-+	movdqa	xmm5,XMMWORD[((0-128))+rax]
-+	paddd	xmm6,XMMWORD[((128-128))+rax]
-+
-+	movdqa	xmm7,xmm5
-+	movdqa	xmm1,xmm5
-+	psrld	xmm7,3
-+	movdqa	xmm2,xmm5
-+
-+	psrld	xmm1,7
-+	movdqa	xmm0,XMMWORD[((208-128))+rax]
-+	pslld	xmm2,14
-+	pxor	xmm7,xmm1
-+	psrld	xmm1,18-7
-+	movdqa	xmm4,xmm0
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,25-14
-+	pxor	xmm7,xmm1
-+	psrld	xmm0,10
-+	movdqa	xmm1,xmm4
-+
-+	psrld	xmm4,17
-+	pxor	xmm7,xmm2
-+	pslld	xmm1,13
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	psrld	xmm4,19-17
-+	pxor	xmm0,xmm1
-+	pslld	xmm1,15-13
-+	pxor	xmm0,xmm4
-+	pxor	xmm0,xmm1
-+	paddd	xmm6,xmm0
-+	movdqa	xmm7,xmm13
-+
-+	movdqa	xmm2,xmm13
-+
-+	psrld	xmm7,6
-+	movdqa	xmm1,xmm13
-+	pslld	xmm2,7
-+	movdqa	XMMWORD[(240-128)+rax],xmm6
-+	paddd	xmm6,xmm8
-+
-+	psrld	xmm1,11
-+	pxor	xmm7,xmm2
-+	pslld	xmm2,21-7
-+	paddd	xmm6,XMMWORD[96+rbp]
-+	pxor	xmm7,xmm1
-+
-+	psrld	xmm1,25-11
-+	movdqa	xmm0,xmm13
-+
-+	pxor	xmm7,xmm2
-+	movdqa	xmm4,xmm13
-+	pslld	xmm2,26-21
-+	pandn	xmm0,xmm15
-+	pand	xmm4,xmm14
-+	pxor	xmm7,xmm1
-+
-+
-+	movdqa	xmm1,xmm9
-+	pxor	xmm7,xmm2
-+	movdqa	xmm2,xmm9
-+	psrld	xmm1,2
-+	paddd	xmm6,xmm7
-+	pxor	xmm0,xmm4
-+	movdqa	xmm4,xmm10
-+	movdqa	xmm7,xmm9
-+	pslld	xmm2,10
-+	pxor	xmm4,xmm9
-+
-+
-+	psrld	xmm7,13
-+	pxor	xmm1,xmm2
-+	paddd	xmm6,xmm0
-+	pslld	xmm2,19-10
-+	pand	xmm3,xmm4
-+	pxor	xmm1,xmm7
-+
-+
-+	psrld	xmm7,22-13
-+	pxor	xmm1,xmm2
-+	movdqa	xmm8,xmm10
-+	pslld	xmm2,30-19
-+	pxor	xmm7,xmm1
-+	pxor	xmm8,xmm3
-+	paddd	xmm12,xmm6
-+	pxor	xmm7,xmm2
-+
-+	paddd	xmm8,xmm6
-+	paddd	xmm8,xmm7
-+	lea	rbp,[256+rbp]
-+	dec	ecx
-+	jnz	NEAR $L$oop_16_xx
-+
-+	mov	ecx,1
-+	lea	rbp,[((K256+128))]
-+
-+	movdqa	xmm7,XMMWORD[rbx]
-+	cmp	ecx,DWORD[rbx]
-+	pxor	xmm0,xmm0
-+	cmovge	r8,rbp
-+	cmp	ecx,DWORD[4+rbx]
-+	movdqa	xmm6,xmm7
-+	cmovge	r9,rbp
-+	cmp	ecx,DWORD[8+rbx]
-+	pcmpgtd	xmm6,xmm0
-+	cmovge	r10,rbp
-+	cmp	ecx,DWORD[12+rbx]
-+	paddd	xmm7,xmm6
-+	cmovge	r11,rbp
-+
-+	movdqu	xmm0,XMMWORD[((0-128))+rdi]
-+	pand	xmm8,xmm6
-+	movdqu	xmm1,XMMWORD[((32-128))+rdi]
-+	pand	xmm9,xmm6
-+	movdqu	xmm2,XMMWORD[((64-128))+rdi]
-+	pand	xmm10,xmm6
-+	movdqu	xmm5,XMMWORD[((96-128))+rdi]
-+	pand	xmm11,xmm6
-+	paddd	xmm8,xmm0
-+	movdqu	xmm0,XMMWORD[((128-128))+rdi]
-+	pand	xmm12,xmm6
-+	paddd	xmm9,xmm1
-+	movdqu	xmm1,XMMWORD[((160-128))+rdi]
-+	pand	xmm13,xmm6
-+	paddd	xmm10,xmm2
-+	movdqu	xmm2,XMMWORD[((192-128))+rdi]
-+	pand	xmm14,xmm6
-+	paddd	xmm11,xmm5
-+	movdqu	xmm5,XMMWORD[((224-128))+rdi]
-+	pand	xmm15,xmm6
-+	paddd	xmm12,xmm0
-+	paddd	xmm13,xmm1
-+	movdqu	XMMWORD[(0-128)+rdi],xmm8
-+	paddd	xmm14,xmm2
-+	movdqu	XMMWORD[(32-128)+rdi],xmm9
-+	paddd	xmm15,xmm5
-+	movdqu	XMMWORD[(64-128)+rdi],xmm10
-+	movdqu	XMMWORD[(96-128)+rdi],xmm11
-+	movdqu	XMMWORD[(128-128)+rdi],xmm12
-+	movdqu	XMMWORD[(160-128)+rdi],xmm13
-+	movdqu	XMMWORD[(192-128)+rdi],xmm14
-+	movdqu	XMMWORD[(224-128)+rdi],xmm15
-+
-+	movdqa	XMMWORD[rbx],xmm7
-+	movdqa	xmm6,XMMWORD[$L$pbswap]
-+	dec	edx
-+	jnz	NEAR $L$oop
-+
-+	mov	edx,DWORD[280+rsp]
-+	lea	rdi,[16+rdi]
-+	lea	rsi,[64+rsi]
-+	dec	edx
-+	jnz	NEAR $L$oop_grande
-+
-+$L$done:
-+	mov	rax,QWORD[272+rsp]
-+	movaps	xmm6,XMMWORD[((-184))+rax]
-+	movaps	xmm7,XMMWORD[((-168))+rax]
-+	movaps	xmm8,XMMWORD[((-152))+rax]
-+	movaps	xmm9,XMMWORD[((-136))+rax]
-+	movaps	xmm10,XMMWORD[((-120))+rax]
-+	movaps	xmm11,XMMWORD[((-104))+rax]
-+	movaps	xmm12,XMMWORD[((-88))+rax]
-+	movaps	xmm13,XMMWORD[((-72))+rax]
-+	movaps	xmm14,XMMWORD[((-56))+rax]
-+	movaps	xmm15,XMMWORD[((-40))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	rbx,QWORD[((-8))+rax]
-+	lea	rsp,[rax]
-+$L$epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha256_multi_block:
-+
-+ALIGN	32
-+sha256_multi_block_shaext:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha256_multi_block_shaext:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+_shaext_shortcut:
-+	mov	rax,rsp
-+	push	rbx
-+	push	rbp
-+	lea	rsp,[((-168))+rsp]
-+	movaps	XMMWORD[rsp],xmm6
-+	movaps	XMMWORD[16+rsp],xmm7
-+	movaps	XMMWORD[32+rsp],xmm8
-+	movaps	XMMWORD[48+rsp],xmm9
-+	movaps	XMMWORD[(-120)+rax],xmm10
-+	movaps	XMMWORD[(-104)+rax],xmm11
-+	movaps	XMMWORD[(-88)+rax],xmm12
-+	movaps	XMMWORD[(-72)+rax],xmm13
-+	movaps	XMMWORD[(-56)+rax],xmm14
-+	movaps	XMMWORD[(-40)+rax],xmm15
-+	sub	rsp,288
-+	shl	edx,1
-+	and	rsp,-256
-+	lea	rdi,[128+rdi]
-+	mov	QWORD[272+rsp],rax
-+$L$body_shaext:
-+	lea	rbx,[256+rsp]
-+	lea	rbp,[((K256_shaext+128))]
-+
-+$L$oop_grande_shaext:
-+	mov	DWORD[280+rsp],edx
-+	xor	edx,edx
-+	mov	r8,QWORD[rsi]
-+	mov	ecx,DWORD[8+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[rbx],ecx
-+	cmovle	r8,rsp
-+	mov	r9,QWORD[16+rsi]
-+	mov	ecx,DWORD[24+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[4+rbx],ecx
-+	cmovle	r9,rsp
-+	test	edx,edx
-+	jz	NEAR $L$done_shaext
-+
-+	movq	xmm12,QWORD[((0-128))+rdi]
-+	movq	xmm4,QWORD[((32-128))+rdi]
-+	movq	xmm13,QWORD[((64-128))+rdi]
-+	movq	xmm5,QWORD[((96-128))+rdi]
-+	movq	xmm8,QWORD[((128-128))+rdi]
-+	movq	xmm9,QWORD[((160-128))+rdi]
-+	movq	xmm10,QWORD[((192-128))+rdi]
-+	movq	xmm11,QWORD[((224-128))+rdi]
-+
-+	punpckldq	xmm12,xmm4
-+	punpckldq	xmm13,xmm5
-+	punpckldq	xmm8,xmm9
-+	punpckldq	xmm10,xmm11
-+	movdqa	xmm3,XMMWORD[((K256_shaext-16))]
-+
-+	movdqa	xmm14,xmm12
-+	movdqa	xmm15,xmm13
-+	punpcklqdq	xmm12,xmm8
-+	punpcklqdq	xmm13,xmm10
-+	punpckhqdq	xmm14,xmm8
-+	punpckhqdq	xmm15,xmm10
-+
-+	pshufd	xmm12,xmm12,27
-+	pshufd	xmm13,xmm13,27
-+	pshufd	xmm14,xmm14,27
-+	pshufd	xmm15,xmm15,27
-+	jmp	NEAR $L$oop_shaext
-+
-+ALIGN	32
-+$L$oop_shaext:
-+	movdqu	xmm4,XMMWORD[r8]
-+	movdqu	xmm8,XMMWORD[r9]
-+	movdqu	xmm5,XMMWORD[16+r8]
-+	movdqu	xmm9,XMMWORD[16+r9]
-+	movdqu	xmm6,XMMWORD[32+r8]
-+DB	102,15,56,0,227
-+	movdqu	xmm10,XMMWORD[32+r9]
-+DB	102,68,15,56,0,195
-+	movdqu	xmm7,XMMWORD[48+r8]
-+	lea	r8,[64+r8]
-+	movdqu	xmm11,XMMWORD[48+r9]
-+	lea	r9,[64+r9]
-+
-+	movdqa	xmm0,XMMWORD[((0-128))+rbp]
-+DB	102,15,56,0,235
-+	paddd	xmm0,xmm4
-+	pxor	xmm4,xmm12
-+	movdqa	xmm1,xmm0
-+	movdqa	xmm2,XMMWORD[((0-128))+rbp]
-+DB	102,68,15,56,0,203
-+	paddd	xmm2,xmm8
-+	movdqa	XMMWORD[80+rsp],xmm13
-+DB	69,15,56,203,236
-+	pxor	xmm8,xmm14
-+	movdqa	xmm0,xmm2
-+	movdqa	XMMWORD[112+rsp],xmm15
-+DB	69,15,56,203,254
-+	pshufd	xmm0,xmm1,0x0e
-+	pxor	xmm4,xmm12
-+	movdqa	XMMWORD[64+rsp],xmm12
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	pxor	xmm8,xmm14
-+	movdqa	XMMWORD[96+rsp],xmm14
-+	movdqa	xmm1,XMMWORD[((16-128))+rbp]
-+	paddd	xmm1,xmm5
-+DB	102,15,56,0,243
-+DB	69,15,56,203,247
-+
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((16-128))+rbp]
-+	paddd	xmm2,xmm9
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	prefetcht0	[127+r8]
-+DB	102,15,56,0,251
-+DB	102,68,15,56,0,211
-+	prefetcht0	[127+r9]
-+DB	69,15,56,203,254
-+	pshufd	xmm0,xmm1,0x0e
-+DB	102,68,15,56,0,219
-+DB	15,56,204,229
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((32-128))+rbp]
-+	paddd	xmm1,xmm6
-+DB	69,15,56,203,247
-+
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((32-128))+rbp]
-+	paddd	xmm2,xmm10
-+DB	69,15,56,203,236
-+DB	69,15,56,204,193
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm7
-+DB	69,15,56,203,254
-+	pshufd	xmm0,xmm1,0x0e
-+DB	102,15,58,15,222,4
-+	paddd	xmm4,xmm3
-+	movdqa	xmm3,xmm11
-+DB	102,65,15,58,15,218,4
-+DB	15,56,204,238
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((48-128))+rbp]
-+	paddd	xmm1,xmm7
-+DB	69,15,56,203,247
-+DB	69,15,56,204,202
-+
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((48-128))+rbp]
-+	paddd	xmm8,xmm3
-+	paddd	xmm2,xmm11
-+DB	15,56,205,231
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm4
-+DB	102,15,58,15,223,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,195
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm5,xmm3
-+	movdqa	xmm3,xmm8
-+DB	102,65,15,58,15,219,4
-+DB	15,56,204,247
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((64-128))+rbp]
-+	paddd	xmm1,xmm4
-+DB	69,15,56,203,247
-+DB	69,15,56,204,211
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((64-128))+rbp]
-+	paddd	xmm9,xmm3
-+	paddd	xmm2,xmm8
-+DB	15,56,205,236
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm5
-+DB	102,15,58,15,220,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,200
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm6,xmm3
-+	movdqa	xmm3,xmm9
-+DB	102,65,15,58,15,216,4
-+DB	15,56,204,252
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((80-128))+rbp]
-+	paddd	xmm1,xmm5
-+DB	69,15,56,203,247
-+DB	69,15,56,204,216
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((80-128))+rbp]
-+	paddd	xmm10,xmm3
-+	paddd	xmm2,xmm9
-+DB	15,56,205,245
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm6
-+DB	102,15,58,15,221,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,209
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm7,xmm3
-+	movdqa	xmm3,xmm10
-+DB	102,65,15,58,15,217,4
-+DB	15,56,204,229
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((96-128))+rbp]
-+	paddd	xmm1,xmm6
-+DB	69,15,56,203,247
-+DB	69,15,56,204,193
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((96-128))+rbp]
-+	paddd	xmm11,xmm3
-+	paddd	xmm2,xmm10
-+DB	15,56,205,254
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm7
-+DB	102,15,58,15,222,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,218
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm4,xmm3
-+	movdqa	xmm3,xmm11
-+DB	102,65,15,58,15,218,4
-+DB	15,56,204,238
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((112-128))+rbp]
-+	paddd	xmm1,xmm7
-+DB	69,15,56,203,247
-+DB	69,15,56,204,202
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((112-128))+rbp]
-+	paddd	xmm8,xmm3
-+	paddd	xmm2,xmm11
-+DB	15,56,205,231
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm4
-+DB	102,15,58,15,223,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,195
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm5,xmm3
-+	movdqa	xmm3,xmm8
-+DB	102,65,15,58,15,219,4
-+DB	15,56,204,247
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((128-128))+rbp]
-+	paddd	xmm1,xmm4
-+DB	69,15,56,203,247
-+DB	69,15,56,204,211
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((128-128))+rbp]
-+	paddd	xmm9,xmm3
-+	paddd	xmm2,xmm8
-+DB	15,56,205,236
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm5
-+DB	102,15,58,15,220,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,200
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm6,xmm3
-+	movdqa	xmm3,xmm9
-+DB	102,65,15,58,15,216,4
-+DB	15,56,204,252
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((144-128))+rbp]
-+	paddd	xmm1,xmm5
-+DB	69,15,56,203,247
-+DB	69,15,56,204,216
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((144-128))+rbp]
-+	paddd	xmm10,xmm3
-+	paddd	xmm2,xmm9
-+DB	15,56,205,245
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm6
-+DB	102,15,58,15,221,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,209
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm7,xmm3
-+	movdqa	xmm3,xmm10
-+DB	102,65,15,58,15,217,4
-+DB	15,56,204,229
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((160-128))+rbp]
-+	paddd	xmm1,xmm6
-+DB	69,15,56,203,247
-+DB	69,15,56,204,193
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((160-128))+rbp]
-+	paddd	xmm11,xmm3
-+	paddd	xmm2,xmm10
-+DB	15,56,205,254
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm7
-+DB	102,15,58,15,222,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,218
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm4,xmm3
-+	movdqa	xmm3,xmm11
-+DB	102,65,15,58,15,218,4
-+DB	15,56,204,238
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((176-128))+rbp]
-+	paddd	xmm1,xmm7
-+DB	69,15,56,203,247
-+DB	69,15,56,204,202
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((176-128))+rbp]
-+	paddd	xmm8,xmm3
-+	paddd	xmm2,xmm11
-+DB	15,56,205,231
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm4
-+DB	102,15,58,15,223,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,195
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm5,xmm3
-+	movdqa	xmm3,xmm8
-+DB	102,65,15,58,15,219,4
-+DB	15,56,204,247
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((192-128))+rbp]
-+	paddd	xmm1,xmm4
-+DB	69,15,56,203,247
-+DB	69,15,56,204,211
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((192-128))+rbp]
-+	paddd	xmm9,xmm3
-+	paddd	xmm2,xmm8
-+DB	15,56,205,236
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm5
-+DB	102,15,58,15,220,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,200
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm6,xmm3
-+	movdqa	xmm3,xmm9
-+DB	102,65,15,58,15,216,4
-+DB	15,56,204,252
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((208-128))+rbp]
-+	paddd	xmm1,xmm5
-+DB	69,15,56,203,247
-+DB	69,15,56,204,216
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((208-128))+rbp]
-+	paddd	xmm10,xmm3
-+	paddd	xmm2,xmm9
-+DB	15,56,205,245
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	movdqa	xmm3,xmm6
-+DB	102,15,58,15,221,4
-+DB	69,15,56,203,254
-+DB	69,15,56,205,209
-+	pshufd	xmm0,xmm1,0x0e
-+	paddd	xmm7,xmm3
-+	movdqa	xmm3,xmm10
-+DB	102,65,15,58,15,217,4
-+	nop
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm1,XMMWORD[((224-128))+rbp]
-+	paddd	xmm1,xmm6
-+DB	69,15,56,203,247
-+
-+	movdqa	xmm0,xmm1
-+	movdqa	xmm2,XMMWORD[((224-128))+rbp]
-+	paddd	xmm11,xmm3
-+	paddd	xmm2,xmm10
-+DB	15,56,205,254
-+	nop
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	mov	ecx,1
-+	pxor	xmm6,xmm6
-+DB	69,15,56,203,254
-+DB	69,15,56,205,218
-+	pshufd	xmm0,xmm1,0x0e
-+	movdqa	xmm1,XMMWORD[((240-128))+rbp]
-+	paddd	xmm1,xmm7
-+	movq	xmm7,QWORD[rbx]
-+	nop
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	movdqa	xmm2,XMMWORD[((240-128))+rbp]
-+	paddd	xmm2,xmm11
-+DB	69,15,56,203,247
-+
-+	movdqa	xmm0,xmm1
-+	cmp	ecx,DWORD[rbx]
-+	cmovge	r8,rsp
-+	cmp	ecx,DWORD[4+rbx]
-+	cmovge	r9,rsp
-+	pshufd	xmm9,xmm7,0x00
-+DB	69,15,56,203,236
-+	movdqa	xmm0,xmm2
-+	pshufd	xmm10,xmm7,0x55
-+	movdqa	xmm11,xmm7
-+DB	69,15,56,203,254
-+	pshufd	xmm0,xmm1,0x0e
-+	pcmpgtd	xmm9,xmm6
-+	pcmpgtd	xmm10,xmm6
-+DB	69,15,56,203,229
-+	pshufd	xmm0,xmm2,0x0e
-+	pcmpgtd	xmm11,xmm6
-+	movdqa	xmm3,XMMWORD[((K256_shaext-16))]
-+DB	69,15,56,203,247
-+
-+	pand	xmm13,xmm9
-+	pand	xmm15,xmm10
-+	pand	xmm12,xmm9
-+	pand	xmm14,xmm10
-+	paddd	xmm11,xmm7
-+
-+	paddd	xmm13,XMMWORD[80+rsp]
-+	paddd	xmm15,XMMWORD[112+rsp]
-+	paddd	xmm12,XMMWORD[64+rsp]
-+	paddd	xmm14,XMMWORD[96+rsp]
-+
-+	movq	QWORD[rbx],xmm11
-+	dec	edx
-+	jnz	NEAR $L$oop_shaext
-+
-+	mov	edx,DWORD[280+rsp]
-+
-+	pshufd	xmm12,xmm12,27
-+	pshufd	xmm13,xmm13,27
-+	pshufd	xmm14,xmm14,27
-+	pshufd	xmm15,xmm15,27
-+
-+	movdqa	xmm5,xmm12
-+	movdqa	xmm6,xmm13
-+	punpckldq	xmm12,xmm14
-+	punpckhdq	xmm5,xmm14
-+	punpckldq	xmm13,xmm15
-+	punpckhdq	xmm6,xmm15
-+
-+	movq	QWORD[(0-128)+rdi],xmm12
-+	psrldq	xmm12,8
-+	movq	QWORD[(128-128)+rdi],xmm5
-+	psrldq	xmm5,8
-+	movq	QWORD[(32-128)+rdi],xmm12
-+	movq	QWORD[(160-128)+rdi],xmm5
-+
-+	movq	QWORD[(64-128)+rdi],xmm13
-+	psrldq	xmm13,8
-+	movq	QWORD[(192-128)+rdi],xmm6
-+	psrldq	xmm6,8
-+	movq	QWORD[(96-128)+rdi],xmm13
-+	movq	QWORD[(224-128)+rdi],xmm6
-+
-+	lea	rdi,[8+rdi]
-+	lea	rsi,[32+rsi]
-+	dec	edx
-+	jnz	NEAR $L$oop_grande_shaext
-+
-+$L$done_shaext:
-+
-+	movaps	xmm6,XMMWORD[((-184))+rax]
-+	movaps	xmm7,XMMWORD[((-168))+rax]
-+	movaps	xmm8,XMMWORD[((-152))+rax]
-+	movaps	xmm9,XMMWORD[((-136))+rax]
-+	movaps	xmm10,XMMWORD[((-120))+rax]
-+	movaps	xmm11,XMMWORD[((-104))+rax]
-+	movaps	xmm12,XMMWORD[((-88))+rax]
-+	movaps	xmm13,XMMWORD[((-72))+rax]
-+	movaps	xmm14,XMMWORD[((-56))+rax]
-+	movaps	xmm15,XMMWORD[((-40))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	rbx,QWORD[((-8))+rax]
-+	lea	rsp,[rax]
-+$L$epilogue_shaext:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha256_multi_block_shaext:
-+
-+ALIGN	32
-+sha256_multi_block_avx:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha256_multi_block_avx:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+_avx_shortcut:
-+	shr	rcx,32
-+	cmp	edx,2
-+	jb	NEAR $L$avx
-+	test	ecx,32
-+	jnz	NEAR _avx2_shortcut
-+	jmp	NEAR $L$avx
-+ALIGN	32
-+$L$avx:
-+	mov	rax,rsp
-+	push	rbx
-+	push	rbp
-+	lea	rsp,[((-168))+rsp]
-+	movaps	XMMWORD[rsp],xmm6
-+	movaps	XMMWORD[16+rsp],xmm7
-+	movaps	XMMWORD[32+rsp],xmm8
-+	movaps	XMMWORD[48+rsp],xmm9
-+	movaps	XMMWORD[(-120)+rax],xmm10
-+	movaps	XMMWORD[(-104)+rax],xmm11
-+	movaps	XMMWORD[(-88)+rax],xmm12
-+	movaps	XMMWORD[(-72)+rax],xmm13
-+	movaps	XMMWORD[(-56)+rax],xmm14
-+	movaps	XMMWORD[(-40)+rax],xmm15
-+	sub	rsp,288
-+	and	rsp,-256
-+	mov	QWORD[272+rsp],rax
-+$L$body_avx:
-+	lea	rbp,[((K256+128))]
-+	lea	rbx,[256+rsp]
-+	lea	rdi,[128+rdi]
-+
-+$L$oop_grande_avx:
-+	mov	DWORD[280+rsp],edx
-+	xor	edx,edx
-+	mov	r8,QWORD[rsi]
-+	mov	ecx,DWORD[8+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[rbx],ecx
-+	cmovle	r8,rbp
-+	mov	r9,QWORD[16+rsi]
-+	mov	ecx,DWORD[24+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[4+rbx],ecx
-+	cmovle	r9,rbp
-+	mov	r10,QWORD[32+rsi]
-+	mov	ecx,DWORD[40+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[8+rbx],ecx
-+	cmovle	r10,rbp
-+	mov	r11,QWORD[48+rsi]
-+	mov	ecx,DWORD[56+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[12+rbx],ecx
-+	cmovle	r11,rbp
-+	test	edx,edx
-+	jz	NEAR $L$done_avx
-+
-+	vmovdqu	xmm8,XMMWORD[((0-128))+rdi]
-+	lea	rax,[128+rsp]
-+	vmovdqu	xmm9,XMMWORD[((32-128))+rdi]
-+	vmovdqu	xmm10,XMMWORD[((64-128))+rdi]
-+	vmovdqu	xmm11,XMMWORD[((96-128))+rdi]
-+	vmovdqu	xmm12,XMMWORD[((128-128))+rdi]
-+	vmovdqu	xmm13,XMMWORD[((160-128))+rdi]
-+	vmovdqu	xmm14,XMMWORD[((192-128))+rdi]
-+	vmovdqu	xmm15,XMMWORD[((224-128))+rdi]
-+	vmovdqu	xmm6,XMMWORD[$L$pbswap]
-+	jmp	NEAR $L$oop_avx
-+
-+ALIGN	32
-+$L$oop_avx:
-+	vpxor	xmm4,xmm10,xmm9
-+	vmovd	xmm5,DWORD[r8]
-+	vmovd	xmm0,DWORD[r9]
-+	vpinsrd	xmm5,xmm5,DWORD[r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm12,6
-+	vpslld	xmm2,xmm12,26
-+	vmovdqu	XMMWORD[(0-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm15
-+
-+	vpsrld	xmm1,xmm12,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm12,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-128))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm12,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm12,7
-+	vpandn	xmm0,xmm12,xmm14
-+	vpand	xmm3,xmm12,xmm13
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm15,xmm8,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm8,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm9,xmm8
-+
-+	vpxor	xmm15,xmm15,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm8,13
-+
-+	vpslld	xmm2,xmm8,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm15,xmm1
-+
-+	vpsrld	xmm1,xmm8,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm8,10
-+	vpxor	xmm15,xmm9,xmm4
-+	vpaddd	xmm11,xmm11,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm15,xmm15,xmm5
-+	vpaddd	xmm15,xmm15,xmm7
-+	vmovd	xmm5,DWORD[4+r8]
-+	vmovd	xmm0,DWORD[4+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[4+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[4+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm11,6
-+	vpslld	xmm2,xmm11,26
-+	vmovdqu	XMMWORD[(16-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm14
-+
-+	vpsrld	xmm1,xmm11,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm11,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-96))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm11,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm11,7
-+	vpandn	xmm0,xmm11,xmm13
-+	vpand	xmm4,xmm11,xmm12
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm14,xmm15,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm15,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm8,xmm15
-+
-+	vpxor	xmm14,xmm14,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm15,13
-+
-+	vpslld	xmm2,xmm15,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm14,xmm1
-+
-+	vpsrld	xmm1,xmm15,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm15,10
-+	vpxor	xmm14,xmm8,xmm3
-+	vpaddd	xmm10,xmm10,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm14,xmm14,xmm5
-+	vpaddd	xmm14,xmm14,xmm7
-+	vmovd	xmm5,DWORD[8+r8]
-+	vmovd	xmm0,DWORD[8+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[8+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[8+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm10,6
-+	vpslld	xmm2,xmm10,26
-+	vmovdqu	XMMWORD[(32-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm13
-+
-+	vpsrld	xmm1,xmm10,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm10,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-64))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm10,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm10,7
-+	vpandn	xmm0,xmm10,xmm12
-+	vpand	xmm3,xmm10,xmm11
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm13,xmm14,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm14,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm15,xmm14
-+
-+	vpxor	xmm13,xmm13,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm14,13
-+
-+	vpslld	xmm2,xmm14,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm13,xmm1
-+
-+	vpsrld	xmm1,xmm14,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm14,10
-+	vpxor	xmm13,xmm15,xmm4
-+	vpaddd	xmm9,xmm9,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm13,xmm13,xmm5
-+	vpaddd	xmm13,xmm13,xmm7
-+	vmovd	xmm5,DWORD[12+r8]
-+	vmovd	xmm0,DWORD[12+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[12+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[12+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm9,6
-+	vpslld	xmm2,xmm9,26
-+	vmovdqu	XMMWORD[(48-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm12
-+
-+	vpsrld	xmm1,xmm9,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm9,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-32))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm9,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm9,7
-+	vpandn	xmm0,xmm9,xmm11
-+	vpand	xmm4,xmm9,xmm10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm12,xmm13,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm13,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm14,xmm13
-+
-+	vpxor	xmm12,xmm12,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm13,13
-+
-+	vpslld	xmm2,xmm13,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm12,xmm1
-+
-+	vpsrld	xmm1,xmm13,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm13,10
-+	vpxor	xmm12,xmm14,xmm3
-+	vpaddd	xmm8,xmm8,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm12,xmm12,xmm5
-+	vpaddd	xmm12,xmm12,xmm7
-+	vmovd	xmm5,DWORD[16+r8]
-+	vmovd	xmm0,DWORD[16+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[16+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[16+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm8,6
-+	vpslld	xmm2,xmm8,26
-+	vmovdqu	XMMWORD[(64-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm11
-+
-+	vpsrld	xmm1,xmm8,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm8,21
-+	vpaddd	xmm5,xmm5,XMMWORD[rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm8,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm8,7
-+	vpandn	xmm0,xmm8,xmm10
-+	vpand	xmm3,xmm8,xmm9
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm11,xmm12,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm12,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm13,xmm12
-+
-+	vpxor	xmm11,xmm11,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm12,13
-+
-+	vpslld	xmm2,xmm12,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm11,xmm1
-+
-+	vpsrld	xmm1,xmm12,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm12,10
-+	vpxor	xmm11,xmm13,xmm4
-+	vpaddd	xmm15,xmm15,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm11,xmm11,xmm5
-+	vpaddd	xmm11,xmm11,xmm7
-+	vmovd	xmm5,DWORD[20+r8]
-+	vmovd	xmm0,DWORD[20+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[20+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[20+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm15,6
-+	vpslld	xmm2,xmm15,26
-+	vmovdqu	XMMWORD[(80-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm10
-+
-+	vpsrld	xmm1,xmm15,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm15,21
-+	vpaddd	xmm5,xmm5,XMMWORD[32+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm15,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm15,7
-+	vpandn	xmm0,xmm15,xmm9
-+	vpand	xmm4,xmm15,xmm8
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm10,xmm11,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm11,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm12,xmm11
-+
-+	vpxor	xmm10,xmm10,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm11,13
-+
-+	vpslld	xmm2,xmm11,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm10,xmm1
-+
-+	vpsrld	xmm1,xmm11,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm11,10
-+	vpxor	xmm10,xmm12,xmm3
-+	vpaddd	xmm14,xmm14,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm10,xmm10,xmm5
-+	vpaddd	xmm10,xmm10,xmm7
-+	vmovd	xmm5,DWORD[24+r8]
-+	vmovd	xmm0,DWORD[24+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[24+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[24+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm14,6
-+	vpslld	xmm2,xmm14,26
-+	vmovdqu	XMMWORD[(96-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm9
-+
-+	vpsrld	xmm1,xmm14,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm14,21
-+	vpaddd	xmm5,xmm5,XMMWORD[64+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm14,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm14,7
-+	vpandn	xmm0,xmm14,xmm8
-+	vpand	xmm3,xmm14,xmm15
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm9,xmm10,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm10,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm11,xmm10
-+
-+	vpxor	xmm9,xmm9,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm10,13
-+
-+	vpslld	xmm2,xmm10,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm9,xmm1
-+
-+	vpsrld	xmm1,xmm10,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm10,10
-+	vpxor	xmm9,xmm11,xmm4
-+	vpaddd	xmm13,xmm13,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm9,xmm9,xmm5
-+	vpaddd	xmm9,xmm9,xmm7
-+	vmovd	xmm5,DWORD[28+r8]
-+	vmovd	xmm0,DWORD[28+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[28+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[28+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm13,6
-+	vpslld	xmm2,xmm13,26
-+	vmovdqu	XMMWORD[(112-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm8
-+
-+	vpsrld	xmm1,xmm13,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm13,21
-+	vpaddd	xmm5,xmm5,XMMWORD[96+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm13,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm13,7
-+	vpandn	xmm0,xmm13,xmm15
-+	vpand	xmm4,xmm13,xmm14
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm8,xmm9,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm9,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm10,xmm9
-+
-+	vpxor	xmm8,xmm8,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm9,13
-+
-+	vpslld	xmm2,xmm9,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm8,xmm1
-+
-+	vpsrld	xmm1,xmm9,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm9,10
-+	vpxor	xmm8,xmm10,xmm3
-+	vpaddd	xmm12,xmm12,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm8,xmm8,xmm5
-+	vpaddd	xmm8,xmm8,xmm7
-+	add	rbp,256
-+	vmovd	xmm5,DWORD[32+r8]
-+	vmovd	xmm0,DWORD[32+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[32+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[32+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm12,6
-+	vpslld	xmm2,xmm12,26
-+	vmovdqu	XMMWORD[(128-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm15
-+
-+	vpsrld	xmm1,xmm12,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm12,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-128))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm12,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm12,7
-+	vpandn	xmm0,xmm12,xmm14
-+	vpand	xmm3,xmm12,xmm13
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm15,xmm8,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm8,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm9,xmm8
-+
-+	vpxor	xmm15,xmm15,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm8,13
-+
-+	vpslld	xmm2,xmm8,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm15,xmm1
-+
-+	vpsrld	xmm1,xmm8,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm8,10
-+	vpxor	xmm15,xmm9,xmm4
-+	vpaddd	xmm11,xmm11,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm15,xmm15,xmm5
-+	vpaddd	xmm15,xmm15,xmm7
-+	vmovd	xmm5,DWORD[36+r8]
-+	vmovd	xmm0,DWORD[36+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[36+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[36+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm11,6
-+	vpslld	xmm2,xmm11,26
-+	vmovdqu	XMMWORD[(144-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm14
-+
-+	vpsrld	xmm1,xmm11,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm11,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-96))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm11,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm11,7
-+	vpandn	xmm0,xmm11,xmm13
-+	vpand	xmm4,xmm11,xmm12
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm14,xmm15,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm15,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm8,xmm15
-+
-+	vpxor	xmm14,xmm14,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm15,13
-+
-+	vpslld	xmm2,xmm15,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm14,xmm1
-+
-+	vpsrld	xmm1,xmm15,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm15,10
-+	vpxor	xmm14,xmm8,xmm3
-+	vpaddd	xmm10,xmm10,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm14,xmm14,xmm5
-+	vpaddd	xmm14,xmm14,xmm7
-+	vmovd	xmm5,DWORD[40+r8]
-+	vmovd	xmm0,DWORD[40+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[40+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[40+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm10,6
-+	vpslld	xmm2,xmm10,26
-+	vmovdqu	XMMWORD[(160-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm13
-+
-+	vpsrld	xmm1,xmm10,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm10,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-64))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm10,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm10,7
-+	vpandn	xmm0,xmm10,xmm12
-+	vpand	xmm3,xmm10,xmm11
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm13,xmm14,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm14,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm15,xmm14
-+
-+	vpxor	xmm13,xmm13,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm14,13
-+
-+	vpslld	xmm2,xmm14,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm13,xmm1
-+
-+	vpsrld	xmm1,xmm14,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm14,10
-+	vpxor	xmm13,xmm15,xmm4
-+	vpaddd	xmm9,xmm9,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm13,xmm13,xmm5
-+	vpaddd	xmm13,xmm13,xmm7
-+	vmovd	xmm5,DWORD[44+r8]
-+	vmovd	xmm0,DWORD[44+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[44+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[44+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm9,6
-+	vpslld	xmm2,xmm9,26
-+	vmovdqu	XMMWORD[(176-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm12
-+
-+	vpsrld	xmm1,xmm9,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm9,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-32))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm9,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm9,7
-+	vpandn	xmm0,xmm9,xmm11
-+	vpand	xmm4,xmm9,xmm10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm12,xmm13,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm13,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm14,xmm13
-+
-+	vpxor	xmm12,xmm12,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm13,13
-+
-+	vpslld	xmm2,xmm13,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm12,xmm1
-+
-+	vpsrld	xmm1,xmm13,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm13,10
-+	vpxor	xmm12,xmm14,xmm3
-+	vpaddd	xmm8,xmm8,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm12,xmm12,xmm5
-+	vpaddd	xmm12,xmm12,xmm7
-+	vmovd	xmm5,DWORD[48+r8]
-+	vmovd	xmm0,DWORD[48+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[48+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[48+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm8,6
-+	vpslld	xmm2,xmm8,26
-+	vmovdqu	XMMWORD[(192-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm11
-+
-+	vpsrld	xmm1,xmm8,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm8,21
-+	vpaddd	xmm5,xmm5,XMMWORD[rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm8,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm8,7
-+	vpandn	xmm0,xmm8,xmm10
-+	vpand	xmm3,xmm8,xmm9
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm11,xmm12,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm12,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm13,xmm12
-+
-+	vpxor	xmm11,xmm11,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm12,13
-+
-+	vpslld	xmm2,xmm12,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm11,xmm1
-+
-+	vpsrld	xmm1,xmm12,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm12,10
-+	vpxor	xmm11,xmm13,xmm4
-+	vpaddd	xmm15,xmm15,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm11,xmm11,xmm5
-+	vpaddd	xmm11,xmm11,xmm7
-+	vmovd	xmm5,DWORD[52+r8]
-+	vmovd	xmm0,DWORD[52+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[52+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[52+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm15,6
-+	vpslld	xmm2,xmm15,26
-+	vmovdqu	XMMWORD[(208-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm10
-+
-+	vpsrld	xmm1,xmm15,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm15,21
-+	vpaddd	xmm5,xmm5,XMMWORD[32+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm15,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm15,7
-+	vpandn	xmm0,xmm15,xmm9
-+	vpand	xmm4,xmm15,xmm8
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm10,xmm11,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm11,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm12,xmm11
-+
-+	vpxor	xmm10,xmm10,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm11,13
-+
-+	vpslld	xmm2,xmm11,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm10,xmm1
-+
-+	vpsrld	xmm1,xmm11,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm11,10
-+	vpxor	xmm10,xmm12,xmm3
-+	vpaddd	xmm14,xmm14,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm10,xmm10,xmm5
-+	vpaddd	xmm10,xmm10,xmm7
-+	vmovd	xmm5,DWORD[56+r8]
-+	vmovd	xmm0,DWORD[56+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[56+r10],1
-+	vpinsrd	xmm0,xmm0,DWORD[56+r11],1
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm14,6
-+	vpslld	xmm2,xmm14,26
-+	vmovdqu	XMMWORD[(224-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm9
-+
-+	vpsrld	xmm1,xmm14,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm14,21
-+	vpaddd	xmm5,xmm5,XMMWORD[64+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm14,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm14,7
-+	vpandn	xmm0,xmm14,xmm8
-+	vpand	xmm3,xmm14,xmm15
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm9,xmm10,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm10,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm11,xmm10
-+
-+	vpxor	xmm9,xmm9,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm10,13
-+
-+	vpslld	xmm2,xmm10,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm9,xmm1
-+
-+	vpsrld	xmm1,xmm10,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm10,10
-+	vpxor	xmm9,xmm11,xmm4
-+	vpaddd	xmm13,xmm13,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm9,xmm9,xmm5
-+	vpaddd	xmm9,xmm9,xmm7
-+	vmovd	xmm5,DWORD[60+r8]
-+	lea	r8,[64+r8]
-+	vmovd	xmm0,DWORD[60+r9]
-+	lea	r9,[64+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[60+r10],1
-+	lea	r10,[64+r10]
-+	vpinsrd	xmm0,xmm0,DWORD[60+r11],1
-+	lea	r11,[64+r11]
-+	vpunpckldq	xmm5,xmm5,xmm0
-+	vpshufb	xmm5,xmm5,xmm6
-+	vpsrld	xmm7,xmm13,6
-+	vpslld	xmm2,xmm13,26
-+	vmovdqu	XMMWORD[(240-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm8
-+
-+	vpsrld	xmm1,xmm13,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm13,21
-+	vpaddd	xmm5,xmm5,XMMWORD[96+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm13,25
-+	vpxor	xmm7,xmm7,xmm2
-+	prefetcht0	[63+r8]
-+	vpslld	xmm2,xmm13,7
-+	vpandn	xmm0,xmm13,xmm15
-+	vpand	xmm4,xmm13,xmm14
-+	prefetcht0	[63+r9]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm8,xmm9,2
-+	vpxor	xmm7,xmm7,xmm2
-+	prefetcht0	[63+r10]
-+	vpslld	xmm1,xmm9,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm10,xmm9
-+	prefetcht0	[63+r11]
-+	vpxor	xmm8,xmm8,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm9,13
-+
-+	vpslld	xmm2,xmm9,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm8,xmm1
-+
-+	vpsrld	xmm1,xmm9,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm9,10
-+	vpxor	xmm8,xmm10,xmm3
-+	vpaddd	xmm12,xmm12,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm8,xmm8,xmm5
-+	vpaddd	xmm8,xmm8,xmm7
-+	add	rbp,256
-+	vmovdqu	xmm5,XMMWORD[((0-128))+rax]
-+	mov	ecx,3
-+	jmp	NEAR $L$oop_16_xx_avx
-+ALIGN	32
-+$L$oop_16_xx_avx:
-+	vmovdqu	xmm6,XMMWORD[((16-128))+rax]
-+	vpaddd	xmm5,xmm5,XMMWORD[((144-128))+rax]
-+
-+	vpsrld	xmm7,xmm6,3
-+	vpsrld	xmm1,xmm6,7
-+	vpslld	xmm2,xmm6,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm6,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm6,14
-+	vmovdqu	xmm0,XMMWORD[((224-128))+rax]
-+	vpsrld	xmm3,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpxor	xmm7,xmm3,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpsrld	xmm7,xmm12,6
-+	vpslld	xmm2,xmm12,26
-+	vmovdqu	XMMWORD[(0-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm15
-+
-+	vpsrld	xmm1,xmm12,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm12,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-128))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm12,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm12,7
-+	vpandn	xmm0,xmm12,xmm14
-+	vpand	xmm3,xmm12,xmm13
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm15,xmm8,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm8,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm9,xmm8
-+
-+	vpxor	xmm15,xmm15,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm8,13
-+
-+	vpslld	xmm2,xmm8,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm15,xmm1
-+
-+	vpsrld	xmm1,xmm8,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm8,10
-+	vpxor	xmm15,xmm9,xmm4
-+	vpaddd	xmm11,xmm11,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm15,xmm15,xmm5
-+	vpaddd	xmm15,xmm15,xmm7
-+	vmovdqu	xmm5,XMMWORD[((32-128))+rax]
-+	vpaddd	xmm6,xmm6,XMMWORD[((160-128))+rax]
-+
-+	vpsrld	xmm7,xmm5,3
-+	vpsrld	xmm1,xmm5,7
-+	vpslld	xmm2,xmm5,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm5,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm5,14
-+	vmovdqu	xmm0,XMMWORD[((240-128))+rax]
-+	vpsrld	xmm4,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpxor	xmm7,xmm4,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpsrld	xmm7,xmm11,6
-+	vpslld	xmm2,xmm11,26
-+	vmovdqu	XMMWORD[(16-128)+rax],xmm6
-+	vpaddd	xmm6,xmm6,xmm14
-+
-+	vpsrld	xmm1,xmm11,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm11,21
-+	vpaddd	xmm6,xmm6,XMMWORD[((-96))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm11,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm11,7
-+	vpandn	xmm0,xmm11,xmm13
-+	vpand	xmm4,xmm11,xmm12
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm14,xmm15,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm15,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm8,xmm15
-+
-+	vpxor	xmm14,xmm14,xmm1
-+	vpaddd	xmm6,xmm6,xmm7
-+
-+	vpsrld	xmm1,xmm15,13
-+
-+	vpslld	xmm2,xmm15,19
-+	vpaddd	xmm6,xmm6,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm14,xmm1
-+
-+	vpsrld	xmm1,xmm15,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm15,10
-+	vpxor	xmm14,xmm8,xmm3
-+	vpaddd	xmm10,xmm10,xmm6
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm14,xmm14,xmm6
-+	vpaddd	xmm14,xmm14,xmm7
-+	vmovdqu	xmm6,XMMWORD[((48-128))+rax]
-+	vpaddd	xmm5,xmm5,XMMWORD[((176-128))+rax]
-+
-+	vpsrld	xmm7,xmm6,3
-+	vpsrld	xmm1,xmm6,7
-+	vpslld	xmm2,xmm6,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm6,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm6,14
-+	vmovdqu	xmm0,XMMWORD[((0-128))+rax]
-+	vpsrld	xmm3,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpxor	xmm7,xmm3,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpsrld	xmm7,xmm10,6
-+	vpslld	xmm2,xmm10,26
-+	vmovdqu	XMMWORD[(32-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm13
-+
-+	vpsrld	xmm1,xmm10,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm10,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-64))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm10,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm10,7
-+	vpandn	xmm0,xmm10,xmm12
-+	vpand	xmm3,xmm10,xmm11
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm13,xmm14,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm14,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm15,xmm14
-+
-+	vpxor	xmm13,xmm13,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm14,13
-+
-+	vpslld	xmm2,xmm14,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm13,xmm1
-+
-+	vpsrld	xmm1,xmm14,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm14,10
-+	vpxor	xmm13,xmm15,xmm4
-+	vpaddd	xmm9,xmm9,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm13,xmm13,xmm5
-+	vpaddd	xmm13,xmm13,xmm7
-+	vmovdqu	xmm5,XMMWORD[((64-128))+rax]
-+	vpaddd	xmm6,xmm6,XMMWORD[((192-128))+rax]
-+
-+	vpsrld	xmm7,xmm5,3
-+	vpsrld	xmm1,xmm5,7
-+	vpslld	xmm2,xmm5,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm5,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm5,14
-+	vmovdqu	xmm0,XMMWORD[((16-128))+rax]
-+	vpsrld	xmm4,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpxor	xmm7,xmm4,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpsrld	xmm7,xmm9,6
-+	vpslld	xmm2,xmm9,26
-+	vmovdqu	XMMWORD[(48-128)+rax],xmm6
-+	vpaddd	xmm6,xmm6,xmm12
-+
-+	vpsrld	xmm1,xmm9,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm9,21
-+	vpaddd	xmm6,xmm6,XMMWORD[((-32))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm9,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm9,7
-+	vpandn	xmm0,xmm9,xmm11
-+	vpand	xmm4,xmm9,xmm10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm12,xmm13,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm13,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm14,xmm13
-+
-+	vpxor	xmm12,xmm12,xmm1
-+	vpaddd	xmm6,xmm6,xmm7
-+
-+	vpsrld	xmm1,xmm13,13
-+
-+	vpslld	xmm2,xmm13,19
-+	vpaddd	xmm6,xmm6,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm12,xmm1
-+
-+	vpsrld	xmm1,xmm13,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm13,10
-+	vpxor	xmm12,xmm14,xmm3
-+	vpaddd	xmm8,xmm8,xmm6
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm12,xmm12,xmm6
-+	vpaddd	xmm12,xmm12,xmm7
-+	vmovdqu	xmm6,XMMWORD[((80-128))+rax]
-+	vpaddd	xmm5,xmm5,XMMWORD[((208-128))+rax]
-+
-+	vpsrld	xmm7,xmm6,3
-+	vpsrld	xmm1,xmm6,7
-+	vpslld	xmm2,xmm6,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm6,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm6,14
-+	vmovdqu	xmm0,XMMWORD[((32-128))+rax]
-+	vpsrld	xmm3,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpxor	xmm7,xmm3,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpsrld	xmm7,xmm8,6
-+	vpslld	xmm2,xmm8,26
-+	vmovdqu	XMMWORD[(64-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm11
-+
-+	vpsrld	xmm1,xmm8,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm8,21
-+	vpaddd	xmm5,xmm5,XMMWORD[rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm8,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm8,7
-+	vpandn	xmm0,xmm8,xmm10
-+	vpand	xmm3,xmm8,xmm9
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm11,xmm12,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm12,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm13,xmm12
-+
-+	vpxor	xmm11,xmm11,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm12,13
-+
-+	vpslld	xmm2,xmm12,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm11,xmm1
-+
-+	vpsrld	xmm1,xmm12,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm12,10
-+	vpxor	xmm11,xmm13,xmm4
-+	vpaddd	xmm15,xmm15,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm11,xmm11,xmm5
-+	vpaddd	xmm11,xmm11,xmm7
-+	vmovdqu	xmm5,XMMWORD[((96-128))+rax]
-+	vpaddd	xmm6,xmm6,XMMWORD[((224-128))+rax]
-+
-+	vpsrld	xmm7,xmm5,3
-+	vpsrld	xmm1,xmm5,7
-+	vpslld	xmm2,xmm5,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm5,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm5,14
-+	vmovdqu	xmm0,XMMWORD[((48-128))+rax]
-+	vpsrld	xmm4,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpxor	xmm7,xmm4,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpsrld	xmm7,xmm15,6
-+	vpslld	xmm2,xmm15,26
-+	vmovdqu	XMMWORD[(80-128)+rax],xmm6
-+	vpaddd	xmm6,xmm6,xmm10
-+
-+	vpsrld	xmm1,xmm15,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm15,21
-+	vpaddd	xmm6,xmm6,XMMWORD[32+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm15,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm15,7
-+	vpandn	xmm0,xmm15,xmm9
-+	vpand	xmm4,xmm15,xmm8
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm10,xmm11,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm11,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm12,xmm11
-+
-+	vpxor	xmm10,xmm10,xmm1
-+	vpaddd	xmm6,xmm6,xmm7
-+
-+	vpsrld	xmm1,xmm11,13
-+
-+	vpslld	xmm2,xmm11,19
-+	vpaddd	xmm6,xmm6,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm10,xmm1
-+
-+	vpsrld	xmm1,xmm11,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm11,10
-+	vpxor	xmm10,xmm12,xmm3
-+	vpaddd	xmm14,xmm14,xmm6
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm10,xmm10,xmm6
-+	vpaddd	xmm10,xmm10,xmm7
-+	vmovdqu	xmm6,XMMWORD[((112-128))+rax]
-+	vpaddd	xmm5,xmm5,XMMWORD[((240-128))+rax]
-+
-+	vpsrld	xmm7,xmm6,3
-+	vpsrld	xmm1,xmm6,7
-+	vpslld	xmm2,xmm6,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm6,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm6,14
-+	vmovdqu	xmm0,XMMWORD[((64-128))+rax]
-+	vpsrld	xmm3,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpxor	xmm7,xmm3,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpsrld	xmm7,xmm14,6
-+	vpslld	xmm2,xmm14,26
-+	vmovdqu	XMMWORD[(96-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm9
-+
-+	vpsrld	xmm1,xmm14,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm14,21
-+	vpaddd	xmm5,xmm5,XMMWORD[64+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm14,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm14,7
-+	vpandn	xmm0,xmm14,xmm8
-+	vpand	xmm3,xmm14,xmm15
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm9,xmm10,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm10,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm11,xmm10
-+
-+	vpxor	xmm9,xmm9,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm10,13
-+
-+	vpslld	xmm2,xmm10,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm9,xmm1
-+
-+	vpsrld	xmm1,xmm10,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm10,10
-+	vpxor	xmm9,xmm11,xmm4
-+	vpaddd	xmm13,xmm13,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm9,xmm9,xmm5
-+	vpaddd	xmm9,xmm9,xmm7
-+	vmovdqu	xmm5,XMMWORD[((128-128))+rax]
-+	vpaddd	xmm6,xmm6,XMMWORD[((0-128))+rax]
-+
-+	vpsrld	xmm7,xmm5,3
-+	vpsrld	xmm1,xmm5,7
-+	vpslld	xmm2,xmm5,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm5,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm5,14
-+	vmovdqu	xmm0,XMMWORD[((80-128))+rax]
-+	vpsrld	xmm4,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpxor	xmm7,xmm4,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpsrld	xmm7,xmm13,6
-+	vpslld	xmm2,xmm13,26
-+	vmovdqu	XMMWORD[(112-128)+rax],xmm6
-+	vpaddd	xmm6,xmm6,xmm8
-+
-+	vpsrld	xmm1,xmm13,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm13,21
-+	vpaddd	xmm6,xmm6,XMMWORD[96+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm13,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm13,7
-+	vpandn	xmm0,xmm13,xmm15
-+	vpand	xmm4,xmm13,xmm14
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm8,xmm9,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm9,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm10,xmm9
-+
-+	vpxor	xmm8,xmm8,xmm1
-+	vpaddd	xmm6,xmm6,xmm7
-+
-+	vpsrld	xmm1,xmm9,13
-+
-+	vpslld	xmm2,xmm9,19
-+	vpaddd	xmm6,xmm6,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm8,xmm1
-+
-+	vpsrld	xmm1,xmm9,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm9,10
-+	vpxor	xmm8,xmm10,xmm3
-+	vpaddd	xmm12,xmm12,xmm6
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm8,xmm8,xmm6
-+	vpaddd	xmm8,xmm8,xmm7
-+	add	rbp,256
-+	vmovdqu	xmm6,XMMWORD[((144-128))+rax]
-+	vpaddd	xmm5,xmm5,XMMWORD[((16-128))+rax]
-+
-+	vpsrld	xmm7,xmm6,3
-+	vpsrld	xmm1,xmm6,7
-+	vpslld	xmm2,xmm6,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm6,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm6,14
-+	vmovdqu	xmm0,XMMWORD[((96-128))+rax]
-+	vpsrld	xmm3,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpxor	xmm7,xmm3,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpsrld	xmm7,xmm12,6
-+	vpslld	xmm2,xmm12,26
-+	vmovdqu	XMMWORD[(128-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm15
-+
-+	vpsrld	xmm1,xmm12,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm12,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-128))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm12,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm12,7
-+	vpandn	xmm0,xmm12,xmm14
-+	vpand	xmm3,xmm12,xmm13
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm15,xmm8,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm8,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm9,xmm8
-+
-+	vpxor	xmm15,xmm15,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm8,13
-+
-+	vpslld	xmm2,xmm8,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm15,xmm1
-+
-+	vpsrld	xmm1,xmm8,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm8,10
-+	vpxor	xmm15,xmm9,xmm4
-+	vpaddd	xmm11,xmm11,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm15,xmm15,xmm5
-+	vpaddd	xmm15,xmm15,xmm7
-+	vmovdqu	xmm5,XMMWORD[((160-128))+rax]
-+	vpaddd	xmm6,xmm6,XMMWORD[((32-128))+rax]
-+
-+	vpsrld	xmm7,xmm5,3
-+	vpsrld	xmm1,xmm5,7
-+	vpslld	xmm2,xmm5,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm5,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm5,14
-+	vmovdqu	xmm0,XMMWORD[((112-128))+rax]
-+	vpsrld	xmm4,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpxor	xmm7,xmm4,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpsrld	xmm7,xmm11,6
-+	vpslld	xmm2,xmm11,26
-+	vmovdqu	XMMWORD[(144-128)+rax],xmm6
-+	vpaddd	xmm6,xmm6,xmm14
-+
-+	vpsrld	xmm1,xmm11,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm11,21
-+	vpaddd	xmm6,xmm6,XMMWORD[((-96))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm11,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm11,7
-+	vpandn	xmm0,xmm11,xmm13
-+	vpand	xmm4,xmm11,xmm12
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm14,xmm15,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm15,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm8,xmm15
-+
-+	vpxor	xmm14,xmm14,xmm1
-+	vpaddd	xmm6,xmm6,xmm7
-+
-+	vpsrld	xmm1,xmm15,13
-+
-+	vpslld	xmm2,xmm15,19
-+	vpaddd	xmm6,xmm6,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm14,xmm1
-+
-+	vpsrld	xmm1,xmm15,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm15,10
-+	vpxor	xmm14,xmm8,xmm3
-+	vpaddd	xmm10,xmm10,xmm6
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm14,xmm14,xmm6
-+	vpaddd	xmm14,xmm14,xmm7
-+	vmovdqu	xmm6,XMMWORD[((176-128))+rax]
-+	vpaddd	xmm5,xmm5,XMMWORD[((48-128))+rax]
-+
-+	vpsrld	xmm7,xmm6,3
-+	vpsrld	xmm1,xmm6,7
-+	vpslld	xmm2,xmm6,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm6,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm6,14
-+	vmovdqu	xmm0,XMMWORD[((128-128))+rax]
-+	vpsrld	xmm3,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpxor	xmm7,xmm3,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpsrld	xmm7,xmm10,6
-+	vpslld	xmm2,xmm10,26
-+	vmovdqu	XMMWORD[(160-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm13
-+
-+	vpsrld	xmm1,xmm10,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm10,21
-+	vpaddd	xmm5,xmm5,XMMWORD[((-64))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm10,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm10,7
-+	vpandn	xmm0,xmm10,xmm12
-+	vpand	xmm3,xmm10,xmm11
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm13,xmm14,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm14,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm15,xmm14
-+
-+	vpxor	xmm13,xmm13,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm14,13
-+
-+	vpslld	xmm2,xmm14,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm13,xmm1
-+
-+	vpsrld	xmm1,xmm14,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm14,10
-+	vpxor	xmm13,xmm15,xmm4
-+	vpaddd	xmm9,xmm9,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm13,xmm13,xmm5
-+	vpaddd	xmm13,xmm13,xmm7
-+	vmovdqu	xmm5,XMMWORD[((192-128))+rax]
-+	vpaddd	xmm6,xmm6,XMMWORD[((64-128))+rax]
-+
-+	vpsrld	xmm7,xmm5,3
-+	vpsrld	xmm1,xmm5,7
-+	vpslld	xmm2,xmm5,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm5,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm5,14
-+	vmovdqu	xmm0,XMMWORD[((144-128))+rax]
-+	vpsrld	xmm4,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpxor	xmm7,xmm4,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpsrld	xmm7,xmm9,6
-+	vpslld	xmm2,xmm9,26
-+	vmovdqu	XMMWORD[(176-128)+rax],xmm6
-+	vpaddd	xmm6,xmm6,xmm12
-+
-+	vpsrld	xmm1,xmm9,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm9,21
-+	vpaddd	xmm6,xmm6,XMMWORD[((-32))+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm9,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm9,7
-+	vpandn	xmm0,xmm9,xmm11
-+	vpand	xmm4,xmm9,xmm10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm12,xmm13,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm13,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm14,xmm13
-+
-+	vpxor	xmm12,xmm12,xmm1
-+	vpaddd	xmm6,xmm6,xmm7
-+
-+	vpsrld	xmm1,xmm13,13
-+
-+	vpslld	xmm2,xmm13,19
-+	vpaddd	xmm6,xmm6,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm12,xmm1
-+
-+	vpsrld	xmm1,xmm13,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm13,10
-+	vpxor	xmm12,xmm14,xmm3
-+	vpaddd	xmm8,xmm8,xmm6
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm12,xmm12,xmm6
-+	vpaddd	xmm12,xmm12,xmm7
-+	vmovdqu	xmm6,XMMWORD[((208-128))+rax]
-+	vpaddd	xmm5,xmm5,XMMWORD[((80-128))+rax]
-+
-+	vpsrld	xmm7,xmm6,3
-+	vpsrld	xmm1,xmm6,7
-+	vpslld	xmm2,xmm6,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm6,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm6,14
-+	vmovdqu	xmm0,XMMWORD[((160-128))+rax]
-+	vpsrld	xmm3,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpxor	xmm7,xmm3,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpsrld	xmm7,xmm8,6
-+	vpslld	xmm2,xmm8,26
-+	vmovdqu	XMMWORD[(192-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm11
-+
-+	vpsrld	xmm1,xmm8,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm8,21
-+	vpaddd	xmm5,xmm5,XMMWORD[rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm8,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm8,7
-+	vpandn	xmm0,xmm8,xmm10
-+	vpand	xmm3,xmm8,xmm9
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm11,xmm12,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm12,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm13,xmm12
-+
-+	vpxor	xmm11,xmm11,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm12,13
-+
-+	vpslld	xmm2,xmm12,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm11,xmm1
-+
-+	vpsrld	xmm1,xmm12,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm12,10
-+	vpxor	xmm11,xmm13,xmm4
-+	vpaddd	xmm15,xmm15,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm11,xmm11,xmm5
-+	vpaddd	xmm11,xmm11,xmm7
-+	vmovdqu	xmm5,XMMWORD[((224-128))+rax]
-+	vpaddd	xmm6,xmm6,XMMWORD[((96-128))+rax]
-+
-+	vpsrld	xmm7,xmm5,3
-+	vpsrld	xmm1,xmm5,7
-+	vpslld	xmm2,xmm5,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm5,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm5,14
-+	vmovdqu	xmm0,XMMWORD[((176-128))+rax]
-+	vpsrld	xmm4,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpxor	xmm7,xmm4,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpsrld	xmm7,xmm15,6
-+	vpslld	xmm2,xmm15,26
-+	vmovdqu	XMMWORD[(208-128)+rax],xmm6
-+	vpaddd	xmm6,xmm6,xmm10
-+
-+	vpsrld	xmm1,xmm15,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm15,21
-+	vpaddd	xmm6,xmm6,XMMWORD[32+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm15,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm15,7
-+	vpandn	xmm0,xmm15,xmm9
-+	vpand	xmm4,xmm15,xmm8
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm10,xmm11,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm11,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm12,xmm11
-+
-+	vpxor	xmm10,xmm10,xmm1
-+	vpaddd	xmm6,xmm6,xmm7
-+
-+	vpsrld	xmm1,xmm11,13
-+
-+	vpslld	xmm2,xmm11,19
-+	vpaddd	xmm6,xmm6,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm10,xmm1
-+
-+	vpsrld	xmm1,xmm11,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm11,10
-+	vpxor	xmm10,xmm12,xmm3
-+	vpaddd	xmm14,xmm14,xmm6
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm10,xmm10,xmm6
-+	vpaddd	xmm10,xmm10,xmm7
-+	vmovdqu	xmm6,XMMWORD[((240-128))+rax]
-+	vpaddd	xmm5,xmm5,XMMWORD[((112-128))+rax]
-+
-+	vpsrld	xmm7,xmm6,3
-+	vpsrld	xmm1,xmm6,7
-+	vpslld	xmm2,xmm6,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm6,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm6,14
-+	vmovdqu	xmm0,XMMWORD[((192-128))+rax]
-+	vpsrld	xmm3,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpxor	xmm7,xmm3,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm5,xmm5,xmm7
-+	vpsrld	xmm7,xmm14,6
-+	vpslld	xmm2,xmm14,26
-+	vmovdqu	XMMWORD[(224-128)+rax],xmm5
-+	vpaddd	xmm5,xmm5,xmm9
-+
-+	vpsrld	xmm1,xmm14,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm14,21
-+	vpaddd	xmm5,xmm5,XMMWORD[64+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm14,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm14,7
-+	vpandn	xmm0,xmm14,xmm8
-+	vpand	xmm3,xmm14,xmm15
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm9,xmm10,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm10,30
-+	vpxor	xmm0,xmm0,xmm3
-+	vpxor	xmm3,xmm11,xmm10
-+
-+	vpxor	xmm9,xmm9,xmm1
-+	vpaddd	xmm5,xmm5,xmm7
-+
-+	vpsrld	xmm1,xmm10,13
-+
-+	vpslld	xmm2,xmm10,19
-+	vpaddd	xmm5,xmm5,xmm0
-+	vpand	xmm4,xmm4,xmm3
-+
-+	vpxor	xmm7,xmm9,xmm1
-+
-+	vpsrld	xmm1,xmm10,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm10,10
-+	vpxor	xmm9,xmm11,xmm4
-+	vpaddd	xmm13,xmm13,xmm5
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm9,xmm9,xmm5
-+	vpaddd	xmm9,xmm9,xmm7
-+	vmovdqu	xmm5,XMMWORD[((0-128))+rax]
-+	vpaddd	xmm6,xmm6,XMMWORD[((128-128))+rax]
-+
-+	vpsrld	xmm7,xmm5,3
-+	vpsrld	xmm1,xmm5,7
-+	vpslld	xmm2,xmm5,25
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm5,18
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm5,14
-+	vmovdqu	xmm0,XMMWORD[((208-128))+rax]
-+	vpsrld	xmm4,xmm0,10
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpsrld	xmm1,xmm0,17
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,15
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpxor	xmm7,xmm4,xmm1
-+	vpsrld	xmm1,xmm0,19
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm0,13
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+	vpaddd	xmm6,xmm6,xmm7
-+	vpsrld	xmm7,xmm13,6
-+	vpslld	xmm2,xmm13,26
-+	vmovdqu	XMMWORD[(240-128)+rax],xmm6
-+	vpaddd	xmm6,xmm6,xmm8
-+
-+	vpsrld	xmm1,xmm13,11
-+	vpxor	xmm7,xmm7,xmm2
-+	vpslld	xmm2,xmm13,21
-+	vpaddd	xmm6,xmm6,XMMWORD[96+rbp]
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm1,xmm13,25
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm13,7
-+	vpandn	xmm0,xmm13,xmm15
-+	vpand	xmm4,xmm13,xmm14
-+
-+	vpxor	xmm7,xmm7,xmm1
-+
-+	vpsrld	xmm8,xmm9,2
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm1,xmm9,30
-+	vpxor	xmm0,xmm0,xmm4
-+	vpxor	xmm4,xmm10,xmm9
-+
-+	vpxor	xmm8,xmm8,xmm1
-+	vpaddd	xmm6,xmm6,xmm7
-+
-+	vpsrld	xmm1,xmm9,13
-+
-+	vpslld	xmm2,xmm9,19
-+	vpaddd	xmm6,xmm6,xmm0
-+	vpand	xmm3,xmm3,xmm4
-+
-+	vpxor	xmm7,xmm8,xmm1
-+
-+	vpsrld	xmm1,xmm9,22
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpslld	xmm2,xmm9,10
-+	vpxor	xmm8,xmm10,xmm3
-+	vpaddd	xmm12,xmm12,xmm6
-+
-+	vpxor	xmm7,xmm7,xmm1
-+	vpxor	xmm7,xmm7,xmm2
-+
-+	vpaddd	xmm8,xmm8,xmm6
-+	vpaddd	xmm8,xmm8,xmm7
-+	add	rbp,256
-+	dec	ecx
-+	jnz	NEAR $L$oop_16_xx_avx
-+
-+	mov	ecx,1
-+	lea	rbp,[((K256+128))]
-+	cmp	ecx,DWORD[rbx]
-+	cmovge	r8,rbp
-+	cmp	ecx,DWORD[4+rbx]
-+	cmovge	r9,rbp
-+	cmp	ecx,DWORD[8+rbx]
-+	cmovge	r10,rbp
-+	cmp	ecx,DWORD[12+rbx]
-+	cmovge	r11,rbp
-+	vmovdqa	xmm7,XMMWORD[rbx]
-+	vpxor	xmm0,xmm0,xmm0
-+	vmovdqa	xmm6,xmm7
-+	vpcmpgtd	xmm6,xmm6,xmm0
-+	vpaddd	xmm7,xmm7,xmm6
-+
-+	vmovdqu	xmm0,XMMWORD[((0-128))+rdi]
-+	vpand	xmm8,xmm8,xmm6
-+	vmovdqu	xmm1,XMMWORD[((32-128))+rdi]
-+	vpand	xmm9,xmm9,xmm6
-+	vmovdqu	xmm2,XMMWORD[((64-128))+rdi]
-+	vpand	xmm10,xmm10,xmm6
-+	vmovdqu	xmm5,XMMWORD[((96-128))+rdi]
-+	vpand	xmm11,xmm11,xmm6
-+	vpaddd	xmm8,xmm8,xmm0
-+	vmovdqu	xmm0,XMMWORD[((128-128))+rdi]
-+	vpand	xmm12,xmm12,xmm6
-+	vpaddd	xmm9,xmm9,xmm1
-+	vmovdqu	xmm1,XMMWORD[((160-128))+rdi]
-+	vpand	xmm13,xmm13,xmm6
-+	vpaddd	xmm10,xmm10,xmm2
-+	vmovdqu	xmm2,XMMWORD[((192-128))+rdi]
-+	vpand	xmm14,xmm14,xmm6
-+	vpaddd	xmm11,xmm11,xmm5
-+	vmovdqu	xmm5,XMMWORD[((224-128))+rdi]
-+	vpand	xmm15,xmm15,xmm6
-+	vpaddd	xmm12,xmm12,xmm0
-+	vpaddd	xmm13,xmm13,xmm1
-+	vmovdqu	XMMWORD[(0-128)+rdi],xmm8
-+	vpaddd	xmm14,xmm14,xmm2
-+	vmovdqu	XMMWORD[(32-128)+rdi],xmm9
-+	vpaddd	xmm15,xmm15,xmm5
-+	vmovdqu	XMMWORD[(64-128)+rdi],xmm10
-+	vmovdqu	XMMWORD[(96-128)+rdi],xmm11
-+	vmovdqu	XMMWORD[(128-128)+rdi],xmm12
-+	vmovdqu	XMMWORD[(160-128)+rdi],xmm13
-+	vmovdqu	XMMWORD[(192-128)+rdi],xmm14
-+	vmovdqu	XMMWORD[(224-128)+rdi],xmm15
-+
-+	vmovdqu	XMMWORD[rbx],xmm7
-+	vmovdqu	xmm6,XMMWORD[$L$pbswap]
-+	dec	edx
-+	jnz	NEAR $L$oop_avx
-+
-+	mov	edx,DWORD[280+rsp]
-+	lea	rdi,[16+rdi]
-+	lea	rsi,[64+rsi]
-+	dec	edx
-+	jnz	NEAR $L$oop_grande_avx
-+
-+$L$done_avx:
-+	mov	rax,QWORD[272+rsp]
-+	vzeroupper
-+	movaps	xmm6,XMMWORD[((-184))+rax]
-+	movaps	xmm7,XMMWORD[((-168))+rax]
-+	movaps	xmm8,XMMWORD[((-152))+rax]
-+	movaps	xmm9,XMMWORD[((-136))+rax]
-+	movaps	xmm10,XMMWORD[((-120))+rax]
-+	movaps	xmm11,XMMWORD[((-104))+rax]
-+	movaps	xmm12,XMMWORD[((-88))+rax]
-+	movaps	xmm13,XMMWORD[((-72))+rax]
-+	movaps	xmm14,XMMWORD[((-56))+rax]
-+	movaps	xmm15,XMMWORD[((-40))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	rbx,QWORD[((-8))+rax]
-+	lea	rsp,[rax]
-+$L$epilogue_avx:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha256_multi_block_avx:
-+
-+ALIGN	32
-+sha256_multi_block_avx2:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha256_multi_block_avx2:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+_avx2_shortcut:
-+	mov	rax,rsp
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	lea	rsp,[((-168))+rsp]
-+	movaps	XMMWORD[rsp],xmm6
-+	movaps	XMMWORD[16+rsp],xmm7
-+	movaps	XMMWORD[32+rsp],xmm8
-+	movaps	XMMWORD[48+rsp],xmm9
-+	movaps	XMMWORD[64+rsp],xmm10
-+	movaps	XMMWORD[80+rsp],xmm11
-+	movaps	XMMWORD[(-120)+rax],xmm12
-+	movaps	XMMWORD[(-104)+rax],xmm13
-+	movaps	XMMWORD[(-88)+rax],xmm14
-+	movaps	XMMWORD[(-72)+rax],xmm15
-+	sub	rsp,576
-+	and	rsp,-256
-+	mov	QWORD[544+rsp],rax
-+$L$body_avx2:
-+	lea	rbp,[((K256+128))]
-+	lea	rdi,[128+rdi]
-+
-+$L$oop_grande_avx2:
-+	mov	DWORD[552+rsp],edx
-+	xor	edx,edx
-+	lea	rbx,[512+rsp]
-+	mov	r12,QWORD[rsi]
-+	mov	ecx,DWORD[8+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[rbx],ecx
-+	cmovle	r12,rbp
-+	mov	r13,QWORD[16+rsi]
-+	mov	ecx,DWORD[24+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[4+rbx],ecx
-+	cmovle	r13,rbp
-+	mov	r14,QWORD[32+rsi]
-+	mov	ecx,DWORD[40+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[8+rbx],ecx
-+	cmovle	r14,rbp
-+	mov	r15,QWORD[48+rsi]
-+	mov	ecx,DWORD[56+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[12+rbx],ecx
-+	cmovle	r15,rbp
-+	mov	r8,QWORD[64+rsi]
-+	mov	ecx,DWORD[72+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[16+rbx],ecx
-+	cmovle	r8,rbp
-+	mov	r9,QWORD[80+rsi]
-+	mov	ecx,DWORD[88+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[20+rbx],ecx
-+	cmovle	r9,rbp
-+	mov	r10,QWORD[96+rsi]
-+	mov	ecx,DWORD[104+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[24+rbx],ecx
-+	cmovle	r10,rbp
-+	mov	r11,QWORD[112+rsi]
-+	mov	ecx,DWORD[120+rsi]
-+	cmp	ecx,edx
-+	cmovg	edx,ecx
-+	test	ecx,ecx
-+	mov	DWORD[28+rbx],ecx
-+	cmovle	r11,rbp
-+	vmovdqu	ymm8,YMMWORD[((0-128))+rdi]
-+	lea	rax,[128+rsp]
-+	vmovdqu	ymm9,YMMWORD[((32-128))+rdi]
-+	lea	rbx,[((256+128))+rsp]
-+	vmovdqu	ymm10,YMMWORD[((64-128))+rdi]
-+	vmovdqu	ymm11,YMMWORD[((96-128))+rdi]
-+	vmovdqu	ymm12,YMMWORD[((128-128))+rdi]
-+	vmovdqu	ymm13,YMMWORD[((160-128))+rdi]
-+	vmovdqu	ymm14,YMMWORD[((192-128))+rdi]
-+	vmovdqu	ymm15,YMMWORD[((224-128))+rdi]
-+	vmovdqu	ymm6,YMMWORD[$L$pbswap]
-+	jmp	NEAR $L$oop_avx2
-+
-+ALIGN	32
-+$L$oop_avx2:
-+	vpxor	ymm4,ymm10,ymm9
-+	vmovd	xmm5,DWORD[r12]
-+	vmovd	xmm0,DWORD[r8]
-+	vmovd	xmm1,DWORD[r13]
-+	vmovd	xmm2,DWORD[r9]
-+	vpinsrd	xmm5,xmm5,DWORD[r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm12,6
-+	vpslld	ymm2,ymm12,26
-+	vmovdqu	YMMWORD[(0-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm15
-+
-+	vpsrld	ymm1,ymm12,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm12,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-128))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm12,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm12,7
-+	vpandn	ymm0,ymm12,ymm14
-+	vpand	ymm3,ymm12,ymm13
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm15,ymm8,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm8,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm9,ymm8
-+
-+	vpxor	ymm15,ymm15,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm8,13
-+
-+	vpslld	ymm2,ymm8,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm15,ymm1
-+
-+	vpsrld	ymm1,ymm8,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm8,10
-+	vpxor	ymm15,ymm9,ymm4
-+	vpaddd	ymm11,ymm11,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm15,ymm15,ymm5
-+	vpaddd	ymm15,ymm15,ymm7
-+	vmovd	xmm5,DWORD[4+r12]
-+	vmovd	xmm0,DWORD[4+r8]
-+	vmovd	xmm1,DWORD[4+r13]
-+	vmovd	xmm2,DWORD[4+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[4+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[4+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[4+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[4+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm11,6
-+	vpslld	ymm2,ymm11,26
-+	vmovdqu	YMMWORD[(32-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm14
-+
-+	vpsrld	ymm1,ymm11,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm11,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-96))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm11,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm11,7
-+	vpandn	ymm0,ymm11,ymm13
-+	vpand	ymm4,ymm11,ymm12
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm14,ymm15,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm15,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm8,ymm15
-+
-+	vpxor	ymm14,ymm14,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm15,13
-+
-+	vpslld	ymm2,ymm15,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm14,ymm1
-+
-+	vpsrld	ymm1,ymm15,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm15,10
-+	vpxor	ymm14,ymm8,ymm3
-+	vpaddd	ymm10,ymm10,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm14,ymm14,ymm5
-+	vpaddd	ymm14,ymm14,ymm7
-+	vmovd	xmm5,DWORD[8+r12]
-+	vmovd	xmm0,DWORD[8+r8]
-+	vmovd	xmm1,DWORD[8+r13]
-+	vmovd	xmm2,DWORD[8+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[8+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[8+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[8+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[8+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm10,6
-+	vpslld	ymm2,ymm10,26
-+	vmovdqu	YMMWORD[(64-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm13
-+
-+	vpsrld	ymm1,ymm10,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm10,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-64))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm10,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm10,7
-+	vpandn	ymm0,ymm10,ymm12
-+	vpand	ymm3,ymm10,ymm11
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm13,ymm14,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm14,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm15,ymm14
-+
-+	vpxor	ymm13,ymm13,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm14,13
-+
-+	vpslld	ymm2,ymm14,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm13,ymm1
-+
-+	vpsrld	ymm1,ymm14,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm14,10
-+	vpxor	ymm13,ymm15,ymm4
-+	vpaddd	ymm9,ymm9,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm13,ymm13,ymm5
-+	vpaddd	ymm13,ymm13,ymm7
-+	vmovd	xmm5,DWORD[12+r12]
-+	vmovd	xmm0,DWORD[12+r8]
-+	vmovd	xmm1,DWORD[12+r13]
-+	vmovd	xmm2,DWORD[12+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[12+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[12+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[12+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[12+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm9,6
-+	vpslld	ymm2,ymm9,26
-+	vmovdqu	YMMWORD[(96-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm12
-+
-+	vpsrld	ymm1,ymm9,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm9,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-32))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm9,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm9,7
-+	vpandn	ymm0,ymm9,ymm11
-+	vpand	ymm4,ymm9,ymm10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm12,ymm13,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm13,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm14,ymm13
-+
-+	vpxor	ymm12,ymm12,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm13,13
-+
-+	vpslld	ymm2,ymm13,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm12,ymm1
-+
-+	vpsrld	ymm1,ymm13,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm13,10
-+	vpxor	ymm12,ymm14,ymm3
-+	vpaddd	ymm8,ymm8,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm12,ymm12,ymm5
-+	vpaddd	ymm12,ymm12,ymm7
-+	vmovd	xmm5,DWORD[16+r12]
-+	vmovd	xmm0,DWORD[16+r8]
-+	vmovd	xmm1,DWORD[16+r13]
-+	vmovd	xmm2,DWORD[16+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[16+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[16+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[16+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[16+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm8,6
-+	vpslld	ymm2,ymm8,26
-+	vmovdqu	YMMWORD[(128-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm11
-+
-+	vpsrld	ymm1,ymm8,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm8,21
-+	vpaddd	ymm5,ymm5,YMMWORD[rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm8,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm8,7
-+	vpandn	ymm0,ymm8,ymm10
-+	vpand	ymm3,ymm8,ymm9
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm11,ymm12,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm12,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm13,ymm12
-+
-+	vpxor	ymm11,ymm11,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm12,13
-+
-+	vpslld	ymm2,ymm12,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm11,ymm1
-+
-+	vpsrld	ymm1,ymm12,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm12,10
-+	vpxor	ymm11,ymm13,ymm4
-+	vpaddd	ymm15,ymm15,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm11,ymm11,ymm5
-+	vpaddd	ymm11,ymm11,ymm7
-+	vmovd	xmm5,DWORD[20+r12]
-+	vmovd	xmm0,DWORD[20+r8]
-+	vmovd	xmm1,DWORD[20+r13]
-+	vmovd	xmm2,DWORD[20+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[20+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[20+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[20+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[20+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm15,6
-+	vpslld	ymm2,ymm15,26
-+	vmovdqu	YMMWORD[(160-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm10
-+
-+	vpsrld	ymm1,ymm15,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm15,21
-+	vpaddd	ymm5,ymm5,YMMWORD[32+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm15,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm15,7
-+	vpandn	ymm0,ymm15,ymm9
-+	vpand	ymm4,ymm15,ymm8
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm10,ymm11,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm11,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm12,ymm11
-+
-+	vpxor	ymm10,ymm10,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm11,13
-+
-+	vpslld	ymm2,ymm11,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm10,ymm1
-+
-+	vpsrld	ymm1,ymm11,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm11,10
-+	vpxor	ymm10,ymm12,ymm3
-+	vpaddd	ymm14,ymm14,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm10,ymm10,ymm5
-+	vpaddd	ymm10,ymm10,ymm7
-+	vmovd	xmm5,DWORD[24+r12]
-+	vmovd	xmm0,DWORD[24+r8]
-+	vmovd	xmm1,DWORD[24+r13]
-+	vmovd	xmm2,DWORD[24+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[24+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[24+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[24+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[24+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm14,6
-+	vpslld	ymm2,ymm14,26
-+	vmovdqu	YMMWORD[(192-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm9
-+
-+	vpsrld	ymm1,ymm14,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm14,21
-+	vpaddd	ymm5,ymm5,YMMWORD[64+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm14,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm14,7
-+	vpandn	ymm0,ymm14,ymm8
-+	vpand	ymm3,ymm14,ymm15
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm9,ymm10,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm10,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm11,ymm10
-+
-+	vpxor	ymm9,ymm9,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm10,13
-+
-+	vpslld	ymm2,ymm10,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm9,ymm1
-+
-+	vpsrld	ymm1,ymm10,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm10,10
-+	vpxor	ymm9,ymm11,ymm4
-+	vpaddd	ymm13,ymm13,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm9,ymm9,ymm5
-+	vpaddd	ymm9,ymm9,ymm7
-+	vmovd	xmm5,DWORD[28+r12]
-+	vmovd	xmm0,DWORD[28+r8]
-+	vmovd	xmm1,DWORD[28+r13]
-+	vmovd	xmm2,DWORD[28+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[28+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[28+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[28+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[28+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm13,6
-+	vpslld	ymm2,ymm13,26
-+	vmovdqu	YMMWORD[(224-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm8
-+
-+	vpsrld	ymm1,ymm13,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm13,21
-+	vpaddd	ymm5,ymm5,YMMWORD[96+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm13,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm13,7
-+	vpandn	ymm0,ymm13,ymm15
-+	vpand	ymm4,ymm13,ymm14
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm8,ymm9,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm9,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm10,ymm9
-+
-+	vpxor	ymm8,ymm8,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm9,13
-+
-+	vpslld	ymm2,ymm9,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm8,ymm1
-+
-+	vpsrld	ymm1,ymm9,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm9,10
-+	vpxor	ymm8,ymm10,ymm3
-+	vpaddd	ymm12,ymm12,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm8,ymm8,ymm5
-+	vpaddd	ymm8,ymm8,ymm7
-+	add	rbp,256
-+	vmovd	xmm5,DWORD[32+r12]
-+	vmovd	xmm0,DWORD[32+r8]
-+	vmovd	xmm1,DWORD[32+r13]
-+	vmovd	xmm2,DWORD[32+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[32+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[32+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[32+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[32+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm12,6
-+	vpslld	ymm2,ymm12,26
-+	vmovdqu	YMMWORD[(256-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm15
-+
-+	vpsrld	ymm1,ymm12,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm12,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-128))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm12,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm12,7
-+	vpandn	ymm0,ymm12,ymm14
-+	vpand	ymm3,ymm12,ymm13
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm15,ymm8,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm8,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm9,ymm8
-+
-+	vpxor	ymm15,ymm15,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm8,13
-+
-+	vpslld	ymm2,ymm8,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm15,ymm1
-+
-+	vpsrld	ymm1,ymm8,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm8,10
-+	vpxor	ymm15,ymm9,ymm4
-+	vpaddd	ymm11,ymm11,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm15,ymm15,ymm5
-+	vpaddd	ymm15,ymm15,ymm7
-+	vmovd	xmm5,DWORD[36+r12]
-+	vmovd	xmm0,DWORD[36+r8]
-+	vmovd	xmm1,DWORD[36+r13]
-+	vmovd	xmm2,DWORD[36+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[36+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[36+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[36+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[36+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm11,6
-+	vpslld	ymm2,ymm11,26
-+	vmovdqu	YMMWORD[(288-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm14
-+
-+	vpsrld	ymm1,ymm11,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm11,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-96))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm11,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm11,7
-+	vpandn	ymm0,ymm11,ymm13
-+	vpand	ymm4,ymm11,ymm12
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm14,ymm15,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm15,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm8,ymm15
-+
-+	vpxor	ymm14,ymm14,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm15,13
-+
-+	vpslld	ymm2,ymm15,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm14,ymm1
-+
-+	vpsrld	ymm1,ymm15,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm15,10
-+	vpxor	ymm14,ymm8,ymm3
-+	vpaddd	ymm10,ymm10,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm14,ymm14,ymm5
-+	vpaddd	ymm14,ymm14,ymm7
-+	vmovd	xmm5,DWORD[40+r12]
-+	vmovd	xmm0,DWORD[40+r8]
-+	vmovd	xmm1,DWORD[40+r13]
-+	vmovd	xmm2,DWORD[40+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[40+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[40+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[40+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[40+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm10,6
-+	vpslld	ymm2,ymm10,26
-+	vmovdqu	YMMWORD[(320-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm13
-+
-+	vpsrld	ymm1,ymm10,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm10,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-64))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm10,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm10,7
-+	vpandn	ymm0,ymm10,ymm12
-+	vpand	ymm3,ymm10,ymm11
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm13,ymm14,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm14,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm15,ymm14
-+
-+	vpxor	ymm13,ymm13,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm14,13
-+
-+	vpslld	ymm2,ymm14,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm13,ymm1
-+
-+	vpsrld	ymm1,ymm14,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm14,10
-+	vpxor	ymm13,ymm15,ymm4
-+	vpaddd	ymm9,ymm9,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm13,ymm13,ymm5
-+	vpaddd	ymm13,ymm13,ymm7
-+	vmovd	xmm5,DWORD[44+r12]
-+	vmovd	xmm0,DWORD[44+r8]
-+	vmovd	xmm1,DWORD[44+r13]
-+	vmovd	xmm2,DWORD[44+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[44+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[44+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[44+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[44+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm9,6
-+	vpslld	ymm2,ymm9,26
-+	vmovdqu	YMMWORD[(352-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm12
-+
-+	vpsrld	ymm1,ymm9,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm9,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-32))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm9,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm9,7
-+	vpandn	ymm0,ymm9,ymm11
-+	vpand	ymm4,ymm9,ymm10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm12,ymm13,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm13,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm14,ymm13
-+
-+	vpxor	ymm12,ymm12,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm13,13
-+
-+	vpslld	ymm2,ymm13,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm12,ymm1
-+
-+	vpsrld	ymm1,ymm13,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm13,10
-+	vpxor	ymm12,ymm14,ymm3
-+	vpaddd	ymm8,ymm8,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm12,ymm12,ymm5
-+	vpaddd	ymm12,ymm12,ymm7
-+	vmovd	xmm5,DWORD[48+r12]
-+	vmovd	xmm0,DWORD[48+r8]
-+	vmovd	xmm1,DWORD[48+r13]
-+	vmovd	xmm2,DWORD[48+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[48+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[48+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[48+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[48+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm8,6
-+	vpslld	ymm2,ymm8,26
-+	vmovdqu	YMMWORD[(384-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm11
-+
-+	vpsrld	ymm1,ymm8,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm8,21
-+	vpaddd	ymm5,ymm5,YMMWORD[rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm8,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm8,7
-+	vpandn	ymm0,ymm8,ymm10
-+	vpand	ymm3,ymm8,ymm9
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm11,ymm12,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm12,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm13,ymm12
-+
-+	vpxor	ymm11,ymm11,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm12,13
-+
-+	vpslld	ymm2,ymm12,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm11,ymm1
-+
-+	vpsrld	ymm1,ymm12,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm12,10
-+	vpxor	ymm11,ymm13,ymm4
-+	vpaddd	ymm15,ymm15,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm11,ymm11,ymm5
-+	vpaddd	ymm11,ymm11,ymm7
-+	vmovd	xmm5,DWORD[52+r12]
-+	vmovd	xmm0,DWORD[52+r8]
-+	vmovd	xmm1,DWORD[52+r13]
-+	vmovd	xmm2,DWORD[52+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[52+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[52+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[52+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[52+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm15,6
-+	vpslld	ymm2,ymm15,26
-+	vmovdqu	YMMWORD[(416-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm10
-+
-+	vpsrld	ymm1,ymm15,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm15,21
-+	vpaddd	ymm5,ymm5,YMMWORD[32+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm15,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm15,7
-+	vpandn	ymm0,ymm15,ymm9
-+	vpand	ymm4,ymm15,ymm8
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm10,ymm11,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm11,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm12,ymm11
-+
-+	vpxor	ymm10,ymm10,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm11,13
-+
-+	vpslld	ymm2,ymm11,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm10,ymm1
-+
-+	vpsrld	ymm1,ymm11,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm11,10
-+	vpxor	ymm10,ymm12,ymm3
-+	vpaddd	ymm14,ymm14,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm10,ymm10,ymm5
-+	vpaddd	ymm10,ymm10,ymm7
-+	vmovd	xmm5,DWORD[56+r12]
-+	vmovd	xmm0,DWORD[56+r8]
-+	vmovd	xmm1,DWORD[56+r13]
-+	vmovd	xmm2,DWORD[56+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[56+r14],1
-+	vpinsrd	xmm0,xmm0,DWORD[56+r10],1
-+	vpinsrd	xmm1,xmm1,DWORD[56+r15],1
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[56+r11],1
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm14,6
-+	vpslld	ymm2,ymm14,26
-+	vmovdqu	YMMWORD[(448-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm9
-+
-+	vpsrld	ymm1,ymm14,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm14,21
-+	vpaddd	ymm5,ymm5,YMMWORD[64+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm14,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm14,7
-+	vpandn	ymm0,ymm14,ymm8
-+	vpand	ymm3,ymm14,ymm15
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm9,ymm10,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm10,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm11,ymm10
-+
-+	vpxor	ymm9,ymm9,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm10,13
-+
-+	vpslld	ymm2,ymm10,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm9,ymm1
-+
-+	vpsrld	ymm1,ymm10,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm10,10
-+	vpxor	ymm9,ymm11,ymm4
-+	vpaddd	ymm13,ymm13,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm9,ymm9,ymm5
-+	vpaddd	ymm9,ymm9,ymm7
-+	vmovd	xmm5,DWORD[60+r12]
-+	lea	r12,[64+r12]
-+	vmovd	xmm0,DWORD[60+r8]
-+	lea	r8,[64+r8]
-+	vmovd	xmm1,DWORD[60+r13]
-+	lea	r13,[64+r13]
-+	vmovd	xmm2,DWORD[60+r9]
-+	lea	r9,[64+r9]
-+	vpinsrd	xmm5,xmm5,DWORD[60+r14],1
-+	lea	r14,[64+r14]
-+	vpinsrd	xmm0,xmm0,DWORD[60+r10],1
-+	lea	r10,[64+r10]
-+	vpinsrd	xmm1,xmm1,DWORD[60+r15],1
-+	lea	r15,[64+r15]
-+	vpunpckldq	ymm5,ymm5,ymm1
-+	vpinsrd	xmm2,xmm2,DWORD[60+r11],1
-+	lea	r11,[64+r11]
-+	vpunpckldq	ymm0,ymm0,ymm2
-+	vinserti128	ymm5,ymm5,xmm0,1
-+	vpshufb	ymm5,ymm5,ymm6
-+	vpsrld	ymm7,ymm13,6
-+	vpslld	ymm2,ymm13,26
-+	vmovdqu	YMMWORD[(480-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm8
-+
-+	vpsrld	ymm1,ymm13,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm13,21
-+	vpaddd	ymm5,ymm5,YMMWORD[96+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm13,25
-+	vpxor	ymm7,ymm7,ymm2
-+	prefetcht0	[63+r12]
-+	vpslld	ymm2,ymm13,7
-+	vpandn	ymm0,ymm13,ymm15
-+	vpand	ymm4,ymm13,ymm14
-+	prefetcht0	[63+r13]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm8,ymm9,2
-+	vpxor	ymm7,ymm7,ymm2
-+	prefetcht0	[63+r14]
-+	vpslld	ymm1,ymm9,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm10,ymm9
-+	prefetcht0	[63+r15]
-+	vpxor	ymm8,ymm8,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm9,13
-+	prefetcht0	[63+r8]
-+	vpslld	ymm2,ymm9,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+	prefetcht0	[63+r9]
-+	vpxor	ymm7,ymm8,ymm1
-+
-+	vpsrld	ymm1,ymm9,22
-+	vpxor	ymm7,ymm7,ymm2
-+	prefetcht0	[63+r10]
-+	vpslld	ymm2,ymm9,10
-+	vpxor	ymm8,ymm10,ymm3
-+	vpaddd	ymm12,ymm12,ymm5
-+	prefetcht0	[63+r11]
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm8,ymm8,ymm5
-+	vpaddd	ymm8,ymm8,ymm7
-+	add	rbp,256
-+	vmovdqu	ymm5,YMMWORD[((0-128))+rax]
-+	mov	ecx,3
-+	jmp	NEAR $L$oop_16_xx_avx2
-+ALIGN	32
-+$L$oop_16_xx_avx2:
-+	vmovdqu	ymm6,YMMWORD[((32-128))+rax]
-+	vpaddd	ymm5,ymm5,YMMWORD[((288-256-128))+rbx]
-+
-+	vpsrld	ymm7,ymm6,3
-+	vpsrld	ymm1,ymm6,7
-+	vpslld	ymm2,ymm6,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm6,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm6,14
-+	vmovdqu	ymm0,YMMWORD[((448-256-128))+rbx]
-+	vpsrld	ymm3,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpxor	ymm7,ymm3,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpsrld	ymm7,ymm12,6
-+	vpslld	ymm2,ymm12,26
-+	vmovdqu	YMMWORD[(0-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm15
-+
-+	vpsrld	ymm1,ymm12,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm12,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-128))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm12,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm12,7
-+	vpandn	ymm0,ymm12,ymm14
-+	vpand	ymm3,ymm12,ymm13
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm15,ymm8,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm8,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm9,ymm8
-+
-+	vpxor	ymm15,ymm15,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm8,13
-+
-+	vpslld	ymm2,ymm8,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm15,ymm1
-+
-+	vpsrld	ymm1,ymm8,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm8,10
-+	vpxor	ymm15,ymm9,ymm4
-+	vpaddd	ymm11,ymm11,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm15,ymm15,ymm5
-+	vpaddd	ymm15,ymm15,ymm7
-+	vmovdqu	ymm5,YMMWORD[((64-128))+rax]
-+	vpaddd	ymm6,ymm6,YMMWORD[((320-256-128))+rbx]
-+
-+	vpsrld	ymm7,ymm5,3
-+	vpsrld	ymm1,ymm5,7
-+	vpslld	ymm2,ymm5,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm5,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm5,14
-+	vmovdqu	ymm0,YMMWORD[((480-256-128))+rbx]
-+	vpsrld	ymm4,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpxor	ymm7,ymm4,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpsrld	ymm7,ymm11,6
-+	vpslld	ymm2,ymm11,26
-+	vmovdqu	YMMWORD[(32-128)+rax],ymm6
-+	vpaddd	ymm6,ymm6,ymm14
-+
-+	vpsrld	ymm1,ymm11,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm11,21
-+	vpaddd	ymm6,ymm6,YMMWORD[((-96))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm11,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm11,7
-+	vpandn	ymm0,ymm11,ymm13
-+	vpand	ymm4,ymm11,ymm12
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm14,ymm15,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm15,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm8,ymm15
-+
-+	vpxor	ymm14,ymm14,ymm1
-+	vpaddd	ymm6,ymm6,ymm7
-+
-+	vpsrld	ymm1,ymm15,13
-+
-+	vpslld	ymm2,ymm15,19
-+	vpaddd	ymm6,ymm6,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm14,ymm1
-+
-+	vpsrld	ymm1,ymm15,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm15,10
-+	vpxor	ymm14,ymm8,ymm3
-+	vpaddd	ymm10,ymm10,ymm6
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm14,ymm14,ymm6
-+	vpaddd	ymm14,ymm14,ymm7
-+	vmovdqu	ymm6,YMMWORD[((96-128))+rax]
-+	vpaddd	ymm5,ymm5,YMMWORD[((352-256-128))+rbx]
-+
-+	vpsrld	ymm7,ymm6,3
-+	vpsrld	ymm1,ymm6,7
-+	vpslld	ymm2,ymm6,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm6,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm6,14
-+	vmovdqu	ymm0,YMMWORD[((0-128))+rax]
-+	vpsrld	ymm3,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpxor	ymm7,ymm3,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpsrld	ymm7,ymm10,6
-+	vpslld	ymm2,ymm10,26
-+	vmovdqu	YMMWORD[(64-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm13
-+
-+	vpsrld	ymm1,ymm10,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm10,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-64))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm10,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm10,7
-+	vpandn	ymm0,ymm10,ymm12
-+	vpand	ymm3,ymm10,ymm11
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm13,ymm14,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm14,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm15,ymm14
-+
-+	vpxor	ymm13,ymm13,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm14,13
-+
-+	vpslld	ymm2,ymm14,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm13,ymm1
-+
-+	vpsrld	ymm1,ymm14,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm14,10
-+	vpxor	ymm13,ymm15,ymm4
-+	vpaddd	ymm9,ymm9,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm13,ymm13,ymm5
-+	vpaddd	ymm13,ymm13,ymm7
-+	vmovdqu	ymm5,YMMWORD[((128-128))+rax]
-+	vpaddd	ymm6,ymm6,YMMWORD[((384-256-128))+rbx]
-+
-+	vpsrld	ymm7,ymm5,3
-+	vpsrld	ymm1,ymm5,7
-+	vpslld	ymm2,ymm5,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm5,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm5,14
-+	vmovdqu	ymm0,YMMWORD[((32-128))+rax]
-+	vpsrld	ymm4,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpxor	ymm7,ymm4,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpsrld	ymm7,ymm9,6
-+	vpslld	ymm2,ymm9,26
-+	vmovdqu	YMMWORD[(96-128)+rax],ymm6
-+	vpaddd	ymm6,ymm6,ymm12
-+
-+	vpsrld	ymm1,ymm9,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm9,21
-+	vpaddd	ymm6,ymm6,YMMWORD[((-32))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm9,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm9,7
-+	vpandn	ymm0,ymm9,ymm11
-+	vpand	ymm4,ymm9,ymm10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm12,ymm13,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm13,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm14,ymm13
-+
-+	vpxor	ymm12,ymm12,ymm1
-+	vpaddd	ymm6,ymm6,ymm7
-+
-+	vpsrld	ymm1,ymm13,13
-+
-+	vpslld	ymm2,ymm13,19
-+	vpaddd	ymm6,ymm6,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm12,ymm1
-+
-+	vpsrld	ymm1,ymm13,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm13,10
-+	vpxor	ymm12,ymm14,ymm3
-+	vpaddd	ymm8,ymm8,ymm6
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm12,ymm12,ymm6
-+	vpaddd	ymm12,ymm12,ymm7
-+	vmovdqu	ymm6,YMMWORD[((160-128))+rax]
-+	vpaddd	ymm5,ymm5,YMMWORD[((416-256-128))+rbx]
-+
-+	vpsrld	ymm7,ymm6,3
-+	vpsrld	ymm1,ymm6,7
-+	vpslld	ymm2,ymm6,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm6,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm6,14
-+	vmovdqu	ymm0,YMMWORD[((64-128))+rax]
-+	vpsrld	ymm3,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpxor	ymm7,ymm3,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpsrld	ymm7,ymm8,6
-+	vpslld	ymm2,ymm8,26
-+	vmovdqu	YMMWORD[(128-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm11
-+
-+	vpsrld	ymm1,ymm8,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm8,21
-+	vpaddd	ymm5,ymm5,YMMWORD[rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm8,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm8,7
-+	vpandn	ymm0,ymm8,ymm10
-+	vpand	ymm3,ymm8,ymm9
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm11,ymm12,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm12,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm13,ymm12
-+
-+	vpxor	ymm11,ymm11,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm12,13
-+
-+	vpslld	ymm2,ymm12,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm11,ymm1
-+
-+	vpsrld	ymm1,ymm12,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm12,10
-+	vpxor	ymm11,ymm13,ymm4
-+	vpaddd	ymm15,ymm15,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm11,ymm11,ymm5
-+	vpaddd	ymm11,ymm11,ymm7
-+	vmovdqu	ymm5,YMMWORD[((192-128))+rax]
-+	vpaddd	ymm6,ymm6,YMMWORD[((448-256-128))+rbx]
-+
-+	vpsrld	ymm7,ymm5,3
-+	vpsrld	ymm1,ymm5,7
-+	vpslld	ymm2,ymm5,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm5,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm5,14
-+	vmovdqu	ymm0,YMMWORD[((96-128))+rax]
-+	vpsrld	ymm4,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpxor	ymm7,ymm4,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpsrld	ymm7,ymm15,6
-+	vpslld	ymm2,ymm15,26
-+	vmovdqu	YMMWORD[(160-128)+rax],ymm6
-+	vpaddd	ymm6,ymm6,ymm10
-+
-+	vpsrld	ymm1,ymm15,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm15,21
-+	vpaddd	ymm6,ymm6,YMMWORD[32+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm15,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm15,7
-+	vpandn	ymm0,ymm15,ymm9
-+	vpand	ymm4,ymm15,ymm8
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm10,ymm11,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm11,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm12,ymm11
-+
-+	vpxor	ymm10,ymm10,ymm1
-+	vpaddd	ymm6,ymm6,ymm7
-+
-+	vpsrld	ymm1,ymm11,13
-+
-+	vpslld	ymm2,ymm11,19
-+	vpaddd	ymm6,ymm6,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm10,ymm1
-+
-+	vpsrld	ymm1,ymm11,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm11,10
-+	vpxor	ymm10,ymm12,ymm3
-+	vpaddd	ymm14,ymm14,ymm6
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm10,ymm10,ymm6
-+	vpaddd	ymm10,ymm10,ymm7
-+	vmovdqu	ymm6,YMMWORD[((224-128))+rax]
-+	vpaddd	ymm5,ymm5,YMMWORD[((480-256-128))+rbx]
-+
-+	vpsrld	ymm7,ymm6,3
-+	vpsrld	ymm1,ymm6,7
-+	vpslld	ymm2,ymm6,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm6,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm6,14
-+	vmovdqu	ymm0,YMMWORD[((128-128))+rax]
-+	vpsrld	ymm3,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpxor	ymm7,ymm3,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpsrld	ymm7,ymm14,6
-+	vpslld	ymm2,ymm14,26
-+	vmovdqu	YMMWORD[(192-128)+rax],ymm5
-+	vpaddd	ymm5,ymm5,ymm9
-+
-+	vpsrld	ymm1,ymm14,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm14,21
-+	vpaddd	ymm5,ymm5,YMMWORD[64+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm14,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm14,7
-+	vpandn	ymm0,ymm14,ymm8
-+	vpand	ymm3,ymm14,ymm15
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm9,ymm10,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm10,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm11,ymm10
-+
-+	vpxor	ymm9,ymm9,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm10,13
-+
-+	vpslld	ymm2,ymm10,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm9,ymm1
-+
-+	vpsrld	ymm1,ymm10,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm10,10
-+	vpxor	ymm9,ymm11,ymm4
-+	vpaddd	ymm13,ymm13,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm9,ymm9,ymm5
-+	vpaddd	ymm9,ymm9,ymm7
-+	vmovdqu	ymm5,YMMWORD[((256-256-128))+rbx]
-+	vpaddd	ymm6,ymm6,YMMWORD[((0-128))+rax]
-+
-+	vpsrld	ymm7,ymm5,3
-+	vpsrld	ymm1,ymm5,7
-+	vpslld	ymm2,ymm5,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm5,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm5,14
-+	vmovdqu	ymm0,YMMWORD[((160-128))+rax]
-+	vpsrld	ymm4,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpxor	ymm7,ymm4,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpsrld	ymm7,ymm13,6
-+	vpslld	ymm2,ymm13,26
-+	vmovdqu	YMMWORD[(224-128)+rax],ymm6
-+	vpaddd	ymm6,ymm6,ymm8
-+
-+	vpsrld	ymm1,ymm13,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm13,21
-+	vpaddd	ymm6,ymm6,YMMWORD[96+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm13,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm13,7
-+	vpandn	ymm0,ymm13,ymm15
-+	vpand	ymm4,ymm13,ymm14
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm8,ymm9,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm9,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm10,ymm9
-+
-+	vpxor	ymm8,ymm8,ymm1
-+	vpaddd	ymm6,ymm6,ymm7
-+
-+	vpsrld	ymm1,ymm9,13
-+
-+	vpslld	ymm2,ymm9,19
-+	vpaddd	ymm6,ymm6,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm8,ymm1
-+
-+	vpsrld	ymm1,ymm9,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm9,10
-+	vpxor	ymm8,ymm10,ymm3
-+	vpaddd	ymm12,ymm12,ymm6
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm8,ymm8,ymm6
-+	vpaddd	ymm8,ymm8,ymm7
-+	add	rbp,256
-+	vmovdqu	ymm6,YMMWORD[((288-256-128))+rbx]
-+	vpaddd	ymm5,ymm5,YMMWORD[((32-128))+rax]
-+
-+	vpsrld	ymm7,ymm6,3
-+	vpsrld	ymm1,ymm6,7
-+	vpslld	ymm2,ymm6,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm6,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm6,14
-+	vmovdqu	ymm0,YMMWORD[((192-128))+rax]
-+	vpsrld	ymm3,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpxor	ymm7,ymm3,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpsrld	ymm7,ymm12,6
-+	vpslld	ymm2,ymm12,26
-+	vmovdqu	YMMWORD[(256-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm15
-+
-+	vpsrld	ymm1,ymm12,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm12,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-128))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm12,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm12,7
-+	vpandn	ymm0,ymm12,ymm14
-+	vpand	ymm3,ymm12,ymm13
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm15,ymm8,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm8,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm9,ymm8
-+
-+	vpxor	ymm15,ymm15,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm8,13
-+
-+	vpslld	ymm2,ymm8,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm15,ymm1
-+
-+	vpsrld	ymm1,ymm8,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm8,10
-+	vpxor	ymm15,ymm9,ymm4
-+	vpaddd	ymm11,ymm11,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm15,ymm15,ymm5
-+	vpaddd	ymm15,ymm15,ymm7
-+	vmovdqu	ymm5,YMMWORD[((320-256-128))+rbx]
-+	vpaddd	ymm6,ymm6,YMMWORD[((64-128))+rax]
-+
-+	vpsrld	ymm7,ymm5,3
-+	vpsrld	ymm1,ymm5,7
-+	vpslld	ymm2,ymm5,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm5,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm5,14
-+	vmovdqu	ymm0,YMMWORD[((224-128))+rax]
-+	vpsrld	ymm4,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpxor	ymm7,ymm4,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpsrld	ymm7,ymm11,6
-+	vpslld	ymm2,ymm11,26
-+	vmovdqu	YMMWORD[(288-256-128)+rbx],ymm6
-+	vpaddd	ymm6,ymm6,ymm14
-+
-+	vpsrld	ymm1,ymm11,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm11,21
-+	vpaddd	ymm6,ymm6,YMMWORD[((-96))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm11,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm11,7
-+	vpandn	ymm0,ymm11,ymm13
-+	vpand	ymm4,ymm11,ymm12
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm14,ymm15,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm15,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm8,ymm15
-+
-+	vpxor	ymm14,ymm14,ymm1
-+	vpaddd	ymm6,ymm6,ymm7
-+
-+	vpsrld	ymm1,ymm15,13
-+
-+	vpslld	ymm2,ymm15,19
-+	vpaddd	ymm6,ymm6,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm14,ymm1
-+
-+	vpsrld	ymm1,ymm15,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm15,10
-+	vpxor	ymm14,ymm8,ymm3
-+	vpaddd	ymm10,ymm10,ymm6
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm14,ymm14,ymm6
-+	vpaddd	ymm14,ymm14,ymm7
-+	vmovdqu	ymm6,YMMWORD[((352-256-128))+rbx]
-+	vpaddd	ymm5,ymm5,YMMWORD[((96-128))+rax]
-+
-+	vpsrld	ymm7,ymm6,3
-+	vpsrld	ymm1,ymm6,7
-+	vpslld	ymm2,ymm6,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm6,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm6,14
-+	vmovdqu	ymm0,YMMWORD[((256-256-128))+rbx]
-+	vpsrld	ymm3,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpxor	ymm7,ymm3,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpsrld	ymm7,ymm10,6
-+	vpslld	ymm2,ymm10,26
-+	vmovdqu	YMMWORD[(320-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm13
-+
-+	vpsrld	ymm1,ymm10,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm10,21
-+	vpaddd	ymm5,ymm5,YMMWORD[((-64))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm10,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm10,7
-+	vpandn	ymm0,ymm10,ymm12
-+	vpand	ymm3,ymm10,ymm11
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm13,ymm14,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm14,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm15,ymm14
-+
-+	vpxor	ymm13,ymm13,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm14,13
-+
-+	vpslld	ymm2,ymm14,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm13,ymm1
-+
-+	vpsrld	ymm1,ymm14,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm14,10
-+	vpxor	ymm13,ymm15,ymm4
-+	vpaddd	ymm9,ymm9,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm13,ymm13,ymm5
-+	vpaddd	ymm13,ymm13,ymm7
-+	vmovdqu	ymm5,YMMWORD[((384-256-128))+rbx]
-+	vpaddd	ymm6,ymm6,YMMWORD[((128-128))+rax]
-+
-+	vpsrld	ymm7,ymm5,3
-+	vpsrld	ymm1,ymm5,7
-+	vpslld	ymm2,ymm5,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm5,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm5,14
-+	vmovdqu	ymm0,YMMWORD[((288-256-128))+rbx]
-+	vpsrld	ymm4,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpxor	ymm7,ymm4,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpsrld	ymm7,ymm9,6
-+	vpslld	ymm2,ymm9,26
-+	vmovdqu	YMMWORD[(352-256-128)+rbx],ymm6
-+	vpaddd	ymm6,ymm6,ymm12
-+
-+	vpsrld	ymm1,ymm9,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm9,21
-+	vpaddd	ymm6,ymm6,YMMWORD[((-32))+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm9,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm9,7
-+	vpandn	ymm0,ymm9,ymm11
-+	vpand	ymm4,ymm9,ymm10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm12,ymm13,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm13,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm14,ymm13
-+
-+	vpxor	ymm12,ymm12,ymm1
-+	vpaddd	ymm6,ymm6,ymm7
-+
-+	vpsrld	ymm1,ymm13,13
-+
-+	vpslld	ymm2,ymm13,19
-+	vpaddd	ymm6,ymm6,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm12,ymm1
-+
-+	vpsrld	ymm1,ymm13,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm13,10
-+	vpxor	ymm12,ymm14,ymm3
-+	vpaddd	ymm8,ymm8,ymm6
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm12,ymm12,ymm6
-+	vpaddd	ymm12,ymm12,ymm7
-+	vmovdqu	ymm6,YMMWORD[((416-256-128))+rbx]
-+	vpaddd	ymm5,ymm5,YMMWORD[((160-128))+rax]
-+
-+	vpsrld	ymm7,ymm6,3
-+	vpsrld	ymm1,ymm6,7
-+	vpslld	ymm2,ymm6,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm6,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm6,14
-+	vmovdqu	ymm0,YMMWORD[((320-256-128))+rbx]
-+	vpsrld	ymm3,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpxor	ymm7,ymm3,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpsrld	ymm7,ymm8,6
-+	vpslld	ymm2,ymm8,26
-+	vmovdqu	YMMWORD[(384-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm11
-+
-+	vpsrld	ymm1,ymm8,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm8,21
-+	vpaddd	ymm5,ymm5,YMMWORD[rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm8,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm8,7
-+	vpandn	ymm0,ymm8,ymm10
-+	vpand	ymm3,ymm8,ymm9
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm11,ymm12,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm12,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm13,ymm12
-+
-+	vpxor	ymm11,ymm11,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm12,13
-+
-+	vpslld	ymm2,ymm12,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm11,ymm1
-+
-+	vpsrld	ymm1,ymm12,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm12,10
-+	vpxor	ymm11,ymm13,ymm4
-+	vpaddd	ymm15,ymm15,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm11,ymm11,ymm5
-+	vpaddd	ymm11,ymm11,ymm7
-+	vmovdqu	ymm5,YMMWORD[((448-256-128))+rbx]
-+	vpaddd	ymm6,ymm6,YMMWORD[((192-128))+rax]
-+
-+	vpsrld	ymm7,ymm5,3
-+	vpsrld	ymm1,ymm5,7
-+	vpslld	ymm2,ymm5,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm5,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm5,14
-+	vmovdqu	ymm0,YMMWORD[((352-256-128))+rbx]
-+	vpsrld	ymm4,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpxor	ymm7,ymm4,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpsrld	ymm7,ymm15,6
-+	vpslld	ymm2,ymm15,26
-+	vmovdqu	YMMWORD[(416-256-128)+rbx],ymm6
-+	vpaddd	ymm6,ymm6,ymm10
-+
-+	vpsrld	ymm1,ymm15,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm15,21
-+	vpaddd	ymm6,ymm6,YMMWORD[32+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm15,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm15,7
-+	vpandn	ymm0,ymm15,ymm9
-+	vpand	ymm4,ymm15,ymm8
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm10,ymm11,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm11,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm12,ymm11
-+
-+	vpxor	ymm10,ymm10,ymm1
-+	vpaddd	ymm6,ymm6,ymm7
-+
-+	vpsrld	ymm1,ymm11,13
-+
-+	vpslld	ymm2,ymm11,19
-+	vpaddd	ymm6,ymm6,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm10,ymm1
-+
-+	vpsrld	ymm1,ymm11,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm11,10
-+	vpxor	ymm10,ymm12,ymm3
-+	vpaddd	ymm14,ymm14,ymm6
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm10,ymm10,ymm6
-+	vpaddd	ymm10,ymm10,ymm7
-+	vmovdqu	ymm6,YMMWORD[((480-256-128))+rbx]
-+	vpaddd	ymm5,ymm5,YMMWORD[((224-128))+rax]
-+
-+	vpsrld	ymm7,ymm6,3
-+	vpsrld	ymm1,ymm6,7
-+	vpslld	ymm2,ymm6,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm6,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm6,14
-+	vmovdqu	ymm0,YMMWORD[((384-256-128))+rbx]
-+	vpsrld	ymm3,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpxor	ymm7,ymm3,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm5,ymm5,ymm7
-+	vpsrld	ymm7,ymm14,6
-+	vpslld	ymm2,ymm14,26
-+	vmovdqu	YMMWORD[(448-256-128)+rbx],ymm5
-+	vpaddd	ymm5,ymm5,ymm9
-+
-+	vpsrld	ymm1,ymm14,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm14,21
-+	vpaddd	ymm5,ymm5,YMMWORD[64+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm14,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm14,7
-+	vpandn	ymm0,ymm14,ymm8
-+	vpand	ymm3,ymm14,ymm15
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm9,ymm10,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm10,30
-+	vpxor	ymm0,ymm0,ymm3
-+	vpxor	ymm3,ymm11,ymm10
-+
-+	vpxor	ymm9,ymm9,ymm1
-+	vpaddd	ymm5,ymm5,ymm7
-+
-+	vpsrld	ymm1,ymm10,13
-+
-+	vpslld	ymm2,ymm10,19
-+	vpaddd	ymm5,ymm5,ymm0
-+	vpand	ymm4,ymm4,ymm3
-+
-+	vpxor	ymm7,ymm9,ymm1
-+
-+	vpsrld	ymm1,ymm10,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm10,10
-+	vpxor	ymm9,ymm11,ymm4
-+	vpaddd	ymm13,ymm13,ymm5
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm9,ymm9,ymm5
-+	vpaddd	ymm9,ymm9,ymm7
-+	vmovdqu	ymm5,YMMWORD[((0-128))+rax]
-+	vpaddd	ymm6,ymm6,YMMWORD[((256-256-128))+rbx]
-+
-+	vpsrld	ymm7,ymm5,3
-+	vpsrld	ymm1,ymm5,7
-+	vpslld	ymm2,ymm5,25
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm5,18
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm5,14
-+	vmovdqu	ymm0,YMMWORD[((416-256-128))+rbx]
-+	vpsrld	ymm4,ymm0,10
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpsrld	ymm1,ymm0,17
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,15
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpxor	ymm7,ymm4,ymm1
-+	vpsrld	ymm1,ymm0,19
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm0,13
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+	vpaddd	ymm6,ymm6,ymm7
-+	vpsrld	ymm7,ymm13,6
-+	vpslld	ymm2,ymm13,26
-+	vmovdqu	YMMWORD[(480-256-128)+rbx],ymm6
-+	vpaddd	ymm6,ymm6,ymm8
-+
-+	vpsrld	ymm1,ymm13,11
-+	vpxor	ymm7,ymm7,ymm2
-+	vpslld	ymm2,ymm13,21
-+	vpaddd	ymm6,ymm6,YMMWORD[96+rbp]
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm1,ymm13,25
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm13,7
-+	vpandn	ymm0,ymm13,ymm15
-+	vpand	ymm4,ymm13,ymm14
-+
-+	vpxor	ymm7,ymm7,ymm1
-+
-+	vpsrld	ymm8,ymm9,2
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm1,ymm9,30
-+	vpxor	ymm0,ymm0,ymm4
-+	vpxor	ymm4,ymm10,ymm9
-+
-+	vpxor	ymm8,ymm8,ymm1
-+	vpaddd	ymm6,ymm6,ymm7
-+
-+	vpsrld	ymm1,ymm9,13
-+
-+	vpslld	ymm2,ymm9,19
-+	vpaddd	ymm6,ymm6,ymm0
-+	vpand	ymm3,ymm3,ymm4
-+
-+	vpxor	ymm7,ymm8,ymm1
-+
-+	vpsrld	ymm1,ymm9,22
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpslld	ymm2,ymm9,10
-+	vpxor	ymm8,ymm10,ymm3
-+	vpaddd	ymm12,ymm12,ymm6
-+
-+	vpxor	ymm7,ymm7,ymm1
-+	vpxor	ymm7,ymm7,ymm2
-+
-+	vpaddd	ymm8,ymm8,ymm6
-+	vpaddd	ymm8,ymm8,ymm7
-+	add	rbp,256
-+	dec	ecx
-+	jnz	NEAR $L$oop_16_xx_avx2
-+
-+	mov	ecx,1
-+	lea	rbx,[512+rsp]
-+	lea	rbp,[((K256+128))]
-+	cmp	ecx,DWORD[rbx]
-+	cmovge	r12,rbp
-+	cmp	ecx,DWORD[4+rbx]
-+	cmovge	r13,rbp
-+	cmp	ecx,DWORD[8+rbx]
-+	cmovge	r14,rbp
-+	cmp	ecx,DWORD[12+rbx]
-+	cmovge	r15,rbp
-+	cmp	ecx,DWORD[16+rbx]
-+	cmovge	r8,rbp
-+	cmp	ecx,DWORD[20+rbx]
-+	cmovge	r9,rbp
-+	cmp	ecx,DWORD[24+rbx]
-+	cmovge	r10,rbp
-+	cmp	ecx,DWORD[28+rbx]
-+	cmovge	r11,rbp
-+	vmovdqa	ymm7,YMMWORD[rbx]
-+	vpxor	ymm0,ymm0,ymm0
-+	vmovdqa	ymm6,ymm7
-+	vpcmpgtd	ymm6,ymm6,ymm0
-+	vpaddd	ymm7,ymm7,ymm6
-+
-+	vmovdqu	ymm0,YMMWORD[((0-128))+rdi]
-+	vpand	ymm8,ymm8,ymm6
-+	vmovdqu	ymm1,YMMWORD[((32-128))+rdi]
-+	vpand	ymm9,ymm9,ymm6
-+	vmovdqu	ymm2,YMMWORD[((64-128))+rdi]
-+	vpand	ymm10,ymm10,ymm6
-+	vmovdqu	ymm5,YMMWORD[((96-128))+rdi]
-+	vpand	ymm11,ymm11,ymm6
-+	vpaddd	ymm8,ymm8,ymm0
-+	vmovdqu	ymm0,YMMWORD[((128-128))+rdi]
-+	vpand	ymm12,ymm12,ymm6
-+	vpaddd	ymm9,ymm9,ymm1
-+	vmovdqu	ymm1,YMMWORD[((160-128))+rdi]
-+	vpand	ymm13,ymm13,ymm6
-+	vpaddd	ymm10,ymm10,ymm2
-+	vmovdqu	ymm2,YMMWORD[((192-128))+rdi]
-+	vpand	ymm14,ymm14,ymm6
-+	vpaddd	ymm11,ymm11,ymm5
-+	vmovdqu	ymm5,YMMWORD[((224-128))+rdi]
-+	vpand	ymm15,ymm15,ymm6
-+	vpaddd	ymm12,ymm12,ymm0
-+	vpaddd	ymm13,ymm13,ymm1
-+	vmovdqu	YMMWORD[(0-128)+rdi],ymm8
-+	vpaddd	ymm14,ymm14,ymm2
-+	vmovdqu	YMMWORD[(32-128)+rdi],ymm9
-+	vpaddd	ymm15,ymm15,ymm5
-+	vmovdqu	YMMWORD[(64-128)+rdi],ymm10
-+	vmovdqu	YMMWORD[(96-128)+rdi],ymm11
-+	vmovdqu	YMMWORD[(128-128)+rdi],ymm12
-+	vmovdqu	YMMWORD[(160-128)+rdi],ymm13
-+	vmovdqu	YMMWORD[(192-128)+rdi],ymm14
-+	vmovdqu	YMMWORD[(224-128)+rdi],ymm15
-+
-+	vmovdqu	YMMWORD[rbx],ymm7
-+	lea	rbx,[((256+128))+rsp]
-+	vmovdqu	ymm6,YMMWORD[$L$pbswap]
-+	dec	edx
-+	jnz	NEAR $L$oop_avx2
-+
-+
-+
-+
-+
-+
-+
-+$L$done_avx2:
-+	mov	rax,QWORD[544+rsp]
-+	vzeroupper
-+	movaps	xmm6,XMMWORD[((-216))+rax]
-+	movaps	xmm7,XMMWORD[((-200))+rax]
-+	movaps	xmm8,XMMWORD[((-184))+rax]
-+	movaps	xmm9,XMMWORD[((-168))+rax]
-+	movaps	xmm10,XMMWORD[((-152))+rax]
-+	movaps	xmm11,XMMWORD[((-136))+rax]
-+	movaps	xmm12,XMMWORD[((-120))+rax]
-+	movaps	xmm13,XMMWORD[((-104))+rax]
-+	movaps	xmm14,XMMWORD[((-88))+rax]
-+	movaps	xmm15,XMMWORD[((-72))+rax]
-+	mov	r15,QWORD[((-48))+rax]
-+	mov	r14,QWORD[((-40))+rax]
-+	mov	r13,QWORD[((-32))+rax]
-+	mov	r12,QWORD[((-24))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	rbx,QWORD[((-8))+rax]
-+	lea	rsp,[rax]
-+$L$epilogue_avx2:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha256_multi_block_avx2:
-+ALIGN	256
-+K256:
-+	DD	1116352408,1116352408,1116352408,1116352408
-+	DD	1116352408,1116352408,1116352408,1116352408
-+	DD	1899447441,1899447441,1899447441,1899447441
-+	DD	1899447441,1899447441,1899447441,1899447441
-+	DD	3049323471,3049323471,3049323471,3049323471
-+	DD	3049323471,3049323471,3049323471,3049323471
-+	DD	3921009573,3921009573,3921009573,3921009573
-+	DD	3921009573,3921009573,3921009573,3921009573
-+	DD	961987163,961987163,961987163,961987163
-+	DD	961987163,961987163,961987163,961987163
-+	DD	1508970993,1508970993,1508970993,1508970993
-+	DD	1508970993,1508970993,1508970993,1508970993
-+	DD	2453635748,2453635748,2453635748,2453635748
-+	DD	2453635748,2453635748,2453635748,2453635748
-+	DD	2870763221,2870763221,2870763221,2870763221
-+	DD	2870763221,2870763221,2870763221,2870763221
-+	DD	3624381080,3624381080,3624381080,3624381080
-+	DD	3624381080,3624381080,3624381080,3624381080
-+	DD	310598401,310598401,310598401,310598401
-+	DD	310598401,310598401,310598401,310598401
-+	DD	607225278,607225278,607225278,607225278
-+	DD	607225278,607225278,607225278,607225278
-+	DD	1426881987,1426881987,1426881987,1426881987
-+	DD	1426881987,1426881987,1426881987,1426881987
-+	DD	1925078388,1925078388,1925078388,1925078388
-+	DD	1925078388,1925078388,1925078388,1925078388
-+	DD	2162078206,2162078206,2162078206,2162078206
-+	DD	2162078206,2162078206,2162078206,2162078206
-+	DD	2614888103,2614888103,2614888103,2614888103
-+	DD	2614888103,2614888103,2614888103,2614888103
-+	DD	3248222580,3248222580,3248222580,3248222580
-+	DD	3248222580,3248222580,3248222580,3248222580
-+	DD	3835390401,3835390401,3835390401,3835390401
-+	DD	3835390401,3835390401,3835390401,3835390401
-+	DD	4022224774,4022224774,4022224774,4022224774
-+	DD	4022224774,4022224774,4022224774,4022224774
-+	DD	264347078,264347078,264347078,264347078
-+	DD	264347078,264347078,264347078,264347078
-+	DD	604807628,604807628,604807628,604807628
-+	DD	604807628,604807628,604807628,604807628
-+	DD	770255983,770255983,770255983,770255983
-+	DD	770255983,770255983,770255983,770255983
-+	DD	1249150122,1249150122,1249150122,1249150122
-+	DD	1249150122,1249150122,1249150122,1249150122
-+	DD	1555081692,1555081692,1555081692,1555081692
-+	DD	1555081692,1555081692,1555081692,1555081692
-+	DD	1996064986,1996064986,1996064986,1996064986
-+	DD	1996064986,1996064986,1996064986,1996064986
-+	DD	2554220882,2554220882,2554220882,2554220882
-+	DD	2554220882,2554220882,2554220882,2554220882
-+	DD	2821834349,2821834349,2821834349,2821834349
-+	DD	2821834349,2821834349,2821834349,2821834349
-+	DD	2952996808,2952996808,2952996808,2952996808
-+	DD	2952996808,2952996808,2952996808,2952996808
-+	DD	3210313671,3210313671,3210313671,3210313671
-+	DD	3210313671,3210313671,3210313671,3210313671
-+	DD	3336571891,3336571891,3336571891,3336571891
-+	DD	3336571891,3336571891,3336571891,3336571891
-+	DD	3584528711,3584528711,3584528711,3584528711
-+	DD	3584528711,3584528711,3584528711,3584528711
-+	DD	113926993,113926993,113926993,113926993
-+	DD	113926993,113926993,113926993,113926993
-+	DD	338241895,338241895,338241895,338241895
-+	DD	338241895,338241895,338241895,338241895
-+	DD	666307205,666307205,666307205,666307205
-+	DD	666307205,666307205,666307205,666307205
-+	DD	773529912,773529912,773529912,773529912
-+	DD	773529912,773529912,773529912,773529912
-+	DD	1294757372,1294757372,1294757372,1294757372
-+	DD	1294757372,1294757372,1294757372,1294757372
-+	DD	1396182291,1396182291,1396182291,1396182291
-+	DD	1396182291,1396182291,1396182291,1396182291
-+	DD	1695183700,1695183700,1695183700,1695183700
-+	DD	1695183700,1695183700,1695183700,1695183700
-+	DD	1986661051,1986661051,1986661051,1986661051
-+	DD	1986661051,1986661051,1986661051,1986661051
-+	DD	2177026350,2177026350,2177026350,2177026350
-+	DD	2177026350,2177026350,2177026350,2177026350
-+	DD	2456956037,2456956037,2456956037,2456956037
-+	DD	2456956037,2456956037,2456956037,2456956037
-+	DD	2730485921,2730485921,2730485921,2730485921
-+	DD	2730485921,2730485921,2730485921,2730485921
-+	DD	2820302411,2820302411,2820302411,2820302411
-+	DD	2820302411,2820302411,2820302411,2820302411
-+	DD	3259730800,3259730800,3259730800,3259730800
-+	DD	3259730800,3259730800,3259730800,3259730800
-+	DD	3345764771,3345764771,3345764771,3345764771
-+	DD	3345764771,3345764771,3345764771,3345764771
-+	DD	3516065817,3516065817,3516065817,3516065817
-+	DD	3516065817,3516065817,3516065817,3516065817
-+	DD	3600352804,3600352804,3600352804,3600352804
-+	DD	3600352804,3600352804,3600352804,3600352804
-+	DD	4094571909,4094571909,4094571909,4094571909
-+	DD	4094571909,4094571909,4094571909,4094571909
-+	DD	275423344,275423344,275423344,275423344
-+	DD	275423344,275423344,275423344,275423344
-+	DD	430227734,430227734,430227734,430227734
-+	DD	430227734,430227734,430227734,430227734
-+	DD	506948616,506948616,506948616,506948616
-+	DD	506948616,506948616,506948616,506948616
-+	DD	659060556,659060556,659060556,659060556
-+	DD	659060556,659060556,659060556,659060556
-+	DD	883997877,883997877,883997877,883997877
-+	DD	883997877,883997877,883997877,883997877
-+	DD	958139571,958139571,958139571,958139571
-+	DD	958139571,958139571,958139571,958139571
-+	DD	1322822218,1322822218,1322822218,1322822218
-+	DD	1322822218,1322822218,1322822218,1322822218
-+	DD	1537002063,1537002063,1537002063,1537002063
-+	DD	1537002063,1537002063,1537002063,1537002063
-+	DD	1747873779,1747873779,1747873779,1747873779
-+	DD	1747873779,1747873779,1747873779,1747873779
-+	DD	1955562222,1955562222,1955562222,1955562222
-+	DD	1955562222,1955562222,1955562222,1955562222
-+	DD	2024104815,2024104815,2024104815,2024104815
-+	DD	2024104815,2024104815,2024104815,2024104815
-+	DD	2227730452,2227730452,2227730452,2227730452
-+	DD	2227730452,2227730452,2227730452,2227730452
-+	DD	2361852424,2361852424,2361852424,2361852424
-+	DD	2361852424,2361852424,2361852424,2361852424
-+	DD	2428436474,2428436474,2428436474,2428436474
-+	DD	2428436474,2428436474,2428436474,2428436474
-+	DD	2756734187,2756734187,2756734187,2756734187
-+	DD	2756734187,2756734187,2756734187,2756734187
-+	DD	3204031479,3204031479,3204031479,3204031479
-+	DD	3204031479,3204031479,3204031479,3204031479
-+	DD	3329325298,3329325298,3329325298,3329325298
-+	DD	3329325298,3329325298,3329325298,3329325298
-+$L$pbswap:
-+	DD	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
-+	DD	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
-+K256_shaext:
-+	DD	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
-+	DD	0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
-+	DD	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
-+	DD	0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
-+	DD	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
-+	DD	0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
-+	DD	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
-+	DD	0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
-+	DD	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
-+	DD	0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
-+	DD	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
-+	DD	0xd192e819,0xd6990624,0xf40e3585,0x106aa070
-+	DD	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
-+	DD	0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
-+	DD	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
-+	DD	0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
-+DB	83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
-+DB	99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
-+DB	32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
-+DB	65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
-+DB	101,110,115,115,108,46,111,114,103,62,0
-+EXTERN	__imp_RtlVirtualUnwind
-+
-+ALIGN	16
-+se_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	mov	rsi,QWORD[8+r9]
-+	mov	r11,QWORD[56+r9]
-+
-+	mov	r10d,DWORD[r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jb	NEAR $L$in_prologue
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	mov	r10d,DWORD[4+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$in_prologue
-+
-+	mov	rax,QWORD[272+rax]
-+
-+	mov	rbx,QWORD[((-8))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	QWORD[144+r8],rbx
-+	mov	QWORD[160+r8],rbp
-+
-+	lea	rsi,[((-24-160))+rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,20
-+	DD	0xa548f3fc
-+
-+$L$in_prologue:
-+	mov	rdi,QWORD[8+rax]
-+	mov	rsi,QWORD[16+rax]
-+	mov	QWORD[152+r8],rax
-+	mov	QWORD[168+r8],rsi
-+	mov	QWORD[176+r8],rdi
-+
-+	mov	rdi,QWORD[40+r9]
-+	mov	rsi,r8
-+	mov	ecx,154
-+	DD	0xa548f3fc
-+
-+	mov	rsi,r9
-+	xor	rcx,rcx
-+	mov	rdx,QWORD[8+rsi]
-+	mov	r8,QWORD[rsi]
-+	mov	r9,QWORD[16+rsi]
-+	mov	r10,QWORD[40+rsi]
-+	lea	r11,[56+rsi]
-+	lea	r12,[24+rsi]
-+	mov	QWORD[32+rsp],r10
-+	mov	QWORD[40+rsp],r11
-+	mov	QWORD[48+rsp],r12
-+	mov	QWORD[56+rsp],rcx
-+	call	QWORD[__imp_RtlVirtualUnwind]
-+
-+	mov	eax,1
-+	add	rsp,64
-+	popfq
-+	pop	r15
-+	pop	r14
-+	pop	r13
-+	pop	r12
-+	pop	rbp
-+	pop	rbx
-+	pop	rdi
-+	pop	rsi
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+avx2_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	mov	rsi,QWORD[8+r9]
-+	mov	r11,QWORD[56+r9]
-+
-+	mov	r10d,DWORD[r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jb	NEAR $L$in_prologue
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	mov	r10d,DWORD[4+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$in_prologue
-+
-+	mov	rax,QWORD[544+r8]
-+
-+	mov	rbx,QWORD[((-8))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	r12,QWORD[((-24))+rax]
-+	mov	r13,QWORD[((-32))+rax]
-+	mov	r14,QWORD[((-40))+rax]
-+	mov	r15,QWORD[((-48))+rax]
-+	mov	QWORD[144+r8],rbx
-+	mov	QWORD[160+r8],rbp
-+	mov	QWORD[216+r8],r12
-+	mov	QWORD[224+r8],r13
-+	mov	QWORD[232+r8],r14
-+	mov	QWORD[240+r8],r15
-+
-+	lea	rsi,[((-56-160))+rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,20
-+	DD	0xa548f3fc
-+
-+	jmp	NEAR $L$in_prologue
-+
-+section	.pdata rdata align=4
-+ALIGN	4
-+	DD	$L$SEH_begin_sha256_multi_block wrt ..imagebase
-+	DD	$L$SEH_end_sha256_multi_block wrt ..imagebase
-+	DD	$L$SEH_info_sha256_multi_block wrt ..imagebase
-+	DD	$L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
-+	DD	$L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
-+	DD	$L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
-+	DD	$L$SEH_begin_sha256_multi_block_avx wrt ..imagebase
-+	DD	$L$SEH_end_sha256_multi_block_avx wrt ..imagebase
-+	DD	$L$SEH_info_sha256_multi_block_avx wrt ..imagebase
-+	DD	$L$SEH_begin_sha256_multi_block_avx2 wrt ..imagebase
-+	DD	$L$SEH_end_sha256_multi_block_avx2 wrt ..imagebase
-+	DD	$L$SEH_info_sha256_multi_block_avx2 wrt ..imagebase
-+section	.xdata rdata align=8
-+ALIGN	8
-+$L$SEH_info_sha256_multi_block:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
-+$L$SEH_info_sha256_multi_block_shaext:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$body_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase
-+$L$SEH_info_sha256_multi_block_avx:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$body_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase
-+$L$SEH_info_sha256_multi_block_avx2:
-+DB	9,0,0,0
-+	DD	avx2_handler wrt ..imagebase
-+	DD	$L$body_avx2 wrt ..imagebase,$L$epilogue_avx2 wrt ..imagebase
-diff --git a/SMP/lib/accelerated/x86/coff/sha256-ssse3-x86.asm b/SMP/lib/accelerated/x86/coff/sha256-ssse3-x86.asm
-new file mode 100644
-index 0000000..0db7ba8
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/sha256-ssse3-x86.asm
-@@ -0,0 +1,3356 @@
-+%ifidn __OUTPUT_FORMAT__,obj
-+section	code	use32 class=code align=64
-+%elifidn __OUTPUT_FORMAT__,win32
-+%ifndef __YASM_VER__
-+$@feat.00 equ 1
-+%endif
-+section	.text	code align=64
-+%else
-+section	.text	code
-+%endif
-+;extern	__gnutls_x86_cpuid_s
-+global	_sha256_block_data_order
-+align	16
-+_sha256_block_data_order:
-+L$_sha256_block_data_order_begin:
-+	push	ebp
-+	push	ebx
-+	push	esi
-+	push	edi
-+	mov	esi,DWORD [20+esp]
-+	mov	edi,DWORD [24+esp]
-+	mov	eax,DWORD [28+esp]
-+	mov	ebx,esp
-+	call	L$000pic_point
-+L$000pic_point:
-+	pop	ebp
-+	lea	ebp,[(L$001K256-L$000pic_point)+ebp]
-+	sub	esp,16
-+	and	esp,-64
-+	shl	eax,6
-+	add	eax,edi
-+	mov	DWORD [esp],esi
-+	mov	DWORD [4+esp],edi
-+	mov	DWORD [8+esp],eax
-+	mov	DWORD [12+esp],ebx
-+	jmp	NEAR L$002loop
-+align	16
-+L$002loop:
-+	mov	eax,DWORD [edi]
-+	mov	ebx,DWORD [4+edi]
-+	mov	ecx,DWORD [8+edi]
-+	bswap	eax
-+	mov	edx,DWORD [12+edi]
-+	bswap	ebx
-+	push	eax
-+	bswap	ecx
-+	push	ebx
-+	bswap	edx
-+	push	ecx
-+	push	edx
-+	mov	eax,DWORD [16+edi]
-+	mov	ebx,DWORD [20+edi]
-+	mov	ecx,DWORD [24+edi]
-+	bswap	eax
-+	mov	edx,DWORD [28+edi]
-+	bswap	ebx
-+	push	eax
-+	bswap	ecx
-+	push	ebx
-+	bswap	edx
-+	push	ecx
-+	push	edx
-+	mov	eax,DWORD [32+edi]
-+	mov	ebx,DWORD [36+edi]
-+	mov	ecx,DWORD [40+edi]
-+	bswap	eax
-+	mov	edx,DWORD [44+edi]
-+	bswap	ebx
-+	push	eax
-+	bswap	ecx
-+	push	ebx
-+	bswap	edx
-+	push	ecx
-+	push	edx
-+	mov	eax,DWORD [48+edi]
-+	mov	ebx,DWORD [52+edi]
-+	mov	ecx,DWORD [56+edi]
-+	bswap	eax
-+	mov	edx,DWORD [60+edi]
-+	bswap	ebx
-+	push	eax
-+	bswap	ecx
-+	push	ebx
-+	bswap	edx
-+	push	ecx
-+	push	edx
-+	add	edi,64
-+	lea	esp,[esp-36]
-+	mov	DWORD [104+esp],edi
-+	mov	eax,DWORD [esi]
-+	mov	ebx,DWORD [4+esi]
-+	mov	ecx,DWORD [8+esi]
-+	mov	edi,DWORD [12+esi]
-+	mov	DWORD [8+esp],ebx
-+	xor	ebx,ecx
-+	mov	DWORD [12+esp],ecx
-+	mov	DWORD [16+esp],edi
-+	mov	DWORD [esp],ebx
-+	mov	edx,DWORD [16+esi]
-+	mov	ebx,DWORD [20+esi]
-+	mov	ecx,DWORD [24+esi]
-+	mov	edi,DWORD [28+esi]
-+	mov	DWORD [24+esp],ebx
-+	mov	DWORD [28+esp],ecx
-+	mov	DWORD [32+esp],edi
-+align	16
-+L$00300_15:
-+	mov	ecx,edx
-+	mov	esi,DWORD [24+esp]
-+	ror	ecx,14
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,edx
-+	xor	esi,edi
-+	mov	ebx,DWORD [96+esp]
-+	ror	ecx,5
-+	and	esi,edx
-+	mov	DWORD [20+esp],edx
-+	xor	edx,ecx
-+	add	ebx,DWORD [32+esp]
-+	xor	esi,edi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,esi
-+	ror	ecx,9
-+	add	ebx,edx
-+	mov	edi,DWORD [8+esp]
-+	xor	ecx,eax
-+	mov	DWORD [4+esp],eax
-+	lea	esp,[esp-4]
-+	ror	ecx,11
-+	mov	esi,DWORD [ebp]
-+	xor	ecx,eax
-+	mov	edx,DWORD [20+esp]
-+	xor	eax,edi
-+	ror	ecx,2
-+	add	ebx,esi
-+	mov	DWORD [esp],eax
-+	add	edx,ebx
-+	and	eax,DWORD [4+esp]
-+	add	ebx,ecx
-+	xor	eax,edi
-+	add	ebp,4
-+	add	eax,ebx
-+	cmp	esi,3248222580
-+	jne	NEAR L$00300_15
-+	mov	ecx,DWORD [156+esp]
-+	jmp	NEAR L$00416_63
-+align	16
-+L$00416_63:
-+	mov	ebx,ecx
-+	mov	esi,DWORD [104+esp]
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [160+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [124+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [24+esp]
-+	ror	ecx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,edx
-+	xor	esi,edi
-+	mov	DWORD [96+esp],ebx
-+	ror	ecx,5
-+	and	esi,edx
-+	mov	DWORD [20+esp],edx
-+	xor	edx,ecx
-+	add	ebx,DWORD [32+esp]
-+	xor	esi,edi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,esi
-+	ror	ecx,9
-+	add	ebx,edx
-+	mov	edi,DWORD [8+esp]
-+	xor	ecx,eax
-+	mov	DWORD [4+esp],eax
-+	lea	esp,[esp-4]
-+	ror	ecx,11
-+	mov	esi,DWORD [ebp]
-+	xor	ecx,eax
-+	mov	edx,DWORD [20+esp]
-+	xor	eax,edi
-+	ror	ecx,2
-+	add	ebx,esi
-+	mov	DWORD [esp],eax
-+	add	edx,ebx
-+	and	eax,DWORD [4+esp]
-+	add	ebx,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [156+esp]
-+	add	ebp,4
-+	add	eax,ebx
-+	cmp	esi,3329325298
-+	jne	NEAR L$00416_63
-+	mov	esi,DWORD [356+esp]
-+	mov	ebx,DWORD [8+esp]
-+	mov	ecx,DWORD [16+esp]
-+	add	eax,DWORD [esi]
-+	add	ebx,DWORD [4+esi]
-+	add	edi,DWORD [8+esi]
-+	add	ecx,DWORD [12+esi]
-+	mov	DWORD [esi],eax
-+	mov	DWORD [4+esi],ebx
-+	mov	DWORD [8+esi],edi
-+	mov	DWORD [12+esi],ecx
-+	mov	eax,DWORD [24+esp]
-+	mov	ebx,DWORD [28+esp]
-+	mov	ecx,DWORD [32+esp]
-+	mov	edi,DWORD [360+esp]
-+	add	edx,DWORD [16+esi]
-+	add	eax,DWORD [20+esi]
-+	add	ebx,DWORD [24+esi]
-+	add	ecx,DWORD [28+esi]
-+	mov	DWORD [16+esi],edx
-+	mov	DWORD [20+esi],eax
-+	mov	DWORD [24+esi],ebx
-+	mov	DWORD [28+esi],ecx
-+	lea	esp,[356+esp]
-+	sub	ebp,256
-+	cmp	edi,DWORD [8+esp]
-+	jb	NEAR L$002loop
-+	mov	esp,DWORD [12+esp]
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+align	32
-+L$005loop_shrd:
-+	mov	eax,DWORD [edi]
-+	mov	ebx,DWORD [4+edi]
-+	mov	ecx,DWORD [8+edi]
-+	bswap	eax
-+	mov	edx,DWORD [12+edi]
-+	bswap	ebx
-+	push	eax
-+	bswap	ecx
-+	push	ebx
-+	bswap	edx
-+	push	ecx
-+	push	edx
-+	mov	eax,DWORD [16+edi]
-+	mov	ebx,DWORD [20+edi]
-+	mov	ecx,DWORD [24+edi]
-+	bswap	eax
-+	mov	edx,DWORD [28+edi]
-+	bswap	ebx
-+	push	eax
-+	bswap	ecx
-+	push	ebx
-+	bswap	edx
-+	push	ecx
-+	push	edx
-+	mov	eax,DWORD [32+edi]
-+	mov	ebx,DWORD [36+edi]
-+	mov	ecx,DWORD [40+edi]
-+	bswap	eax
-+	mov	edx,DWORD [44+edi]
-+	bswap	ebx
-+	push	eax
-+	bswap	ecx
-+	push	ebx
-+	bswap	edx
-+	push	ecx
-+	push	edx
-+	mov	eax,DWORD [48+edi]
-+	mov	ebx,DWORD [52+edi]
-+	mov	ecx,DWORD [56+edi]
-+	bswap	eax
-+	mov	edx,DWORD [60+edi]
-+	bswap	ebx
-+	push	eax
-+	bswap	ecx
-+	push	ebx
-+	bswap	edx
-+	push	ecx
-+	push	edx
-+	add	edi,64
-+	lea	esp,[esp-36]
-+	mov	DWORD [104+esp],edi
-+	mov	eax,DWORD [esi]
-+	mov	ebx,DWORD [4+esi]
-+	mov	ecx,DWORD [8+esi]
-+	mov	edi,DWORD [12+esi]
-+	mov	DWORD [8+esp],ebx
-+	xor	ebx,ecx
-+	mov	DWORD [12+esp],ecx
-+	mov	DWORD [16+esp],edi
-+	mov	DWORD [esp],ebx
-+	mov	edx,DWORD [16+esi]
-+	mov	ebx,DWORD [20+esi]
-+	mov	ecx,DWORD [24+esi]
-+	mov	edi,DWORD [28+esi]
-+	mov	DWORD [24+esp],ebx
-+	mov	DWORD [28+esp],ecx
-+	mov	DWORD [32+esp],edi
-+align	16
-+L$00600_15_shrd:
-+	mov	ecx,edx
-+	mov	esi,DWORD [24+esp]
-+	shrd	ecx,ecx,14
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,edx
-+	xor	esi,edi
-+	mov	ebx,DWORD [96+esp]
-+	shrd	ecx,ecx,5
-+	and	esi,edx
-+	mov	DWORD [20+esp],edx
-+	xor	edx,ecx
-+	add	ebx,DWORD [32+esp]
-+	xor	esi,edi
-+	shrd	edx,edx,6
-+	mov	ecx,eax
-+	add	ebx,esi
-+	shrd	ecx,ecx,9
-+	add	ebx,edx
-+	mov	edi,DWORD [8+esp]
-+	xor	ecx,eax
-+	mov	DWORD [4+esp],eax
-+	lea	esp,[esp-4]
-+	shrd	ecx,ecx,11
-+	mov	esi,DWORD [ebp]
-+	xor	ecx,eax
-+	mov	edx,DWORD [20+esp]
-+	xor	eax,edi
-+	shrd	ecx,ecx,2
-+	add	ebx,esi
-+	mov	DWORD [esp],eax
-+	add	edx,ebx
-+	and	eax,DWORD [4+esp]
-+	add	ebx,ecx
-+	xor	eax,edi
-+	add	ebp,4
-+	add	eax,ebx
-+	cmp	esi,3248222580
-+	jne	NEAR L$00600_15_shrd
-+	mov	ecx,DWORD [156+esp]
-+	jmp	NEAR L$00716_63_shrd
-+align	16
-+L$00716_63_shrd:
-+	mov	ebx,ecx
-+	mov	esi,DWORD [104+esp]
-+	shrd	ecx,ecx,11
-+	mov	edi,esi
-+	shrd	esi,esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	shrd	ecx,ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	shrd	esi,esi,17
-+	add	ebx,DWORD [160+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [124+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [24+esp]
-+	shrd	ecx,ecx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,edx
-+	xor	esi,edi
-+	mov	DWORD [96+esp],ebx
-+	shrd	ecx,ecx,5
-+	and	esi,edx
-+	mov	DWORD [20+esp],edx
-+	xor	edx,ecx
-+	add	ebx,DWORD [32+esp]
-+	xor	esi,edi
-+	shrd	edx,edx,6
-+	mov	ecx,eax
-+	add	ebx,esi
-+	shrd	ecx,ecx,9
-+	add	ebx,edx
-+	mov	edi,DWORD [8+esp]
-+	xor	ecx,eax
-+	mov	DWORD [4+esp],eax
-+	lea	esp,[esp-4]
-+	shrd	ecx,ecx,11
-+	mov	esi,DWORD [ebp]
-+	xor	ecx,eax
-+	mov	edx,DWORD [20+esp]
-+	xor	eax,edi
-+	shrd	ecx,ecx,2
-+	add	ebx,esi
-+	mov	DWORD [esp],eax
-+	add	edx,ebx
-+	and	eax,DWORD [4+esp]
-+	add	ebx,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [156+esp]
-+	add	ebp,4
-+	add	eax,ebx
-+	cmp	esi,3329325298
-+	jne	NEAR L$00716_63_shrd
-+	mov	esi,DWORD [356+esp]
-+	mov	ebx,DWORD [8+esp]
-+	mov	ecx,DWORD [16+esp]
-+	add	eax,DWORD [esi]
-+	add	ebx,DWORD [4+esi]
-+	add	edi,DWORD [8+esi]
-+	add	ecx,DWORD [12+esi]
-+	mov	DWORD [esi],eax
-+	mov	DWORD [4+esi],ebx
-+	mov	DWORD [8+esi],edi
-+	mov	DWORD [12+esi],ecx
-+	mov	eax,DWORD [24+esp]
-+	mov	ebx,DWORD [28+esp]
-+	mov	ecx,DWORD [32+esp]
-+	mov	edi,DWORD [360+esp]
-+	add	edx,DWORD [16+esi]
-+	add	eax,DWORD [20+esi]
-+	add	ebx,DWORD [24+esi]
-+	add	ecx,DWORD [28+esi]
-+	mov	DWORD [16+esi],edx
-+	mov	DWORD [20+esi],eax
-+	mov	DWORD [24+esi],ebx
-+	mov	DWORD [28+esi],ecx
-+	lea	esp,[356+esp]
-+	sub	ebp,256
-+	cmp	edi,DWORD [8+esp]
-+	jb	NEAR L$005loop_shrd
-+	mov	esp,DWORD [12+esp]
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+align	64
-+L$001K256:
-+dd	1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298
-+dd	66051,67438087,134810123,202182159
-+db	83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
-+db	110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
-+db	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
-+db	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
-+db	62,0
-+align	16
-+L$008unrolled:
-+	lea	esp,[esp-96]
-+	mov	eax,DWORD [esi]
-+	mov	ebp,DWORD [4+esi]
-+	mov	ecx,DWORD [8+esi]
-+	mov	ebx,DWORD [12+esi]
-+	mov	DWORD [4+esp],ebp
-+	xor	ebp,ecx
-+	mov	DWORD [8+esp],ecx
-+	mov	DWORD [12+esp],ebx
-+	mov	edx,DWORD [16+esi]
-+	mov	ebx,DWORD [20+esi]
-+	mov	ecx,DWORD [24+esi]
-+	mov	esi,DWORD [28+esi]
-+	mov	DWORD [20+esp],ebx
-+	mov	DWORD [24+esp],ecx
-+	mov	DWORD [28+esp],esi
-+	jmp	NEAR L$009grand_loop
-+align	16
-+L$009grand_loop:
-+	mov	ebx,DWORD [edi]
-+	mov	ecx,DWORD [4+edi]
-+	bswap	ebx
-+	mov	esi,DWORD [8+edi]
-+	bswap	ecx
-+	mov	DWORD [32+esp],ebx
-+	bswap	esi
-+	mov	DWORD [36+esp],ecx
-+	mov	DWORD [40+esp],esi
-+	mov	ebx,DWORD [12+edi]
-+	mov	ecx,DWORD [16+edi]
-+	bswap	ebx
-+	mov	esi,DWORD [20+edi]
-+	bswap	ecx
-+	mov	DWORD [44+esp],ebx
-+	bswap	esi
-+	mov	DWORD [48+esp],ecx
-+	mov	DWORD [52+esp],esi
-+	mov	ebx,DWORD [24+edi]
-+	mov	ecx,DWORD [28+edi]
-+	bswap	ebx
-+	mov	esi,DWORD [32+edi]
-+	bswap	ecx
-+	mov	DWORD [56+esp],ebx
-+	bswap	esi
-+	mov	DWORD [60+esp],ecx
-+	mov	DWORD [64+esp],esi
-+	mov	ebx,DWORD [36+edi]
-+	mov	ecx,DWORD [40+edi]
-+	bswap	ebx
-+	mov	esi,DWORD [44+edi]
-+	bswap	ecx
-+	mov	DWORD [68+esp],ebx
-+	bswap	esi
-+	mov	DWORD [72+esp],ecx
-+	mov	DWORD [76+esp],esi
-+	mov	ebx,DWORD [48+edi]
-+	mov	ecx,DWORD [52+edi]
-+	bswap	ebx
-+	mov	esi,DWORD [56+edi]
-+	bswap	ecx
-+	mov	DWORD [80+esp],ebx
-+	bswap	esi
-+	mov	DWORD [84+esp],ecx
-+	mov	DWORD [88+esp],esi
-+	mov	ebx,DWORD [60+edi]
-+	add	edi,64
-+	bswap	ebx
-+	mov	DWORD [100+esp],edi
-+	mov	DWORD [92+esp],ebx
-+	mov	ecx,edx
-+	mov	esi,DWORD [20+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [24+esp]
-+	xor	edx,ecx
-+	mov	ebx,DWORD [32+esp]
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [16+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [28+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [4+esp]
-+	xor	ecx,eax
-+	mov	DWORD [esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[1116352408+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [12+esp]
-+	add	ebp,ecx
-+	mov	esi,edx
-+	mov	ecx,DWORD [16+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [20+esp]
-+	xor	edx,esi
-+	mov	ebx,DWORD [36+esp]
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [12+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [24+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [esp]
-+	xor	esi,ebp
-+	mov	DWORD [28+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[1899447441+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [8+esp]
-+	add	eax,esi
-+	mov	ecx,edx
-+	mov	esi,DWORD [12+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [16+esp]
-+	xor	edx,ecx
-+	mov	ebx,DWORD [40+esp]
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [8+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [20+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,eax
-+	mov	DWORD [24+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[3049323471+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [4+esp]
-+	add	ebp,ecx
-+	mov	esi,edx
-+	mov	ecx,DWORD [8+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [12+esp]
-+	xor	edx,esi
-+	mov	ebx,DWORD [44+esp]
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [4+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [16+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [24+esp]
-+	xor	esi,ebp
-+	mov	DWORD [20+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[3921009573+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [esp]
-+	add	eax,esi
-+	mov	ecx,edx
-+	mov	esi,DWORD [4+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [8+esp]
-+	xor	edx,ecx
-+	mov	ebx,DWORD [48+esp]
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [12+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [20+esp]
-+	xor	ecx,eax
-+	mov	DWORD [16+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[961987163+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [28+esp]
-+	add	ebp,ecx
-+	mov	esi,edx
-+	mov	ecx,DWORD [esp]
-+	ror	edx,14
-+	mov	edi,DWORD [4+esp]
-+	xor	edx,esi
-+	mov	ebx,DWORD [52+esp]
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [28+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [8+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [16+esp]
-+	xor	esi,ebp
-+	mov	DWORD [12+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[1508970993+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [24+esp]
-+	add	eax,esi
-+	mov	ecx,edx
-+	mov	esi,DWORD [28+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [esp]
-+	xor	edx,ecx
-+	mov	ebx,DWORD [56+esp]
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [24+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [4+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [12+esp]
-+	xor	ecx,eax
-+	mov	DWORD [8+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[2453635748+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [20+esp]
-+	add	ebp,ecx
-+	mov	esi,edx
-+	mov	ecx,DWORD [24+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [28+esp]
-+	xor	edx,esi
-+	mov	ebx,DWORD [60+esp]
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [20+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [8+esp]
-+	xor	esi,ebp
-+	mov	DWORD [4+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[2870763221+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [16+esp]
-+	add	eax,esi
-+	mov	ecx,edx
-+	mov	esi,DWORD [20+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [24+esp]
-+	xor	edx,ecx
-+	mov	ebx,DWORD [64+esp]
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [16+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [28+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [4+esp]
-+	xor	ecx,eax
-+	mov	DWORD [esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[3624381080+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [12+esp]
-+	add	ebp,ecx
-+	mov	esi,edx
-+	mov	ecx,DWORD [16+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [20+esp]
-+	xor	edx,esi
-+	mov	ebx,DWORD [68+esp]
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [12+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [24+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [esp]
-+	xor	esi,ebp
-+	mov	DWORD [28+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[310598401+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [8+esp]
-+	add	eax,esi
-+	mov	ecx,edx
-+	mov	esi,DWORD [12+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [16+esp]
-+	xor	edx,ecx
-+	mov	ebx,DWORD [72+esp]
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [8+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [20+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,eax
-+	mov	DWORD [24+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[607225278+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [4+esp]
-+	add	ebp,ecx
-+	mov	esi,edx
-+	mov	ecx,DWORD [8+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [12+esp]
-+	xor	edx,esi
-+	mov	ebx,DWORD [76+esp]
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [4+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [16+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [24+esp]
-+	xor	esi,ebp
-+	mov	DWORD [20+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[1426881987+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [esp]
-+	add	eax,esi
-+	mov	ecx,edx
-+	mov	esi,DWORD [4+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [8+esp]
-+	xor	edx,ecx
-+	mov	ebx,DWORD [80+esp]
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [12+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [20+esp]
-+	xor	ecx,eax
-+	mov	DWORD [16+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[1925078388+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [28+esp]
-+	add	ebp,ecx
-+	mov	esi,edx
-+	mov	ecx,DWORD [esp]
-+	ror	edx,14
-+	mov	edi,DWORD [4+esp]
-+	xor	edx,esi
-+	mov	ebx,DWORD [84+esp]
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [28+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [8+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [16+esp]
-+	xor	esi,ebp
-+	mov	DWORD [12+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[2162078206+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [24+esp]
-+	add	eax,esi
-+	mov	ecx,edx
-+	mov	esi,DWORD [28+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [esp]
-+	xor	edx,ecx
-+	mov	ebx,DWORD [88+esp]
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [24+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [4+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [12+esp]
-+	xor	ecx,eax
-+	mov	DWORD [8+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[2614888103+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [20+esp]
-+	add	ebp,ecx
-+	mov	esi,edx
-+	mov	ecx,DWORD [24+esp]
-+	ror	edx,14
-+	mov	edi,DWORD [28+esp]
-+	xor	edx,esi
-+	mov	ebx,DWORD [92+esp]
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [20+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [8+esp]
-+	xor	esi,ebp
-+	mov	DWORD [4+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[3248222580+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [36+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [16+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [88+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [32+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [68+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [20+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [24+esp]
-+	xor	edx,ecx
-+	mov	DWORD [32+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [16+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [28+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [4+esp]
-+	xor	ecx,eax
-+	mov	DWORD [esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[3835390401+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [40+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [12+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [92+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [36+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [72+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [16+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [20+esp]
-+	xor	edx,esi
-+	mov	DWORD [36+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [12+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [24+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [esp]
-+	xor	esi,ebp
-+	mov	DWORD [28+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[4022224774+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [44+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [8+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [32+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [40+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [76+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [12+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [16+esp]
-+	xor	edx,ecx
-+	mov	DWORD [40+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [8+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [20+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,eax
-+	mov	DWORD [24+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[264347078+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [48+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [4+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [36+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [44+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [80+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [8+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [12+esp]
-+	xor	edx,esi
-+	mov	DWORD [44+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [4+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [16+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [24+esp]
-+	xor	esi,ebp
-+	mov	DWORD [20+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[604807628+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [52+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [esp]
-+	add	eax,esi
-+	mov	esi,DWORD [40+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [48+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [84+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [4+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [8+esp]
-+	xor	edx,ecx
-+	mov	DWORD [48+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [12+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [20+esp]
-+	xor	ecx,eax
-+	mov	DWORD [16+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[770255983+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [56+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [28+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [44+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [52+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [88+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [4+esp]
-+	xor	edx,esi
-+	mov	DWORD [52+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [28+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [8+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [16+esp]
-+	xor	esi,ebp
-+	mov	DWORD [12+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[1249150122+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [60+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [24+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [48+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [56+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [92+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [28+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [esp]
-+	xor	edx,ecx
-+	mov	DWORD [56+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [24+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [4+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [12+esp]
-+	xor	ecx,eax
-+	mov	DWORD [8+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[1555081692+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [64+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [20+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [52+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [60+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [32+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [24+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [28+esp]
-+	xor	edx,esi
-+	mov	DWORD [60+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [20+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [8+esp]
-+	xor	esi,ebp
-+	mov	DWORD [4+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[1996064986+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [68+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [16+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [56+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [64+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [36+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [20+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [24+esp]
-+	xor	edx,ecx
-+	mov	DWORD [64+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [16+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [28+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [4+esp]
-+	xor	ecx,eax
-+	mov	DWORD [esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[2554220882+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [72+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [12+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [60+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [68+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [40+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [16+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [20+esp]
-+	xor	edx,esi
-+	mov	DWORD [68+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [12+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [24+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [esp]
-+	xor	esi,ebp
-+	mov	DWORD [28+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[2821834349+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [76+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [8+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [64+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [72+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [44+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [12+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [16+esp]
-+	xor	edx,ecx
-+	mov	DWORD [72+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [8+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [20+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,eax
-+	mov	DWORD [24+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[2952996808+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [80+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [4+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [68+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [76+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [48+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [8+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [12+esp]
-+	xor	edx,esi
-+	mov	DWORD [76+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [4+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [16+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [24+esp]
-+	xor	esi,ebp
-+	mov	DWORD [20+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[3210313671+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [84+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [esp]
-+	add	eax,esi
-+	mov	esi,DWORD [72+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [80+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [52+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [4+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [8+esp]
-+	xor	edx,ecx
-+	mov	DWORD [80+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [12+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [20+esp]
-+	xor	ecx,eax
-+	mov	DWORD [16+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[3336571891+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [88+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [28+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [76+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [84+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [56+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [4+esp]
-+	xor	edx,esi
-+	mov	DWORD [84+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [28+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [8+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [16+esp]
-+	xor	esi,ebp
-+	mov	DWORD [12+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[3584528711+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [92+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [24+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [80+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [88+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [60+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [28+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [esp]
-+	xor	edx,ecx
-+	mov	DWORD [88+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [24+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [4+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [12+esp]
-+	xor	ecx,eax
-+	mov	DWORD [8+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[113926993+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [32+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [20+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [84+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [92+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [64+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [24+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [28+esp]
-+	xor	edx,esi
-+	mov	DWORD [92+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [20+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [8+esp]
-+	xor	esi,ebp
-+	mov	DWORD [4+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[338241895+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [36+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [16+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [88+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [32+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [68+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [20+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [24+esp]
-+	xor	edx,ecx
-+	mov	DWORD [32+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [16+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [28+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [4+esp]
-+	xor	ecx,eax
-+	mov	DWORD [esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[666307205+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [40+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [12+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [92+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [36+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [72+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [16+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [20+esp]
-+	xor	edx,esi
-+	mov	DWORD [36+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [12+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [24+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [esp]
-+	xor	esi,ebp
-+	mov	DWORD [28+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[773529912+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [44+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [8+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [32+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [40+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [76+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [12+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [16+esp]
-+	xor	edx,ecx
-+	mov	DWORD [40+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [8+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [20+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,eax
-+	mov	DWORD [24+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[1294757372+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [48+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [4+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [36+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [44+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [80+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [8+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [12+esp]
-+	xor	edx,esi
-+	mov	DWORD [44+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [4+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [16+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [24+esp]
-+	xor	esi,ebp
-+	mov	DWORD [20+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[1396182291+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [52+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [esp]
-+	add	eax,esi
-+	mov	esi,DWORD [40+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [48+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [84+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [4+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [8+esp]
-+	xor	edx,ecx
-+	mov	DWORD [48+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [12+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [20+esp]
-+	xor	ecx,eax
-+	mov	DWORD [16+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[1695183700+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [56+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [28+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [44+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [52+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [88+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [4+esp]
-+	xor	edx,esi
-+	mov	DWORD [52+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [28+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [8+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [16+esp]
-+	xor	esi,ebp
-+	mov	DWORD [12+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[1986661051+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [60+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [24+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [48+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [56+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [92+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [28+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [esp]
-+	xor	edx,ecx
-+	mov	DWORD [56+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [24+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [4+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [12+esp]
-+	xor	ecx,eax
-+	mov	DWORD [8+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[2177026350+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [64+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [20+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [52+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [60+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [32+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [24+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [28+esp]
-+	xor	edx,esi
-+	mov	DWORD [60+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [20+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [8+esp]
-+	xor	esi,ebp
-+	mov	DWORD [4+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[2456956037+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [68+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [16+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [56+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [64+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [36+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [20+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [24+esp]
-+	xor	edx,ecx
-+	mov	DWORD [64+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [16+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [28+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [4+esp]
-+	xor	ecx,eax
-+	mov	DWORD [esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[2730485921+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [72+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [12+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [60+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [68+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [40+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [16+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [20+esp]
-+	xor	edx,esi
-+	mov	DWORD [68+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [12+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [24+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [esp]
-+	xor	esi,ebp
-+	mov	DWORD [28+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[2820302411+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [76+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [8+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [64+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [72+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [44+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [12+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [16+esp]
-+	xor	edx,ecx
-+	mov	DWORD [72+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [8+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [20+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,eax
-+	mov	DWORD [24+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[3259730800+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [80+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [4+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [68+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [76+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [48+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [8+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [12+esp]
-+	xor	edx,esi
-+	mov	DWORD [76+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [4+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [16+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [24+esp]
-+	xor	esi,ebp
-+	mov	DWORD [20+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[3345764771+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [84+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [esp]
-+	add	eax,esi
-+	mov	esi,DWORD [72+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [80+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [52+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [4+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [8+esp]
-+	xor	edx,ecx
-+	mov	DWORD [80+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [12+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [20+esp]
-+	xor	ecx,eax
-+	mov	DWORD [16+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[3516065817+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [88+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [28+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [76+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [84+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [56+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [4+esp]
-+	xor	edx,esi
-+	mov	DWORD [84+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [28+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [8+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [16+esp]
-+	xor	esi,ebp
-+	mov	DWORD [12+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[3600352804+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [92+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [24+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [80+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [88+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [60+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [28+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [esp]
-+	xor	edx,ecx
-+	mov	DWORD [88+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [24+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [4+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [12+esp]
-+	xor	ecx,eax
-+	mov	DWORD [8+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[4094571909+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [32+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [20+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [84+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [92+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [64+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [24+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [28+esp]
-+	xor	edx,esi
-+	mov	DWORD [92+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [20+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [8+esp]
-+	xor	esi,ebp
-+	mov	DWORD [4+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[275423344+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [36+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [16+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [88+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [32+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [68+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [20+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [24+esp]
-+	xor	edx,ecx
-+	mov	DWORD [32+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [16+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [28+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [4+esp]
-+	xor	ecx,eax
-+	mov	DWORD [esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[430227734+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [40+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [12+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [92+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [36+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [72+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [16+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [20+esp]
-+	xor	edx,esi
-+	mov	DWORD [36+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [12+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [24+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [esp]
-+	xor	esi,ebp
-+	mov	DWORD [28+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[506948616+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [44+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [8+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [32+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [40+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [76+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [12+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [16+esp]
-+	xor	edx,ecx
-+	mov	DWORD [40+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [8+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [20+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,eax
-+	mov	DWORD [24+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[659060556+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [48+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [4+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [36+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [44+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [80+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [8+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [12+esp]
-+	xor	edx,esi
-+	mov	DWORD [44+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [4+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [16+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [24+esp]
-+	xor	esi,ebp
-+	mov	DWORD [20+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[883997877+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [52+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [esp]
-+	add	eax,esi
-+	mov	esi,DWORD [40+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [48+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [84+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [4+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [8+esp]
-+	xor	edx,ecx
-+	mov	DWORD [48+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [12+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [20+esp]
-+	xor	ecx,eax
-+	mov	DWORD [16+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[958139571+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [56+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [28+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [44+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [52+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [88+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [4+esp]
-+	xor	edx,esi
-+	mov	DWORD [52+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [28+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [8+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [16+esp]
-+	xor	esi,ebp
-+	mov	DWORD [12+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[1322822218+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [60+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [24+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [48+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [56+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [92+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [28+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [esp]
-+	xor	edx,ecx
-+	mov	DWORD [56+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [24+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [4+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [12+esp]
-+	xor	ecx,eax
-+	mov	DWORD [8+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[1537002063+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [64+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [20+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [52+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [60+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [32+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [24+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [28+esp]
-+	xor	edx,esi
-+	mov	DWORD [60+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [20+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [8+esp]
-+	xor	esi,ebp
-+	mov	DWORD [4+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[1747873779+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [68+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [16+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [56+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [64+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [36+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [20+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [24+esp]
-+	xor	edx,ecx
-+	mov	DWORD [64+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [16+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [28+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [4+esp]
-+	xor	ecx,eax
-+	mov	DWORD [esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[1955562222+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [72+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [12+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [60+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [68+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [40+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [16+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [20+esp]
-+	xor	edx,esi
-+	mov	DWORD [68+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [12+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [24+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [esp]
-+	xor	esi,ebp
-+	mov	DWORD [28+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[2024104815+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [76+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [8+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [64+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [72+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [44+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [12+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [16+esp]
-+	xor	edx,ecx
-+	mov	DWORD [72+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [8+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [20+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [28+esp]
-+	xor	ecx,eax
-+	mov	DWORD [24+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[2227730452+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [80+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [4+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [68+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [76+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [48+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [8+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [12+esp]
-+	xor	edx,esi
-+	mov	DWORD [76+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [4+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [16+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [24+esp]
-+	xor	esi,ebp
-+	mov	DWORD [20+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[2361852424+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [84+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [esp]
-+	add	eax,esi
-+	mov	esi,DWORD [72+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [80+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [52+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [4+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [8+esp]
-+	xor	edx,ecx
-+	mov	DWORD [80+esp],ebx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [12+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [20+esp]
-+	xor	ecx,eax
-+	mov	DWORD [16+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[2428436474+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [88+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [28+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [76+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [84+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [56+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [4+esp]
-+	xor	edx,esi
-+	mov	DWORD [84+esp],ebx
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [28+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [8+esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [16+esp]
-+	xor	esi,ebp
-+	mov	DWORD [12+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[2756734187+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	mov	ecx,DWORD [92+esp]
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [24+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [80+esp]
-+	mov	ebx,ecx
-+	ror	ecx,11
-+	mov	edi,esi
-+	ror	esi,2
-+	xor	ecx,ebx
-+	shr	ebx,3
-+	ror	ecx,7
-+	xor	esi,edi
-+	xor	ebx,ecx
-+	ror	esi,17
-+	add	ebx,DWORD [88+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [60+esp]
-+	mov	ecx,edx
-+	xor	edi,esi
-+	mov	esi,DWORD [28+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [esp]
-+	xor	edx,ecx
-+	xor	esi,edi
-+	ror	edx,5
-+	and	esi,ecx
-+	mov	DWORD [24+esp],ecx
-+	xor	edx,ecx
-+	add	ebx,DWORD [4+esp]
-+	xor	edi,esi
-+	ror	edx,6
-+	mov	ecx,eax
-+	add	ebx,edi
-+	ror	ecx,9
-+	mov	esi,eax
-+	mov	edi,DWORD [12+esp]
-+	xor	ecx,eax
-+	mov	DWORD [8+esp],eax
-+	xor	eax,edi
-+	ror	ecx,11
-+	and	ebp,eax
-+	lea	edx,[3204031479+edx*1+ebx]
-+	xor	ecx,esi
-+	xor	ebp,edi
-+	mov	esi,DWORD [32+esp]
-+	ror	ecx,2
-+	add	ebp,edx
-+	add	edx,DWORD [20+esp]
-+	add	ebp,ecx
-+	mov	ecx,DWORD [84+esp]
-+	mov	ebx,esi
-+	ror	esi,11
-+	mov	edi,ecx
-+	ror	ecx,2
-+	xor	esi,ebx
-+	shr	ebx,3
-+	ror	esi,7
-+	xor	ecx,edi
-+	xor	ebx,esi
-+	ror	ecx,17
-+	add	ebx,DWORD [92+esp]
-+	shr	edi,10
-+	add	ebx,DWORD [64+esp]
-+	mov	esi,edx
-+	xor	edi,ecx
-+	mov	ecx,DWORD [24+esp]
-+	ror	edx,14
-+	add	ebx,edi
-+	mov	edi,DWORD [28+esp]
-+	xor	edx,esi
-+	xor	ecx,edi
-+	ror	edx,5
-+	and	ecx,esi
-+	mov	DWORD [20+esp],esi
-+	xor	edx,esi
-+	add	ebx,DWORD [esp]
-+	xor	edi,ecx
-+	ror	edx,6
-+	mov	esi,ebp
-+	add	ebx,edi
-+	ror	esi,9
-+	mov	ecx,ebp
-+	mov	edi,DWORD [8+esp]
-+	xor	esi,ebp
-+	mov	DWORD [4+esp],ebp
-+	xor	ebp,edi
-+	ror	esi,11
-+	and	eax,ebp
-+	lea	edx,[3329325298+edx*1+ebx]
-+	xor	esi,ecx
-+	xor	eax,edi
-+	ror	esi,2
-+	add	eax,edx
-+	add	edx,DWORD [16+esp]
-+	add	eax,esi
-+	mov	esi,DWORD [96+esp]
-+	xor	ebp,edi
-+	mov	ecx,DWORD [12+esp]
-+	add	eax,DWORD [esi]
-+	add	ebp,DWORD [4+esi]
-+	add	edi,DWORD [8+esi]
-+	add	ecx,DWORD [12+esi]
-+	mov	DWORD [esi],eax
-+	mov	DWORD [4+esi],ebp
-+	mov	DWORD [8+esi],edi
-+	mov	DWORD [12+esi],ecx
-+	mov	DWORD [4+esp],ebp
-+	xor	ebp,edi
-+	mov	DWORD [8+esp],edi
-+	mov	DWORD [12+esp],ecx
-+	mov	edi,DWORD [20+esp]
-+	mov	ebx,DWORD [24+esp]
-+	mov	ecx,DWORD [28+esp]
-+	add	edx,DWORD [16+esi]
-+	add	edi,DWORD [20+esi]
-+	add	ebx,DWORD [24+esi]
-+	add	ecx,DWORD [28+esi]
-+	mov	DWORD [16+esi],edx
-+	mov	DWORD [20+esi],edi
-+	mov	DWORD [24+esi],ebx
-+	mov	DWORD [28+esi],ecx
-+	mov	DWORD [20+esp],edi
-+	mov	edi,DWORD [100+esp]
-+	mov	DWORD [24+esp],ebx
-+	mov	DWORD [28+esp],ecx
-+	cmp	edi,DWORD [104+esp]
-+	jb	NEAR L$009grand_loop
-+	mov	esp,DWORD [108+esp]
-+	pop	edi
-+	pop	esi
-+	pop	ebx
-+	pop	ebp
-+	ret
-+segment	.bss
-+common	__gnutls_x86_cpuid_s 16
-diff --git a/SMP/lib/accelerated/x86/coff/sha256-ssse3-x86_64.asm b/SMP/lib/accelerated/x86/coff/sha256-ssse3-x86_64.asm
-new file mode 100644
-index 0000000..ce1656d
---- /dev/null
-+++ b/SMP/lib/accelerated/x86/coff/sha256-ssse3-x86_64.asm
-@@ -0,0 +1,5634 @@
-+default	rel
-+%define XMMWORD
-+%define YMMWORD
-+%define ZMMWORD
-+section	.text code align=64
-+
-+
-+EXTERN	_gnutls_x86_cpuid_s
-+global	sha256_block_data_order
-+
-+ALIGN	16
-+sha256_block_data_order:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha256_block_data_order:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+	lea	r11,[_gnutls_x86_cpuid_s]
-+	mov	r9d,DWORD[r11]
-+	mov	r10d,DWORD[4+r11]
-+	mov	r11d,DWORD[8+r11]
-+	test	r11d,536870912
-+	jnz	NEAR _shaext_shortcut
-+	and	r11d,296
-+	cmp	r11d,296
-+	je	NEAR $L$avx2_shortcut
-+	and	r9d,1073741824
-+	and	r10d,268435968
-+	or	r10d,r9d
-+	cmp	r10d,1342177792
-+	je	NEAR $L$avx_shortcut
-+	test	r10d,512
-+	jnz	NEAR $L$ssse3_shortcut
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	mov	r11,rsp
-+	shl	rdx,4
-+	sub	rsp,16*4+4*8
-+	lea	rdx,[rdx*4+rsi]
-+	and	rsp,-64
-+	mov	QWORD[((64+0))+rsp],rdi
-+	mov	QWORD[((64+8))+rsp],rsi
-+	mov	QWORD[((64+16))+rsp],rdx
-+	mov	QWORD[((64+24))+rsp],r11
-+$L$prologue:
-+
-+	mov	eax,DWORD[rdi]
-+	mov	ebx,DWORD[4+rdi]
-+	mov	ecx,DWORD[8+rdi]
-+	mov	edx,DWORD[12+rdi]
-+	mov	r8d,DWORD[16+rdi]
-+	mov	r9d,DWORD[20+rdi]
-+	mov	r10d,DWORD[24+rdi]
-+	mov	r11d,DWORD[28+rdi]
-+	jmp	NEAR $L$loop
-+
-+ALIGN	16
-+$L$loop:
-+	mov	edi,ebx
-+	lea	rbp,[K256]
-+	xor	edi,ecx
-+	mov	r12d,DWORD[rsi]
-+	mov	r13d,r8d
-+	mov	r14d,eax
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	r15d,r9d
-+
-+	xor	r13d,r8d
-+	ror	r14d,9
-+	xor	r15d,r10d
-+
-+	mov	DWORD[rsp],r12d
-+	xor	r14d,eax
-+	and	r15d,r8d
-+
-+	ror	r13d,5
-+	add	r12d,r11d
-+	xor	r15d,r10d
-+
-+	ror	r14d,11
-+	xor	r13d,r8d
-+	add	r12d,r15d
-+
-+	mov	r15d,eax
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,eax
-+
-+	xor	r15d,ebx
-+	ror	r13d,6
-+	mov	r11d,ebx
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r11d,edi
-+	add	edx,r12d
-+	add	r11d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	r11d,r14d
-+	mov	r12d,DWORD[4+rsi]
-+	mov	r13d,edx
-+	mov	r14d,r11d
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	edi,r8d
-+
-+	xor	r13d,edx
-+	ror	r14d,9
-+	xor	edi,r9d
-+
-+	mov	DWORD[4+rsp],r12d
-+	xor	r14d,r11d
-+	and	edi,edx
-+
-+	ror	r13d,5
-+	add	r12d,r10d
-+	xor	edi,r9d
-+
-+	ror	r14d,11
-+	xor	r13d,edx
-+	add	r12d,edi
-+
-+	mov	edi,r11d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r11d
-+
-+	xor	edi,eax
-+	ror	r13d,6
-+	mov	r10d,eax
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r10d,r15d
-+	add	ecx,r12d
-+	add	r10d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	r10d,r14d
-+	mov	r12d,DWORD[8+rsi]
-+	mov	r13d,ecx
-+	mov	r14d,r10d
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	r15d,edx
-+
-+	xor	r13d,ecx
-+	ror	r14d,9
-+	xor	r15d,r8d
-+
-+	mov	DWORD[8+rsp],r12d
-+	xor	r14d,r10d
-+	and	r15d,ecx
-+
-+	ror	r13d,5
-+	add	r12d,r9d
-+	xor	r15d,r8d
-+
-+	ror	r14d,11
-+	xor	r13d,ecx
-+	add	r12d,r15d
-+
-+	mov	r15d,r10d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r10d
-+
-+	xor	r15d,r11d
-+	ror	r13d,6
-+	mov	r9d,r11d
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r9d,edi
-+	add	ebx,r12d
-+	add	r9d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	r9d,r14d
-+	mov	r12d,DWORD[12+rsi]
-+	mov	r13d,ebx
-+	mov	r14d,r9d
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	edi,ecx
-+
-+	xor	r13d,ebx
-+	ror	r14d,9
-+	xor	edi,edx
-+
-+	mov	DWORD[12+rsp],r12d
-+	xor	r14d,r9d
-+	and	edi,ebx
-+
-+	ror	r13d,5
-+	add	r12d,r8d
-+	xor	edi,edx
-+
-+	ror	r14d,11
-+	xor	r13d,ebx
-+	add	r12d,edi
-+
-+	mov	edi,r9d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r9d
-+
-+	xor	edi,r10d
-+	ror	r13d,6
-+	mov	r8d,r10d
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r8d,r15d
-+	add	eax,r12d
-+	add	r8d,r12d
-+
-+	lea	rbp,[20+rbp]
-+	add	r8d,r14d
-+	mov	r12d,DWORD[16+rsi]
-+	mov	r13d,eax
-+	mov	r14d,r8d
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	r15d,ebx
-+
-+	xor	r13d,eax
-+	ror	r14d,9
-+	xor	r15d,ecx
-+
-+	mov	DWORD[16+rsp],r12d
-+	xor	r14d,r8d
-+	and	r15d,eax
-+
-+	ror	r13d,5
-+	add	r12d,edx
-+	xor	r15d,ecx
-+
-+	ror	r14d,11
-+	xor	r13d,eax
-+	add	r12d,r15d
-+
-+	mov	r15d,r8d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r8d
-+
-+	xor	r15d,r9d
-+	ror	r13d,6
-+	mov	edx,r9d
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	edx,edi
-+	add	r11d,r12d
-+	add	edx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	edx,r14d
-+	mov	r12d,DWORD[20+rsi]
-+	mov	r13d,r11d
-+	mov	r14d,edx
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	edi,eax
-+
-+	xor	r13d,r11d
-+	ror	r14d,9
-+	xor	edi,ebx
-+
-+	mov	DWORD[20+rsp],r12d
-+	xor	r14d,edx
-+	and	edi,r11d
-+
-+	ror	r13d,5
-+	add	r12d,ecx
-+	xor	edi,ebx
-+
-+	ror	r14d,11
-+	xor	r13d,r11d
-+	add	r12d,edi
-+
-+	mov	edi,edx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,edx
-+
-+	xor	edi,r8d
-+	ror	r13d,6
-+	mov	ecx,r8d
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	ecx,r15d
-+	add	r10d,r12d
-+	add	ecx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	ecx,r14d
-+	mov	r12d,DWORD[24+rsi]
-+	mov	r13d,r10d
-+	mov	r14d,ecx
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	r15d,r11d
-+
-+	xor	r13d,r10d
-+	ror	r14d,9
-+	xor	r15d,eax
-+
-+	mov	DWORD[24+rsp],r12d
-+	xor	r14d,ecx
-+	and	r15d,r10d
-+
-+	ror	r13d,5
-+	add	r12d,ebx
-+	xor	r15d,eax
-+
-+	ror	r14d,11
-+	xor	r13d,r10d
-+	add	r12d,r15d
-+
-+	mov	r15d,ecx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,ecx
-+
-+	xor	r15d,edx
-+	ror	r13d,6
-+	mov	ebx,edx
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	ebx,edi
-+	add	r9d,r12d
-+	add	ebx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	ebx,r14d
-+	mov	r12d,DWORD[28+rsi]
-+	mov	r13d,r9d
-+	mov	r14d,ebx
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	edi,r10d
-+
-+	xor	r13d,r9d
-+	ror	r14d,9
-+	xor	edi,r11d
-+
-+	mov	DWORD[28+rsp],r12d
-+	xor	r14d,ebx
-+	and	edi,r9d
-+
-+	ror	r13d,5
-+	add	r12d,eax
-+	xor	edi,r11d
-+
-+	ror	r14d,11
-+	xor	r13d,r9d
-+	add	r12d,edi
-+
-+	mov	edi,ebx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,ebx
-+
-+	xor	edi,ecx
-+	ror	r13d,6
-+	mov	eax,ecx
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	eax,r15d
-+	add	r8d,r12d
-+	add	eax,r12d
-+
-+	lea	rbp,[20+rbp]
-+	add	eax,r14d
-+	mov	r12d,DWORD[32+rsi]
-+	mov	r13d,r8d
-+	mov	r14d,eax
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	r15d,r9d
-+
-+	xor	r13d,r8d
-+	ror	r14d,9
-+	xor	r15d,r10d
-+
-+	mov	DWORD[32+rsp],r12d
-+	xor	r14d,eax
-+	and	r15d,r8d
-+
-+	ror	r13d,5
-+	add	r12d,r11d
-+	xor	r15d,r10d
-+
-+	ror	r14d,11
-+	xor	r13d,r8d
-+	add	r12d,r15d
-+
-+	mov	r15d,eax
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,eax
-+
-+	xor	r15d,ebx
-+	ror	r13d,6
-+	mov	r11d,ebx
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r11d,edi
-+	add	edx,r12d
-+	add	r11d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	r11d,r14d
-+	mov	r12d,DWORD[36+rsi]
-+	mov	r13d,edx
-+	mov	r14d,r11d
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	edi,r8d
-+
-+	xor	r13d,edx
-+	ror	r14d,9
-+	xor	edi,r9d
-+
-+	mov	DWORD[36+rsp],r12d
-+	xor	r14d,r11d
-+	and	edi,edx
-+
-+	ror	r13d,5
-+	add	r12d,r10d
-+	xor	edi,r9d
-+
-+	ror	r14d,11
-+	xor	r13d,edx
-+	add	r12d,edi
-+
-+	mov	edi,r11d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r11d
-+
-+	xor	edi,eax
-+	ror	r13d,6
-+	mov	r10d,eax
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r10d,r15d
-+	add	ecx,r12d
-+	add	r10d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	r10d,r14d
-+	mov	r12d,DWORD[40+rsi]
-+	mov	r13d,ecx
-+	mov	r14d,r10d
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	r15d,edx
-+
-+	xor	r13d,ecx
-+	ror	r14d,9
-+	xor	r15d,r8d
-+
-+	mov	DWORD[40+rsp],r12d
-+	xor	r14d,r10d
-+	and	r15d,ecx
-+
-+	ror	r13d,5
-+	add	r12d,r9d
-+	xor	r15d,r8d
-+
-+	ror	r14d,11
-+	xor	r13d,ecx
-+	add	r12d,r15d
-+
-+	mov	r15d,r10d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r10d
-+
-+	xor	r15d,r11d
-+	ror	r13d,6
-+	mov	r9d,r11d
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r9d,edi
-+	add	ebx,r12d
-+	add	r9d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	r9d,r14d
-+	mov	r12d,DWORD[44+rsi]
-+	mov	r13d,ebx
-+	mov	r14d,r9d
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	edi,ecx
-+
-+	xor	r13d,ebx
-+	ror	r14d,9
-+	xor	edi,edx
-+
-+	mov	DWORD[44+rsp],r12d
-+	xor	r14d,r9d
-+	and	edi,ebx
-+
-+	ror	r13d,5
-+	add	r12d,r8d
-+	xor	edi,edx
-+
-+	ror	r14d,11
-+	xor	r13d,ebx
-+	add	r12d,edi
-+
-+	mov	edi,r9d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r9d
-+
-+	xor	edi,r10d
-+	ror	r13d,6
-+	mov	r8d,r10d
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r8d,r15d
-+	add	eax,r12d
-+	add	r8d,r12d
-+
-+	lea	rbp,[20+rbp]
-+	add	r8d,r14d
-+	mov	r12d,DWORD[48+rsi]
-+	mov	r13d,eax
-+	mov	r14d,r8d
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	r15d,ebx
-+
-+	xor	r13d,eax
-+	ror	r14d,9
-+	xor	r15d,ecx
-+
-+	mov	DWORD[48+rsp],r12d
-+	xor	r14d,r8d
-+	and	r15d,eax
-+
-+	ror	r13d,5
-+	add	r12d,edx
-+	xor	r15d,ecx
-+
-+	ror	r14d,11
-+	xor	r13d,eax
-+	add	r12d,r15d
-+
-+	mov	r15d,r8d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r8d
-+
-+	xor	r15d,r9d
-+	ror	r13d,6
-+	mov	edx,r9d
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	edx,edi
-+	add	r11d,r12d
-+	add	edx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	edx,r14d
-+	mov	r12d,DWORD[52+rsi]
-+	mov	r13d,r11d
-+	mov	r14d,edx
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	edi,eax
-+
-+	xor	r13d,r11d
-+	ror	r14d,9
-+	xor	edi,ebx
-+
-+	mov	DWORD[52+rsp],r12d
-+	xor	r14d,edx
-+	and	edi,r11d
-+
-+	ror	r13d,5
-+	add	r12d,ecx
-+	xor	edi,ebx
-+
-+	ror	r14d,11
-+	xor	r13d,r11d
-+	add	r12d,edi
-+
-+	mov	edi,edx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,edx
-+
-+	xor	edi,r8d
-+	ror	r13d,6
-+	mov	ecx,r8d
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	ecx,r15d
-+	add	r10d,r12d
-+	add	ecx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	ecx,r14d
-+	mov	r12d,DWORD[56+rsi]
-+	mov	r13d,r10d
-+	mov	r14d,ecx
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	r15d,r11d
-+
-+	xor	r13d,r10d
-+	ror	r14d,9
-+	xor	r15d,eax
-+
-+	mov	DWORD[56+rsp],r12d
-+	xor	r14d,ecx
-+	and	r15d,r10d
-+
-+	ror	r13d,5
-+	add	r12d,ebx
-+	xor	r15d,eax
-+
-+	ror	r14d,11
-+	xor	r13d,r10d
-+	add	r12d,r15d
-+
-+	mov	r15d,ecx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,ecx
-+
-+	xor	r15d,edx
-+	ror	r13d,6
-+	mov	ebx,edx
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	ebx,edi
-+	add	r9d,r12d
-+	add	ebx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	add	ebx,r14d
-+	mov	r12d,DWORD[60+rsi]
-+	mov	r13d,r9d
-+	mov	r14d,ebx
-+	bswap	r12d
-+	ror	r13d,14
-+	mov	edi,r10d
-+
-+	xor	r13d,r9d
-+	ror	r14d,9
-+	xor	edi,r11d
-+
-+	mov	DWORD[60+rsp],r12d
-+	xor	r14d,ebx
-+	and	edi,r9d
-+
-+	ror	r13d,5
-+	add	r12d,eax
-+	xor	edi,r11d
-+
-+	ror	r14d,11
-+	xor	r13d,r9d
-+	add	r12d,edi
-+
-+	mov	edi,ebx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,ebx
-+
-+	xor	edi,ecx
-+	ror	r13d,6
-+	mov	eax,ecx
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	eax,r15d
-+	add	r8d,r12d
-+	add	eax,r12d
-+
-+	lea	rbp,[20+rbp]
-+	jmp	NEAR $L$rounds_16_xx
-+ALIGN	16
-+$L$rounds_16_xx:
-+	mov	r13d,DWORD[4+rsp]
-+	mov	r15d,DWORD[56+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	eax,r14d
-+	mov	r14d,r15d
-+	ror	r15d,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	r15d,r14d
-+	shr	r14d,10
-+
-+	ror	r15d,17
-+	xor	r12d,r13d
-+	xor	r15d,r14d
-+	add	r12d,DWORD[36+rsp]
-+
-+	add	r12d,DWORD[rsp]
-+	mov	r13d,r8d
-+	add	r12d,r15d
-+	mov	r14d,eax
-+	ror	r13d,14
-+	mov	r15d,r9d
-+
-+	xor	r13d,r8d
-+	ror	r14d,9
-+	xor	r15d,r10d
-+
-+	mov	DWORD[rsp],r12d
-+	xor	r14d,eax
-+	and	r15d,r8d
-+
-+	ror	r13d,5
-+	add	r12d,r11d
-+	xor	r15d,r10d
-+
-+	ror	r14d,11
-+	xor	r13d,r8d
-+	add	r12d,r15d
-+
-+	mov	r15d,eax
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,eax
-+
-+	xor	r15d,ebx
-+	ror	r13d,6
-+	mov	r11d,ebx
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r11d,edi
-+	add	edx,r12d
-+	add	r11d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[8+rsp]
-+	mov	edi,DWORD[60+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	r11d,r14d
-+	mov	r14d,edi
-+	ror	edi,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	edi,r14d
-+	shr	r14d,10
-+
-+	ror	edi,17
-+	xor	r12d,r13d
-+	xor	edi,r14d
-+	add	r12d,DWORD[40+rsp]
-+
-+	add	r12d,DWORD[4+rsp]
-+	mov	r13d,edx
-+	add	r12d,edi
-+	mov	r14d,r11d
-+	ror	r13d,14
-+	mov	edi,r8d
-+
-+	xor	r13d,edx
-+	ror	r14d,9
-+	xor	edi,r9d
-+
-+	mov	DWORD[4+rsp],r12d
-+	xor	r14d,r11d
-+	and	edi,edx
-+
-+	ror	r13d,5
-+	add	r12d,r10d
-+	xor	edi,r9d
-+
-+	ror	r14d,11
-+	xor	r13d,edx
-+	add	r12d,edi
-+
-+	mov	edi,r11d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r11d
-+
-+	xor	edi,eax
-+	ror	r13d,6
-+	mov	r10d,eax
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r10d,r15d
-+	add	ecx,r12d
-+	add	r10d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[12+rsp]
-+	mov	r15d,DWORD[rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	r10d,r14d
-+	mov	r14d,r15d
-+	ror	r15d,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	r15d,r14d
-+	shr	r14d,10
-+
-+	ror	r15d,17
-+	xor	r12d,r13d
-+	xor	r15d,r14d
-+	add	r12d,DWORD[44+rsp]
-+
-+	add	r12d,DWORD[8+rsp]
-+	mov	r13d,ecx
-+	add	r12d,r15d
-+	mov	r14d,r10d
-+	ror	r13d,14
-+	mov	r15d,edx
-+
-+	xor	r13d,ecx
-+	ror	r14d,9
-+	xor	r15d,r8d
-+
-+	mov	DWORD[8+rsp],r12d
-+	xor	r14d,r10d
-+	and	r15d,ecx
-+
-+	ror	r13d,5
-+	add	r12d,r9d
-+	xor	r15d,r8d
-+
-+	ror	r14d,11
-+	xor	r13d,ecx
-+	add	r12d,r15d
-+
-+	mov	r15d,r10d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r10d
-+
-+	xor	r15d,r11d
-+	ror	r13d,6
-+	mov	r9d,r11d
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r9d,edi
-+	add	ebx,r12d
-+	add	r9d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[16+rsp]
-+	mov	edi,DWORD[4+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	r9d,r14d
-+	mov	r14d,edi
-+	ror	edi,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	edi,r14d
-+	shr	r14d,10
-+
-+	ror	edi,17
-+	xor	r12d,r13d
-+	xor	edi,r14d
-+	add	r12d,DWORD[48+rsp]
-+
-+	add	r12d,DWORD[12+rsp]
-+	mov	r13d,ebx
-+	add	r12d,edi
-+	mov	r14d,r9d
-+	ror	r13d,14
-+	mov	edi,ecx
-+
-+	xor	r13d,ebx
-+	ror	r14d,9
-+	xor	edi,edx
-+
-+	mov	DWORD[12+rsp],r12d
-+	xor	r14d,r9d
-+	and	edi,ebx
-+
-+	ror	r13d,5
-+	add	r12d,r8d
-+	xor	edi,edx
-+
-+	ror	r14d,11
-+	xor	r13d,ebx
-+	add	r12d,edi
-+
-+	mov	edi,r9d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r9d
-+
-+	xor	edi,r10d
-+	ror	r13d,6
-+	mov	r8d,r10d
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r8d,r15d
-+	add	eax,r12d
-+	add	r8d,r12d
-+
-+	lea	rbp,[20+rbp]
-+	mov	r13d,DWORD[20+rsp]
-+	mov	r15d,DWORD[8+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	r8d,r14d
-+	mov	r14d,r15d
-+	ror	r15d,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	r15d,r14d
-+	shr	r14d,10
-+
-+	ror	r15d,17
-+	xor	r12d,r13d
-+	xor	r15d,r14d
-+	add	r12d,DWORD[52+rsp]
-+
-+	add	r12d,DWORD[16+rsp]
-+	mov	r13d,eax
-+	add	r12d,r15d
-+	mov	r14d,r8d
-+	ror	r13d,14
-+	mov	r15d,ebx
-+
-+	xor	r13d,eax
-+	ror	r14d,9
-+	xor	r15d,ecx
-+
-+	mov	DWORD[16+rsp],r12d
-+	xor	r14d,r8d
-+	and	r15d,eax
-+
-+	ror	r13d,5
-+	add	r12d,edx
-+	xor	r15d,ecx
-+
-+	ror	r14d,11
-+	xor	r13d,eax
-+	add	r12d,r15d
-+
-+	mov	r15d,r8d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r8d
-+
-+	xor	r15d,r9d
-+	ror	r13d,6
-+	mov	edx,r9d
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	edx,edi
-+	add	r11d,r12d
-+	add	edx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[24+rsp]
-+	mov	edi,DWORD[12+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	edx,r14d
-+	mov	r14d,edi
-+	ror	edi,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	edi,r14d
-+	shr	r14d,10
-+
-+	ror	edi,17
-+	xor	r12d,r13d
-+	xor	edi,r14d
-+	add	r12d,DWORD[56+rsp]
-+
-+	add	r12d,DWORD[20+rsp]
-+	mov	r13d,r11d
-+	add	r12d,edi
-+	mov	r14d,edx
-+	ror	r13d,14
-+	mov	edi,eax
-+
-+	xor	r13d,r11d
-+	ror	r14d,9
-+	xor	edi,ebx
-+
-+	mov	DWORD[20+rsp],r12d
-+	xor	r14d,edx
-+	and	edi,r11d
-+
-+	ror	r13d,5
-+	add	r12d,ecx
-+	xor	edi,ebx
-+
-+	ror	r14d,11
-+	xor	r13d,r11d
-+	add	r12d,edi
-+
-+	mov	edi,edx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,edx
-+
-+	xor	edi,r8d
-+	ror	r13d,6
-+	mov	ecx,r8d
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	ecx,r15d
-+	add	r10d,r12d
-+	add	ecx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[28+rsp]
-+	mov	r15d,DWORD[16+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	ecx,r14d
-+	mov	r14d,r15d
-+	ror	r15d,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	r15d,r14d
-+	shr	r14d,10
-+
-+	ror	r15d,17
-+	xor	r12d,r13d
-+	xor	r15d,r14d
-+	add	r12d,DWORD[60+rsp]
-+
-+	add	r12d,DWORD[24+rsp]
-+	mov	r13d,r10d
-+	add	r12d,r15d
-+	mov	r14d,ecx
-+	ror	r13d,14
-+	mov	r15d,r11d
-+
-+	xor	r13d,r10d
-+	ror	r14d,9
-+	xor	r15d,eax
-+
-+	mov	DWORD[24+rsp],r12d
-+	xor	r14d,ecx
-+	and	r15d,r10d
-+
-+	ror	r13d,5
-+	add	r12d,ebx
-+	xor	r15d,eax
-+
-+	ror	r14d,11
-+	xor	r13d,r10d
-+	add	r12d,r15d
-+
-+	mov	r15d,ecx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,ecx
-+
-+	xor	r15d,edx
-+	ror	r13d,6
-+	mov	ebx,edx
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	ebx,edi
-+	add	r9d,r12d
-+	add	ebx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[32+rsp]
-+	mov	edi,DWORD[20+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	ebx,r14d
-+	mov	r14d,edi
-+	ror	edi,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	edi,r14d
-+	shr	r14d,10
-+
-+	ror	edi,17
-+	xor	r12d,r13d
-+	xor	edi,r14d
-+	add	r12d,DWORD[rsp]
-+
-+	add	r12d,DWORD[28+rsp]
-+	mov	r13d,r9d
-+	add	r12d,edi
-+	mov	r14d,ebx
-+	ror	r13d,14
-+	mov	edi,r10d
-+
-+	xor	r13d,r9d
-+	ror	r14d,9
-+	xor	edi,r11d
-+
-+	mov	DWORD[28+rsp],r12d
-+	xor	r14d,ebx
-+	and	edi,r9d
-+
-+	ror	r13d,5
-+	add	r12d,eax
-+	xor	edi,r11d
-+
-+	ror	r14d,11
-+	xor	r13d,r9d
-+	add	r12d,edi
-+
-+	mov	edi,ebx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,ebx
-+
-+	xor	edi,ecx
-+	ror	r13d,6
-+	mov	eax,ecx
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	eax,r15d
-+	add	r8d,r12d
-+	add	eax,r12d
-+
-+	lea	rbp,[20+rbp]
-+	mov	r13d,DWORD[36+rsp]
-+	mov	r15d,DWORD[24+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	eax,r14d
-+	mov	r14d,r15d
-+	ror	r15d,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	r15d,r14d
-+	shr	r14d,10
-+
-+	ror	r15d,17
-+	xor	r12d,r13d
-+	xor	r15d,r14d
-+	add	r12d,DWORD[4+rsp]
-+
-+	add	r12d,DWORD[32+rsp]
-+	mov	r13d,r8d
-+	add	r12d,r15d
-+	mov	r14d,eax
-+	ror	r13d,14
-+	mov	r15d,r9d
-+
-+	xor	r13d,r8d
-+	ror	r14d,9
-+	xor	r15d,r10d
-+
-+	mov	DWORD[32+rsp],r12d
-+	xor	r14d,eax
-+	and	r15d,r8d
-+
-+	ror	r13d,5
-+	add	r12d,r11d
-+	xor	r15d,r10d
-+
-+	ror	r14d,11
-+	xor	r13d,r8d
-+	add	r12d,r15d
-+
-+	mov	r15d,eax
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,eax
-+
-+	xor	r15d,ebx
-+	ror	r13d,6
-+	mov	r11d,ebx
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r11d,edi
-+	add	edx,r12d
-+	add	r11d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[40+rsp]
-+	mov	edi,DWORD[28+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	r11d,r14d
-+	mov	r14d,edi
-+	ror	edi,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	edi,r14d
-+	shr	r14d,10
-+
-+	ror	edi,17
-+	xor	r12d,r13d
-+	xor	edi,r14d
-+	add	r12d,DWORD[8+rsp]
-+
-+	add	r12d,DWORD[36+rsp]
-+	mov	r13d,edx
-+	add	r12d,edi
-+	mov	r14d,r11d
-+	ror	r13d,14
-+	mov	edi,r8d
-+
-+	xor	r13d,edx
-+	ror	r14d,9
-+	xor	edi,r9d
-+
-+	mov	DWORD[36+rsp],r12d
-+	xor	r14d,r11d
-+	and	edi,edx
-+
-+	ror	r13d,5
-+	add	r12d,r10d
-+	xor	edi,r9d
-+
-+	ror	r14d,11
-+	xor	r13d,edx
-+	add	r12d,edi
-+
-+	mov	edi,r11d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r11d
-+
-+	xor	edi,eax
-+	ror	r13d,6
-+	mov	r10d,eax
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r10d,r15d
-+	add	ecx,r12d
-+	add	r10d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[44+rsp]
-+	mov	r15d,DWORD[32+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	r10d,r14d
-+	mov	r14d,r15d
-+	ror	r15d,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	r15d,r14d
-+	shr	r14d,10
-+
-+	ror	r15d,17
-+	xor	r12d,r13d
-+	xor	r15d,r14d
-+	add	r12d,DWORD[12+rsp]
-+
-+	add	r12d,DWORD[40+rsp]
-+	mov	r13d,ecx
-+	add	r12d,r15d
-+	mov	r14d,r10d
-+	ror	r13d,14
-+	mov	r15d,edx
-+
-+	xor	r13d,ecx
-+	ror	r14d,9
-+	xor	r15d,r8d
-+
-+	mov	DWORD[40+rsp],r12d
-+	xor	r14d,r10d
-+	and	r15d,ecx
-+
-+	ror	r13d,5
-+	add	r12d,r9d
-+	xor	r15d,r8d
-+
-+	ror	r14d,11
-+	xor	r13d,ecx
-+	add	r12d,r15d
-+
-+	mov	r15d,r10d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r10d
-+
-+	xor	r15d,r11d
-+	ror	r13d,6
-+	mov	r9d,r11d
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r9d,edi
-+	add	ebx,r12d
-+	add	r9d,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[48+rsp]
-+	mov	edi,DWORD[36+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	r9d,r14d
-+	mov	r14d,edi
-+	ror	edi,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	edi,r14d
-+	shr	r14d,10
-+
-+	ror	edi,17
-+	xor	r12d,r13d
-+	xor	edi,r14d
-+	add	r12d,DWORD[16+rsp]
-+
-+	add	r12d,DWORD[44+rsp]
-+	mov	r13d,ebx
-+	add	r12d,edi
-+	mov	r14d,r9d
-+	ror	r13d,14
-+	mov	edi,ecx
-+
-+	xor	r13d,ebx
-+	ror	r14d,9
-+	xor	edi,edx
-+
-+	mov	DWORD[44+rsp],r12d
-+	xor	r14d,r9d
-+	and	edi,ebx
-+
-+	ror	r13d,5
-+	add	r12d,r8d
-+	xor	edi,edx
-+
-+	ror	r14d,11
-+	xor	r13d,ebx
-+	add	r12d,edi
-+
-+	mov	edi,r9d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r9d
-+
-+	xor	edi,r10d
-+	ror	r13d,6
-+	mov	r8d,r10d
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	r8d,r15d
-+	add	eax,r12d
-+	add	r8d,r12d
-+
-+	lea	rbp,[20+rbp]
-+	mov	r13d,DWORD[52+rsp]
-+	mov	r15d,DWORD[40+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	r8d,r14d
-+	mov	r14d,r15d
-+	ror	r15d,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	r15d,r14d
-+	shr	r14d,10
-+
-+	ror	r15d,17
-+	xor	r12d,r13d
-+	xor	r15d,r14d
-+	add	r12d,DWORD[20+rsp]
-+
-+	add	r12d,DWORD[48+rsp]
-+	mov	r13d,eax
-+	add	r12d,r15d
-+	mov	r14d,r8d
-+	ror	r13d,14
-+	mov	r15d,ebx
-+
-+	xor	r13d,eax
-+	ror	r14d,9
-+	xor	r15d,ecx
-+
-+	mov	DWORD[48+rsp],r12d
-+	xor	r14d,r8d
-+	and	r15d,eax
-+
-+	ror	r13d,5
-+	add	r12d,edx
-+	xor	r15d,ecx
-+
-+	ror	r14d,11
-+	xor	r13d,eax
-+	add	r12d,r15d
-+
-+	mov	r15d,r8d
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,r8d
-+
-+	xor	r15d,r9d
-+	ror	r13d,6
-+	mov	edx,r9d
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	edx,edi
-+	add	r11d,r12d
-+	add	edx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[56+rsp]
-+	mov	edi,DWORD[44+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	edx,r14d
-+	mov	r14d,edi
-+	ror	edi,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	edi,r14d
-+	shr	r14d,10
-+
-+	ror	edi,17
-+	xor	r12d,r13d
-+	xor	edi,r14d
-+	add	r12d,DWORD[24+rsp]
-+
-+	add	r12d,DWORD[52+rsp]
-+	mov	r13d,r11d
-+	add	r12d,edi
-+	mov	r14d,edx
-+	ror	r13d,14
-+	mov	edi,eax
-+
-+	xor	r13d,r11d
-+	ror	r14d,9
-+	xor	edi,ebx
-+
-+	mov	DWORD[52+rsp],r12d
-+	xor	r14d,edx
-+	and	edi,r11d
-+
-+	ror	r13d,5
-+	add	r12d,ecx
-+	xor	edi,ebx
-+
-+	ror	r14d,11
-+	xor	r13d,r11d
-+	add	r12d,edi
-+
-+	mov	edi,edx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,edx
-+
-+	xor	edi,r8d
-+	ror	r13d,6
-+	mov	ecx,r8d
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	ecx,r15d
-+	add	r10d,r12d
-+	add	ecx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[60+rsp]
-+	mov	r15d,DWORD[48+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	ecx,r14d
-+	mov	r14d,r15d
-+	ror	r15d,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	r15d,r14d
-+	shr	r14d,10
-+
-+	ror	r15d,17
-+	xor	r12d,r13d
-+	xor	r15d,r14d
-+	add	r12d,DWORD[28+rsp]
-+
-+	add	r12d,DWORD[56+rsp]
-+	mov	r13d,r10d
-+	add	r12d,r15d
-+	mov	r14d,ecx
-+	ror	r13d,14
-+	mov	r15d,r11d
-+
-+	xor	r13d,r10d
-+	ror	r14d,9
-+	xor	r15d,eax
-+
-+	mov	DWORD[56+rsp],r12d
-+	xor	r14d,ecx
-+	and	r15d,r10d
-+
-+	ror	r13d,5
-+	add	r12d,ebx
-+	xor	r15d,eax
-+
-+	ror	r14d,11
-+	xor	r13d,r10d
-+	add	r12d,r15d
-+
-+	mov	r15d,ecx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,ecx
-+
-+	xor	r15d,edx
-+	ror	r13d,6
-+	mov	ebx,edx
-+
-+	and	edi,r15d
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	ebx,edi
-+	add	r9d,r12d
-+	add	ebx,r12d
-+
-+	lea	rbp,[4+rbp]
-+	mov	r13d,DWORD[rsp]
-+	mov	edi,DWORD[52+rsp]
-+
-+	mov	r12d,r13d
-+	ror	r13d,11
-+	add	ebx,r14d
-+	mov	r14d,edi
-+	ror	edi,2
-+
-+	xor	r13d,r12d
-+	shr	r12d,3
-+	ror	r13d,7
-+	xor	edi,r14d
-+	shr	r14d,10
-+
-+	ror	edi,17
-+	xor	r12d,r13d
-+	xor	edi,r14d
-+	add	r12d,DWORD[32+rsp]
-+
-+	add	r12d,DWORD[60+rsp]
-+	mov	r13d,r9d
-+	add	r12d,edi
-+	mov	r14d,ebx
-+	ror	r13d,14
-+	mov	edi,r10d
-+
-+	xor	r13d,r9d
-+	ror	r14d,9
-+	xor	edi,r11d
-+
-+	mov	DWORD[60+rsp],r12d
-+	xor	r14d,ebx
-+	and	edi,r9d
-+
-+	ror	r13d,5
-+	add	r12d,eax
-+	xor	edi,r11d
-+
-+	ror	r14d,11
-+	xor	r13d,r9d
-+	add	r12d,edi
-+
-+	mov	edi,ebx
-+	add	r12d,DWORD[rbp]
-+	xor	r14d,ebx
-+
-+	xor	edi,ecx
-+	ror	r13d,6
-+	mov	eax,ecx
-+
-+	and	r15d,edi
-+	ror	r14d,2
-+	add	r12d,r13d
-+
-+	xor	eax,r15d
-+	add	r8d,r12d
-+	add	eax,r12d
-+
-+	lea	rbp,[20+rbp]
-+	cmp	BYTE[3+rbp],0
-+	jnz	NEAR $L$rounds_16_xx
-+
-+	mov	rdi,QWORD[((64+0))+rsp]
-+	add	eax,r14d
-+	lea	rsi,[64+rsi]
-+
-+	add	eax,DWORD[rdi]
-+	add	ebx,DWORD[4+rdi]
-+	add	ecx,DWORD[8+rdi]
-+	add	edx,DWORD[12+rdi]
-+	add	r8d,DWORD[16+rdi]
-+	add	r9d,DWORD[20+rdi]
-+	add	r10d,DWORD[24+rdi]
-+	add	r11d,DWORD[28+rdi]
-+
-+	cmp	rsi,QWORD[((64+16))+rsp]
-+
-+	mov	DWORD[rdi],eax
-+	mov	DWORD[4+rdi],ebx
-+	mov	DWORD[8+rdi],ecx
-+	mov	DWORD[12+rdi],edx
-+	mov	DWORD[16+rdi],r8d
-+	mov	DWORD[20+rdi],r9d
-+	mov	DWORD[24+rdi],r10d
-+	mov	DWORD[28+rdi],r11d
-+	jb	NEAR $L$loop
-+
-+	mov	rsi,QWORD[((64+24))+rsp]
-+	mov	r15,QWORD[rsi]
-+	mov	r14,QWORD[8+rsi]
-+	mov	r13,QWORD[16+rsi]
-+	mov	r12,QWORD[24+rsi]
-+	mov	rbp,QWORD[32+rsi]
-+	mov	rbx,QWORD[40+rsi]
-+	lea	rsp,[48+rsi]
-+$L$epilogue:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha256_block_data_order:
-+ALIGN	64
-+
-+K256:
-+	DD	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
-+	DD	0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
-+	DD	0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
-+	DD	0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
-+	DD	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
-+	DD	0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
-+	DD	0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
-+	DD	0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
-+	DD	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
-+	DD	0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
-+	DD	0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
-+	DD	0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
-+	DD	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
-+	DD	0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
-+	DD	0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
-+	DD	0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
-+	DD	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
-+	DD	0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
-+	DD	0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
-+	DD	0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
-+	DD	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
-+	DD	0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
-+	DD	0xd192e819,0xd6990624,0xf40e3585,0x106aa070
-+	DD	0xd192e819,0xd6990624,0xf40e3585,0x106aa070
-+	DD	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
-+	DD	0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
-+	DD	0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
-+	DD	0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
-+	DD	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
-+	DD	0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
-+	DD	0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
-+	DD	0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
-+
-+	DD	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
-+	DD	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
-+	DD	0x03020100,0x0b0a0908,0xffffffff,0xffffffff
-+	DD	0x03020100,0x0b0a0908,0xffffffff,0xffffffff
-+	DD	0xffffffff,0xffffffff,0x03020100,0x0b0a0908
-+	DD	0xffffffff,0xffffffff,0x03020100,0x0b0a0908
-+DB	83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
-+DB	110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54
-+DB	52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
-+DB	32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
-+DB	111,114,103,62,0
-+
-+ALIGN	64
-+sha256_block_data_order_shaext:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha256_block_data_order_shaext:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+_shaext_shortcut:
-+	lea	rsp,[((-88))+rsp]
-+	movaps	XMMWORD[(-8-80)+rax],xmm6
-+	movaps	XMMWORD[(-8-64)+rax],xmm7
-+	movaps	XMMWORD[(-8-48)+rax],xmm8
-+	movaps	XMMWORD[(-8-32)+rax],xmm9
-+	movaps	XMMWORD[(-8-16)+rax],xmm10
-+$L$prologue_shaext:
-+	lea	rcx,[((K256+128))]
-+	movdqu	xmm1,XMMWORD[rdi]
-+	movdqu	xmm2,XMMWORD[16+rdi]
-+	movdqa	xmm7,XMMWORD[((512-128))+rcx]
-+
-+	pshufd	xmm0,xmm1,0x1b
-+	pshufd	xmm1,xmm1,0xb1
-+	pshufd	xmm2,xmm2,0x1b
-+	movdqa	xmm8,xmm7
-+DB	102,15,58,15,202,8
-+	punpcklqdq	xmm2,xmm0
-+	jmp	NEAR $L$oop_shaext
-+
-+ALIGN	16
-+$L$oop_shaext:
-+	movdqu	xmm3,XMMWORD[rsi]
-+	movdqu	xmm4,XMMWORD[16+rsi]
-+	movdqu	xmm5,XMMWORD[32+rsi]
-+DB	102,15,56,0,223
-+	movdqu	xmm6,XMMWORD[48+rsi]
-+
-+	movdqa	xmm0,XMMWORD[((0-128))+rcx]
-+	paddd	xmm0,xmm3
-+DB	102,15,56,0,231
-+	movdqa	xmm10,xmm2
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	nop
-+	movdqa	xmm9,xmm1
-+DB	15,56,203,202
-+
-+	movdqa	xmm0,XMMWORD[((32-128))+rcx]
-+	paddd	xmm0,xmm4
-+DB	102,15,56,0,239
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	lea	rsi,[64+rsi]
-+DB	15,56,204,220
-+DB	15,56,203,202
-+
-+	movdqa	xmm0,XMMWORD[((64-128))+rcx]
-+	paddd	xmm0,xmm5
-+DB	102,15,56,0,247
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm6
-+DB	102,15,58,15,253,4
-+	nop
-+	paddd	xmm3,xmm7
-+DB	15,56,204,229
-+DB	15,56,203,202
-+
-+	movdqa	xmm0,XMMWORD[((96-128))+rcx]
-+	paddd	xmm0,xmm6
-+DB	15,56,205,222
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm3
-+DB	102,15,58,15,254,4
-+	nop
-+	paddd	xmm4,xmm7
-+DB	15,56,204,238
-+DB	15,56,203,202
-+	movdqa	xmm0,XMMWORD[((128-128))+rcx]
-+	paddd	xmm0,xmm3
-+DB	15,56,205,227
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm4
-+DB	102,15,58,15,251,4
-+	nop
-+	paddd	xmm5,xmm7
-+DB	15,56,204,243
-+DB	15,56,203,202
-+	movdqa	xmm0,XMMWORD[((160-128))+rcx]
-+	paddd	xmm0,xmm4
-+DB	15,56,205,236
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm5
-+DB	102,15,58,15,252,4
-+	nop
-+	paddd	xmm6,xmm7
-+DB	15,56,204,220
-+DB	15,56,203,202
-+	movdqa	xmm0,XMMWORD[((192-128))+rcx]
-+	paddd	xmm0,xmm5
-+DB	15,56,205,245
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm6
-+DB	102,15,58,15,253,4
-+	nop
-+	paddd	xmm3,xmm7
-+DB	15,56,204,229
-+DB	15,56,203,202
-+	movdqa	xmm0,XMMWORD[((224-128))+rcx]
-+	paddd	xmm0,xmm6
-+DB	15,56,205,222
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm3
-+DB	102,15,58,15,254,4
-+	nop
-+	paddd	xmm4,xmm7
-+DB	15,56,204,238
-+DB	15,56,203,202
-+	movdqa	xmm0,XMMWORD[((256-128))+rcx]
-+	paddd	xmm0,xmm3
-+DB	15,56,205,227
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm4
-+DB	102,15,58,15,251,4
-+	nop
-+	paddd	xmm5,xmm7
-+DB	15,56,204,243
-+DB	15,56,203,202
-+	movdqa	xmm0,XMMWORD[((288-128))+rcx]
-+	paddd	xmm0,xmm4
-+DB	15,56,205,236
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm5
-+DB	102,15,58,15,252,4
-+	nop
-+	paddd	xmm6,xmm7
-+DB	15,56,204,220
-+DB	15,56,203,202
-+	movdqa	xmm0,XMMWORD[((320-128))+rcx]
-+	paddd	xmm0,xmm5
-+DB	15,56,205,245
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm6
-+DB	102,15,58,15,253,4
-+	nop
-+	paddd	xmm3,xmm7
-+DB	15,56,204,229
-+DB	15,56,203,202
-+	movdqa	xmm0,XMMWORD[((352-128))+rcx]
-+	paddd	xmm0,xmm6
-+DB	15,56,205,222
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm3
-+DB	102,15,58,15,254,4
-+	nop
-+	paddd	xmm4,xmm7
-+DB	15,56,204,238
-+DB	15,56,203,202
-+	movdqa	xmm0,XMMWORD[((384-128))+rcx]
-+	paddd	xmm0,xmm3
-+DB	15,56,205,227
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm4
-+DB	102,15,58,15,251,4
-+	nop
-+	paddd	xmm5,xmm7
-+DB	15,56,204,243
-+DB	15,56,203,202
-+	movdqa	xmm0,XMMWORD[((416-128))+rcx]
-+	paddd	xmm0,xmm4
-+DB	15,56,205,236
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	movdqa	xmm7,xmm5
-+DB	102,15,58,15,252,4
-+DB	15,56,203,202
-+	paddd	xmm6,xmm7
-+
-+	movdqa	xmm0,XMMWORD[((448-128))+rcx]
-+	paddd	xmm0,xmm5
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+DB	15,56,205,245
-+	movdqa	xmm7,xmm8
-+DB	15,56,203,202
-+
-+	movdqa	xmm0,XMMWORD[((480-128))+rcx]
-+	paddd	xmm0,xmm6
-+	nop
-+DB	15,56,203,209
-+	pshufd	xmm0,xmm0,0x0e
-+	dec	rdx
-+	nop
-+DB	15,56,203,202
-+
-+	paddd	xmm2,xmm10
-+	paddd	xmm1,xmm9
-+	jnz	NEAR $L$oop_shaext
-+
-+	pshufd	xmm2,xmm2,0xb1
-+	pshufd	xmm7,xmm1,0x1b
-+	pshufd	xmm1,xmm1,0xb1
-+	punpckhqdq	xmm1,xmm2
-+DB	102,15,58,15,215,8
-+
-+	movdqu	XMMWORD[rdi],xmm1
-+	movdqu	XMMWORD[16+rdi],xmm2
-+	movaps	xmm6,XMMWORD[((-8-80))+rax]
-+	movaps	xmm7,XMMWORD[((-8-64))+rax]
-+	movaps	xmm8,XMMWORD[((-8-48))+rax]
-+	movaps	xmm9,XMMWORD[((-8-32))+rax]
-+	movaps	xmm10,XMMWORD[((-8-16))+rax]
-+	mov	rsp,rax
-+$L$epilogue_shaext:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha256_block_data_order_shaext:
-+
-+ALIGN	64
-+sha256_block_data_order_ssse3:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha256_block_data_order_ssse3:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+$L$ssse3_shortcut:
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	mov	r11,rsp
-+	shl	rdx,4
-+	sub	rsp,160
-+	lea	rdx,[rdx*4+rsi]
-+	and	rsp,-64
-+	mov	QWORD[((64+0))+rsp],rdi
-+	mov	QWORD[((64+8))+rsp],rsi
-+	mov	QWORD[((64+16))+rsp],rdx
-+	mov	QWORD[((64+24))+rsp],r11
-+	movaps	XMMWORD[(64+32)+rsp],xmm6
-+	movaps	XMMWORD[(64+48)+rsp],xmm7
-+	movaps	XMMWORD[(64+64)+rsp],xmm8
-+	movaps	XMMWORD[(64+80)+rsp],xmm9
-+$L$prologue_ssse3:
-+
-+	mov	eax,DWORD[rdi]
-+	mov	ebx,DWORD[4+rdi]
-+	mov	ecx,DWORD[8+rdi]
-+	mov	edx,DWORD[12+rdi]
-+	mov	r8d,DWORD[16+rdi]
-+	mov	r9d,DWORD[20+rdi]
-+	mov	r10d,DWORD[24+rdi]
-+	mov	r11d,DWORD[28+rdi]
-+
-+
-+	jmp	NEAR $L$loop_ssse3
-+ALIGN	16
-+$L$loop_ssse3:
-+	movdqa	xmm7,XMMWORD[((K256+512))]
-+	movdqu	xmm0,XMMWORD[rsi]
-+	movdqu	xmm1,XMMWORD[16+rsi]
-+	movdqu	xmm2,XMMWORD[32+rsi]
-+DB	102,15,56,0,199
-+	movdqu	xmm3,XMMWORD[48+rsi]
-+	lea	rbp,[K256]
-+DB	102,15,56,0,207
-+	movdqa	xmm4,XMMWORD[rbp]
-+	movdqa	xmm5,XMMWORD[32+rbp]
-+DB	102,15,56,0,215
-+	paddd	xmm4,xmm0
-+	movdqa	xmm6,XMMWORD[64+rbp]
-+DB	102,15,56,0,223
-+	movdqa	xmm7,XMMWORD[96+rbp]
-+	paddd	xmm5,xmm1
-+	paddd	xmm6,xmm2
-+	paddd	xmm7,xmm3
-+	movdqa	XMMWORD[rsp],xmm4
-+	mov	r14d,eax
-+	movdqa	XMMWORD[16+rsp],xmm5
-+	mov	edi,ebx
-+	movdqa	XMMWORD[32+rsp],xmm6
-+	xor	edi,ecx
-+	movdqa	XMMWORD[48+rsp],xmm7
-+	mov	r13d,r8d
-+	jmp	NEAR $L$ssse3_00_47
-+
-+ALIGN	16
-+$L$ssse3_00_47:
-+	sub	rbp,-128
-+	ror	r13d,14
-+	movdqa	xmm4,xmm1
-+	mov	eax,r14d
-+	mov	r12d,r9d
-+	movdqa	xmm7,xmm3
-+	ror	r14d,9
-+	xor	r13d,r8d
-+	xor	r12d,r10d
-+	ror	r13d,5
-+	xor	r14d,eax
-+DB	102,15,58,15,224,4
-+	and	r12d,r8d
-+	xor	r13d,r8d
-+DB	102,15,58,15,250,4
-+	add	r11d,DWORD[rsp]
-+	mov	r15d,eax
-+	xor	r12d,r10d
-+	ror	r14d,11
-+	movdqa	xmm5,xmm4
-+	xor	r15d,ebx
-+	add	r11d,r12d
-+	movdqa	xmm6,xmm4
-+	ror	r13d,6
-+	and	edi,r15d
-+	psrld	xmm4,3
-+	xor	r14d,eax
-+	add	r11d,r13d
-+	xor	edi,ebx
-+	paddd	xmm0,xmm7
-+	ror	r14d,2
-+	add	edx,r11d
-+	psrld	xmm6,7
-+	add	r11d,edi
-+	mov	r13d,edx
-+	pshufd	xmm7,xmm3,250
-+	add	r14d,r11d
-+	ror	r13d,14
-+	pslld	xmm5,14
-+	mov	r11d,r14d
-+	mov	r12d,r8d
-+	pxor	xmm4,xmm6
-+	ror	r14d,9
-+	xor	r13d,edx
-+	xor	r12d,r9d
-+	ror	r13d,5
-+	psrld	xmm6,11
-+	xor	r14d,r11d
-+	pxor	xmm4,xmm5
-+	and	r12d,edx
-+	xor	r13d,edx
-+	pslld	xmm5,11
-+	add	r10d,DWORD[4+rsp]
-+	mov	edi,r11d
-+	pxor	xmm4,xmm6
-+	xor	r12d,r9d
-+	ror	r14d,11
-+	movdqa	xmm6,xmm7
-+	xor	edi,eax
-+	add	r10d,r12d
-+	pxor	xmm4,xmm5
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,r11d
-+	psrld	xmm7,10
-+	add	r10d,r13d
-+	xor	r15d,eax
-+	paddd	xmm0,xmm4
-+	ror	r14d,2
-+	add	ecx,r10d
-+	psrlq	xmm6,17
-+	add	r10d,r15d
-+	mov	r13d,ecx
-+	add	r14d,r10d
-+	pxor	xmm7,xmm6
-+	ror	r13d,14
-+	mov	r10d,r14d
-+	mov	r12d,edx
-+	ror	r14d,9
-+	psrlq	xmm6,2
-+	xor	r13d,ecx
-+	xor	r12d,r8d
-+	pxor	xmm7,xmm6
-+	ror	r13d,5
-+	xor	r14d,r10d
-+	and	r12d,ecx
-+	pshufd	xmm7,xmm7,128
-+	xor	r13d,ecx
-+	add	r9d,DWORD[8+rsp]
-+	mov	r15d,r10d
-+	psrldq	xmm7,8
-+	xor	r12d,r8d
-+	ror	r14d,11
-+	xor	r15d,r11d
-+	add	r9d,r12d
-+	ror	r13d,6
-+	paddd	xmm0,xmm7
-+	and	edi,r15d
-+	xor	r14d,r10d
-+	add	r9d,r13d
-+	pshufd	xmm7,xmm0,80
-+	xor	edi,r11d
-+	ror	r14d,2
-+	add	ebx,r9d
-+	movdqa	xmm6,xmm7
-+	add	r9d,edi
-+	mov	r13d,ebx
-+	psrld	xmm7,10
-+	add	r14d,r9d
-+	ror	r13d,14
-+	psrlq	xmm6,17
-+	mov	r9d,r14d
-+	mov	r12d,ecx
-+	pxor	xmm7,xmm6
-+	ror	r14d,9
-+	xor	r13d,ebx
-+	xor	r12d,edx
-+	ror	r13d,5
-+	xor	r14d,r9d
-+	psrlq	xmm6,2
-+	and	r12d,ebx
-+	xor	r13d,ebx
-+	add	r8d,DWORD[12+rsp]
-+	pxor	xmm7,xmm6
-+	mov	edi,r9d
-+	xor	r12d,edx
-+	ror	r14d,11
-+	pshufd	xmm7,xmm7,8
-+	xor	edi,r10d
-+	add	r8d,r12d
-+	movdqa	xmm6,XMMWORD[rbp]
-+	ror	r13d,6
-+	and	r15d,edi
-+	pslldq	xmm7,8
-+	xor	r14d,r9d
-+	add	r8d,r13d
-+	xor	r15d,r10d
-+	paddd	xmm0,xmm7
-+	ror	r14d,2
-+	add	eax,r8d
-+	add	r8d,r15d
-+	paddd	xmm6,xmm0
-+	mov	r13d,eax
-+	add	r14d,r8d
-+	movdqa	XMMWORD[rsp],xmm6
-+	ror	r13d,14
-+	movdqa	xmm4,xmm2
-+	mov	r8d,r14d
-+	mov	r12d,ebx
-+	movdqa	xmm7,xmm0
-+	ror	r14d,9
-+	xor	r13d,eax
-+	xor	r12d,ecx
-+	ror	r13d,5
-+	xor	r14d,r8d
-+DB	102,15,58,15,225,4
-+	and	r12d,eax
-+	xor	r13d,eax
-+DB	102,15,58,15,251,4
-+	add	edx,DWORD[16+rsp]
-+	mov	r15d,r8d
-+	xor	r12d,ecx
-+	ror	r14d,11
-+	movdqa	xmm5,xmm4
-+	xor	r15d,r9d
-+	add	edx,r12d
-+	movdqa	xmm6,xmm4
-+	ror	r13d,6
-+	and	edi,r15d
-+	psrld	xmm4,3
-+	xor	r14d,r8d
-+	add	edx,r13d
-+	xor	edi,r9d
-+	paddd	xmm1,xmm7
-+	ror	r14d,2
-+	add	r11d,edx
-+	psrld	xmm6,7
-+	add	edx,edi
-+	mov	r13d,r11d
-+	pshufd	xmm7,xmm0,250
-+	add	r14d,edx
-+	ror	r13d,14
-+	pslld	xmm5,14
-+	mov	edx,r14d
-+	mov	r12d,eax
-+	pxor	xmm4,xmm6
-+	ror	r14d,9
-+	xor	r13d,r11d
-+	xor	r12d,ebx
-+	ror	r13d,5
-+	psrld	xmm6,11
-+	xor	r14d,edx
-+	pxor	xmm4,xmm5
-+	and	r12d,r11d
-+	xor	r13d,r11d
-+	pslld	xmm5,11
-+	add	ecx,DWORD[20+rsp]
-+	mov	edi,edx
-+	pxor	xmm4,xmm6
-+	xor	r12d,ebx
-+	ror	r14d,11
-+	movdqa	xmm6,xmm7
-+	xor	edi,r8d
-+	add	ecx,r12d
-+	pxor	xmm4,xmm5
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,edx
-+	psrld	xmm7,10
-+	add	ecx,r13d
-+	xor	r15d,r8d
-+	paddd	xmm1,xmm4
-+	ror	r14d,2
-+	add	r10d,ecx
-+	psrlq	xmm6,17
-+	add	ecx,r15d
-+	mov	r13d,r10d
-+	add	r14d,ecx
-+	pxor	xmm7,xmm6
-+	ror	r13d,14
-+	mov	ecx,r14d
-+	mov	r12d,r11d
-+	ror	r14d,9
-+	psrlq	xmm6,2
-+	xor	r13d,r10d
-+	xor	r12d,eax
-+	pxor	xmm7,xmm6
-+	ror	r13d,5
-+	xor	r14d,ecx
-+	and	r12d,r10d
-+	pshufd	xmm7,xmm7,128
-+	xor	r13d,r10d
-+	add	ebx,DWORD[24+rsp]
-+	mov	r15d,ecx
-+	psrldq	xmm7,8
-+	xor	r12d,eax
-+	ror	r14d,11
-+	xor	r15d,edx
-+	add	ebx,r12d
-+	ror	r13d,6
-+	paddd	xmm1,xmm7
-+	and	edi,r15d
-+	xor	r14d,ecx
-+	add	ebx,r13d
-+	pshufd	xmm7,xmm1,80
-+	xor	edi,edx
-+	ror	r14d,2
-+	add	r9d,ebx
-+	movdqa	xmm6,xmm7
-+	add	ebx,edi
-+	mov	r13d,r9d
-+	psrld	xmm7,10
-+	add	r14d,ebx
-+	ror	r13d,14
-+	psrlq	xmm6,17
-+	mov	ebx,r14d
-+	mov	r12d,r10d
-+	pxor	xmm7,xmm6
-+	ror	r14d,9
-+	xor	r13d,r9d
-+	xor	r12d,r11d
-+	ror	r13d,5
-+	xor	r14d,ebx
-+	psrlq	xmm6,2
-+	and	r12d,r9d
-+	xor	r13d,r9d
-+	add	eax,DWORD[28+rsp]
-+	pxor	xmm7,xmm6
-+	mov	edi,ebx
-+	xor	r12d,r11d
-+	ror	r14d,11
-+	pshufd	xmm7,xmm7,8
-+	xor	edi,ecx
-+	add	eax,r12d
-+	movdqa	xmm6,XMMWORD[32+rbp]
-+	ror	r13d,6
-+	and	r15d,edi
-+	pslldq	xmm7,8
-+	xor	r14d,ebx
-+	add	eax,r13d
-+	xor	r15d,ecx
-+	paddd	xmm1,xmm7
-+	ror	r14d,2
-+	add	r8d,eax
-+	add	eax,r15d
-+	paddd	xmm6,xmm1
-+	mov	r13d,r8d
-+	add	r14d,eax
-+	movdqa	XMMWORD[16+rsp],xmm6
-+	ror	r13d,14
-+	movdqa	xmm4,xmm3
-+	mov	eax,r14d
-+	mov	r12d,r9d
-+	movdqa	xmm7,xmm1
-+	ror	r14d,9
-+	xor	r13d,r8d
-+	xor	r12d,r10d
-+	ror	r13d,5
-+	xor	r14d,eax
-+DB	102,15,58,15,226,4
-+	and	r12d,r8d
-+	xor	r13d,r8d
-+DB	102,15,58,15,248,4
-+	add	r11d,DWORD[32+rsp]
-+	mov	r15d,eax
-+	xor	r12d,r10d
-+	ror	r14d,11
-+	movdqa	xmm5,xmm4
-+	xor	r15d,ebx
-+	add	r11d,r12d
-+	movdqa	xmm6,xmm4
-+	ror	r13d,6
-+	and	edi,r15d
-+	psrld	xmm4,3
-+	xor	r14d,eax
-+	add	r11d,r13d
-+	xor	edi,ebx
-+	paddd	xmm2,xmm7
-+	ror	r14d,2
-+	add	edx,r11d
-+	psrld	xmm6,7
-+	add	r11d,edi
-+	mov	r13d,edx
-+	pshufd	xmm7,xmm1,250
-+	add	r14d,r11d
-+	ror	r13d,14
-+	pslld	xmm5,14
-+	mov	r11d,r14d
-+	mov	r12d,r8d
-+	pxor	xmm4,xmm6
-+	ror	r14d,9
-+	xor	r13d,edx
-+	xor	r12d,r9d
-+	ror	r13d,5
-+	psrld	xmm6,11
-+	xor	r14d,r11d
-+	pxor	xmm4,xmm5
-+	and	r12d,edx
-+	xor	r13d,edx
-+	pslld	xmm5,11
-+	add	r10d,DWORD[36+rsp]
-+	mov	edi,r11d
-+	pxor	xmm4,xmm6
-+	xor	r12d,r9d
-+	ror	r14d,11
-+	movdqa	xmm6,xmm7
-+	xor	edi,eax
-+	add	r10d,r12d
-+	pxor	xmm4,xmm5
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,r11d
-+	psrld	xmm7,10
-+	add	r10d,r13d
-+	xor	r15d,eax
-+	paddd	xmm2,xmm4
-+	ror	r14d,2
-+	add	ecx,r10d
-+	psrlq	xmm6,17
-+	add	r10d,r15d
-+	mov	r13d,ecx
-+	add	r14d,r10d
-+	pxor	xmm7,xmm6
-+	ror	r13d,14
-+	mov	r10d,r14d
-+	mov	r12d,edx
-+	ror	r14d,9
-+	psrlq	xmm6,2
-+	xor	r13d,ecx
-+	xor	r12d,r8d
-+	pxor	xmm7,xmm6
-+	ror	r13d,5
-+	xor	r14d,r10d
-+	and	r12d,ecx
-+	pshufd	xmm7,xmm7,128
-+	xor	r13d,ecx
-+	add	r9d,DWORD[40+rsp]
-+	mov	r15d,r10d
-+	psrldq	xmm7,8
-+	xor	r12d,r8d
-+	ror	r14d,11
-+	xor	r15d,r11d
-+	add	r9d,r12d
-+	ror	r13d,6
-+	paddd	xmm2,xmm7
-+	and	edi,r15d
-+	xor	r14d,r10d
-+	add	r9d,r13d
-+	pshufd	xmm7,xmm2,80
-+	xor	edi,r11d
-+	ror	r14d,2
-+	add	ebx,r9d
-+	movdqa	xmm6,xmm7
-+	add	r9d,edi
-+	mov	r13d,ebx
-+	psrld	xmm7,10
-+	add	r14d,r9d
-+	ror	r13d,14
-+	psrlq	xmm6,17
-+	mov	r9d,r14d
-+	mov	r12d,ecx
-+	pxor	xmm7,xmm6
-+	ror	r14d,9
-+	xor	r13d,ebx
-+	xor	r12d,edx
-+	ror	r13d,5
-+	xor	r14d,r9d
-+	psrlq	xmm6,2
-+	and	r12d,ebx
-+	xor	r13d,ebx
-+	add	r8d,DWORD[44+rsp]
-+	pxor	xmm7,xmm6
-+	mov	edi,r9d
-+	xor	r12d,edx
-+	ror	r14d,11
-+	pshufd	xmm7,xmm7,8
-+	xor	edi,r10d
-+	add	r8d,r12d
-+	movdqa	xmm6,XMMWORD[64+rbp]
-+	ror	r13d,6
-+	and	r15d,edi
-+	pslldq	xmm7,8
-+	xor	r14d,r9d
-+	add	r8d,r13d
-+	xor	r15d,r10d
-+	paddd	xmm2,xmm7
-+	ror	r14d,2
-+	add	eax,r8d
-+	add	r8d,r15d
-+	paddd	xmm6,xmm2
-+	mov	r13d,eax
-+	add	r14d,r8d
-+	movdqa	XMMWORD[32+rsp],xmm6
-+	ror	r13d,14
-+	movdqa	xmm4,xmm0
-+	mov	r8d,r14d
-+	mov	r12d,ebx
-+	movdqa	xmm7,xmm2
-+	ror	r14d,9
-+	xor	r13d,eax
-+	xor	r12d,ecx
-+	ror	r13d,5
-+	xor	r14d,r8d
-+DB	102,15,58,15,227,4
-+	and	r12d,eax
-+	xor	r13d,eax
-+DB	102,15,58,15,249,4
-+	add	edx,DWORD[48+rsp]
-+	mov	r15d,r8d
-+	xor	r12d,ecx
-+	ror	r14d,11
-+	movdqa	xmm5,xmm4
-+	xor	r15d,r9d
-+	add	edx,r12d
-+	movdqa	xmm6,xmm4
-+	ror	r13d,6
-+	and	edi,r15d
-+	psrld	xmm4,3
-+	xor	r14d,r8d
-+	add	edx,r13d
-+	xor	edi,r9d
-+	paddd	xmm3,xmm7
-+	ror	r14d,2
-+	add	r11d,edx
-+	psrld	xmm6,7
-+	add	edx,edi
-+	mov	r13d,r11d
-+	pshufd	xmm7,xmm2,250
-+	add	r14d,edx
-+	ror	r13d,14
-+	pslld	xmm5,14
-+	mov	edx,r14d
-+	mov	r12d,eax
-+	pxor	xmm4,xmm6
-+	ror	r14d,9
-+	xor	r13d,r11d
-+	xor	r12d,ebx
-+	ror	r13d,5
-+	psrld	xmm6,11
-+	xor	r14d,edx
-+	pxor	xmm4,xmm5
-+	and	r12d,r11d
-+	xor	r13d,r11d
-+	pslld	xmm5,11
-+	add	ecx,DWORD[52+rsp]
-+	mov	edi,edx
-+	pxor	xmm4,xmm6
-+	xor	r12d,ebx
-+	ror	r14d,11
-+	movdqa	xmm6,xmm7
-+	xor	edi,r8d
-+	add	ecx,r12d
-+	pxor	xmm4,xmm5
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,edx
-+	psrld	xmm7,10
-+	add	ecx,r13d
-+	xor	r15d,r8d
-+	paddd	xmm3,xmm4
-+	ror	r14d,2
-+	add	r10d,ecx
-+	psrlq	xmm6,17
-+	add	ecx,r15d
-+	mov	r13d,r10d
-+	add	r14d,ecx
-+	pxor	xmm7,xmm6
-+	ror	r13d,14
-+	mov	ecx,r14d
-+	mov	r12d,r11d
-+	ror	r14d,9
-+	psrlq	xmm6,2
-+	xor	r13d,r10d
-+	xor	r12d,eax
-+	pxor	xmm7,xmm6
-+	ror	r13d,5
-+	xor	r14d,ecx
-+	and	r12d,r10d
-+	pshufd	xmm7,xmm7,128
-+	xor	r13d,r10d
-+	add	ebx,DWORD[56+rsp]
-+	mov	r15d,ecx
-+	psrldq	xmm7,8
-+	xor	r12d,eax
-+	ror	r14d,11
-+	xor	r15d,edx
-+	add	ebx,r12d
-+	ror	r13d,6
-+	paddd	xmm3,xmm7
-+	and	edi,r15d
-+	xor	r14d,ecx
-+	add	ebx,r13d
-+	pshufd	xmm7,xmm3,80
-+	xor	edi,edx
-+	ror	r14d,2
-+	add	r9d,ebx
-+	movdqa	xmm6,xmm7
-+	add	ebx,edi
-+	mov	r13d,r9d
-+	psrld	xmm7,10
-+	add	r14d,ebx
-+	ror	r13d,14
-+	psrlq	xmm6,17
-+	mov	ebx,r14d
-+	mov	r12d,r10d
-+	pxor	xmm7,xmm6
-+	ror	r14d,9
-+	xor	r13d,r9d
-+	xor	r12d,r11d
-+	ror	r13d,5
-+	xor	r14d,ebx
-+	psrlq	xmm6,2
-+	and	r12d,r9d
-+	xor	r13d,r9d
-+	add	eax,DWORD[60+rsp]
-+	pxor	xmm7,xmm6
-+	mov	edi,ebx
-+	xor	r12d,r11d
-+	ror	r14d,11
-+	pshufd	xmm7,xmm7,8
-+	xor	edi,ecx
-+	add	eax,r12d
-+	movdqa	xmm6,XMMWORD[96+rbp]
-+	ror	r13d,6
-+	and	r15d,edi
-+	pslldq	xmm7,8
-+	xor	r14d,ebx
-+	add	eax,r13d
-+	xor	r15d,ecx
-+	paddd	xmm3,xmm7
-+	ror	r14d,2
-+	add	r8d,eax
-+	add	eax,r15d
-+	paddd	xmm6,xmm3
-+	mov	r13d,r8d
-+	add	r14d,eax
-+	movdqa	XMMWORD[48+rsp],xmm6
-+	cmp	BYTE[131+rbp],0
-+	jne	NEAR $L$ssse3_00_47
-+	ror	r13d,14
-+	mov	eax,r14d
-+	mov	r12d,r9d
-+	ror	r14d,9
-+	xor	r13d,r8d
-+	xor	r12d,r10d
-+	ror	r13d,5
-+	xor	r14d,eax
-+	and	r12d,r8d
-+	xor	r13d,r8d
-+	add	r11d,DWORD[rsp]
-+	mov	r15d,eax
-+	xor	r12d,r10d
-+	ror	r14d,11
-+	xor	r15d,ebx
-+	add	r11d,r12d
-+	ror	r13d,6
-+	and	edi,r15d
-+	xor	r14d,eax
-+	add	r11d,r13d
-+	xor	edi,ebx
-+	ror	r14d,2
-+	add	edx,r11d
-+	add	r11d,edi
-+	mov	r13d,edx
-+	add	r14d,r11d
-+	ror	r13d,14
-+	mov	r11d,r14d
-+	mov	r12d,r8d
-+	ror	r14d,9
-+	xor	r13d,edx
-+	xor	r12d,r9d
-+	ror	r13d,5
-+	xor	r14d,r11d
-+	and	r12d,edx
-+	xor	r13d,edx
-+	add	r10d,DWORD[4+rsp]
-+	mov	edi,r11d
-+	xor	r12d,r9d
-+	ror	r14d,11
-+	xor	edi,eax
-+	add	r10d,r12d
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,r11d
-+	add	r10d,r13d
-+	xor	r15d,eax
-+	ror	r14d,2
-+	add	ecx,r10d
-+	add	r10d,r15d
-+	mov	r13d,ecx
-+	add	r14d,r10d
-+	ror	r13d,14
-+	mov	r10d,r14d
-+	mov	r12d,edx
-+	ror	r14d,9
-+	xor	r13d,ecx
-+	xor	r12d,r8d
-+	ror	r13d,5
-+	xor	r14d,r10d
-+	and	r12d,ecx
-+	xor	r13d,ecx
-+	add	r9d,DWORD[8+rsp]
-+	mov	r15d,r10d
-+	xor	r12d,r8d
-+	ror	r14d,11
-+	xor	r15d,r11d
-+	add	r9d,r12d
-+	ror	r13d,6
-+	and	edi,r15d
-+	xor	r14d,r10d
-+	add	r9d,r13d
-+	xor	edi,r11d
-+	ror	r14d,2
-+	add	ebx,r9d
-+	add	r9d,edi
-+	mov	r13d,ebx
-+	add	r14d,r9d
-+	ror	r13d,14
-+	mov	r9d,r14d
-+	mov	r12d,ecx
-+	ror	r14d,9
-+	xor	r13d,ebx
-+	xor	r12d,edx
-+	ror	r13d,5
-+	xor	r14d,r9d
-+	and	r12d,ebx
-+	xor	r13d,ebx
-+	add	r8d,DWORD[12+rsp]
-+	mov	edi,r9d
-+	xor	r12d,edx
-+	ror	r14d,11
-+	xor	edi,r10d
-+	add	r8d,r12d
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,r9d
-+	add	r8d,r13d
-+	xor	r15d,r10d
-+	ror	r14d,2
-+	add	eax,r8d
-+	add	r8d,r15d
-+	mov	r13d,eax
-+	add	r14d,r8d
-+	ror	r13d,14
-+	mov	r8d,r14d
-+	mov	r12d,ebx
-+	ror	r14d,9
-+	xor	r13d,eax
-+	xor	r12d,ecx
-+	ror	r13d,5
-+	xor	r14d,r8d
-+	and	r12d,eax
-+	xor	r13d,eax
-+	add	edx,DWORD[16+rsp]
-+	mov	r15d,r8d
-+	xor	r12d,ecx
-+	ror	r14d,11
-+	xor	r15d,r9d
-+	add	edx,r12d
-+	ror	r13d,6
-+	and	edi,r15d
-+	xor	r14d,r8d
-+	add	edx,r13d
-+	xor	edi,r9d
-+	ror	r14d,2
-+	add	r11d,edx
-+	add	edx,edi
-+	mov	r13d,r11d
-+	add	r14d,edx
-+	ror	r13d,14
-+	mov	edx,r14d
-+	mov	r12d,eax
-+	ror	r14d,9
-+	xor	r13d,r11d
-+	xor	r12d,ebx
-+	ror	r13d,5
-+	xor	r14d,edx
-+	and	r12d,r11d
-+	xor	r13d,r11d
-+	add	ecx,DWORD[20+rsp]
-+	mov	edi,edx
-+	xor	r12d,ebx
-+	ror	r14d,11
-+	xor	edi,r8d
-+	add	ecx,r12d
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,edx
-+	add	ecx,r13d
-+	xor	r15d,r8d
-+	ror	r14d,2
-+	add	r10d,ecx
-+	add	ecx,r15d
-+	mov	r13d,r10d
-+	add	r14d,ecx
-+	ror	r13d,14
-+	mov	ecx,r14d
-+	mov	r12d,r11d
-+	ror	r14d,9
-+	xor	r13d,r10d
-+	xor	r12d,eax
-+	ror	r13d,5
-+	xor	r14d,ecx
-+	and	r12d,r10d
-+	xor	r13d,r10d
-+	add	ebx,DWORD[24+rsp]
-+	mov	r15d,ecx
-+	xor	r12d,eax
-+	ror	r14d,11
-+	xor	r15d,edx
-+	add	ebx,r12d
-+	ror	r13d,6
-+	and	edi,r15d
-+	xor	r14d,ecx
-+	add	ebx,r13d
-+	xor	edi,edx
-+	ror	r14d,2
-+	add	r9d,ebx
-+	add	ebx,edi
-+	mov	r13d,r9d
-+	add	r14d,ebx
-+	ror	r13d,14
-+	mov	ebx,r14d
-+	mov	r12d,r10d
-+	ror	r14d,9
-+	xor	r13d,r9d
-+	xor	r12d,r11d
-+	ror	r13d,5
-+	xor	r14d,ebx
-+	and	r12d,r9d
-+	xor	r13d,r9d
-+	add	eax,DWORD[28+rsp]
-+	mov	edi,ebx
-+	xor	r12d,r11d
-+	ror	r14d,11
-+	xor	edi,ecx
-+	add	eax,r12d
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,ebx
-+	add	eax,r13d
-+	xor	r15d,ecx
-+	ror	r14d,2
-+	add	r8d,eax
-+	add	eax,r15d
-+	mov	r13d,r8d
-+	add	r14d,eax
-+	ror	r13d,14
-+	mov	eax,r14d
-+	mov	r12d,r9d
-+	ror	r14d,9
-+	xor	r13d,r8d
-+	xor	r12d,r10d
-+	ror	r13d,5
-+	xor	r14d,eax
-+	and	r12d,r8d
-+	xor	r13d,r8d
-+	add	r11d,DWORD[32+rsp]
-+	mov	r15d,eax
-+	xor	r12d,r10d
-+	ror	r14d,11
-+	xor	r15d,ebx
-+	add	r11d,r12d
-+	ror	r13d,6
-+	and	edi,r15d
-+	xor	r14d,eax
-+	add	r11d,r13d
-+	xor	edi,ebx
-+	ror	r14d,2
-+	add	edx,r11d
-+	add	r11d,edi
-+	mov	r13d,edx
-+	add	r14d,r11d
-+	ror	r13d,14
-+	mov	r11d,r14d
-+	mov	r12d,r8d
-+	ror	r14d,9
-+	xor	r13d,edx
-+	xor	r12d,r9d
-+	ror	r13d,5
-+	xor	r14d,r11d
-+	and	r12d,edx
-+	xor	r13d,edx
-+	add	r10d,DWORD[36+rsp]
-+	mov	edi,r11d
-+	xor	r12d,r9d
-+	ror	r14d,11
-+	xor	edi,eax
-+	add	r10d,r12d
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,r11d
-+	add	r10d,r13d
-+	xor	r15d,eax
-+	ror	r14d,2
-+	add	ecx,r10d
-+	add	r10d,r15d
-+	mov	r13d,ecx
-+	add	r14d,r10d
-+	ror	r13d,14
-+	mov	r10d,r14d
-+	mov	r12d,edx
-+	ror	r14d,9
-+	xor	r13d,ecx
-+	xor	r12d,r8d
-+	ror	r13d,5
-+	xor	r14d,r10d
-+	and	r12d,ecx
-+	xor	r13d,ecx
-+	add	r9d,DWORD[40+rsp]
-+	mov	r15d,r10d
-+	xor	r12d,r8d
-+	ror	r14d,11
-+	xor	r15d,r11d
-+	add	r9d,r12d
-+	ror	r13d,6
-+	and	edi,r15d
-+	xor	r14d,r10d
-+	add	r9d,r13d
-+	xor	edi,r11d
-+	ror	r14d,2
-+	add	ebx,r9d
-+	add	r9d,edi
-+	mov	r13d,ebx
-+	add	r14d,r9d
-+	ror	r13d,14
-+	mov	r9d,r14d
-+	mov	r12d,ecx
-+	ror	r14d,9
-+	xor	r13d,ebx
-+	xor	r12d,edx
-+	ror	r13d,5
-+	xor	r14d,r9d
-+	and	r12d,ebx
-+	xor	r13d,ebx
-+	add	r8d,DWORD[44+rsp]
-+	mov	edi,r9d
-+	xor	r12d,edx
-+	ror	r14d,11
-+	xor	edi,r10d
-+	add	r8d,r12d
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,r9d
-+	add	r8d,r13d
-+	xor	r15d,r10d
-+	ror	r14d,2
-+	add	eax,r8d
-+	add	r8d,r15d
-+	mov	r13d,eax
-+	add	r14d,r8d
-+	ror	r13d,14
-+	mov	r8d,r14d
-+	mov	r12d,ebx
-+	ror	r14d,9
-+	xor	r13d,eax
-+	xor	r12d,ecx
-+	ror	r13d,5
-+	xor	r14d,r8d
-+	and	r12d,eax
-+	xor	r13d,eax
-+	add	edx,DWORD[48+rsp]
-+	mov	r15d,r8d
-+	xor	r12d,ecx
-+	ror	r14d,11
-+	xor	r15d,r9d
-+	add	edx,r12d
-+	ror	r13d,6
-+	and	edi,r15d
-+	xor	r14d,r8d
-+	add	edx,r13d
-+	xor	edi,r9d
-+	ror	r14d,2
-+	add	r11d,edx
-+	add	edx,edi
-+	mov	r13d,r11d
-+	add	r14d,edx
-+	ror	r13d,14
-+	mov	edx,r14d
-+	mov	r12d,eax
-+	ror	r14d,9
-+	xor	r13d,r11d
-+	xor	r12d,ebx
-+	ror	r13d,5
-+	xor	r14d,edx
-+	and	r12d,r11d
-+	xor	r13d,r11d
-+	add	ecx,DWORD[52+rsp]
-+	mov	edi,edx
-+	xor	r12d,ebx
-+	ror	r14d,11
-+	xor	edi,r8d
-+	add	ecx,r12d
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,edx
-+	add	ecx,r13d
-+	xor	r15d,r8d
-+	ror	r14d,2
-+	add	r10d,ecx
-+	add	ecx,r15d
-+	mov	r13d,r10d
-+	add	r14d,ecx
-+	ror	r13d,14
-+	mov	ecx,r14d
-+	mov	r12d,r11d
-+	ror	r14d,9
-+	xor	r13d,r10d
-+	xor	r12d,eax
-+	ror	r13d,5
-+	xor	r14d,ecx
-+	and	r12d,r10d
-+	xor	r13d,r10d
-+	add	ebx,DWORD[56+rsp]
-+	mov	r15d,ecx
-+	xor	r12d,eax
-+	ror	r14d,11
-+	xor	r15d,edx
-+	add	ebx,r12d
-+	ror	r13d,6
-+	and	edi,r15d
-+	xor	r14d,ecx
-+	add	ebx,r13d
-+	xor	edi,edx
-+	ror	r14d,2
-+	add	r9d,ebx
-+	add	ebx,edi
-+	mov	r13d,r9d
-+	add	r14d,ebx
-+	ror	r13d,14
-+	mov	ebx,r14d
-+	mov	r12d,r10d
-+	ror	r14d,9
-+	xor	r13d,r9d
-+	xor	r12d,r11d
-+	ror	r13d,5
-+	xor	r14d,ebx
-+	and	r12d,r9d
-+	xor	r13d,r9d
-+	add	eax,DWORD[60+rsp]
-+	mov	edi,ebx
-+	xor	r12d,r11d
-+	ror	r14d,11
-+	xor	edi,ecx
-+	add	eax,r12d
-+	ror	r13d,6
-+	and	r15d,edi
-+	xor	r14d,ebx
-+	add	eax,r13d
-+	xor	r15d,ecx
-+	ror	r14d,2
-+	add	r8d,eax
-+	add	eax,r15d
-+	mov	r13d,r8d
-+	add	r14d,eax
-+	mov	rdi,QWORD[((64+0))+rsp]
-+	mov	eax,r14d
-+
-+	add	eax,DWORD[rdi]
-+	lea	rsi,[64+rsi]
-+	add	ebx,DWORD[4+rdi]
-+	add	ecx,DWORD[8+rdi]
-+	add	edx,DWORD[12+rdi]
-+	add	r8d,DWORD[16+rdi]
-+	add	r9d,DWORD[20+rdi]
-+	add	r10d,DWORD[24+rdi]
-+	add	r11d,DWORD[28+rdi]
-+
-+	cmp	rsi,QWORD[((64+16))+rsp]
-+
-+	mov	DWORD[rdi],eax
-+	mov	DWORD[4+rdi],ebx
-+	mov	DWORD[8+rdi],ecx
-+	mov	DWORD[12+rdi],edx
-+	mov	DWORD[16+rdi],r8d
-+	mov	DWORD[20+rdi],r9d
-+	mov	DWORD[24+rdi],r10d
-+	mov	DWORD[28+rdi],r11d
-+	jb	NEAR $L$loop_ssse3
-+
-+	mov	rsi,QWORD[((64+24))+rsp]
-+	movaps	xmm6,XMMWORD[((64+32))+rsp]
-+	movaps	xmm7,XMMWORD[((64+48))+rsp]
-+	movaps	xmm8,XMMWORD[((64+64))+rsp]
-+	movaps	xmm9,XMMWORD[((64+80))+rsp]
-+	mov	r15,QWORD[rsi]
-+	mov	r14,QWORD[8+rsi]
-+	mov	r13,QWORD[16+rsi]
-+	mov	r12,QWORD[24+rsi]
-+	mov	rbp,QWORD[32+rsi]
-+	mov	rbx,QWORD[40+rsi]
-+	lea	rsp,[48+rsi]
-+$L$epilogue_ssse3:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha256_block_data_order_ssse3:
-+
-+ALIGN	64
-+sha256_block_data_order_avx:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha256_block_data_order_avx:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+$L$avx_shortcut:
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	mov	r11,rsp
-+	shl	rdx,4
-+	sub	rsp,160
-+	lea	rdx,[rdx*4+rsi]
-+	and	rsp,-64
-+	mov	QWORD[((64+0))+rsp],rdi
-+	mov	QWORD[((64+8))+rsp],rsi
-+	mov	QWORD[((64+16))+rsp],rdx
-+	mov	QWORD[((64+24))+rsp],r11
-+	movaps	XMMWORD[(64+32)+rsp],xmm6
-+	movaps	XMMWORD[(64+48)+rsp],xmm7
-+	movaps	XMMWORD[(64+64)+rsp],xmm8
-+	movaps	XMMWORD[(64+80)+rsp],xmm9
-+$L$prologue_avx:
-+
-+	vzeroupper
-+	mov	eax,DWORD[rdi]
-+	mov	ebx,DWORD[4+rdi]
-+	mov	ecx,DWORD[8+rdi]
-+	mov	edx,DWORD[12+rdi]
-+	mov	r8d,DWORD[16+rdi]
-+	mov	r9d,DWORD[20+rdi]
-+	mov	r10d,DWORD[24+rdi]
-+	mov	r11d,DWORD[28+rdi]
-+	vmovdqa	xmm8,XMMWORD[((K256+512+32))]
-+	vmovdqa	xmm9,XMMWORD[((K256+512+64))]
-+	jmp	NEAR $L$loop_avx
-+ALIGN	16
-+$L$loop_avx:
-+	vmovdqa	xmm7,XMMWORD[((K256+512))]
-+	vmovdqu	xmm0,XMMWORD[rsi]
-+	vmovdqu	xmm1,XMMWORD[16+rsi]
-+	vmovdqu	xmm2,XMMWORD[32+rsi]
-+	vmovdqu	xmm3,XMMWORD[48+rsi]
-+	vpshufb	xmm0,xmm0,xmm7
-+	lea	rbp,[K256]
-+	vpshufb	xmm1,xmm1,xmm7
-+	vpshufb	xmm2,xmm2,xmm7
-+	vpaddd	xmm4,xmm0,XMMWORD[rbp]
-+	vpshufb	xmm3,xmm3,xmm7
-+	vpaddd	xmm5,xmm1,XMMWORD[32+rbp]
-+	vpaddd	xmm6,xmm2,XMMWORD[64+rbp]
-+	vpaddd	xmm7,xmm3,XMMWORD[96+rbp]
-+	vmovdqa	XMMWORD[rsp],xmm4
-+	mov	r14d,eax
-+	vmovdqa	XMMWORD[16+rsp],xmm5
-+	mov	edi,ebx
-+	vmovdqa	XMMWORD[32+rsp],xmm6
-+	xor	edi,ecx
-+	vmovdqa	XMMWORD[48+rsp],xmm7
-+	mov	r13d,r8d
-+	jmp	NEAR $L$avx_00_47
-+
-+ALIGN	16
-+$L$avx_00_47:
-+	sub	rbp,-128
-+	vpalignr	xmm4,xmm1,xmm0,4
-+	shrd	r13d,r13d,14
-+	mov	eax,r14d
-+	mov	r12d,r9d
-+	vpalignr	xmm7,xmm3,xmm2,4
-+	shrd	r14d,r14d,9
-+	xor	r13d,r8d
-+	xor	r12d,r10d
-+	vpsrld	xmm6,xmm4,7
-+	shrd	r13d,r13d,5
-+	xor	r14d,eax
-+	and	r12d,r8d
-+	vpaddd	xmm0,xmm0,xmm7
-+	xor	r13d,r8d
-+	add	r11d,DWORD[rsp]
-+	mov	r15d,eax
-+	vpsrld	xmm7,xmm4,3
-+	xor	r12d,r10d
-+	shrd	r14d,r14d,11
-+	xor	r15d,ebx
-+	vpslld	xmm5,xmm4,14
-+	add	r11d,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	vpxor	xmm4,xmm7,xmm6
-+	xor	r14d,eax
-+	add	r11d,r13d
-+	xor	edi,ebx
-+	vpshufd	xmm7,xmm3,250
-+	shrd	r14d,r14d,2
-+	add	edx,r11d
-+	add	r11d,edi
-+	vpsrld	xmm6,xmm6,11
-+	mov	r13d,edx
-+	add	r14d,r11d
-+	shrd	r13d,r13d,14
-+	vpxor	xmm4,xmm4,xmm5
-+	mov	r11d,r14d
-+	mov	r12d,r8d
-+	shrd	r14d,r14d,9
-+	vpslld	xmm5,xmm5,11
-+	xor	r13d,edx
-+	xor	r12d,r9d
-+	shrd	r13d,r13d,5
-+	vpxor	xmm4,xmm4,xmm6
-+	xor	r14d,r11d
-+	and	r12d,edx
-+	xor	r13d,edx
-+	vpsrld	xmm6,xmm7,10
-+	add	r10d,DWORD[4+rsp]
-+	mov	edi,r11d
-+	xor	r12d,r9d
-+	vpxor	xmm4,xmm4,xmm5
-+	shrd	r14d,r14d,11
-+	xor	edi,eax
-+	add	r10d,r12d
-+	vpsrlq	xmm7,xmm7,17
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,r11d
-+	vpaddd	xmm0,xmm0,xmm4
-+	add	r10d,r13d
-+	xor	r15d,eax
-+	shrd	r14d,r14d,2
-+	vpxor	xmm6,xmm6,xmm7
-+	add	ecx,r10d
-+	add	r10d,r15d
-+	mov	r13d,ecx
-+	vpsrlq	xmm7,xmm7,2
-+	add	r14d,r10d
-+	shrd	r13d,r13d,14
-+	mov	r10d,r14d
-+	vpxor	xmm6,xmm6,xmm7
-+	mov	r12d,edx
-+	shrd	r14d,r14d,9
-+	xor	r13d,ecx
-+	vpshufb	xmm6,xmm6,xmm8
-+	xor	r12d,r8d
-+	shrd	r13d,r13d,5
-+	xor	r14d,r10d
-+	vpaddd	xmm0,xmm0,xmm6
-+	and	r12d,ecx
-+	xor	r13d,ecx
-+	add	r9d,DWORD[8+rsp]
-+	vpshufd	xmm7,xmm0,80
-+	mov	r15d,r10d
-+	xor	r12d,r8d
-+	shrd	r14d,r14d,11
-+	vpsrld	xmm6,xmm7,10
-+	xor	r15d,r11d
-+	add	r9d,r12d
-+	shrd	r13d,r13d,6
-+	vpsrlq	xmm7,xmm7,17
-+	and	edi,r15d
-+	xor	r14d,r10d
-+	add	r9d,r13d
-+	vpxor	xmm6,xmm6,xmm7
-+	xor	edi,r11d
-+	shrd	r14d,r14d,2
-+	add	ebx,r9d
-+	vpsrlq	xmm7,xmm7,2
-+	add	r9d,edi
-+	mov	r13d,ebx
-+	add	r14d,r9d
-+	vpxor	xmm6,xmm6,xmm7
-+	shrd	r13d,r13d,14
-+	mov	r9d,r14d
-+	mov	r12d,ecx
-+	vpshufb	xmm6,xmm6,xmm9
-+	shrd	r14d,r14d,9
-+	xor	r13d,ebx
-+	xor	r12d,edx
-+	vpaddd	xmm0,xmm0,xmm6
-+	shrd	r13d,r13d,5
-+	xor	r14d,r9d
-+	and	r12d,ebx
-+	vpaddd	xmm6,xmm0,XMMWORD[rbp]
-+	xor	r13d,ebx
-+	add	r8d,DWORD[12+rsp]
-+	mov	edi,r9d
-+	xor	r12d,edx
-+	shrd	r14d,r14d,11
-+	xor	edi,r10d
-+	add	r8d,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,r9d
-+	add	r8d,r13d
-+	xor	r15d,r10d
-+	shrd	r14d,r14d,2
-+	add	eax,r8d
-+	add	r8d,r15d
-+	mov	r13d,eax
-+	add	r14d,r8d
-+	vmovdqa	XMMWORD[rsp],xmm6
-+	vpalignr	xmm4,xmm2,xmm1,4
-+	shrd	r13d,r13d,14
-+	mov	r8d,r14d
-+	mov	r12d,ebx
-+	vpalignr	xmm7,xmm0,xmm3,4
-+	shrd	r14d,r14d,9
-+	xor	r13d,eax
-+	xor	r12d,ecx
-+	vpsrld	xmm6,xmm4,7
-+	shrd	r13d,r13d,5
-+	xor	r14d,r8d
-+	and	r12d,eax
-+	vpaddd	xmm1,xmm1,xmm7
-+	xor	r13d,eax
-+	add	edx,DWORD[16+rsp]
-+	mov	r15d,r8d
-+	vpsrld	xmm7,xmm4,3
-+	xor	r12d,ecx
-+	shrd	r14d,r14d,11
-+	xor	r15d,r9d
-+	vpslld	xmm5,xmm4,14
-+	add	edx,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	vpxor	xmm4,xmm7,xmm6
-+	xor	r14d,r8d
-+	add	edx,r13d
-+	xor	edi,r9d
-+	vpshufd	xmm7,xmm0,250
-+	shrd	r14d,r14d,2
-+	add	r11d,edx
-+	add	edx,edi
-+	vpsrld	xmm6,xmm6,11
-+	mov	r13d,r11d
-+	add	r14d,edx
-+	shrd	r13d,r13d,14
-+	vpxor	xmm4,xmm4,xmm5
-+	mov	edx,r14d
-+	mov	r12d,eax
-+	shrd	r14d,r14d,9
-+	vpslld	xmm5,xmm5,11
-+	xor	r13d,r11d
-+	xor	r12d,ebx
-+	shrd	r13d,r13d,5
-+	vpxor	xmm4,xmm4,xmm6
-+	xor	r14d,edx
-+	and	r12d,r11d
-+	xor	r13d,r11d
-+	vpsrld	xmm6,xmm7,10
-+	add	ecx,DWORD[20+rsp]
-+	mov	edi,edx
-+	xor	r12d,ebx
-+	vpxor	xmm4,xmm4,xmm5
-+	shrd	r14d,r14d,11
-+	xor	edi,r8d
-+	add	ecx,r12d
-+	vpsrlq	xmm7,xmm7,17
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,edx
-+	vpaddd	xmm1,xmm1,xmm4
-+	add	ecx,r13d
-+	xor	r15d,r8d
-+	shrd	r14d,r14d,2
-+	vpxor	xmm6,xmm6,xmm7
-+	add	r10d,ecx
-+	add	ecx,r15d
-+	mov	r13d,r10d
-+	vpsrlq	xmm7,xmm7,2
-+	add	r14d,ecx
-+	shrd	r13d,r13d,14
-+	mov	ecx,r14d
-+	vpxor	xmm6,xmm6,xmm7
-+	mov	r12d,r11d
-+	shrd	r14d,r14d,9
-+	xor	r13d,r10d
-+	vpshufb	xmm6,xmm6,xmm8
-+	xor	r12d,eax
-+	shrd	r13d,r13d,5
-+	xor	r14d,ecx
-+	vpaddd	xmm1,xmm1,xmm6
-+	and	r12d,r10d
-+	xor	r13d,r10d
-+	add	ebx,DWORD[24+rsp]
-+	vpshufd	xmm7,xmm1,80
-+	mov	r15d,ecx
-+	xor	r12d,eax
-+	shrd	r14d,r14d,11
-+	vpsrld	xmm6,xmm7,10
-+	xor	r15d,edx
-+	add	ebx,r12d
-+	shrd	r13d,r13d,6
-+	vpsrlq	xmm7,xmm7,17
-+	and	edi,r15d
-+	xor	r14d,ecx
-+	add	ebx,r13d
-+	vpxor	xmm6,xmm6,xmm7
-+	xor	edi,edx
-+	shrd	r14d,r14d,2
-+	add	r9d,ebx
-+	vpsrlq	xmm7,xmm7,2
-+	add	ebx,edi
-+	mov	r13d,r9d
-+	add	r14d,ebx
-+	vpxor	xmm6,xmm6,xmm7
-+	shrd	r13d,r13d,14
-+	mov	ebx,r14d
-+	mov	r12d,r10d
-+	vpshufb	xmm6,xmm6,xmm9
-+	shrd	r14d,r14d,9
-+	xor	r13d,r9d
-+	xor	r12d,r11d
-+	vpaddd	xmm1,xmm1,xmm6
-+	shrd	r13d,r13d,5
-+	xor	r14d,ebx
-+	and	r12d,r9d
-+	vpaddd	xmm6,xmm1,XMMWORD[32+rbp]
-+	xor	r13d,r9d
-+	add	eax,DWORD[28+rsp]
-+	mov	edi,ebx
-+	xor	r12d,r11d
-+	shrd	r14d,r14d,11
-+	xor	edi,ecx
-+	add	eax,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,ebx
-+	add	eax,r13d
-+	xor	r15d,ecx
-+	shrd	r14d,r14d,2
-+	add	r8d,eax
-+	add	eax,r15d
-+	mov	r13d,r8d
-+	add	r14d,eax
-+	vmovdqa	XMMWORD[16+rsp],xmm6
-+	vpalignr	xmm4,xmm3,xmm2,4
-+	shrd	r13d,r13d,14
-+	mov	eax,r14d
-+	mov	r12d,r9d
-+	vpalignr	xmm7,xmm1,xmm0,4
-+	shrd	r14d,r14d,9
-+	xor	r13d,r8d
-+	xor	r12d,r10d
-+	vpsrld	xmm6,xmm4,7
-+	shrd	r13d,r13d,5
-+	xor	r14d,eax
-+	and	r12d,r8d
-+	vpaddd	xmm2,xmm2,xmm7
-+	xor	r13d,r8d
-+	add	r11d,DWORD[32+rsp]
-+	mov	r15d,eax
-+	vpsrld	xmm7,xmm4,3
-+	xor	r12d,r10d
-+	shrd	r14d,r14d,11
-+	xor	r15d,ebx
-+	vpslld	xmm5,xmm4,14
-+	add	r11d,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	vpxor	xmm4,xmm7,xmm6
-+	xor	r14d,eax
-+	add	r11d,r13d
-+	xor	edi,ebx
-+	vpshufd	xmm7,xmm1,250
-+	shrd	r14d,r14d,2
-+	add	edx,r11d
-+	add	r11d,edi
-+	vpsrld	xmm6,xmm6,11
-+	mov	r13d,edx
-+	add	r14d,r11d
-+	shrd	r13d,r13d,14
-+	vpxor	xmm4,xmm4,xmm5
-+	mov	r11d,r14d
-+	mov	r12d,r8d
-+	shrd	r14d,r14d,9
-+	vpslld	xmm5,xmm5,11
-+	xor	r13d,edx
-+	xor	r12d,r9d
-+	shrd	r13d,r13d,5
-+	vpxor	xmm4,xmm4,xmm6
-+	xor	r14d,r11d
-+	and	r12d,edx
-+	xor	r13d,edx
-+	vpsrld	xmm6,xmm7,10
-+	add	r10d,DWORD[36+rsp]
-+	mov	edi,r11d
-+	xor	r12d,r9d
-+	vpxor	xmm4,xmm4,xmm5
-+	shrd	r14d,r14d,11
-+	xor	edi,eax
-+	add	r10d,r12d
-+	vpsrlq	xmm7,xmm7,17
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,r11d
-+	vpaddd	xmm2,xmm2,xmm4
-+	add	r10d,r13d
-+	xor	r15d,eax
-+	shrd	r14d,r14d,2
-+	vpxor	xmm6,xmm6,xmm7
-+	add	ecx,r10d
-+	add	r10d,r15d
-+	mov	r13d,ecx
-+	vpsrlq	xmm7,xmm7,2
-+	add	r14d,r10d
-+	shrd	r13d,r13d,14
-+	mov	r10d,r14d
-+	vpxor	xmm6,xmm6,xmm7
-+	mov	r12d,edx
-+	shrd	r14d,r14d,9
-+	xor	r13d,ecx
-+	vpshufb	xmm6,xmm6,xmm8
-+	xor	r12d,r8d
-+	shrd	r13d,r13d,5
-+	xor	r14d,r10d
-+	vpaddd	xmm2,xmm2,xmm6
-+	and	r12d,ecx
-+	xor	r13d,ecx
-+	add	r9d,DWORD[40+rsp]
-+	vpshufd	xmm7,xmm2,80
-+	mov	r15d,r10d
-+	xor	r12d,r8d
-+	shrd	r14d,r14d,11
-+	vpsrld	xmm6,xmm7,10
-+	xor	r15d,r11d
-+	add	r9d,r12d
-+	shrd	r13d,r13d,6
-+	vpsrlq	xmm7,xmm7,17
-+	and	edi,r15d
-+	xor	r14d,r10d
-+	add	r9d,r13d
-+	vpxor	xmm6,xmm6,xmm7
-+	xor	edi,r11d
-+	shrd	r14d,r14d,2
-+	add	ebx,r9d
-+	vpsrlq	xmm7,xmm7,2
-+	add	r9d,edi
-+	mov	r13d,ebx
-+	add	r14d,r9d
-+	vpxor	xmm6,xmm6,xmm7
-+	shrd	r13d,r13d,14
-+	mov	r9d,r14d
-+	mov	r12d,ecx
-+	vpshufb	xmm6,xmm6,xmm9
-+	shrd	r14d,r14d,9
-+	xor	r13d,ebx
-+	xor	r12d,edx
-+	vpaddd	xmm2,xmm2,xmm6
-+	shrd	r13d,r13d,5
-+	xor	r14d,r9d
-+	and	r12d,ebx
-+	vpaddd	xmm6,xmm2,XMMWORD[64+rbp]
-+	xor	r13d,ebx
-+	add	r8d,DWORD[44+rsp]
-+	mov	edi,r9d
-+	xor	r12d,edx
-+	shrd	r14d,r14d,11
-+	xor	edi,r10d
-+	add	r8d,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,r9d
-+	add	r8d,r13d
-+	xor	r15d,r10d
-+	shrd	r14d,r14d,2
-+	add	eax,r8d
-+	add	r8d,r15d
-+	mov	r13d,eax
-+	add	r14d,r8d
-+	vmovdqa	XMMWORD[32+rsp],xmm6
-+	vpalignr	xmm4,xmm0,xmm3,4
-+	shrd	r13d,r13d,14
-+	mov	r8d,r14d
-+	mov	r12d,ebx
-+	vpalignr	xmm7,xmm2,xmm1,4
-+	shrd	r14d,r14d,9
-+	xor	r13d,eax
-+	xor	r12d,ecx
-+	vpsrld	xmm6,xmm4,7
-+	shrd	r13d,r13d,5
-+	xor	r14d,r8d
-+	and	r12d,eax
-+	vpaddd	xmm3,xmm3,xmm7
-+	xor	r13d,eax
-+	add	edx,DWORD[48+rsp]
-+	mov	r15d,r8d
-+	vpsrld	xmm7,xmm4,3
-+	xor	r12d,ecx
-+	shrd	r14d,r14d,11
-+	xor	r15d,r9d
-+	vpslld	xmm5,xmm4,14
-+	add	edx,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	vpxor	xmm4,xmm7,xmm6
-+	xor	r14d,r8d
-+	add	edx,r13d
-+	xor	edi,r9d
-+	vpshufd	xmm7,xmm2,250
-+	shrd	r14d,r14d,2
-+	add	r11d,edx
-+	add	edx,edi
-+	vpsrld	xmm6,xmm6,11
-+	mov	r13d,r11d
-+	add	r14d,edx
-+	shrd	r13d,r13d,14
-+	vpxor	xmm4,xmm4,xmm5
-+	mov	edx,r14d
-+	mov	r12d,eax
-+	shrd	r14d,r14d,9
-+	vpslld	xmm5,xmm5,11
-+	xor	r13d,r11d
-+	xor	r12d,ebx
-+	shrd	r13d,r13d,5
-+	vpxor	xmm4,xmm4,xmm6
-+	xor	r14d,edx
-+	and	r12d,r11d
-+	xor	r13d,r11d
-+	vpsrld	xmm6,xmm7,10
-+	add	ecx,DWORD[52+rsp]
-+	mov	edi,edx
-+	xor	r12d,ebx
-+	vpxor	xmm4,xmm4,xmm5
-+	shrd	r14d,r14d,11
-+	xor	edi,r8d
-+	add	ecx,r12d
-+	vpsrlq	xmm7,xmm7,17
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,edx
-+	vpaddd	xmm3,xmm3,xmm4
-+	add	ecx,r13d
-+	xor	r15d,r8d
-+	shrd	r14d,r14d,2
-+	vpxor	xmm6,xmm6,xmm7
-+	add	r10d,ecx
-+	add	ecx,r15d
-+	mov	r13d,r10d
-+	vpsrlq	xmm7,xmm7,2
-+	add	r14d,ecx
-+	shrd	r13d,r13d,14
-+	mov	ecx,r14d
-+	vpxor	xmm6,xmm6,xmm7
-+	mov	r12d,r11d
-+	shrd	r14d,r14d,9
-+	xor	r13d,r10d
-+	vpshufb	xmm6,xmm6,xmm8
-+	xor	r12d,eax
-+	shrd	r13d,r13d,5
-+	xor	r14d,ecx
-+	vpaddd	xmm3,xmm3,xmm6
-+	and	r12d,r10d
-+	xor	r13d,r10d
-+	add	ebx,DWORD[56+rsp]
-+	vpshufd	xmm7,xmm3,80
-+	mov	r15d,ecx
-+	xor	r12d,eax
-+	shrd	r14d,r14d,11
-+	vpsrld	xmm6,xmm7,10
-+	xor	r15d,edx
-+	add	ebx,r12d
-+	shrd	r13d,r13d,6
-+	vpsrlq	xmm7,xmm7,17
-+	and	edi,r15d
-+	xor	r14d,ecx
-+	add	ebx,r13d
-+	vpxor	xmm6,xmm6,xmm7
-+	xor	edi,edx
-+	shrd	r14d,r14d,2
-+	add	r9d,ebx
-+	vpsrlq	xmm7,xmm7,2
-+	add	ebx,edi
-+	mov	r13d,r9d
-+	add	r14d,ebx
-+	vpxor	xmm6,xmm6,xmm7
-+	shrd	r13d,r13d,14
-+	mov	ebx,r14d
-+	mov	r12d,r10d
-+	vpshufb	xmm6,xmm6,xmm9
-+	shrd	r14d,r14d,9
-+	xor	r13d,r9d
-+	xor	r12d,r11d
-+	vpaddd	xmm3,xmm3,xmm6
-+	shrd	r13d,r13d,5
-+	xor	r14d,ebx
-+	and	r12d,r9d
-+	vpaddd	xmm6,xmm3,XMMWORD[96+rbp]
-+	xor	r13d,r9d
-+	add	eax,DWORD[60+rsp]
-+	mov	edi,ebx
-+	xor	r12d,r11d
-+	shrd	r14d,r14d,11
-+	xor	edi,ecx
-+	add	eax,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,ebx
-+	add	eax,r13d
-+	xor	r15d,ecx
-+	shrd	r14d,r14d,2
-+	add	r8d,eax
-+	add	eax,r15d
-+	mov	r13d,r8d
-+	add	r14d,eax
-+	vmovdqa	XMMWORD[48+rsp],xmm6
-+	cmp	BYTE[131+rbp],0
-+	jne	NEAR $L$avx_00_47
-+	shrd	r13d,r13d,14
-+	mov	eax,r14d
-+	mov	r12d,r9d
-+	shrd	r14d,r14d,9
-+	xor	r13d,r8d
-+	xor	r12d,r10d
-+	shrd	r13d,r13d,5
-+	xor	r14d,eax
-+	and	r12d,r8d
-+	xor	r13d,r8d
-+	add	r11d,DWORD[rsp]
-+	mov	r15d,eax
-+	xor	r12d,r10d
-+	shrd	r14d,r14d,11
-+	xor	r15d,ebx
-+	add	r11d,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	xor	r14d,eax
-+	add	r11d,r13d
-+	xor	edi,ebx
-+	shrd	r14d,r14d,2
-+	add	edx,r11d
-+	add	r11d,edi
-+	mov	r13d,edx
-+	add	r14d,r11d
-+	shrd	r13d,r13d,14
-+	mov	r11d,r14d
-+	mov	r12d,r8d
-+	shrd	r14d,r14d,9
-+	xor	r13d,edx
-+	xor	r12d,r9d
-+	shrd	r13d,r13d,5
-+	xor	r14d,r11d
-+	and	r12d,edx
-+	xor	r13d,edx
-+	add	r10d,DWORD[4+rsp]
-+	mov	edi,r11d
-+	xor	r12d,r9d
-+	shrd	r14d,r14d,11
-+	xor	edi,eax
-+	add	r10d,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,r11d
-+	add	r10d,r13d
-+	xor	r15d,eax
-+	shrd	r14d,r14d,2
-+	add	ecx,r10d
-+	add	r10d,r15d
-+	mov	r13d,ecx
-+	add	r14d,r10d
-+	shrd	r13d,r13d,14
-+	mov	r10d,r14d
-+	mov	r12d,edx
-+	shrd	r14d,r14d,9
-+	xor	r13d,ecx
-+	xor	r12d,r8d
-+	shrd	r13d,r13d,5
-+	xor	r14d,r10d
-+	and	r12d,ecx
-+	xor	r13d,ecx
-+	add	r9d,DWORD[8+rsp]
-+	mov	r15d,r10d
-+	xor	r12d,r8d
-+	shrd	r14d,r14d,11
-+	xor	r15d,r11d
-+	add	r9d,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	xor	r14d,r10d
-+	add	r9d,r13d
-+	xor	edi,r11d
-+	shrd	r14d,r14d,2
-+	add	ebx,r9d
-+	add	r9d,edi
-+	mov	r13d,ebx
-+	add	r14d,r9d
-+	shrd	r13d,r13d,14
-+	mov	r9d,r14d
-+	mov	r12d,ecx
-+	shrd	r14d,r14d,9
-+	xor	r13d,ebx
-+	xor	r12d,edx
-+	shrd	r13d,r13d,5
-+	xor	r14d,r9d
-+	and	r12d,ebx
-+	xor	r13d,ebx
-+	add	r8d,DWORD[12+rsp]
-+	mov	edi,r9d
-+	xor	r12d,edx
-+	shrd	r14d,r14d,11
-+	xor	edi,r10d
-+	add	r8d,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,r9d
-+	add	r8d,r13d
-+	xor	r15d,r10d
-+	shrd	r14d,r14d,2
-+	add	eax,r8d
-+	add	r8d,r15d
-+	mov	r13d,eax
-+	add	r14d,r8d
-+	shrd	r13d,r13d,14
-+	mov	r8d,r14d
-+	mov	r12d,ebx
-+	shrd	r14d,r14d,9
-+	xor	r13d,eax
-+	xor	r12d,ecx
-+	shrd	r13d,r13d,5
-+	xor	r14d,r8d
-+	and	r12d,eax
-+	xor	r13d,eax
-+	add	edx,DWORD[16+rsp]
-+	mov	r15d,r8d
-+	xor	r12d,ecx
-+	shrd	r14d,r14d,11
-+	xor	r15d,r9d
-+	add	edx,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	xor	r14d,r8d
-+	add	edx,r13d
-+	xor	edi,r9d
-+	shrd	r14d,r14d,2
-+	add	r11d,edx
-+	add	edx,edi
-+	mov	r13d,r11d
-+	add	r14d,edx
-+	shrd	r13d,r13d,14
-+	mov	edx,r14d
-+	mov	r12d,eax
-+	shrd	r14d,r14d,9
-+	xor	r13d,r11d
-+	xor	r12d,ebx
-+	shrd	r13d,r13d,5
-+	xor	r14d,edx
-+	and	r12d,r11d
-+	xor	r13d,r11d
-+	add	ecx,DWORD[20+rsp]
-+	mov	edi,edx
-+	xor	r12d,ebx
-+	shrd	r14d,r14d,11
-+	xor	edi,r8d
-+	add	ecx,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,edx
-+	add	ecx,r13d
-+	xor	r15d,r8d
-+	shrd	r14d,r14d,2
-+	add	r10d,ecx
-+	add	ecx,r15d
-+	mov	r13d,r10d
-+	add	r14d,ecx
-+	shrd	r13d,r13d,14
-+	mov	ecx,r14d
-+	mov	r12d,r11d
-+	shrd	r14d,r14d,9
-+	xor	r13d,r10d
-+	xor	r12d,eax
-+	shrd	r13d,r13d,5
-+	xor	r14d,ecx
-+	and	r12d,r10d
-+	xor	r13d,r10d
-+	add	ebx,DWORD[24+rsp]
-+	mov	r15d,ecx
-+	xor	r12d,eax
-+	shrd	r14d,r14d,11
-+	xor	r15d,edx
-+	add	ebx,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	xor	r14d,ecx
-+	add	ebx,r13d
-+	xor	edi,edx
-+	shrd	r14d,r14d,2
-+	add	r9d,ebx
-+	add	ebx,edi
-+	mov	r13d,r9d
-+	add	r14d,ebx
-+	shrd	r13d,r13d,14
-+	mov	ebx,r14d
-+	mov	r12d,r10d
-+	shrd	r14d,r14d,9
-+	xor	r13d,r9d
-+	xor	r12d,r11d
-+	shrd	r13d,r13d,5
-+	xor	r14d,ebx
-+	and	r12d,r9d
-+	xor	r13d,r9d
-+	add	eax,DWORD[28+rsp]
-+	mov	edi,ebx
-+	xor	r12d,r11d
-+	shrd	r14d,r14d,11
-+	xor	edi,ecx
-+	add	eax,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,ebx
-+	add	eax,r13d
-+	xor	r15d,ecx
-+	shrd	r14d,r14d,2
-+	add	r8d,eax
-+	add	eax,r15d
-+	mov	r13d,r8d
-+	add	r14d,eax
-+	shrd	r13d,r13d,14
-+	mov	eax,r14d
-+	mov	r12d,r9d
-+	shrd	r14d,r14d,9
-+	xor	r13d,r8d
-+	xor	r12d,r10d
-+	shrd	r13d,r13d,5
-+	xor	r14d,eax
-+	and	r12d,r8d
-+	xor	r13d,r8d
-+	add	r11d,DWORD[32+rsp]
-+	mov	r15d,eax
-+	xor	r12d,r10d
-+	shrd	r14d,r14d,11
-+	xor	r15d,ebx
-+	add	r11d,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	xor	r14d,eax
-+	add	r11d,r13d
-+	xor	edi,ebx
-+	shrd	r14d,r14d,2
-+	add	edx,r11d
-+	add	r11d,edi
-+	mov	r13d,edx
-+	add	r14d,r11d
-+	shrd	r13d,r13d,14
-+	mov	r11d,r14d
-+	mov	r12d,r8d
-+	shrd	r14d,r14d,9
-+	xor	r13d,edx
-+	xor	r12d,r9d
-+	shrd	r13d,r13d,5
-+	xor	r14d,r11d
-+	and	r12d,edx
-+	xor	r13d,edx
-+	add	r10d,DWORD[36+rsp]
-+	mov	edi,r11d
-+	xor	r12d,r9d
-+	shrd	r14d,r14d,11
-+	xor	edi,eax
-+	add	r10d,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,r11d
-+	add	r10d,r13d
-+	xor	r15d,eax
-+	shrd	r14d,r14d,2
-+	add	ecx,r10d
-+	add	r10d,r15d
-+	mov	r13d,ecx
-+	add	r14d,r10d
-+	shrd	r13d,r13d,14
-+	mov	r10d,r14d
-+	mov	r12d,edx
-+	shrd	r14d,r14d,9
-+	xor	r13d,ecx
-+	xor	r12d,r8d
-+	shrd	r13d,r13d,5
-+	xor	r14d,r10d
-+	and	r12d,ecx
-+	xor	r13d,ecx
-+	add	r9d,DWORD[40+rsp]
-+	mov	r15d,r10d
-+	xor	r12d,r8d
-+	shrd	r14d,r14d,11
-+	xor	r15d,r11d
-+	add	r9d,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	xor	r14d,r10d
-+	add	r9d,r13d
-+	xor	edi,r11d
-+	shrd	r14d,r14d,2
-+	add	ebx,r9d
-+	add	r9d,edi
-+	mov	r13d,ebx
-+	add	r14d,r9d
-+	shrd	r13d,r13d,14
-+	mov	r9d,r14d
-+	mov	r12d,ecx
-+	shrd	r14d,r14d,9
-+	xor	r13d,ebx
-+	xor	r12d,edx
-+	shrd	r13d,r13d,5
-+	xor	r14d,r9d
-+	and	r12d,ebx
-+	xor	r13d,ebx
-+	add	r8d,DWORD[44+rsp]
-+	mov	edi,r9d
-+	xor	r12d,edx
-+	shrd	r14d,r14d,11
-+	xor	edi,r10d
-+	add	r8d,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,r9d
-+	add	r8d,r13d
-+	xor	r15d,r10d
-+	shrd	r14d,r14d,2
-+	add	eax,r8d
-+	add	r8d,r15d
-+	mov	r13d,eax
-+	add	r14d,r8d
-+	shrd	r13d,r13d,14
-+	mov	r8d,r14d
-+	mov	r12d,ebx
-+	shrd	r14d,r14d,9
-+	xor	r13d,eax
-+	xor	r12d,ecx
-+	shrd	r13d,r13d,5
-+	xor	r14d,r8d
-+	and	r12d,eax
-+	xor	r13d,eax
-+	add	edx,DWORD[48+rsp]
-+	mov	r15d,r8d
-+	xor	r12d,ecx
-+	shrd	r14d,r14d,11
-+	xor	r15d,r9d
-+	add	edx,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	xor	r14d,r8d
-+	add	edx,r13d
-+	xor	edi,r9d
-+	shrd	r14d,r14d,2
-+	add	r11d,edx
-+	add	edx,edi
-+	mov	r13d,r11d
-+	add	r14d,edx
-+	shrd	r13d,r13d,14
-+	mov	edx,r14d
-+	mov	r12d,eax
-+	shrd	r14d,r14d,9
-+	xor	r13d,r11d
-+	xor	r12d,ebx
-+	shrd	r13d,r13d,5
-+	xor	r14d,edx
-+	and	r12d,r11d
-+	xor	r13d,r11d
-+	add	ecx,DWORD[52+rsp]
-+	mov	edi,edx
-+	xor	r12d,ebx
-+	shrd	r14d,r14d,11
-+	xor	edi,r8d
-+	add	ecx,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,edx
-+	add	ecx,r13d
-+	xor	r15d,r8d
-+	shrd	r14d,r14d,2
-+	add	r10d,ecx
-+	add	ecx,r15d
-+	mov	r13d,r10d
-+	add	r14d,ecx
-+	shrd	r13d,r13d,14
-+	mov	ecx,r14d
-+	mov	r12d,r11d
-+	shrd	r14d,r14d,9
-+	xor	r13d,r10d
-+	xor	r12d,eax
-+	shrd	r13d,r13d,5
-+	xor	r14d,ecx
-+	and	r12d,r10d
-+	xor	r13d,r10d
-+	add	ebx,DWORD[56+rsp]
-+	mov	r15d,ecx
-+	xor	r12d,eax
-+	shrd	r14d,r14d,11
-+	xor	r15d,edx
-+	add	ebx,r12d
-+	shrd	r13d,r13d,6
-+	and	edi,r15d
-+	xor	r14d,ecx
-+	add	ebx,r13d
-+	xor	edi,edx
-+	shrd	r14d,r14d,2
-+	add	r9d,ebx
-+	add	ebx,edi
-+	mov	r13d,r9d
-+	add	r14d,ebx
-+	shrd	r13d,r13d,14
-+	mov	ebx,r14d
-+	mov	r12d,r10d
-+	shrd	r14d,r14d,9
-+	xor	r13d,r9d
-+	xor	r12d,r11d
-+	shrd	r13d,r13d,5
-+	xor	r14d,ebx
-+	and	r12d,r9d
-+	xor	r13d,r9d
-+	add	eax,DWORD[60+rsp]
-+	mov	edi,ebx
-+	xor	r12d,r11d
-+	shrd	r14d,r14d,11
-+	xor	edi,ecx
-+	add	eax,r12d
-+	shrd	r13d,r13d,6
-+	and	r15d,edi
-+	xor	r14d,ebx
-+	add	eax,r13d
-+	xor	r15d,ecx
-+	shrd	r14d,r14d,2
-+	add	r8d,eax
-+	add	eax,r15d
-+	mov	r13d,r8d
-+	add	r14d,eax
-+	mov	rdi,QWORD[((64+0))+rsp]
-+	mov	eax,r14d
-+
-+	add	eax,DWORD[rdi]
-+	lea	rsi,[64+rsi]
-+	add	ebx,DWORD[4+rdi]
-+	add	ecx,DWORD[8+rdi]
-+	add	edx,DWORD[12+rdi]
-+	add	r8d,DWORD[16+rdi]
-+	add	r9d,DWORD[20+rdi]
-+	add	r10d,DWORD[24+rdi]
-+	add	r11d,DWORD[28+rdi]
-+
-+	cmp	rsi,QWORD[((64+16))+rsp]
-+
-+	mov	DWORD[rdi],eax
-+	mov	DWORD[4+rdi],ebx
-+	mov	DWORD[8+rdi],ecx
-+	mov	DWORD[12+rdi],edx
-+	mov	DWORD[16+rdi],r8d
-+	mov	DWORD[20+rdi],r9d
-+	mov	DWORD[24+rdi],r10d
-+	mov	DWORD[28+rdi],r11d
-+	jb	NEAR $L$loop_avx
-+
-+	mov	rsi,QWORD[((64+24))+rsp]
-+	vzeroupper
-+	movaps	xmm6,XMMWORD[((64+32))+rsp]
-+	movaps	xmm7,XMMWORD[((64+48))+rsp]
-+	movaps	xmm8,XMMWORD[((64+64))+rsp]
-+	movaps	xmm9,XMMWORD[((64+80))+rsp]
-+	mov	r15,QWORD[rsi]
-+	mov	r14,QWORD[8+rsi]
-+	mov	r13,QWORD[16+rsi]
-+	mov	r12,QWORD[24+rsi]
-+	mov	rbp,QWORD[32+rsi]
-+	mov	rbx,QWORD[40+rsi]
-+	lea	rsp,[48+rsi]
-+$L$epilogue_avx:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha256_block_data_order_avx:
-+
-+ALIGN	64
-+sha256_block_data_order_avx2:
-+	mov	QWORD[8+rsp],rdi	;WIN64 prologue
-+	mov	QWORD[16+rsp],rsi
-+	mov	rax,rsp
-+$L$SEH_begin_sha256_block_data_order_avx2:
-+	mov	rdi,rcx
-+	mov	rsi,rdx
-+	mov	rdx,r8
-+
-+
-+$L$avx2_shortcut:
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	mov	r11,rsp
-+	sub	rsp,608
-+	shl	rdx,4
-+	and	rsp,-256*4
-+	lea	rdx,[rdx*4+rsi]
-+	add	rsp,448
-+	mov	QWORD[((64+0))+rsp],rdi
-+	mov	QWORD[((64+8))+rsp],rsi
-+	mov	QWORD[((64+16))+rsp],rdx
-+	mov	QWORD[((64+24))+rsp],r11
-+	movaps	XMMWORD[(64+32)+rsp],xmm6
-+	movaps	XMMWORD[(64+48)+rsp],xmm7
-+	movaps	XMMWORD[(64+64)+rsp],xmm8
-+	movaps	XMMWORD[(64+80)+rsp],xmm9
-+$L$prologue_avx2:
-+
-+	vzeroupper
-+	sub	rsi,-16*4
-+	mov	eax,DWORD[rdi]
-+	mov	r12,rsi
-+	mov	ebx,DWORD[4+rdi]
-+	cmp	rsi,rdx
-+	mov	ecx,DWORD[8+rdi]
-+	cmove	r12,rsp
-+	mov	edx,DWORD[12+rdi]
-+	mov	r8d,DWORD[16+rdi]
-+	mov	r9d,DWORD[20+rdi]
-+	mov	r10d,DWORD[24+rdi]
-+	mov	r11d,DWORD[28+rdi]
-+	vmovdqa	ymm8,YMMWORD[((K256+512+32))]
-+	vmovdqa	ymm9,YMMWORD[((K256+512+64))]
-+	jmp	NEAR $L$oop_avx2
-+ALIGN	16
-+$L$oop_avx2:
-+	vmovdqa	ymm7,YMMWORD[((K256+512))]
-+	vmovdqu	xmm0,XMMWORD[((-64+0))+rsi]
-+	vmovdqu	xmm1,XMMWORD[((-64+16))+rsi]
-+	vmovdqu	xmm2,XMMWORD[((-64+32))+rsi]
-+	vmovdqu	xmm3,XMMWORD[((-64+48))+rsi]
-+
-+	vinserti128	ymm0,ymm0,XMMWORD[r12],1
-+	vinserti128	ymm1,ymm1,XMMWORD[16+r12],1
-+	vpshufb	ymm0,ymm0,ymm7
-+	vinserti128	ymm2,ymm2,XMMWORD[32+r12],1
-+	vpshufb	ymm1,ymm1,ymm7
-+	vinserti128	ymm3,ymm3,XMMWORD[48+r12],1
-+
-+	lea	rbp,[K256]
-+	vpshufb	ymm2,ymm2,ymm7
-+	vpaddd	ymm4,ymm0,YMMWORD[rbp]
-+	vpshufb	ymm3,ymm3,ymm7
-+	vpaddd	ymm5,ymm1,YMMWORD[32+rbp]
-+	vpaddd	ymm6,ymm2,YMMWORD[64+rbp]
-+	vpaddd	ymm7,ymm3,YMMWORD[96+rbp]
-+	vmovdqa	YMMWORD[rsp],ymm4
-+	xor	r14d,r14d
-+	vmovdqa	YMMWORD[32+rsp],ymm5
-+	lea	rsp,[((-64))+rsp]
-+	mov	edi,ebx
-+	vmovdqa	YMMWORD[rsp],ymm6
-+	xor	edi,ecx
-+	vmovdqa	YMMWORD[32+rsp],ymm7
-+	mov	r12d,r9d
-+	sub	rbp,-16*2*4
-+	jmp	NEAR $L$avx2_00_47
-+
-+ALIGN	16
-+$L$avx2_00_47:
-+	lea	rsp,[((-64))+rsp]
-+	vpalignr	ymm4,ymm1,ymm0,4
-+	add	r11d,DWORD[((0+128))+rsp]
-+	and	r12d,r8d
-+	rorx	r13d,r8d,25
-+	vpalignr	ymm7,ymm3,ymm2,4
-+	rorx	r15d,r8d,11
-+	lea	eax,[r14*1+rax]
-+	lea	r11d,[r12*1+r11]
-+	vpsrld	ymm6,ymm4,7
-+	andn	r12d,r8d,r10d
-+	xor	r13d,r15d
-+	rorx	r14d,r8d,6
-+	vpaddd	ymm0,ymm0,ymm7
-+	lea	r11d,[r12*1+r11]
-+	xor	r13d,r14d
-+	mov	r15d,eax
-+	vpsrld	ymm7,ymm4,3
-+	rorx	r12d,eax,22
-+	lea	r11d,[r13*1+r11]
-+	xor	r15d,ebx
-+	vpslld	ymm5,ymm4,14
-+	rorx	r14d,eax,13
-+	rorx	r13d,eax,2
-+	lea	edx,[r11*1+rdx]
-+	vpxor	ymm4,ymm7,ymm6
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,ebx
-+	vpshufd	ymm7,ymm3,250
-+	xor	r14d,r13d
-+	lea	r11d,[rdi*1+r11]
-+	mov	r12d,r8d
-+	vpsrld	ymm6,ymm6,11
-+	add	r10d,DWORD[((4+128))+rsp]
-+	and	r12d,edx
-+	rorx	r13d,edx,25
-+	vpxor	ymm4,ymm4,ymm5
-+	rorx	edi,edx,11
-+	lea	r11d,[r14*1+r11]
-+	lea	r10d,[r12*1+r10]
-+	vpslld	ymm5,ymm5,11
-+	andn	r12d,edx,r9d
-+	xor	r13d,edi
-+	rorx	r14d,edx,6
-+	vpxor	ymm4,ymm4,ymm6
-+	lea	r10d,[r12*1+r10]
-+	xor	r13d,r14d
-+	mov	edi,r11d
-+	vpsrld	ymm6,ymm7,10
-+	rorx	r12d,r11d,22
-+	lea	r10d,[r13*1+r10]
-+	xor	edi,eax
-+	vpxor	ymm4,ymm4,ymm5
-+	rorx	r14d,r11d,13
-+	rorx	r13d,r11d,2
-+	lea	ecx,[r10*1+rcx]
-+	vpsrlq	ymm7,ymm7,17
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,eax
-+	vpaddd	ymm0,ymm0,ymm4
-+	xor	r14d,r13d
-+	lea	r10d,[r15*1+r10]
-+	mov	r12d,edx
-+	vpxor	ymm6,ymm6,ymm7
-+	add	r9d,DWORD[((8+128))+rsp]
-+	and	r12d,ecx
-+	rorx	r13d,ecx,25
-+	vpsrlq	ymm7,ymm7,2
-+	rorx	r15d,ecx,11
-+	lea	r10d,[r14*1+r10]
-+	lea	r9d,[r12*1+r9]
-+	vpxor	ymm6,ymm6,ymm7
-+	andn	r12d,ecx,r8d
-+	xor	r13d,r15d
-+	rorx	r14d,ecx,6
-+	vpshufb	ymm6,ymm6,ymm8
-+	lea	r9d,[r12*1+r9]
-+	xor	r13d,r14d
-+	mov	r15d,r10d
-+	vpaddd	ymm0,ymm0,ymm6
-+	rorx	r12d,r10d,22
-+	lea	r9d,[r13*1+r9]
-+	xor	r15d,r11d
-+	vpshufd	ymm7,ymm0,80
-+	rorx	r14d,r10d,13
-+	rorx	r13d,r10d,2
-+	lea	ebx,[r9*1+rbx]
-+	vpsrld	ymm6,ymm7,10
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,r11d
-+	vpsrlq	ymm7,ymm7,17
-+	xor	r14d,r13d
-+	lea	r9d,[rdi*1+r9]
-+	mov	r12d,ecx
-+	vpxor	ymm6,ymm6,ymm7
-+	add	r8d,DWORD[((12+128))+rsp]
-+	and	r12d,ebx
-+	rorx	r13d,ebx,25
-+	vpsrlq	ymm7,ymm7,2
-+	rorx	edi,ebx,11
-+	lea	r9d,[r14*1+r9]
-+	lea	r8d,[r12*1+r8]
-+	vpxor	ymm6,ymm6,ymm7
-+	andn	r12d,ebx,edx
-+	xor	r13d,edi
-+	rorx	r14d,ebx,6
-+	vpshufb	ymm6,ymm6,ymm9
-+	lea	r8d,[r12*1+r8]
-+	xor	r13d,r14d
-+	mov	edi,r9d
-+	vpaddd	ymm0,ymm0,ymm6
-+	rorx	r12d,r9d,22
-+	lea	r8d,[r13*1+r8]
-+	xor	edi,r10d
-+	vpaddd	ymm6,ymm0,YMMWORD[rbp]
-+	rorx	r14d,r9d,13
-+	rorx	r13d,r9d,2
-+	lea	eax,[r8*1+rax]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,r10d
-+	xor	r14d,r13d
-+	lea	r8d,[r15*1+r8]
-+	mov	r12d,ebx
-+	vmovdqa	YMMWORD[rsp],ymm6
-+	vpalignr	ymm4,ymm2,ymm1,4
-+	add	edx,DWORD[((32+128))+rsp]
-+	and	r12d,eax
-+	rorx	r13d,eax,25
-+	vpalignr	ymm7,ymm0,ymm3,4
-+	rorx	r15d,eax,11
-+	lea	r8d,[r14*1+r8]
-+	lea	edx,[r12*1+rdx]
-+	vpsrld	ymm6,ymm4,7
-+	andn	r12d,eax,ecx
-+	xor	r13d,r15d
-+	rorx	r14d,eax,6
-+	vpaddd	ymm1,ymm1,ymm7
-+	lea	edx,[r12*1+rdx]
-+	xor	r13d,r14d
-+	mov	r15d,r8d
-+	vpsrld	ymm7,ymm4,3
-+	rorx	r12d,r8d,22
-+	lea	edx,[r13*1+rdx]
-+	xor	r15d,r9d
-+	vpslld	ymm5,ymm4,14
-+	rorx	r14d,r8d,13
-+	rorx	r13d,r8d,2
-+	lea	r11d,[rdx*1+r11]
-+	vpxor	ymm4,ymm7,ymm6
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,r9d
-+	vpshufd	ymm7,ymm0,250
-+	xor	r14d,r13d
-+	lea	edx,[rdi*1+rdx]
-+	mov	r12d,eax
-+	vpsrld	ymm6,ymm6,11
-+	add	ecx,DWORD[((36+128))+rsp]
-+	and	r12d,r11d
-+	rorx	r13d,r11d,25
-+	vpxor	ymm4,ymm4,ymm5
-+	rorx	edi,r11d,11
-+	lea	edx,[r14*1+rdx]
-+	lea	ecx,[r12*1+rcx]
-+	vpslld	ymm5,ymm5,11
-+	andn	r12d,r11d,ebx
-+	xor	r13d,edi
-+	rorx	r14d,r11d,6
-+	vpxor	ymm4,ymm4,ymm6
-+	lea	ecx,[r12*1+rcx]
-+	xor	r13d,r14d
-+	mov	edi,edx
-+	vpsrld	ymm6,ymm7,10
-+	rorx	r12d,edx,22
-+	lea	ecx,[r13*1+rcx]
-+	xor	edi,r8d
-+	vpxor	ymm4,ymm4,ymm5
-+	rorx	r14d,edx,13
-+	rorx	r13d,edx,2
-+	lea	r10d,[rcx*1+r10]
-+	vpsrlq	ymm7,ymm7,17
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,r8d
-+	vpaddd	ymm1,ymm1,ymm4
-+	xor	r14d,r13d
-+	lea	ecx,[r15*1+rcx]
-+	mov	r12d,r11d
-+	vpxor	ymm6,ymm6,ymm7
-+	add	ebx,DWORD[((40+128))+rsp]
-+	and	r12d,r10d
-+	rorx	r13d,r10d,25
-+	vpsrlq	ymm7,ymm7,2
-+	rorx	r15d,r10d,11
-+	lea	ecx,[r14*1+rcx]
-+	lea	ebx,[r12*1+rbx]
-+	vpxor	ymm6,ymm6,ymm7
-+	andn	r12d,r10d,eax
-+	xor	r13d,r15d
-+	rorx	r14d,r10d,6
-+	vpshufb	ymm6,ymm6,ymm8
-+	lea	ebx,[r12*1+rbx]
-+	xor	r13d,r14d
-+	mov	r15d,ecx
-+	vpaddd	ymm1,ymm1,ymm6
-+	rorx	r12d,ecx,22
-+	lea	ebx,[r13*1+rbx]
-+	xor	r15d,edx
-+	vpshufd	ymm7,ymm1,80
-+	rorx	r14d,ecx,13
-+	rorx	r13d,ecx,2
-+	lea	r9d,[rbx*1+r9]
-+	vpsrld	ymm6,ymm7,10
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,edx
-+	vpsrlq	ymm7,ymm7,17
-+	xor	r14d,r13d
-+	lea	ebx,[rdi*1+rbx]
-+	mov	r12d,r10d
-+	vpxor	ymm6,ymm6,ymm7
-+	add	eax,DWORD[((44+128))+rsp]
-+	and	r12d,r9d
-+	rorx	r13d,r9d,25
-+	vpsrlq	ymm7,ymm7,2
-+	rorx	edi,r9d,11
-+	lea	ebx,[r14*1+rbx]
-+	lea	eax,[r12*1+rax]
-+	vpxor	ymm6,ymm6,ymm7
-+	andn	r12d,r9d,r11d
-+	xor	r13d,edi
-+	rorx	r14d,r9d,6
-+	vpshufb	ymm6,ymm6,ymm9
-+	lea	eax,[r12*1+rax]
-+	xor	r13d,r14d
-+	mov	edi,ebx
-+	vpaddd	ymm1,ymm1,ymm6
-+	rorx	r12d,ebx,22
-+	lea	eax,[r13*1+rax]
-+	xor	edi,ecx
-+	vpaddd	ymm6,ymm1,YMMWORD[32+rbp]
-+	rorx	r14d,ebx,13
-+	rorx	r13d,ebx,2
-+	lea	r8d,[rax*1+r8]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,ecx
-+	xor	r14d,r13d
-+	lea	eax,[r15*1+rax]
-+	mov	r12d,r9d
-+	vmovdqa	YMMWORD[32+rsp],ymm6
-+	lea	rsp,[((-64))+rsp]
-+	vpalignr	ymm4,ymm3,ymm2,4
-+	add	r11d,DWORD[((0+128))+rsp]
-+	and	r12d,r8d
-+	rorx	r13d,r8d,25
-+	vpalignr	ymm7,ymm1,ymm0,4
-+	rorx	r15d,r8d,11
-+	lea	eax,[r14*1+rax]
-+	lea	r11d,[r12*1+r11]
-+	vpsrld	ymm6,ymm4,7
-+	andn	r12d,r8d,r10d
-+	xor	r13d,r15d
-+	rorx	r14d,r8d,6
-+	vpaddd	ymm2,ymm2,ymm7
-+	lea	r11d,[r12*1+r11]
-+	xor	r13d,r14d
-+	mov	r15d,eax
-+	vpsrld	ymm7,ymm4,3
-+	rorx	r12d,eax,22
-+	lea	r11d,[r13*1+r11]
-+	xor	r15d,ebx
-+	vpslld	ymm5,ymm4,14
-+	rorx	r14d,eax,13
-+	rorx	r13d,eax,2
-+	lea	edx,[r11*1+rdx]
-+	vpxor	ymm4,ymm7,ymm6
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,ebx
-+	vpshufd	ymm7,ymm1,250
-+	xor	r14d,r13d
-+	lea	r11d,[rdi*1+r11]
-+	mov	r12d,r8d
-+	vpsrld	ymm6,ymm6,11
-+	add	r10d,DWORD[((4+128))+rsp]
-+	and	r12d,edx
-+	rorx	r13d,edx,25
-+	vpxor	ymm4,ymm4,ymm5
-+	rorx	edi,edx,11
-+	lea	r11d,[r14*1+r11]
-+	lea	r10d,[r12*1+r10]
-+	vpslld	ymm5,ymm5,11
-+	andn	r12d,edx,r9d
-+	xor	r13d,edi
-+	rorx	r14d,edx,6
-+	vpxor	ymm4,ymm4,ymm6
-+	lea	r10d,[r12*1+r10]
-+	xor	r13d,r14d
-+	mov	edi,r11d
-+	vpsrld	ymm6,ymm7,10
-+	rorx	r12d,r11d,22
-+	lea	r10d,[r13*1+r10]
-+	xor	edi,eax
-+	vpxor	ymm4,ymm4,ymm5
-+	rorx	r14d,r11d,13
-+	rorx	r13d,r11d,2
-+	lea	ecx,[r10*1+rcx]
-+	vpsrlq	ymm7,ymm7,17
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,eax
-+	vpaddd	ymm2,ymm2,ymm4
-+	xor	r14d,r13d
-+	lea	r10d,[r15*1+r10]
-+	mov	r12d,edx
-+	vpxor	ymm6,ymm6,ymm7
-+	add	r9d,DWORD[((8+128))+rsp]
-+	and	r12d,ecx
-+	rorx	r13d,ecx,25
-+	vpsrlq	ymm7,ymm7,2
-+	rorx	r15d,ecx,11
-+	lea	r10d,[r14*1+r10]
-+	lea	r9d,[r12*1+r9]
-+	vpxor	ymm6,ymm6,ymm7
-+	andn	r12d,ecx,r8d
-+	xor	r13d,r15d
-+	rorx	r14d,ecx,6
-+	vpshufb	ymm6,ymm6,ymm8
-+	lea	r9d,[r12*1+r9]
-+	xor	r13d,r14d
-+	mov	r15d,r10d
-+	vpaddd	ymm2,ymm2,ymm6
-+	rorx	r12d,r10d,22
-+	lea	r9d,[r13*1+r9]
-+	xor	r15d,r11d
-+	vpshufd	ymm7,ymm2,80
-+	rorx	r14d,r10d,13
-+	rorx	r13d,r10d,2
-+	lea	ebx,[r9*1+rbx]
-+	vpsrld	ymm6,ymm7,10
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,r11d
-+	vpsrlq	ymm7,ymm7,17
-+	xor	r14d,r13d
-+	lea	r9d,[rdi*1+r9]
-+	mov	r12d,ecx
-+	vpxor	ymm6,ymm6,ymm7
-+	add	r8d,DWORD[((12+128))+rsp]
-+	and	r12d,ebx
-+	rorx	r13d,ebx,25
-+	vpsrlq	ymm7,ymm7,2
-+	rorx	edi,ebx,11
-+	lea	r9d,[r14*1+r9]
-+	lea	r8d,[r12*1+r8]
-+	vpxor	ymm6,ymm6,ymm7
-+	andn	r12d,ebx,edx
-+	xor	r13d,edi
-+	rorx	r14d,ebx,6
-+	vpshufb	ymm6,ymm6,ymm9
-+	lea	r8d,[r12*1+r8]
-+	xor	r13d,r14d
-+	mov	edi,r9d
-+	vpaddd	ymm2,ymm2,ymm6
-+	rorx	r12d,r9d,22
-+	lea	r8d,[r13*1+r8]
-+	xor	edi,r10d
-+	vpaddd	ymm6,ymm2,YMMWORD[64+rbp]
-+	rorx	r14d,r9d,13
-+	rorx	r13d,r9d,2
-+	lea	eax,[r8*1+rax]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,r10d
-+	xor	r14d,r13d
-+	lea	r8d,[r15*1+r8]
-+	mov	r12d,ebx
-+	vmovdqa	YMMWORD[rsp],ymm6
-+	vpalignr	ymm4,ymm0,ymm3,4
-+	add	edx,DWORD[((32+128))+rsp]
-+	and	r12d,eax
-+	rorx	r13d,eax,25
-+	vpalignr	ymm7,ymm2,ymm1,4
-+	rorx	r15d,eax,11
-+	lea	r8d,[r14*1+r8]
-+	lea	edx,[r12*1+rdx]
-+	vpsrld	ymm6,ymm4,7
-+	andn	r12d,eax,ecx
-+	xor	r13d,r15d
-+	rorx	r14d,eax,6
-+	vpaddd	ymm3,ymm3,ymm7
-+	lea	edx,[r12*1+rdx]
-+	xor	r13d,r14d
-+	mov	r15d,r8d
-+	vpsrld	ymm7,ymm4,3
-+	rorx	r12d,r8d,22
-+	lea	edx,[r13*1+rdx]
-+	xor	r15d,r9d
-+	vpslld	ymm5,ymm4,14
-+	rorx	r14d,r8d,13
-+	rorx	r13d,r8d,2
-+	lea	r11d,[rdx*1+r11]
-+	vpxor	ymm4,ymm7,ymm6
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,r9d
-+	vpshufd	ymm7,ymm2,250
-+	xor	r14d,r13d
-+	lea	edx,[rdi*1+rdx]
-+	mov	r12d,eax
-+	vpsrld	ymm6,ymm6,11
-+	add	ecx,DWORD[((36+128))+rsp]
-+	and	r12d,r11d
-+	rorx	r13d,r11d,25
-+	vpxor	ymm4,ymm4,ymm5
-+	rorx	edi,r11d,11
-+	lea	edx,[r14*1+rdx]
-+	lea	ecx,[r12*1+rcx]
-+	vpslld	ymm5,ymm5,11
-+	andn	r12d,r11d,ebx
-+	xor	r13d,edi
-+	rorx	r14d,r11d,6
-+	vpxor	ymm4,ymm4,ymm6
-+	lea	ecx,[r12*1+rcx]
-+	xor	r13d,r14d
-+	mov	edi,edx
-+	vpsrld	ymm6,ymm7,10
-+	rorx	r12d,edx,22
-+	lea	ecx,[r13*1+rcx]
-+	xor	edi,r8d
-+	vpxor	ymm4,ymm4,ymm5
-+	rorx	r14d,edx,13
-+	rorx	r13d,edx,2
-+	lea	r10d,[rcx*1+r10]
-+	vpsrlq	ymm7,ymm7,17
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,r8d
-+	vpaddd	ymm3,ymm3,ymm4
-+	xor	r14d,r13d
-+	lea	ecx,[r15*1+rcx]
-+	mov	r12d,r11d
-+	vpxor	ymm6,ymm6,ymm7
-+	add	ebx,DWORD[((40+128))+rsp]
-+	and	r12d,r10d
-+	rorx	r13d,r10d,25
-+	vpsrlq	ymm7,ymm7,2
-+	rorx	r15d,r10d,11
-+	lea	ecx,[r14*1+rcx]
-+	lea	ebx,[r12*1+rbx]
-+	vpxor	ymm6,ymm6,ymm7
-+	andn	r12d,r10d,eax
-+	xor	r13d,r15d
-+	rorx	r14d,r10d,6
-+	vpshufb	ymm6,ymm6,ymm8
-+	lea	ebx,[r12*1+rbx]
-+	xor	r13d,r14d
-+	mov	r15d,ecx
-+	vpaddd	ymm3,ymm3,ymm6
-+	rorx	r12d,ecx,22
-+	lea	ebx,[r13*1+rbx]
-+	xor	r15d,edx
-+	vpshufd	ymm7,ymm3,80
-+	rorx	r14d,ecx,13
-+	rorx	r13d,ecx,2
-+	lea	r9d,[rbx*1+r9]
-+	vpsrld	ymm6,ymm7,10
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,edx
-+	vpsrlq	ymm7,ymm7,17
-+	xor	r14d,r13d
-+	lea	ebx,[rdi*1+rbx]
-+	mov	r12d,r10d
-+	vpxor	ymm6,ymm6,ymm7
-+	add	eax,DWORD[((44+128))+rsp]
-+	and	r12d,r9d
-+	rorx	r13d,r9d,25
-+	vpsrlq	ymm7,ymm7,2
-+	rorx	edi,r9d,11
-+	lea	ebx,[r14*1+rbx]
-+	lea	eax,[r12*1+rax]
-+	vpxor	ymm6,ymm6,ymm7
-+	andn	r12d,r9d,r11d
-+	xor	r13d,edi
-+	rorx	r14d,r9d,6
-+	vpshufb	ymm6,ymm6,ymm9
-+	lea	eax,[r12*1+rax]
-+	xor	r13d,r14d
-+	mov	edi,ebx
-+	vpaddd	ymm3,ymm3,ymm6
-+	rorx	r12d,ebx,22
-+	lea	eax,[r13*1+rax]
-+	xor	edi,ecx
-+	vpaddd	ymm6,ymm3,YMMWORD[96+rbp]
-+	rorx	r14d,ebx,13
-+	rorx	r13d,ebx,2
-+	lea	r8d,[rax*1+r8]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,ecx
-+	xor	r14d,r13d
-+	lea	eax,[r15*1+rax]
-+	mov	r12d,r9d
-+	vmovdqa	YMMWORD[32+rsp],ymm6
-+	lea	rbp,[128+rbp]
-+	cmp	BYTE[3+rbp],0
-+	jne	NEAR $L$avx2_00_47
-+	add	r11d,DWORD[((0+64))+rsp]
-+	and	r12d,r8d
-+	rorx	r13d,r8d,25
-+	rorx	r15d,r8d,11
-+	lea	eax,[r14*1+rax]
-+	lea	r11d,[r12*1+r11]
-+	andn	r12d,r8d,r10d
-+	xor	r13d,r15d
-+	rorx	r14d,r8d,6
-+	lea	r11d,[r12*1+r11]
-+	xor	r13d,r14d
-+	mov	r15d,eax
-+	rorx	r12d,eax,22
-+	lea	r11d,[r13*1+r11]
-+	xor	r15d,ebx
-+	rorx	r14d,eax,13
-+	rorx	r13d,eax,2
-+	lea	edx,[r11*1+rdx]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,ebx
-+	xor	r14d,r13d
-+	lea	r11d,[rdi*1+r11]
-+	mov	r12d,r8d
-+	add	r10d,DWORD[((4+64))+rsp]
-+	and	r12d,edx
-+	rorx	r13d,edx,25
-+	rorx	edi,edx,11
-+	lea	r11d,[r14*1+r11]
-+	lea	r10d,[r12*1+r10]
-+	andn	r12d,edx,r9d
-+	xor	r13d,edi
-+	rorx	r14d,edx,6
-+	lea	r10d,[r12*1+r10]
-+	xor	r13d,r14d
-+	mov	edi,r11d
-+	rorx	r12d,r11d,22
-+	lea	r10d,[r13*1+r10]
-+	xor	edi,eax
-+	rorx	r14d,r11d,13
-+	rorx	r13d,r11d,2
-+	lea	ecx,[r10*1+rcx]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,eax
-+	xor	r14d,r13d
-+	lea	r10d,[r15*1+r10]
-+	mov	r12d,edx
-+	add	r9d,DWORD[((8+64))+rsp]
-+	and	r12d,ecx
-+	rorx	r13d,ecx,25
-+	rorx	r15d,ecx,11
-+	lea	r10d,[r14*1+r10]
-+	lea	r9d,[r12*1+r9]
-+	andn	r12d,ecx,r8d
-+	xor	r13d,r15d
-+	rorx	r14d,ecx,6
-+	lea	r9d,[r12*1+r9]
-+	xor	r13d,r14d
-+	mov	r15d,r10d
-+	rorx	r12d,r10d,22
-+	lea	r9d,[r13*1+r9]
-+	xor	r15d,r11d
-+	rorx	r14d,r10d,13
-+	rorx	r13d,r10d,2
-+	lea	ebx,[r9*1+rbx]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,r11d
-+	xor	r14d,r13d
-+	lea	r9d,[rdi*1+r9]
-+	mov	r12d,ecx
-+	add	r8d,DWORD[((12+64))+rsp]
-+	and	r12d,ebx
-+	rorx	r13d,ebx,25
-+	rorx	edi,ebx,11
-+	lea	r9d,[r14*1+r9]
-+	lea	r8d,[r12*1+r8]
-+	andn	r12d,ebx,edx
-+	xor	r13d,edi
-+	rorx	r14d,ebx,6
-+	lea	r8d,[r12*1+r8]
-+	xor	r13d,r14d
-+	mov	edi,r9d
-+	rorx	r12d,r9d,22
-+	lea	r8d,[r13*1+r8]
-+	xor	edi,r10d
-+	rorx	r14d,r9d,13
-+	rorx	r13d,r9d,2
-+	lea	eax,[r8*1+rax]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,r10d
-+	xor	r14d,r13d
-+	lea	r8d,[r15*1+r8]
-+	mov	r12d,ebx
-+	add	edx,DWORD[((32+64))+rsp]
-+	and	r12d,eax
-+	rorx	r13d,eax,25
-+	rorx	r15d,eax,11
-+	lea	r8d,[r14*1+r8]
-+	lea	edx,[r12*1+rdx]
-+	andn	r12d,eax,ecx
-+	xor	r13d,r15d
-+	rorx	r14d,eax,6
-+	lea	edx,[r12*1+rdx]
-+	xor	r13d,r14d
-+	mov	r15d,r8d
-+	rorx	r12d,r8d,22
-+	lea	edx,[r13*1+rdx]
-+	xor	r15d,r9d
-+	rorx	r14d,r8d,13
-+	rorx	r13d,r8d,2
-+	lea	r11d,[rdx*1+r11]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,r9d
-+	xor	r14d,r13d
-+	lea	edx,[rdi*1+rdx]
-+	mov	r12d,eax
-+	add	ecx,DWORD[((36+64))+rsp]
-+	and	r12d,r11d
-+	rorx	r13d,r11d,25
-+	rorx	edi,r11d,11
-+	lea	edx,[r14*1+rdx]
-+	lea	ecx,[r12*1+rcx]
-+	andn	r12d,r11d,ebx
-+	xor	r13d,edi
-+	rorx	r14d,r11d,6
-+	lea	ecx,[r12*1+rcx]
-+	xor	r13d,r14d
-+	mov	edi,edx
-+	rorx	r12d,edx,22
-+	lea	ecx,[r13*1+rcx]
-+	xor	edi,r8d
-+	rorx	r14d,edx,13
-+	rorx	r13d,edx,2
-+	lea	r10d,[rcx*1+r10]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,r8d
-+	xor	r14d,r13d
-+	lea	ecx,[r15*1+rcx]
-+	mov	r12d,r11d
-+	add	ebx,DWORD[((40+64))+rsp]
-+	and	r12d,r10d
-+	rorx	r13d,r10d,25
-+	rorx	r15d,r10d,11
-+	lea	ecx,[r14*1+rcx]
-+	lea	ebx,[r12*1+rbx]
-+	andn	r12d,r10d,eax
-+	xor	r13d,r15d
-+	rorx	r14d,r10d,6
-+	lea	ebx,[r12*1+rbx]
-+	xor	r13d,r14d
-+	mov	r15d,ecx
-+	rorx	r12d,ecx,22
-+	lea	ebx,[r13*1+rbx]
-+	xor	r15d,edx
-+	rorx	r14d,ecx,13
-+	rorx	r13d,ecx,2
-+	lea	r9d,[rbx*1+r9]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,edx
-+	xor	r14d,r13d
-+	lea	ebx,[rdi*1+rbx]
-+	mov	r12d,r10d
-+	add	eax,DWORD[((44+64))+rsp]
-+	and	r12d,r9d
-+	rorx	r13d,r9d,25
-+	rorx	edi,r9d,11
-+	lea	ebx,[r14*1+rbx]
-+	lea	eax,[r12*1+rax]
-+	andn	r12d,r9d,r11d
-+	xor	r13d,edi
-+	rorx	r14d,r9d,6
-+	lea	eax,[r12*1+rax]
-+	xor	r13d,r14d
-+	mov	edi,ebx
-+	rorx	r12d,ebx,22
-+	lea	eax,[r13*1+rax]
-+	xor	edi,ecx
-+	rorx	r14d,ebx,13
-+	rorx	r13d,ebx,2
-+	lea	r8d,[rax*1+r8]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,ecx
-+	xor	r14d,r13d
-+	lea	eax,[r15*1+rax]
-+	mov	r12d,r9d
-+	add	r11d,DWORD[rsp]
-+	and	r12d,r8d
-+	rorx	r13d,r8d,25
-+	rorx	r15d,r8d,11
-+	lea	eax,[r14*1+rax]
-+	lea	r11d,[r12*1+r11]
-+	andn	r12d,r8d,r10d
-+	xor	r13d,r15d
-+	rorx	r14d,r8d,6
-+	lea	r11d,[r12*1+r11]
-+	xor	r13d,r14d
-+	mov	r15d,eax
-+	rorx	r12d,eax,22
-+	lea	r11d,[r13*1+r11]
-+	xor	r15d,ebx
-+	rorx	r14d,eax,13
-+	rorx	r13d,eax,2
-+	lea	edx,[r11*1+rdx]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,ebx
-+	xor	r14d,r13d
-+	lea	r11d,[rdi*1+r11]
-+	mov	r12d,r8d
-+	add	r10d,DWORD[4+rsp]
-+	and	r12d,edx
-+	rorx	r13d,edx,25
-+	rorx	edi,edx,11
-+	lea	r11d,[r14*1+r11]
-+	lea	r10d,[r12*1+r10]
-+	andn	r12d,edx,r9d
-+	xor	r13d,edi
-+	rorx	r14d,edx,6
-+	lea	r10d,[r12*1+r10]
-+	xor	r13d,r14d
-+	mov	edi,r11d
-+	rorx	r12d,r11d,22
-+	lea	r10d,[r13*1+r10]
-+	xor	edi,eax
-+	rorx	r14d,r11d,13
-+	rorx	r13d,r11d,2
-+	lea	ecx,[r10*1+rcx]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,eax
-+	xor	r14d,r13d
-+	lea	r10d,[r15*1+r10]
-+	mov	r12d,edx
-+	add	r9d,DWORD[8+rsp]
-+	and	r12d,ecx
-+	rorx	r13d,ecx,25
-+	rorx	r15d,ecx,11
-+	lea	r10d,[r14*1+r10]
-+	lea	r9d,[r12*1+r9]
-+	andn	r12d,ecx,r8d
-+	xor	r13d,r15d
-+	rorx	r14d,ecx,6
-+	lea	r9d,[r12*1+r9]
-+	xor	r13d,r14d
-+	mov	r15d,r10d
-+	rorx	r12d,r10d,22
-+	lea	r9d,[r13*1+r9]
-+	xor	r15d,r11d
-+	rorx	r14d,r10d,13
-+	rorx	r13d,r10d,2
-+	lea	ebx,[r9*1+rbx]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,r11d
-+	xor	r14d,r13d
-+	lea	r9d,[rdi*1+r9]
-+	mov	r12d,ecx
-+	add	r8d,DWORD[12+rsp]
-+	and	r12d,ebx
-+	rorx	r13d,ebx,25
-+	rorx	edi,ebx,11
-+	lea	r9d,[r14*1+r9]
-+	lea	r8d,[r12*1+r8]
-+	andn	r12d,ebx,edx
-+	xor	r13d,edi
-+	rorx	r14d,ebx,6
-+	lea	r8d,[r12*1+r8]
-+	xor	r13d,r14d
-+	mov	edi,r9d
-+	rorx	r12d,r9d,22
-+	lea	r8d,[r13*1+r8]
-+	xor	edi,r10d
-+	rorx	r14d,r9d,13
-+	rorx	r13d,r9d,2
-+	lea	eax,[r8*1+rax]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,r10d
-+	xor	r14d,r13d
-+	lea	r8d,[r15*1+r8]
-+	mov	r12d,ebx
-+	add	edx,DWORD[32+rsp]
-+	and	r12d,eax
-+	rorx	r13d,eax,25
-+	rorx	r15d,eax,11
-+	lea	r8d,[r14*1+r8]
-+	lea	edx,[r12*1+rdx]
-+	andn	r12d,eax,ecx
-+	xor	r13d,r15d
-+	rorx	r14d,eax,6
-+	lea	edx,[r12*1+rdx]
-+	xor	r13d,r14d
-+	mov	r15d,r8d
-+	rorx	r12d,r8d,22
-+	lea	edx,[r13*1+rdx]
-+	xor	r15d,r9d
-+	rorx	r14d,r8d,13
-+	rorx	r13d,r8d,2
-+	lea	r11d,[rdx*1+r11]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,r9d
-+	xor	r14d,r13d
-+	lea	edx,[rdi*1+rdx]
-+	mov	r12d,eax
-+	add	ecx,DWORD[36+rsp]
-+	and	r12d,r11d
-+	rorx	r13d,r11d,25
-+	rorx	edi,r11d,11
-+	lea	edx,[r14*1+rdx]
-+	lea	ecx,[r12*1+rcx]
-+	andn	r12d,r11d,ebx
-+	xor	r13d,edi
-+	rorx	r14d,r11d,6
-+	lea	ecx,[r12*1+rcx]
-+	xor	r13d,r14d
-+	mov	edi,edx
-+	rorx	r12d,edx,22
-+	lea	ecx,[r13*1+rcx]
-+	xor	edi,r8d
-+	rorx	r14d,edx,13
-+	rorx	r13d,edx,2
-+	lea	r10d,[rcx*1+r10]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,r8d
-+	xor	r14d,r13d
-+	lea	ecx,[r15*1+rcx]
-+	mov	r12d,r11d
-+	add	ebx,DWORD[40+rsp]
-+	and	r12d,r10d
-+	rorx	r13d,r10d,25
-+	rorx	r15d,r10d,11
-+	lea	ecx,[r14*1+rcx]
-+	lea	ebx,[r12*1+rbx]
-+	andn	r12d,r10d,eax
-+	xor	r13d,r15d
-+	rorx	r14d,r10d,6
-+	lea	ebx,[r12*1+rbx]
-+	xor	r13d,r14d
-+	mov	r15d,ecx
-+	rorx	r12d,ecx,22
-+	lea	ebx,[r13*1+rbx]
-+	xor	r15d,edx
-+	rorx	r14d,ecx,13
-+	rorx	r13d,ecx,2
-+	lea	r9d,[rbx*1+r9]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,edx
-+	xor	r14d,r13d
-+	lea	ebx,[rdi*1+rbx]
-+	mov	r12d,r10d
-+	add	eax,DWORD[44+rsp]
-+	and	r12d,r9d
-+	rorx	r13d,r9d,25
-+	rorx	edi,r9d,11
-+	lea	ebx,[r14*1+rbx]
-+	lea	eax,[r12*1+rax]
-+	andn	r12d,r9d,r11d
-+	xor	r13d,edi
-+	rorx	r14d,r9d,6
-+	lea	eax,[r12*1+rax]
-+	xor	r13d,r14d
-+	mov	edi,ebx
-+	rorx	r12d,ebx,22
-+	lea	eax,[r13*1+rax]
-+	xor	edi,ecx
-+	rorx	r14d,ebx,13
-+	rorx	r13d,ebx,2
-+	lea	r8d,[rax*1+r8]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,ecx
-+	xor	r14d,r13d
-+	lea	eax,[r15*1+rax]
-+	mov	r12d,r9d
-+	mov	rdi,QWORD[512+rsp]
-+	add	eax,r14d
-+
-+	lea	rbp,[448+rsp]
-+
-+	add	eax,DWORD[rdi]
-+	add	ebx,DWORD[4+rdi]
-+	add	ecx,DWORD[8+rdi]
-+	add	edx,DWORD[12+rdi]
-+	add	r8d,DWORD[16+rdi]
-+	add	r9d,DWORD[20+rdi]
-+	add	r10d,DWORD[24+rdi]
-+	add	r11d,DWORD[28+rdi]
-+
-+	mov	DWORD[rdi],eax
-+	mov	DWORD[4+rdi],ebx
-+	mov	DWORD[8+rdi],ecx
-+	mov	DWORD[12+rdi],edx
-+	mov	DWORD[16+rdi],r8d
-+	mov	DWORD[20+rdi],r9d
-+	mov	DWORD[24+rdi],r10d
-+	mov	DWORD[28+rdi],r11d
-+
-+	cmp	rsi,QWORD[80+rbp]
-+	je	NEAR $L$done_avx2
-+
-+	xor	r14d,r14d
-+	mov	edi,ebx
-+	xor	edi,ecx
-+	mov	r12d,r9d
-+	jmp	NEAR $L$ower_avx2
-+ALIGN	16
-+$L$ower_avx2:
-+	add	r11d,DWORD[((0+16))+rbp]
-+	and	r12d,r8d
-+	rorx	r13d,r8d,25
-+	rorx	r15d,r8d,11
-+	lea	eax,[r14*1+rax]
-+	lea	r11d,[r12*1+r11]
-+	andn	r12d,r8d,r10d
-+	xor	r13d,r15d
-+	rorx	r14d,r8d,6
-+	lea	r11d,[r12*1+r11]
-+	xor	r13d,r14d
-+	mov	r15d,eax
-+	rorx	r12d,eax,22
-+	lea	r11d,[r13*1+r11]
-+	xor	r15d,ebx
-+	rorx	r14d,eax,13
-+	rorx	r13d,eax,2
-+	lea	edx,[r11*1+rdx]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,ebx
-+	xor	r14d,r13d
-+	lea	r11d,[rdi*1+r11]
-+	mov	r12d,r8d
-+	add	r10d,DWORD[((4+16))+rbp]
-+	and	r12d,edx
-+	rorx	r13d,edx,25
-+	rorx	edi,edx,11
-+	lea	r11d,[r14*1+r11]
-+	lea	r10d,[r12*1+r10]
-+	andn	r12d,edx,r9d
-+	xor	r13d,edi
-+	rorx	r14d,edx,6
-+	lea	r10d,[r12*1+r10]
-+	xor	r13d,r14d
-+	mov	edi,r11d
-+	rorx	r12d,r11d,22
-+	lea	r10d,[r13*1+r10]
-+	xor	edi,eax
-+	rorx	r14d,r11d,13
-+	rorx	r13d,r11d,2
-+	lea	ecx,[r10*1+rcx]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,eax
-+	xor	r14d,r13d
-+	lea	r10d,[r15*1+r10]
-+	mov	r12d,edx
-+	add	r9d,DWORD[((8+16))+rbp]
-+	and	r12d,ecx
-+	rorx	r13d,ecx,25
-+	rorx	r15d,ecx,11
-+	lea	r10d,[r14*1+r10]
-+	lea	r9d,[r12*1+r9]
-+	andn	r12d,ecx,r8d
-+	xor	r13d,r15d
-+	rorx	r14d,ecx,6
-+	lea	r9d,[r12*1+r9]
-+	xor	r13d,r14d
-+	mov	r15d,r10d
-+	rorx	r12d,r10d,22
-+	lea	r9d,[r13*1+r9]
-+	xor	r15d,r11d
-+	rorx	r14d,r10d,13
-+	rorx	r13d,r10d,2
-+	lea	ebx,[r9*1+rbx]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,r11d
-+	xor	r14d,r13d
-+	lea	r9d,[rdi*1+r9]
-+	mov	r12d,ecx
-+	add	r8d,DWORD[((12+16))+rbp]
-+	and	r12d,ebx
-+	rorx	r13d,ebx,25
-+	rorx	edi,ebx,11
-+	lea	r9d,[r14*1+r9]
-+	lea	r8d,[r12*1+r8]
-+	andn	r12d,ebx,edx
-+	xor	r13d,edi
-+	rorx	r14d,ebx,6
-+	lea	r8d,[r12*1+r8]
-+	xor	r13d,r14d
-+	mov	edi,r9d
-+	rorx	r12d,r9d,22
-+	lea	r8d,[r13*1+r8]
-+	xor	edi,r10d
-+	rorx	r14d,r9d,13
-+	rorx	r13d,r9d,2
-+	lea	eax,[r8*1+rax]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,r10d
-+	xor	r14d,r13d
-+	lea	r8d,[r15*1+r8]
-+	mov	r12d,ebx
-+	add	edx,DWORD[((32+16))+rbp]
-+	and	r12d,eax
-+	rorx	r13d,eax,25
-+	rorx	r15d,eax,11
-+	lea	r8d,[r14*1+r8]
-+	lea	edx,[r12*1+rdx]
-+	andn	r12d,eax,ecx
-+	xor	r13d,r15d
-+	rorx	r14d,eax,6
-+	lea	edx,[r12*1+rdx]
-+	xor	r13d,r14d
-+	mov	r15d,r8d
-+	rorx	r12d,r8d,22
-+	lea	edx,[r13*1+rdx]
-+	xor	r15d,r9d
-+	rorx	r14d,r8d,13
-+	rorx	r13d,r8d,2
-+	lea	r11d,[rdx*1+r11]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,r9d
-+	xor	r14d,r13d
-+	lea	edx,[rdi*1+rdx]
-+	mov	r12d,eax
-+	add	ecx,DWORD[((36+16))+rbp]
-+	and	r12d,r11d
-+	rorx	r13d,r11d,25
-+	rorx	edi,r11d,11
-+	lea	edx,[r14*1+rdx]
-+	lea	ecx,[r12*1+rcx]
-+	andn	r12d,r11d,ebx
-+	xor	r13d,edi
-+	rorx	r14d,r11d,6
-+	lea	ecx,[r12*1+rcx]
-+	xor	r13d,r14d
-+	mov	edi,edx
-+	rorx	r12d,edx,22
-+	lea	ecx,[r13*1+rcx]
-+	xor	edi,r8d
-+	rorx	r14d,edx,13
-+	rorx	r13d,edx,2
-+	lea	r10d,[rcx*1+r10]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,r8d
-+	xor	r14d,r13d
-+	lea	ecx,[r15*1+rcx]
-+	mov	r12d,r11d
-+	add	ebx,DWORD[((40+16))+rbp]
-+	and	r12d,r10d
-+	rorx	r13d,r10d,25
-+	rorx	r15d,r10d,11
-+	lea	ecx,[r14*1+rcx]
-+	lea	ebx,[r12*1+rbx]
-+	andn	r12d,r10d,eax
-+	xor	r13d,r15d
-+	rorx	r14d,r10d,6
-+	lea	ebx,[r12*1+rbx]
-+	xor	r13d,r14d
-+	mov	r15d,ecx
-+	rorx	r12d,ecx,22
-+	lea	ebx,[r13*1+rbx]
-+	xor	r15d,edx
-+	rorx	r14d,ecx,13
-+	rorx	r13d,ecx,2
-+	lea	r9d,[rbx*1+r9]
-+	and	edi,r15d
-+	xor	r14d,r12d
-+	xor	edi,edx
-+	xor	r14d,r13d
-+	lea	ebx,[rdi*1+rbx]
-+	mov	r12d,r10d
-+	add	eax,DWORD[((44+16))+rbp]
-+	and	r12d,r9d
-+	rorx	r13d,r9d,25
-+	rorx	edi,r9d,11
-+	lea	ebx,[r14*1+rbx]
-+	lea	eax,[r12*1+rax]
-+	andn	r12d,r9d,r11d
-+	xor	r13d,edi
-+	rorx	r14d,r9d,6
-+	lea	eax,[r12*1+rax]
-+	xor	r13d,r14d
-+	mov	edi,ebx
-+	rorx	r12d,ebx,22
-+	lea	eax,[r13*1+rax]
-+	xor	edi,ecx
-+	rorx	r14d,ebx,13
-+	rorx	r13d,ebx,2
-+	lea	r8d,[rax*1+r8]
-+	and	r15d,edi
-+	xor	r14d,r12d
-+	xor	r15d,ecx
-+	xor	r14d,r13d
-+	lea	eax,[r15*1+rax]
-+	mov	r12d,r9d
-+	lea	rbp,[((-64))+rbp]
-+	cmp	rbp,rsp
-+	jae	NEAR $L$ower_avx2
-+
-+	mov	rdi,QWORD[512+rsp]
-+	add	eax,r14d
-+
-+	lea	rsp,[448+rsp]
-+
-+	add	eax,DWORD[rdi]
-+	add	ebx,DWORD[4+rdi]
-+	add	ecx,DWORD[8+rdi]
-+	add	edx,DWORD[12+rdi]
-+	add	r8d,DWORD[16+rdi]
-+	add	r9d,DWORD[20+rdi]
-+	lea	rsi,[128+rsi]
-+	add	r10d,DWORD[24+rdi]
-+	mov	r12,rsi
-+	add	r11d,DWORD[28+rdi]
-+	cmp	rsi,QWORD[((64+16))+rsp]
-+
-+	mov	DWORD[rdi],eax
-+	cmove	r12,rsp
-+	mov	DWORD[4+rdi],ebx
-+	mov	DWORD[8+rdi],ecx
-+	mov	DWORD[12+rdi],edx
-+	mov	DWORD[16+rdi],r8d
-+	mov	DWORD[20+rdi],r9d
-+	mov	DWORD[24+rdi],r10d
-+	mov	DWORD[28+rdi],r11d
-+
-+	jbe	NEAR $L$oop_avx2
-+	lea	rbp,[rsp]
-+
-+$L$done_avx2:
-+	lea	rsp,[rbp]
-+	mov	rsi,QWORD[((64+24))+rsp]
-+	vzeroupper
-+	movaps	xmm6,XMMWORD[((64+32))+rsp]
-+	movaps	xmm7,XMMWORD[((64+48))+rsp]
-+	movaps	xmm8,XMMWORD[((64+64))+rsp]
-+	movaps	xmm9,XMMWORD[((64+80))+rsp]
-+	mov	r15,QWORD[rsi]
-+	mov	r14,QWORD[8+rsi]
-+	mov	r13,QWORD[16+rsi]
-+	mov	r12,QWORD[24+rsi]
-+	mov	rbp,QWORD[32+rsi]
-+	mov	rbx,QWORD[40+rsi]
-+	lea	rsp,[48+rsi]
-+$L$epilogue_avx2:
-+	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
-+	mov	rsi,QWORD[16+rsp]
-+	DB	0F3h,0C3h		;repret
-+$L$SEH_end_sha256_block_data_order_avx2:
-+EXTERN	__imp_RtlVirtualUnwind
-+
-+ALIGN	16
-+se_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	mov	rsi,QWORD[8+r9]
-+	mov	r11,QWORD[56+r9]
-+
-+	mov	r10d,DWORD[r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jb	NEAR $L$in_prologue
-+
-+	mov	rax,QWORD[152+r8]
-+
-+	mov	r10d,DWORD[4+r11]
-+	lea	r10,[r10*1+rsi]
-+	cmp	rbx,r10
-+	jae	NEAR $L$in_prologue
-+	lea	r10,[$L$avx2_shortcut]
-+	cmp	rbx,r10
-+	jb	NEAR $L$not_in_avx2
-+
-+	and	rax,-256*4
-+	add	rax,448
-+$L$not_in_avx2:
-+	mov	rsi,rax
-+	mov	rax,QWORD[((64+24))+rax]
-+	lea	rax,[48+rax]
-+
-+	mov	rbx,QWORD[((-8))+rax]
-+	mov	rbp,QWORD[((-16))+rax]
-+	mov	r12,QWORD[((-24))+rax]
-+	mov	r13,QWORD[((-32))+rax]
-+	mov	r14,QWORD[((-40))+rax]
-+	mov	r15,QWORD[((-48))+rax]
-+	mov	QWORD[144+r8],rbx
-+	mov	QWORD[160+r8],rbp
-+	mov	QWORD[216+r8],r12
-+	mov	QWORD[224+r8],r13
-+	mov	QWORD[232+r8],r14
-+	mov	QWORD[240+r8],r15
-+
-+	lea	r10,[$L$epilogue]
-+	cmp	rbx,r10
-+	jb	NEAR $L$in_prologue
-+
-+	lea	rsi,[((64+32))+rsi]
-+	lea	rdi,[512+r8]
-+	mov	ecx,8
-+	DD	0xa548f3fc
-+
-+$L$in_prologue:
-+	mov	rdi,QWORD[8+rax]
-+	mov	rsi,QWORD[16+rax]
-+	mov	QWORD[152+r8],rax
-+	mov	QWORD[168+r8],rsi
-+	mov	QWORD[176+r8],rdi
-+
-+	mov	rdi,QWORD[40+r9]
-+	mov	rsi,r8
-+	mov	ecx,154
-+	DD	0xa548f3fc
-+
-+	mov	rsi,r9
-+	xor	rcx,rcx
-+	mov	rdx,QWORD[8+rsi]
-+	mov	r8,QWORD[rsi]
-+	mov	r9,QWORD[16+rsi]
-+	mov	r10,QWORD[40+rsi]
-+	lea	r11,[56+rsi]
-+	lea	r12,[24+rsi]
-+	mov	QWORD[32+rsp],r10
-+	mov	QWORD[40+rsp],r11
-+	mov	QWORD[48+rsp],r12
-+	mov	QWORD[56+rsp],rcx
-+	call	QWORD[__imp_RtlVirtualUnwind]
-+
-+	mov	eax,1
-+	add	rsp,64
-+	popfq
-+	pop	r15
-+	pop	r14
-+	pop	r13
-+	pop	r12
-+	pop	rbp
-+	pop	rbx
-+	pop	rdi
-+	pop	rsi
-+	DB	0F3h,0C3h		;repret
-+
-+
-+ALIGN	16
-+shaext_handler:
-+	push	rsi
-+	push	rdi
-+	push	rbx
-+	push	rbp
-+	push	r12
-+	push	r13
-+	push	r14
-+	push	r15
-+	pushfq
-+	sub	rsp,64
-+
-+	mov	rax,QWORD[120+r8]
-+	mov	rbx,QWORD[248+r8]
-+
-+	lea	r10,[$L$prologue_shaext]
-+	cmp	rbx,r10
-+	jb	NEAR $L$in_prologue
-+
-+	lea	r10,[$L$epilogue_shaext]
-+	cmp	rbx,r10
-+	jae	NEAR $L$in_prologue
-+
-+	lea	rsi,[((-8-80))+rax]
-+	lea	rdi,[512+r8]
-+	mov	ecx,10
-+	DD	0xa548f3fc
-+
-+	jmp	NEAR $L$in_prologue
-+
-+section	.pdata rdata align=4
-+ALIGN	4
-+	DD	$L$SEH_begin_sha256_block_data_order wrt ..imagebase
-+	DD	$L$SEH_end_sha256_block_data_order wrt ..imagebase
-+	DD	$L$SEH_info_sha256_block_data_order wrt ..imagebase
-+	DD	$L$SEH_begin_sha256_block_data_order_shaext wrt ..imagebase
-+	DD	$L$SEH_end_sha256_block_data_order_shaext wrt ..imagebase
-+	DD	$L$SEH_info_sha256_block_data_order_shaext wrt ..imagebase
-+	DD	$L$SEH_begin_sha256_block_data_order_ssse3 wrt ..imagebase
-+	DD	$L$SEH_end_sha256_block_data_order_ssse3 wrt ..imagebase
-+	DD	$L$SEH_info_sha256_block_data_order_ssse3 wrt ..imagebase
-+	DD	$L$SEH_begin_sha256_block_data_order_avx wrt ..imagebase
-+	DD	$L$SEH_end_sha256_block_data_order_avx wrt ..imagebase
-+	DD	$L$SEH_info_sha256_block_data_order_avx wrt ..imagebase
-+	DD	$L$SEH_begin_sha256_block_data_order_avx2 wrt ..imagebase
-+	DD	$L$SEH_end_sha256_block_data_order_avx2 wrt ..imagebase
-+	DD	$L$SEH_info_sha256_block_data_order_avx2 wrt ..imagebase
-+section	.xdata rdata align=8
-+ALIGN	8
-+$L$SEH_info_sha256_block_data_order:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase
-+$L$SEH_info_sha256_block_data_order_shaext:
-+DB	9,0,0,0
-+	DD	shaext_handler wrt ..imagebase
-+$L$SEH_info_sha256_block_data_order_ssse3:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$prologue_ssse3 wrt ..imagebase,$L$epilogue_ssse3 wrt ..imagebase
-+$L$SEH_info_sha256_block_data_order_avx:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase
-+$L$SEH_info_sha256_block_data_order_avx2:
-+DB	9,0,0,0
-+	DD	se_handler wrt ..imagebase
-+	DD	$L$prologue_avx2 wrt ..imagebase,$L$epilogue_avx2 wrt ..imagebase
-diff --git a/SMP/lib/priority_options.h b/SMP/lib/priority_options.h
-new file mode 100644
-index 0000000..77bc9ae
---- /dev/null
-+++ b/SMP/lib/priority_options.h
-@@ -0,0 +1,179 @@
-+/* ANSI-C code produced by gperf version 3.0.4 */
-+/* Command-line: gperf --global-table -t lib/priority_options.gperf  */
-+/* Computed positions: -k'1,$' */
-+
-+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
-+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
-+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
-+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
-+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
-+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
-+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
-+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
-+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
-+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
-+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
-+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
-+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
-+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
-+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
-+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
-+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
-+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
-+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
-+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
-+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
-+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
-+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
-+/* The character set is not based on ISO-646.  */
-+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
-+#endif
-+
-+#line 1 "lib/priority_options.gperf"
-+
-+typedef void (*option_set_func)(gnutls_priority_t);
-+#line 6 "lib/priority_options.gperf"
-+struct priority_options_st { const char *name; option_set_func func; };
-+
-+#define TOTAL_KEYWORDS 29
-+#define MIN_WORD_LENGTH 6
-+#define MAX_WORD_LENGTH 32
-+#define MIN_HASH_VALUE 6
-+#define MAX_HASH_VALUE 52
-+/* maximum key range = 47, duplicates = 0 */
-+
-+#ifdef __GNUC__
-+__inline
-+#else
-+#ifdef __cplusplus
-+inline
-+#endif
-+#endif
-+static unsigned int
-+hash (register const char *str, register unsigned int len)
-+{
-+  static const unsigned char asso_values[] =
-+    {
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      25, 53, 53,  5, 53, 53, 20, 53, 53, 53,
-+      53, 53, 53, 53, 53,  5, 53, 10,  0, 25,
-+      10,  0,  0, 53, 53, 10, 20,  0,  0, 53,
-+      10, 53, 53,  0,  0,  0,  0, 30, 53,  5,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
-+      53, 53, 53, 53, 53, 53
-+    };
-+  return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]];
-+}
-+
-+static const struct priority_options_st wordlist[] =
-+  {
-+    {""}, {""}, {""}, {""}, {""}, {""},
-+#line 12 "lib/priority_options.gperf"
-+    {"NO_ETM", enable_no_etm},
-+    {""}, {""}, {""},
-+#line 11 "lib/priority_options.gperf"
-+    {"NO_TICKETS", enable_no_tickets},
-+#line 35 "lib/priority_options.gperf"
-+    {"NEW_PADDING", dummy_func},
-+    {""},
-+#line 10 "lib/priority_options.gperf"
-+    {"NO_EXTENSIONS", enable_no_extensions},
-+    {""},
-+#line 13 "lib/priority_options.gperf"
-+    {"NO_SESSION_HASH", enable_no_ext_master_secret},
-+#line 8 "lib/priority_options.gperf"
-+    {"COMPAT", enable_compat},
-+#line 25 "lib/priority_options.gperf"
-+    {"DISABLE_WILDCARDS", disable_wildcards},
-+#line 21 "lib/priority_options.gperf"
-+    {"SAFE_RENEGOTIATION", enable_safe_renegotiation},
-+#line 17 "lib/priority_options.gperf"
-+    {"SSL3_RECORD_VERSION", enable_ssl3_record_version},
-+#line 20 "lib/priority_options.gperf"
-+    {"UNSAFE_RENEGOTIATION", enable_unsafe_renegotiation},
-+#line 14 "lib/priority_options.gperf"
-+    {"STATELESS_COMPRESSION", dummy_func},
-+#line 31 "lib/priority_options.gperf"
-+    {"PROFILE_HIGH", enable_profile_high},
-+#line 24 "lib/priority_options.gperf"
-+    {"FALLBACK_SCSV", enable_fallback_scsv},
-+#line 30 "lib/priority_options.gperf"
-+    {"PROFILE_MEDIUM", enable_profile_medium},
-+#line 16 "lib/priority_options.gperf"
-+    {"VERIFY_DISABLE_CRL_CHECKS", disable_crl_checks},
-+#line 23 "lib/priority_options.gperf"
-+    {"DISABLE_SAFE_RENEGOTIATION", disable_safe_renegotiation},
-+#line 19 "lib/priority_options.gperf"
-+    {"VERIFY_ALLOW_X509_V1_CA_CRT", dummy_func},
-+#line 32 "lib/priority_options.gperf"
-+    {"PROFILE_ULTRA", enable_profile_ultra},
-+#line 29 "lib/priority_options.gperf"
-+    {"PROFILE_LEGACY", enable_profile_legacy},
-+#line 15 "lib/priority_options.gperf"
-+    {"VERIFY_ALLOW_SIGN_RSA_MD5", enable_verify_allow_rsa_md5},
-+#line 22 "lib/priority_options.gperf"
-+    {"PARTIAL_RENEGOTIATION", enable_partial_safe_renegotiation},
-+#line 36 "lib/priority_options.gperf"
-+    {"DEBUG_ALLOW_KEY_USAGE_VIOLATIONS", enable_server_key_usage_violations},
-+    {""}, {""}, {""},
-+#line 9 "lib/priority_options.gperf"
-+    {"DUMBFW", enable_dumbfw},
-+#line 27 "lib/priority_options.gperf"
-+    {"PROFILE_VERY_WEAK", enable_profile_very_weak},
-+    {""}, {""}, {""},
-+#line 18 "lib/priority_options.gperf"
-+    {"LATEST_RECORD_VERSION", enable_latest_record_version},
-+#line 26 "lib/priority_options.gperf"
-+    {"SERVER_PRECEDENCE", enable_server_precedence},
-+    {""}, {""}, {""}, {""},
-+#line 33 "lib/priority_options.gperf"
-+    {"PROFILE_SUITEB128", enable_profile_suiteb128},
-+    {""}, {""}, {""},
-+#line 28 "lib/priority_options.gperf"
-+    {"PROFILE_LOW", enable_profile_low},
-+#line 34 "lib/priority_options.gperf"
-+    {"PROFILE_SUITEB192", enable_profile_suiteb192}
-+  };
-+
-+#ifdef __GNUC__
-+__inline
-+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
-+__attribute__ ((__gnu_inline__))
-+#endif
-+#endif
-+static const struct priority_options_st *
-+in_word_set (register const char *str, register unsigned int len)
-+{
-+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
-+    {
-+      register int key = hash (str, len);
-+
-+      if (key <= MAX_HASH_VALUE && key >= 0)
-+        {
-+          register const char *s = wordlist[key].name;
-+
-+          if (*str == *s && !strcmp (str + 1, s + 1))
-+            return &wordlist[key];
-+        }
-+    }
-+  return 0;
-+}
-diff --git a/SMP/lib/unistring/unictype.h b/SMP/lib/unistring/unictype.h
-new file mode 100644
-index 0000000..cd35351
---- /dev/null
-+++ b/SMP/lib/unistring/unictype.h
-@@ -0,0 +1,1060 @@
-+/* Unicode character classification and properties.
-+   Copyright (C) 2002, 2005-2016 Free Software Foundation, Inc.
-+
-+   This program is free software: you can redistribute it and/or modify it
-+   under the terms of either:
-+
-+    * the GNU Lesser General Public License as published
-+   by the Free Software Foundation; either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   or
-+
-+   * the GNU General Public License as published by the Free
-+   Software Foundation; either version 2 of the License, or
-+   (at your option) any later version.
-+
-+   or both in parallel, as here.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-+
-+#ifndef _UNICTYPE_H
-+#define _UNICTYPE_H
-+
-+#include "unitypes.h"
-+
-+/* Get bool.  */
-+#include <stdbool.h>
-+
-+/* Get size_t.  */
-+#include <stddef.h>
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/* ========================================================================= */
-+
-+/* Field 1 of Unicode Character Database: Character name.
-+   See "uniname.h".  */
-+
-+/* ========================================================================= */
-+
-+/* Field 2 of Unicode Character Database: General category.  */
-+
-+/* Data type denoting a General category value.  This is not just a bitmask,
-+   but rather a bitmask and a pointer to the lookup table, so that programs
-+   that use only the predefined bitmasks (i.e. don't combine bitmasks with &
-+   and |) don't have a link-time dependency towards the big general table.  */
-+typedef struct
-+{
-+  uint32_t bitmask : 31;
-+  /*bool*/ unsigned int generic : 1;
-+  union
-+  {
-+    const void *table;                               /* when generic is 0 */
-+    bool (*lookup_fn) (ucs4_t uc, uint32_t bitmask); /* when generic is 1 */
-+  } lookup;
-+}
-+uc_general_category_t;
-+
-+/* Bits and bit masks denoting General category values.  UnicodeData-3.2.0.html
-+   says a 32-bit integer will always suffice to represent them.
-+   These bit masks can only be used with the uc_is_general_category_withtable
-+   function.  */
-+enum
-+{
-+  UC_CATEGORY_MASK_L  = 0x0000001f,
-+  UC_CATEGORY_MASK_LC = 0x00000007,
-+  UC_CATEGORY_MASK_Lu = 0x00000001,
-+  UC_CATEGORY_MASK_Ll = 0x00000002,
-+  UC_CATEGORY_MASK_Lt = 0x00000004,
-+  UC_CATEGORY_MASK_Lm = 0x00000008,
-+  UC_CATEGORY_MASK_Lo = 0x00000010,
-+  UC_CATEGORY_MASK_M  = 0x000000e0,
-+  UC_CATEGORY_MASK_Mn = 0x00000020,
-+  UC_CATEGORY_MASK_Mc = 0x00000040,
-+  UC_CATEGORY_MASK_Me = 0x00000080,
-+  UC_CATEGORY_MASK_N  = 0x00000700,
-+  UC_CATEGORY_MASK_Nd = 0x00000100,
-+  UC_CATEGORY_MASK_Nl = 0x00000200,
-+  UC_CATEGORY_MASK_No = 0x00000400,
-+  UC_CATEGORY_MASK_P  = 0x0003f800,
-+  UC_CATEGORY_MASK_Pc = 0x00000800,
-+  UC_CATEGORY_MASK_Pd = 0x00001000,
-+  UC_CATEGORY_MASK_Ps = 0x00002000,
-+  UC_CATEGORY_MASK_Pe = 0x00004000,
-+  UC_CATEGORY_MASK_Pi = 0x00008000,
-+  UC_CATEGORY_MASK_Pf = 0x00010000,
-+  UC_CATEGORY_MASK_Po = 0x00020000,
-+  UC_CATEGORY_MASK_S  = 0x003c0000,
-+  UC_CATEGORY_MASK_Sm = 0x00040000,
-+  UC_CATEGORY_MASK_Sc = 0x00080000,
-+  UC_CATEGORY_MASK_Sk = 0x00100000,
-+  UC_CATEGORY_MASK_So = 0x00200000,
-+  UC_CATEGORY_MASK_Z  = 0x01c00000,
-+  UC_CATEGORY_MASK_Zs = 0x00400000,
-+  UC_CATEGORY_MASK_Zl = 0x00800000,
-+  UC_CATEGORY_MASK_Zp = 0x01000000,
-+  UC_CATEGORY_MASK_C  = 0x3e000000,
-+  UC_CATEGORY_MASK_Cc = 0x02000000,
-+  UC_CATEGORY_MASK_Cf = 0x04000000,
-+  UC_CATEGORY_MASK_Cs = 0x08000000,
-+  UC_CATEGORY_MASK_Co = 0x10000000,
-+  UC_CATEGORY_MASK_Cn = 0x20000000
-+};
-+
-+/* Predefined General category values.  */
-+extern const uc_general_category_t UC_CATEGORY_L;
-+extern const uc_general_category_t UC_CATEGORY_LC;
-+extern const uc_general_category_t UC_CATEGORY_Lu;
-+extern const uc_general_category_t UC_CATEGORY_Ll;
-+extern const uc_general_category_t UC_CATEGORY_Lt;
-+extern const uc_general_category_t UC_CATEGORY_Lm;
-+extern const uc_general_category_t UC_CATEGORY_Lo;
-+extern const uc_general_category_t UC_CATEGORY_M;
-+extern const uc_general_category_t UC_CATEGORY_Mn;
-+extern const uc_general_category_t UC_CATEGORY_Mc;
-+extern const uc_general_category_t UC_CATEGORY_Me;
-+extern const uc_general_category_t UC_CATEGORY_N;
-+extern const uc_general_category_t UC_CATEGORY_Nd;
-+extern const uc_general_category_t UC_CATEGORY_Nl;
-+extern const uc_general_category_t UC_CATEGORY_No;
-+extern const uc_general_category_t UC_CATEGORY_P;
-+extern const uc_general_category_t UC_CATEGORY_Pc;
-+extern const uc_general_category_t UC_CATEGORY_Pd;
-+extern const uc_general_category_t UC_CATEGORY_Ps;
-+extern const uc_general_category_t UC_CATEGORY_Pe;
-+extern const uc_general_category_t UC_CATEGORY_Pi;
-+extern const uc_general_category_t UC_CATEGORY_Pf;
-+extern const uc_general_category_t UC_CATEGORY_Po;
-+extern const uc_general_category_t UC_CATEGORY_S;
-+extern const uc_general_category_t UC_CATEGORY_Sm;
-+extern const uc_general_category_t UC_CATEGORY_Sc;
-+extern const uc_general_category_t UC_CATEGORY_Sk;
-+extern const uc_general_category_t UC_CATEGORY_So;
-+extern const uc_general_category_t UC_CATEGORY_Z;
-+extern const uc_general_category_t UC_CATEGORY_Zs;
-+extern const uc_general_category_t UC_CATEGORY_Zl;
-+extern const uc_general_category_t UC_CATEGORY_Zp;
-+extern const uc_general_category_t UC_CATEGORY_C;
-+extern const uc_general_category_t UC_CATEGORY_Cc;
-+extern const uc_general_category_t UC_CATEGORY_Cf;
-+extern const uc_general_category_t UC_CATEGORY_Cs;
-+extern const uc_general_category_t UC_CATEGORY_Co;
-+extern const uc_general_category_t UC_CATEGORY_Cn;
-+/* Non-public.  */
-+extern const uc_general_category_t _UC_CATEGORY_NONE;
-+
-+/* Alias names for predefined General category values.  */
-+#define UC_LETTER                    UC_CATEGORY_L
-+#define UC_CASED_LETTER              UC_CATEGORY_LC
-+#define UC_UPPERCASE_LETTER          UC_CATEGORY_Lu
-+#define UC_LOWERCASE_LETTER          UC_CATEGORY_Ll
-+#define UC_TITLECASE_LETTER          UC_CATEGORY_Lt
-+#define UC_MODIFIER_LETTER           UC_CATEGORY_Lm
-+#define UC_OTHER_LETTER              UC_CATEGORY_Lo
-+#define UC_MARK                      UC_CATEGORY_M
-+#define UC_NON_SPACING_MARK          UC_CATEGORY_Mn
-+#define UC_COMBINING_SPACING_MARK    UC_CATEGORY_Mc
-+#define UC_ENCLOSING_MARK            UC_CATEGORY_Me
-+#define UC_NUMBER                    UC_CATEGORY_N
-+#define UC_DECIMAL_DIGIT_NUMBER      UC_CATEGORY_Nd
-+#define UC_LETTER_NUMBER             UC_CATEGORY_Nl
-+#define UC_OTHER_NUMBER              UC_CATEGORY_No
-+#define UC_PUNCTUATION               UC_CATEGORY_P
-+#define UC_CONNECTOR_PUNCTUATION     UC_CATEGORY_Pc
-+#define UC_DASH_PUNCTUATION          UC_CATEGORY_Pd
-+#define UC_OPEN_PUNCTUATION          UC_CATEGORY_Ps /* a.k.a. UC_START_PUNCTUATION */
-+#define UC_CLOSE_PUNCTUATION         UC_CATEGORY_Pe /* a.k.a. UC_END_PUNCTUATION */
-+#define UC_INITIAL_QUOTE_PUNCTUATION UC_CATEGORY_Pi
-+#define UC_FINAL_QUOTE_PUNCTUATION   UC_CATEGORY_Pf
-+#define UC_OTHER_PUNCTUATION         UC_CATEGORY_Po
-+#define UC_SYMBOL                    UC_CATEGORY_S
-+#define UC_MATH_SYMBOL               UC_CATEGORY_Sm
-+#define UC_CURRENCY_SYMBOL           UC_CATEGORY_Sc
-+#define UC_MODIFIER_SYMBOL           UC_CATEGORY_Sk
-+#define UC_OTHER_SYMBOL              UC_CATEGORY_So
-+#define UC_SEPARATOR                 UC_CATEGORY_Z
-+#define UC_SPACE_SEPARATOR           UC_CATEGORY_Zs
-+#define UC_LINE_SEPARATOR            UC_CATEGORY_Zl
-+#define UC_PARAGRAPH_SEPARATOR       UC_CATEGORY_Zp
-+#define UC_OTHER                     UC_CATEGORY_C
-+#define UC_CONTROL                   UC_CATEGORY_Cc
-+#define UC_FORMAT                    UC_CATEGORY_Cf
-+#define UC_SURROGATE                 UC_CATEGORY_Cs /* all of them are invalid characters */
-+#define UC_PRIVATE_USE               UC_CATEGORY_Co
-+#define UC_UNASSIGNED                UC_CATEGORY_Cn /* some of them are invalid characters */
-+
-+/* Return the union of two general categories.
-+   This corresponds to the unions of the two sets of characters.  */
-+extern uc_general_category_t
-+       uc_general_category_or (uc_general_category_t category1,
-+                               uc_general_category_t category2);
-+
-+/* Return the intersection of two general categories as bit masks.
-+   This *does*not* correspond to the intersection of the two sets of
-+   characters.  */
-+extern uc_general_category_t
-+       uc_general_category_and (uc_general_category_t category1,
-+                                uc_general_category_t category2);
-+
-+/* Return the intersection of a general category with the complement of a
-+   second general category, as bit masks.
-+   This *does*not* correspond to the intersection with complement, when
-+   viewing the categories as sets of characters.  */
-+extern uc_general_category_t
-+       uc_general_category_and_not (uc_general_category_t category1,
-+                                    uc_general_category_t category2);
-+
-+/* Return the name of a general category.  */
-+extern const char *
-+       uc_general_category_name (uc_general_category_t category)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the long name of a general category.  */
-+extern const char *
-+       uc_general_category_long_name (uc_general_category_t category)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the general category given by name, e.g. "Lu", or by long name,
-+   e.g. "Uppercase Letter".  */
-+extern uc_general_category_t
-+       uc_general_category_byname (const char *category_name)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the general category of a Unicode character.  */
-+extern uc_general_category_t
-+       uc_general_category (ucs4_t uc)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Test whether a Unicode character belongs to a given category.
-+   The CATEGORY argument can be the combination of several predefined
-+   general categories.  */
-+extern bool
-+       uc_is_general_category (ucs4_t uc, uc_general_category_t category)
-+       _UC_ATTRIBUTE_PURE;
-+/* Likewise.  This function uses a big table comprising all categories.  */
-+extern bool
-+       uc_is_general_category_withtable (ucs4_t uc, uint32_t bitmask)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* ========================================================================= */
-+
-+/* Field 3 of Unicode Character Database: Canonical combining class.  */
-+
-+/* The possible results of uc_combining_class (0..255) are described in
-+   UCD.html.  The list here is not definitive; more values can be added
-+   in future versions.  */
-+enum
-+{
-+  UC_CCC_NR   =   0, /* Not Reordered */
-+  UC_CCC_OV   =   1, /* Overlay */
-+  UC_CCC_NK   =   7, /* Nukta */
-+  UC_CCC_KV   =   8, /* Kana Voicing */
-+  UC_CCC_VR   =   9, /* Virama */
-+  UC_CCC_ATBL = 200, /* Attached Below Left */
-+  UC_CCC_ATB  = 202, /* Attached Below */
-+  UC_CCC_ATA  = 214, /* Attached Above */
-+  UC_CCC_ATAR = 216, /* Attached Above Right */
-+  UC_CCC_BL   = 218, /* Below Left */
-+  UC_CCC_B    = 220, /* Below */
-+  UC_CCC_BR   = 222, /* Below Right */
-+  UC_CCC_L    = 224, /* Left */
-+  UC_CCC_R    = 226, /* Right */
-+  UC_CCC_AL   = 228, /* Above Left */
-+  UC_CCC_A    = 230, /* Above */
-+  UC_CCC_AR   = 232, /* Above Right */
-+  UC_CCC_DB   = 233, /* Double Below */
-+  UC_CCC_DA   = 234, /* Double Above */
-+  UC_CCC_IS   = 240  /* Iota Subscript */
-+};
-+
-+/* Return the canonical combining class of a Unicode character.  */
-+extern int
-+       uc_combining_class (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Return the name of a canonical combining class.  */
-+extern const char *
-+       uc_combining_class_name (int ccc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Return the long name of a canonical combining class.  */
-+extern const char *
-+       uc_combining_class_long_name (int ccc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Return the canonical combining class given by name, e.g. "BL", or by long
-+   name, e.g. "Below Left".  */
-+extern int
-+       uc_combining_class_byname (const char *ccc_name)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* ========================================================================= */
-+
-+/* Field 4 of Unicode Character Database: Bidi class.
-+   Before Unicode 4.0, this field was called "Bidirectional category".  */
-+
-+enum
-+{
-+  UC_BIDI_L,   /* Left-to-Right */
-+  UC_BIDI_LRE, /* Left-to-Right Embedding */
-+  UC_BIDI_LRO, /* Left-to-Right Override */
-+  UC_BIDI_R,   /* Right-to-Left */
-+  UC_BIDI_AL,  /* Right-to-Left Arabic */
-+  UC_BIDI_RLE, /* Right-to-Left Embedding */
-+  UC_BIDI_RLO, /* Right-to-Left Override */
-+  UC_BIDI_PDF, /* Pop Directional Format */
-+  UC_BIDI_EN,  /* European Number */
-+  UC_BIDI_ES,  /* European Number Separator */
-+  UC_BIDI_ET,  /* European Number Terminator */
-+  UC_BIDI_AN,  /* Arabic Number */
-+  UC_BIDI_CS,  /* Common Number Separator */
-+  UC_BIDI_NSM, /* Non-Spacing Mark */
-+  UC_BIDI_BN,  /* Boundary Neutral */
-+  UC_BIDI_B,   /* Paragraph Separator */
-+  UC_BIDI_S,   /* Segment Separator */
-+  UC_BIDI_WS,  /* Whitespace */
-+  UC_BIDI_ON,  /* Other Neutral */
-+  UC_BIDI_LRI, /* Left-to-Right Isolate */
-+  UC_BIDI_RLI, /* Right-to-Left Isolate */
-+  UC_BIDI_FSI, /* First Strong Isolate */
-+  UC_BIDI_PDI  /* Pop Directional Isolate */
-+};
-+
-+/* Return the name of a bidi class.  */
-+extern const char *
-+       uc_bidi_class_name (int bidi_class)
-+       _UC_ATTRIBUTE_CONST;
-+/* Same; obsolete function name.  */
-+extern const char *
-+       uc_bidi_category_name (int category)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Return the long name of a bidi class.  */
-+extern const char *
-+       uc_bidi_class_long_name (int bidi_class)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Return the bidi class given by name, e.g. "LRE", or by long name, e.g.
-+   "Left-to-Right Embedding".  */
-+extern int
-+       uc_bidi_class_byname (const char *bidi_class_name)
-+       _UC_ATTRIBUTE_PURE;
-+/* Same; obsolete function name.  */
-+extern int
-+       uc_bidi_category_byname (const char *category_name)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the bidi class of a Unicode character.  */
-+extern int
-+       uc_bidi_class (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+/* Same; obsolete function name.  */
-+extern int
-+       uc_bidi_category (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test whether a Unicode character belongs to a given bidi class.  */
-+extern bool
-+       uc_is_bidi_class (ucs4_t uc, int bidi_class)
-+       _UC_ATTRIBUTE_CONST;
-+/* Same; obsolete function name.  */
-+extern bool
-+       uc_is_bidi_category (ucs4_t uc, int category)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* ========================================================================= */
-+
-+/* Field 5 of Unicode Character Database: Character decomposition mapping.
-+   See "uninorm.h".  */
-+
-+/* ========================================================================= */
-+
-+/* Field 6 of Unicode Character Database: Decimal digit value.  */
-+
-+/* Return the decimal digit value of a Unicode character.  */
-+extern int
-+       uc_decimal_value (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* ========================================================================= */
-+
-+/* Field 7 of Unicode Character Database: Digit value.  */
-+
-+/* Return the digit value of a Unicode character.  */
-+extern int
-+       uc_digit_value (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* ========================================================================= */
-+
-+/* Field 8 of Unicode Character Database: Numeric value.  */
-+
-+/* Return the numeric value of a Unicode character.  */
-+typedef struct
-+{
-+  int numerator;
-+  int denominator;
-+}
-+uc_fraction_t;
-+extern uc_fraction_t
-+       uc_numeric_value (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* ========================================================================= */
-+
-+/* Field 9 of Unicode Character Database: Mirrored.  */
-+
-+/* Return the mirrored character of a Unicode character UC in *PUC.  */
-+extern bool
-+       uc_mirror_char (ucs4_t uc, ucs4_t *puc);
-+
-+/* ========================================================================= */
-+
-+/* Field 10 of Unicode Character Database: Unicode 1.0 Name.
-+   Not available in this library.  */
-+
-+/* ========================================================================= */
-+
-+/* Field 11 of Unicode Character Database: ISO 10646 comment.
-+   Not available in this library.  */
-+
-+/* ========================================================================= */
-+
-+/* Field 12, 13, 14 of Unicode Character Database: Uppercase mapping,
-+   lowercase mapping, titlecase mapping.  See "unicase.h".  */
-+
-+/* ========================================================================= */
-+
-+/* Field 2 of the file ArabicShaping.txt in the Unicode Character Database.  */
-+
-+/* Possible joining types.  */
-+enum
-+{
-+  UC_JOINING_TYPE_U, /* Non_Joining */
-+  UC_JOINING_TYPE_T, /* Transparent */
-+  UC_JOINING_TYPE_C, /* Join_Causing */
-+  UC_JOINING_TYPE_L, /* Left_Joining */
-+  UC_JOINING_TYPE_R, /* Right_Joining */
-+  UC_JOINING_TYPE_D  /* Dual_Joining */
-+};
-+
-+/* Return the name of a joining type.  */
-+extern const char *
-+       uc_joining_type_name (int joining_type)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Return the long name of a joining type.  */
-+extern const char *
-+       uc_joining_type_long_name (int joining_type)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Return the joining type given by name, e.g. "D", or by long name, e.g.
-+   "Dual Joining".  */
-+extern int
-+       uc_joining_type_byname (const char *joining_type_name)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the joining type of a Unicode character.  */
-+extern int
-+       uc_joining_type (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* ========================================================================= */
-+
-+/* Field 3 of the file ArabicShaping.txt in the Unicode Character Database.  */
-+
-+/* Possible joining groups.
-+   This enumeration may be extended in the future.  */
-+enum
-+{
-+  UC_JOINING_GROUP_NONE,                  /* No_Joining_Group */
-+  UC_JOINING_GROUP_AIN,                   /* Ain */
-+  UC_JOINING_GROUP_ALAPH,                 /* Alaph */
-+  UC_JOINING_GROUP_ALEF,                  /* Alef */
-+  UC_JOINING_GROUP_BEH,                   /* Beh */
-+  UC_JOINING_GROUP_BETH,                  /* Beth */
-+  UC_JOINING_GROUP_BURUSHASKI_YEH_BARREE, /* Burushaski_Yeh_Barree */
-+  UC_JOINING_GROUP_DAL,                   /* Dal */
-+  UC_JOINING_GROUP_DALATH_RISH,           /* Dalath_Rish */
-+  UC_JOINING_GROUP_E,                     /* E */
-+  UC_JOINING_GROUP_FARSI_YEH,             /* Farsi_Yeh */
-+  UC_JOINING_GROUP_FE,                    /* Fe */
-+  UC_JOINING_GROUP_FEH,                   /* Feh */
-+  UC_JOINING_GROUP_FINAL_SEMKATH,         /* Final_Semkath */
-+  UC_JOINING_GROUP_GAF,                   /* Gaf */
-+  UC_JOINING_GROUP_GAMAL,                 /* Gamal */
-+  UC_JOINING_GROUP_HAH,                   /* Hah */
-+  UC_JOINING_GROUP_HE,                    /* He */
-+  UC_JOINING_GROUP_HEH,                   /* Heh */
-+  UC_JOINING_GROUP_HEH_GOAL,              /* Heh_Goal */
-+  UC_JOINING_GROUP_HETH,                  /* Heth */
-+  UC_JOINING_GROUP_KAF,                   /* Kaf */
-+  UC_JOINING_GROUP_KAPH,                  /* Kaph */
-+  UC_JOINING_GROUP_KHAPH,                 /* Khaph */
-+  UC_JOINING_GROUP_KNOTTED_HEH,           /* Knotted_Heh */
-+  UC_JOINING_GROUP_LAM,                   /* Lam */
-+  UC_JOINING_GROUP_LAMADH,                /* Lamadh */
-+  UC_JOINING_GROUP_MEEM,                  /* Meem */
-+  UC_JOINING_GROUP_MIM,                   /* Mim */
-+  UC_JOINING_GROUP_NOON,                  /* Noon */
-+  UC_JOINING_GROUP_NUN,                   /* Nun */
-+  UC_JOINING_GROUP_NYA,                   /* Nya */
-+  UC_JOINING_GROUP_PE,                    /* Pe */
-+  UC_JOINING_GROUP_QAF,                   /* Qaf */
-+  UC_JOINING_GROUP_QAPH,                  /* Qaph */
-+  UC_JOINING_GROUP_REH,                   /* Reh */
-+  UC_JOINING_GROUP_REVERSED_PE,           /* Reversed_Pe */
-+  UC_JOINING_GROUP_SAD,                   /* Sad */
-+  UC_JOINING_GROUP_SADHE,                 /* Sadhe */
-+  UC_JOINING_GROUP_SEEN,                  /* Seen */
-+  UC_JOINING_GROUP_SEMKATH,               /* Semkath */
-+  UC_JOINING_GROUP_SHIN,                  /* Shin */
-+  UC_JOINING_GROUP_SWASH_KAF,             /* Swash_Kaf */
-+  UC_JOINING_GROUP_SYRIAC_WAW,            /* Syriac_Waw */
-+  UC_JOINING_GROUP_TAH,                   /* Tah */
-+  UC_JOINING_GROUP_TAW,                   /* Taw */
-+  UC_JOINING_GROUP_TEH_MARBUTA,           /* Teh_Marbuta */
-+  UC_JOINING_GROUP_TEH_MARBUTA_GOAL,      /* Teh_Marbuta_Goal */
-+  UC_JOINING_GROUP_TETH,                  /* Teth */
-+  UC_JOINING_GROUP_WAW,                   /* Waw */
-+  UC_JOINING_GROUP_YEH,                   /* Yeh */
-+  UC_JOINING_GROUP_YEH_BARREE,            /* Yeh_Barree */
-+  UC_JOINING_GROUP_YEH_WITH_TAIL,         /* Yeh_With_Tail */
-+  UC_JOINING_GROUP_YUDH,                  /* Yudh */
-+  UC_JOINING_GROUP_YUDH_HE,               /* Yudh_He */
-+  UC_JOINING_GROUP_ZAIN,                  /* Zain */
-+  UC_JOINING_GROUP_ZHAIN,                 /* Zhain */
-+  UC_JOINING_GROUP_ROHINGYA_YEH,          /* Rohingya_Yeh */
-+  UC_JOINING_GROUP_STRAIGHT_WAW,          /* Straight_Waw */
-+  UC_JOINING_GROUP_MANICHAEAN_ALEPH,      /* Manichaean_Aleph */
-+  UC_JOINING_GROUP_MANICHAEAN_BETH,       /* Manichaean_Beth */
-+  UC_JOINING_GROUP_MANICHAEAN_GIMEL,      /* Manichaean_Gimel */
-+  UC_JOINING_GROUP_MANICHAEAN_DALETH,     /* Manichaean_Daleth */
-+  UC_JOINING_GROUP_MANICHAEAN_WAW,        /* Manichaean_Waw */
-+  UC_JOINING_GROUP_MANICHAEAN_ZAYIN,      /* Manichaean_Zayin */
-+  UC_JOINING_GROUP_MANICHAEAN_HETH,       /* Manichaean_Heth */
-+  UC_JOINING_GROUP_MANICHAEAN_TETH,       /* Manichaean_Teth */
-+  UC_JOINING_GROUP_MANICHAEAN_YODH,       /* Manichaean_Yodh */
-+  UC_JOINING_GROUP_MANICHAEAN_KAPH,       /* Manichaean_Kaph */
-+  UC_JOINING_GROUP_MANICHAEAN_LAMEDH,     /* Manichaean_Lamedh */
-+  UC_JOINING_GROUP_MANICHAEAN_DHAMEDH,    /* Manichaean_Dhamedh */
-+  UC_JOINING_GROUP_MANICHAEAN_THAMEDH,    /* Manichaean_Thamedh */
-+  UC_JOINING_GROUP_MANICHAEAN_MEM,        /* Manichaean_Mem */
-+  UC_JOINING_GROUP_MANICHAEAN_NUN,        /* Manichaean_Nun */
-+  UC_JOINING_GROUP_MANICHAEAN_SAMEKH,     /* Manichaean_Aleph */
-+  UC_JOINING_GROUP_MANICHAEAN_AYIN,       /* Manichaean_Ayin */
-+  UC_JOINING_GROUP_MANICHAEAN_PE,         /* Manichaean_Pe */
-+  UC_JOINING_GROUP_MANICHAEAN_SADHE,      /* Manichaean_Sadhe */
-+  UC_JOINING_GROUP_MANICHAEAN_QOPH,       /* Manichaean_Qoph */
-+  UC_JOINING_GROUP_MANICHAEAN_RESH,       /* Manichaean_Resh */
-+  UC_JOINING_GROUP_MANICHAEAN_TAW,        /* Manichaean_Taw */
-+  UC_JOINING_GROUP_MANICHAEAN_ONE,        /* Manichaean_One */
-+  UC_JOINING_GROUP_MANICHAEAN_FIVE,       /* Manichaean_Five */
-+  UC_JOINING_GROUP_MANICHAEAN_TEN,        /* Manichaean_Ten */
-+  UC_JOINING_GROUP_MANICHAEAN_TWENTY,     /* Manichaean_Twenty */
-+  UC_JOINING_GROUP_MANICHAEAN_HUNDRED     /* Manichaean_Hundred */
-+};
-+
-+/* Return the name of a joining group.  */
-+extern const char *
-+       uc_joining_group_name (int joining_group)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Return the joining group given by name, e.g. "Teh_Marbuta".  */
-+extern int
-+       uc_joining_group_byname (const char *joining_group_name)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the joining group of a Unicode character.  */
-+extern int
-+       uc_joining_group (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* ========================================================================= */
-+
-+/* Common API for properties.  */
-+
-+/* Data type denoting a property.  This is not just a number, but rather a
-+   pointer to the test functions, so that programs that use only few of the
-+   properties don't have a link-time dependency towards all the tables.  */
-+typedef struct
-+{
-+  bool (*test_fn) (ucs4_t uc);
-+}
-+uc_property_t;
-+
-+/* Predefined properties.  */
-+/* General.  */
-+extern const uc_property_t UC_PROPERTY_WHITE_SPACE;
-+extern const uc_property_t UC_PROPERTY_ALPHABETIC;
-+extern const uc_property_t UC_PROPERTY_OTHER_ALPHABETIC;
-+extern const uc_property_t UC_PROPERTY_NOT_A_CHARACTER;
-+extern const uc_property_t UC_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT;
-+extern const uc_property_t UC_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT;
-+extern const uc_property_t UC_PROPERTY_DEPRECATED;
-+extern const uc_property_t UC_PROPERTY_LOGICAL_ORDER_EXCEPTION;
-+extern const uc_property_t UC_PROPERTY_VARIATION_SELECTOR;
-+extern const uc_property_t UC_PROPERTY_PRIVATE_USE;
-+extern const uc_property_t UC_PROPERTY_UNASSIGNED_CODE_VALUE;
-+/* Case.  */
-+extern const uc_property_t UC_PROPERTY_UPPERCASE;
-+extern const uc_property_t UC_PROPERTY_OTHER_UPPERCASE;
-+extern const uc_property_t UC_PROPERTY_LOWERCASE;
-+extern const uc_property_t UC_PROPERTY_OTHER_LOWERCASE;
-+extern const uc_property_t UC_PROPERTY_TITLECASE;
-+extern const uc_property_t UC_PROPERTY_CASED;
-+extern const uc_property_t UC_PROPERTY_CASE_IGNORABLE;
-+extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_LOWERCASED;
-+extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_UPPERCASED;
-+extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_TITLECASED;
-+extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_CASEFOLDED;
-+extern const uc_property_t UC_PROPERTY_CHANGES_WHEN_CASEMAPPED;
-+extern const uc_property_t UC_PROPERTY_SOFT_DOTTED;
-+/* Identifiers.  */
-+extern const uc_property_t UC_PROPERTY_ID_START;
-+extern const uc_property_t UC_PROPERTY_OTHER_ID_START;
-+extern const uc_property_t UC_PROPERTY_ID_CONTINUE;
-+extern const uc_property_t UC_PROPERTY_OTHER_ID_CONTINUE;
-+extern const uc_property_t UC_PROPERTY_XID_START;
-+extern const uc_property_t UC_PROPERTY_XID_CONTINUE;
-+extern const uc_property_t UC_PROPERTY_PATTERN_WHITE_SPACE;
-+extern const uc_property_t UC_PROPERTY_PATTERN_SYNTAX;
-+/* Shaping and rendering.  */
-+extern const uc_property_t UC_PROPERTY_JOIN_CONTROL;
-+extern const uc_property_t UC_PROPERTY_GRAPHEME_BASE;
-+extern const uc_property_t UC_PROPERTY_GRAPHEME_EXTEND;
-+extern const uc_property_t UC_PROPERTY_OTHER_GRAPHEME_EXTEND;
-+extern const uc_property_t UC_PROPERTY_GRAPHEME_LINK;
-+/* Bidi.  */
-+extern const uc_property_t UC_PROPERTY_BIDI_CONTROL;
-+extern const uc_property_t UC_PROPERTY_BIDI_LEFT_TO_RIGHT;
-+extern const uc_property_t UC_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT;
-+extern const uc_property_t UC_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT;
-+extern const uc_property_t UC_PROPERTY_BIDI_EUROPEAN_DIGIT;
-+extern const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_SEPARATOR;
-+extern const uc_property_t UC_PROPERTY_BIDI_EUR_NUM_TERMINATOR;
-+extern const uc_property_t UC_PROPERTY_BIDI_ARABIC_DIGIT;
-+extern const uc_property_t UC_PROPERTY_BIDI_COMMON_SEPARATOR;
-+extern const uc_property_t UC_PROPERTY_BIDI_BLOCK_SEPARATOR;
-+extern const uc_property_t UC_PROPERTY_BIDI_SEGMENT_SEPARATOR;
-+extern const uc_property_t UC_PROPERTY_BIDI_WHITESPACE;
-+extern const uc_property_t UC_PROPERTY_BIDI_NON_SPACING_MARK;
-+extern const uc_property_t UC_PROPERTY_BIDI_BOUNDARY_NEUTRAL;
-+extern const uc_property_t UC_PROPERTY_BIDI_PDF;
-+extern const uc_property_t UC_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE;
-+extern const uc_property_t UC_PROPERTY_BIDI_OTHER_NEUTRAL;
-+/* Numeric.  */
-+extern const uc_property_t UC_PROPERTY_HEX_DIGIT;
-+extern const uc_property_t UC_PROPERTY_ASCII_HEX_DIGIT;
-+/* CJK.  */
-+extern const uc_property_t UC_PROPERTY_IDEOGRAPHIC;
-+extern const uc_property_t UC_PROPERTY_UNIFIED_IDEOGRAPH;
-+extern const uc_property_t UC_PROPERTY_RADICAL;
-+extern const uc_property_t UC_PROPERTY_IDS_BINARY_OPERATOR;
-+extern const uc_property_t UC_PROPERTY_IDS_TRINARY_OPERATOR;
-+/* Misc.  */
-+extern const uc_property_t UC_PROPERTY_ZERO_WIDTH;
-+extern const uc_property_t UC_PROPERTY_SPACE;
-+extern const uc_property_t UC_PROPERTY_NON_BREAK;
-+extern const uc_property_t UC_PROPERTY_ISO_CONTROL;
-+extern const uc_property_t UC_PROPERTY_FORMAT_CONTROL;
-+extern const uc_property_t UC_PROPERTY_DASH;
-+extern const uc_property_t UC_PROPERTY_HYPHEN;
-+extern const uc_property_t UC_PROPERTY_PUNCTUATION;
-+extern const uc_property_t UC_PROPERTY_LINE_SEPARATOR;
-+extern const uc_property_t UC_PROPERTY_PARAGRAPH_SEPARATOR;
-+extern const uc_property_t UC_PROPERTY_QUOTATION_MARK;
-+extern const uc_property_t UC_PROPERTY_SENTENCE_TERMINAL;
-+extern const uc_property_t UC_PROPERTY_TERMINAL_PUNCTUATION;
-+extern const uc_property_t UC_PROPERTY_CURRENCY_SYMBOL;
-+extern const uc_property_t UC_PROPERTY_MATH;
-+extern const uc_property_t UC_PROPERTY_OTHER_MATH;
-+extern const uc_property_t UC_PROPERTY_PAIRED_PUNCTUATION;
-+extern const uc_property_t UC_PROPERTY_LEFT_OF_PAIR;
-+extern const uc_property_t UC_PROPERTY_COMBINING;
-+extern const uc_property_t UC_PROPERTY_COMPOSITE;
-+extern const uc_property_t UC_PROPERTY_DECIMAL_DIGIT;
-+extern const uc_property_t UC_PROPERTY_NUMERIC;
-+extern const uc_property_t UC_PROPERTY_DIACRITIC;
-+extern const uc_property_t UC_PROPERTY_EXTENDER;
-+extern const uc_property_t UC_PROPERTY_IGNORABLE_CONTROL;
-+
-+/* Return the property given by name, e.g. "White space".  */
-+extern uc_property_t
-+       uc_property_byname (const char *property_name);
-+
-+/* Test whether a property is valid.  */
-+#define uc_property_is_valid(property) ((property).test_fn != NULL)
-+
-+/* Test whether a Unicode character has a given property.  */
-+extern bool
-+       uc_is_property (ucs4_t uc, uc_property_t property);
-+extern bool uc_is_property_white_space (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_alphabetic (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_other_alphabetic (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_not_a_character (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_default_ignorable_code_point (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_other_default_ignorable_code_point (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_deprecated (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_logical_order_exception (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_variation_selector (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_private_use (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_unassigned_code_value (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_uppercase (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_other_uppercase (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_lowercase (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_other_lowercase (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_titlecase (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_cased (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_case_ignorable (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_changes_when_lowercased (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_changes_when_uppercased (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_changes_when_titlecased (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_changes_when_casefolded (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_changes_when_casemapped (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_soft_dotted (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_id_start (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_other_id_start (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_id_continue (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_other_id_continue (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_xid_start (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_xid_continue (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_pattern_white_space (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_pattern_syntax (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_join_control (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_grapheme_base (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_grapheme_extend (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_other_grapheme_extend (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_grapheme_link (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_control (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_left_to_right (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_hebrew_right_to_left (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_arabic_right_to_left (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_european_digit (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_eur_num_separator (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_eur_num_terminator (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_arabic_digit (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_common_separator (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_block_separator (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_segment_separator (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_whitespace (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_non_spacing_mark (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_boundary_neutral (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_pdf (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_embedding_or_override (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_bidi_other_neutral (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_hex_digit (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_ascii_hex_digit (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_ideographic (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_unified_ideograph (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_radical (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_ids_binary_operator (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_ids_trinary_operator (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_zero_width (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_space (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_non_break (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_iso_control (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_format_control (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_dash (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_hyphen (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_punctuation (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_line_separator (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_paragraph_separator (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_quotation_mark (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_sentence_terminal (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_terminal_punctuation (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_currency_symbol (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_math (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_other_math (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_paired_punctuation (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_left_of_pair (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_combining (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_composite (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_decimal_digit (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_numeric (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_diacritic (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_extender (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+extern bool uc_is_property_ignorable_control (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* ========================================================================= */
-+
-+/* Subdivision of the Unicode characters into scripts.  */
-+
-+typedef struct
-+{
-+  unsigned int code : 21;
-+  unsigned int start : 1;
-+  unsigned int end : 1;
-+}
-+uc_interval_t;
-+typedef struct
-+{
-+  unsigned int nintervals;
-+  const uc_interval_t *intervals;
-+  const char *name;
-+}
-+uc_script_t;
-+
-+/* Return the script of a Unicode character.  */
-+extern const uc_script_t *
-+       uc_script (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Return the script given by name, e.g. "HAN".  */
-+extern const uc_script_t *
-+       uc_script_byname (const char *script_name)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Test whether a Unicode character belongs to a given script.  */
-+extern bool
-+       uc_is_script (ucs4_t uc, const uc_script_t *script)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Get the list of all scripts.  */
-+extern void
-+       uc_all_scripts (const uc_script_t **scripts, size_t *count);
-+
-+/* ========================================================================= */
-+
-+/* Subdivision of the Unicode character range into blocks.  */
-+
-+typedef struct
-+{
-+  ucs4_t start;
-+  ucs4_t end;
-+  const char *name;
-+}
-+uc_block_t;
-+
-+/* Return the block a character belongs to.  */
-+extern const uc_block_t *
-+       uc_block (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test whether a Unicode character belongs to a given block.  */
-+extern bool
-+       uc_is_block (ucs4_t uc, const uc_block_t *block)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Get the list of all blocks.  */
-+extern void
-+       uc_all_blocks (const uc_block_t **blocks, size_t *count);
-+
-+/* ========================================================================= */
-+
-+/* Properties taken from language standards.  */
-+
-+/* Test whether a Unicode character is considered whitespace in ISO C 99.  */
-+extern bool
-+       uc_is_c_whitespace (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test whether a Unicode character is considered whitespace in Java.  */
-+extern bool
-+       uc_is_java_whitespace (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+enum
-+{
-+  UC_IDENTIFIER_START,    /* valid as first or subsequent character */
-+  UC_IDENTIFIER_VALID,    /* valid as subsequent character only */
-+  UC_IDENTIFIER_INVALID,  /* not valid */
-+  UC_IDENTIFIER_IGNORABLE /* ignorable (Java only) */
-+};
-+
-+/* Return the categorization of a Unicode character w.r.t. the ISO C 99
-+   identifier syntax.  */
-+extern int
-+       uc_c_ident_category (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Return the categorization of a Unicode character w.r.t. the Java
-+   identifier syntax.  */
-+extern int
-+       uc_java_ident_category (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* ========================================================================= */
-+
-+/* Like ISO C <ctype.h> and <wctype.h>.  These functions are deprecated,
-+   because this set of functions was designed with ASCII in mind and cannot
-+   reflect the more diverse reality of the Unicode character set.  But they
-+   can be a quick-and-dirty porting aid when migrating from wchar_t APIs
-+   to Unicode strings.  */
-+
-+/* Test for any character for which 'uc_is_alpha' or 'uc_is_digit' is true.  */
-+extern bool
-+       uc_is_alnum (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test for any character for which 'uc_is_upper' or 'uc_is_lower' is true,
-+   or any character that is one of a locale-specific set of characters for
-+   which none of 'uc_is_cntrl', 'uc_is_digit', 'uc_is_punct', or 'uc_is_space'
-+   is true.  */
-+extern bool
-+       uc_is_alpha (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test for any control character.  */
-+extern bool
-+       uc_is_cntrl (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test for any character that corresponds to a decimal-digit character.  */
-+extern bool
-+       uc_is_digit (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test for any character for which 'uc_is_print' is true and 'uc_is_space'
-+   is false.  */
-+extern bool
-+       uc_is_graph (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test for any character that corresponds to a lowercase letter or is one
-+   of a locale-specific set of characters for which none of 'uc_is_cntrl',
-+   'uc_is_digit', 'uc_is_punct', or 'uc_is_space' is true.  */
-+extern bool
-+       uc_is_lower (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test for any printing character.  */
-+extern bool
-+       uc_is_print (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test for any printing character that is one of a locale-specific set of
-+   characters for which neither 'uc_is_space' nor 'uc_is_alnum' is true.  */
-+extern bool
-+       uc_is_punct (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test for any character that corresponds to a locale-specific set of
-+   characters for which none of 'uc_is_alnum', 'uc_is_graph', or 'uc_is_punct'
-+   is true.  */
-+extern bool
-+       uc_is_space (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test for any character that corresponds to an uppercase letter or is one
-+   of a locale-specific set of character for which none of 'uc_is_cntrl',
-+   'uc_is_digit', 'uc_is_punct', or 'uc_is_space' is true.  */
-+extern bool
-+       uc_is_upper (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* Test for any character that corresponds to a hexadecimal-digit
-+   character.  */
-+extern bool
-+       uc_is_xdigit (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* GNU extension. */
-+/* Test for any character that corresponds to a standard blank character or
-+   a locale-specific set of characters for which 'uc_is_alnum' is false.  */
-+extern bool
-+       uc_is_blank (ucs4_t uc)
-+       _UC_ATTRIBUTE_CONST;
-+
-+/* ========================================================================= */
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* _UNICTYPE_H */
-diff --git a/SMP/lib/unistring/unictype/categ_byname.h b/SMP/lib/unistring/unictype/categ_byname.h
-new file mode 100644
-index 0000000..3681715
---- /dev/null
-+++ b/SMP/lib/unistring/unictype/categ_byname.h
-@@ -0,0 +1,622 @@
-+/* ANSI-C code produced by gperf version 3.0.4 */
-+/* Command-line: gperf -m 10 lib/unistring/unictype/categ_byname.gperf  */
-+/* Computed positions: -k'1-2,7,$' */
-+
-+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
-+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
-+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
-+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
-+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
-+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
-+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
-+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
-+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
-+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
-+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
-+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
-+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
-+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
-+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
-+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
-+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
-+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
-+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
-+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
-+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
-+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
-+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
-+/* The character set is not based on ISO-646.  */
-+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
-+#endif
-+
-+#line 2 "lib/unistring/unictype/categ_byname.gperf"
-+struct named_category { int name; unsigned int category_index; };
-+
-+#define TOTAL_KEYWORDS 103
-+#define MIN_WORD_LENGTH 1
-+#define MAX_WORD_LENGTH 21
-+#define MIN_HASH_VALUE 1
-+#define MAX_HASH_VALUE 150
-+/* maximum key range = 150, duplicates = 0 */
-+
-+#ifndef GPERF_DOWNCASE
-+#define GPERF_DOWNCASE 1
-+static unsigned char gperf_downcase[256] =
-+  {
-+      0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,
-+     15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
-+     30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
-+     45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
-+     60,  61,  62,  63,  64,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106,
-+    107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
-+    122,  91,  92,  93,  94,  95,  96,  97,  98,  99, 100, 101, 102, 103, 104,
-+    105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
-+    120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
-+    135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
-+    150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
-+    165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
-+    180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
-+    195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
-+    210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
-+    225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
-+    240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
-+    255
-+  };
-+#endif
-+
-+#ifndef GPERF_CASE_STRCMP
-+#define GPERF_CASE_STRCMP 1
-+static int
-+gperf_case_strcmp (register const char *s1, register const char *s2)
-+{
-+  for (;;)
-+    {
-+      unsigned char c1 = gperf_downcase[(unsigned char)*s1++];
-+      unsigned char c2 = gperf_downcase[(unsigned char)*s2++];
-+      if (c1 != 0 && c1 == c2)
-+        continue;
-+      return (int)c1 - (int)c2;
-+    }
-+}
-+#endif
-+
-+#ifdef __GNUC__
-+__inline
-+#else
-+#ifdef __cplusplus
-+inline
-+#endif
-+#endif
-+static unsigned int
-+general_category_hash (register const char *str, register unsigned int len)
-+{
-+  static const unsigned char asso_values[] =
-+    {
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151,   1, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151,  16, 151,   1,  66,  21,
-+        9,  25, 151,  62, 151,  49,   0,  51,   4,   7,
-+        6, 151,  25,  42,   5,   8, 151, 151, 151,   0,
-+       45, 151, 151, 151, 151, 151, 151,  16, 151,   1,
-+       66,  21,   9,  25, 151,  62, 151,  49,   0,  51,
-+        4,   7,   6, 151,  25,  42,   5,   8, 151, 151,
-+      151,   0,  45, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
-+      151, 151, 151, 151, 151, 151
-+    };
-+  register int hval = len;
-+
-+  switch (hval)
-+    {
-+      default:
-+        hval += asso_values[(unsigned char)str[6]];
-+      /*FALLTHROUGH*/
-+      case 6:
-+      case 5:
-+      case 4:
-+      case 3:
-+      case 2:
-+        hval += asso_values[(unsigned char)str[1]];
-+      /*FALLTHROUGH*/
-+      case 1:
-+        hval += asso_values[(unsigned char)str[0]];
-+        break;
-+    }
-+  return hval + asso_values[(unsigned char)str[len - 1]];
-+}
-+
-+struct general_category_stringpool_t
-+  {
-+    char general_category_stringpool_str1[sizeof("L")];
-+    char general_category_stringpool_str2[sizeof("Ll")];
-+    char general_category_stringpool_str3[sizeof("C")];
-+    char general_category_stringpool_str4[sizeof("LC")];
-+    char general_category_stringpool_str5[sizeof("Cc")];
-+    char general_category_stringpool_str6[sizeof("Nl")];
-+    char general_category_stringpool_str9[sizeof("N")];
-+    char general_category_stringpool_str10[sizeof("Pc")];
-+    char general_category_stringpool_str11[sizeof("Cn")];
-+    char general_category_stringpool_str12[sizeof("Lt")];
-+    char general_category_stringpool_str13[sizeof("P")];
-+    char general_category_stringpool_str15[sizeof("Control")];
-+    char general_category_stringpool_str16[sizeof("Lo")];
-+    char general_category_stringpool_str17[sizeof("Co")];
-+    char general_category_stringpool_str18[sizeof("Lu")];
-+    char general_category_stringpool_str20[sizeof("No")];
-+    char general_category_stringpool_str21[sizeof("Cf")];
-+    char general_category_stringpool_str22[sizeof("Po")];
-+    char general_category_stringpool_str23[sizeof("OtherSymbol")];
-+    char general_category_stringpool_str24[sizeof("CurrencySymbol")];
-+    char general_category_stringpool_str25[sizeof("Currency Symbol")];
-+    char general_category_stringpool_str26[sizeof("Pf")];
-+    char general_category_stringpool_str27[sizeof("Format")];
-+    char general_category_stringpool_str28[sizeof("Close Punctuation")];
-+    char general_category_stringpool_str29[sizeof("ClosePunctuation")];
-+    char general_category_stringpool_str36[sizeof("OpenPunctuation")];
-+    char general_category_stringpool_str37[sizeof("ConnectorPunctuation")];
-+    char general_category_stringpool_str38[sizeof("Connector Punctuation")];
-+    char general_category_stringpool_str39[sizeof("Other Punctuation")];
-+    char general_category_stringpool_str40[sizeof("OtherPunctuation")];
-+    char general_category_stringpool_str41[sizeof("Open Punctuation")];
-+    char general_category_stringpool_str42[sizeof("Other")];
-+    char general_category_stringpool_str43[sizeof("Number")];
-+    char general_category_stringpool_str45[sizeof("Punctuation")];
-+    char general_category_stringpool_str46[sizeof("Sc")];
-+    char general_category_stringpool_str47[sizeof("Zl")];
-+    char general_category_stringpool_str48[sizeof("Symbol")];
-+    char general_category_stringpool_str49[sizeof("Other Letter")];
-+    char general_category_stringpool_str50[sizeof("Pe")];
-+    char general_category_stringpool_str52[sizeof("Letter")];
-+    char general_category_stringpool_str53[sizeof("Other Number")];
-+    char general_category_stringpool_str54[sizeof("Cased Letter")];
-+    char general_category_stringpool_str55[sizeof("Mc")];
-+    char general_category_stringpool_str56[sizeof("OtherNumber")];
-+    char general_category_stringpool_str58[sizeof("So")];
-+    char general_category_stringpool_str59[sizeof("Zp")];
-+    char general_category_stringpool_str60[sizeof("Letter Number")];
-+    char general_category_stringpool_str61[sizeof("Mn")];
-+    char general_category_stringpool_str62[sizeof("LetterNumber")];
-+    char general_category_stringpool_str63[sizeof("LowercaseLetter")];
-+    char general_category_stringpool_str64[sizeof("Lowercase Letter")];
-+    char general_category_stringpool_str66[sizeof("Other Symbol")];
-+    char general_category_stringpool_str69[sizeof("OtherLetter")];
-+    char general_category_stringpool_str70[sizeof("UppercaseLetter")];
-+    char general_category_stringpool_str71[sizeof("Uppercase Letter")];
-+    char general_category_stringpool_str74[sizeof("CasedLetter")];
-+    char general_category_stringpool_str75[sizeof("NonspacingMark")];
-+    char general_category_stringpool_str76[sizeof("Nonspacing Mark")];
-+    char general_category_stringpool_str78[sizeof("Math Symbol")];
-+    char general_category_stringpool_str81[sizeof("ParagraphSeparator")];
-+    char general_category_stringpool_str82[sizeof("Paragraph Separator")];
-+    char general_category_stringpool_str83[sizeof("PrivateUse")];
-+    char general_category_stringpool_str84[sizeof("Private Use")];
-+    char general_category_stringpool_str85[sizeof("S")];
-+    char general_category_stringpool_str87[sizeof("Cs")];
-+    char general_category_stringpool_str88[sizeof("InitialPunctuation")];
-+    char general_category_stringpool_str89[sizeof("Initial Punctuation")];
-+    char general_category_stringpool_str91[sizeof("Z")];
-+    char general_category_stringpool_str92[sizeof("Ps")];
-+    char general_category_stringpool_str93[sizeof("ModifierSymbol")];
-+    char general_category_stringpool_str94[sizeof("Modifier Symbol")];
-+    char general_category_stringpool_str95[sizeof("Me")];
-+    char general_category_stringpool_str96[sizeof("Surrogate")];
-+    char general_category_stringpool_str98[sizeof("Final Punctuation")];
-+    char general_category_stringpool_str99[sizeof("FinalPunctuation")];
-+    char general_category_stringpool_str102[sizeof("Separator")];
-+    char general_category_stringpool_str103[sizeof("M")];
-+    char general_category_stringpool_str104[sizeof("Lm")];
-+    char general_category_stringpool_str105[sizeof("DashPunctuation")];
-+    char general_category_stringpool_str106[sizeof("LineSeparator")];
-+    char general_category_stringpool_str108[sizeof("SpaceSeparator")];
-+    char general_category_stringpool_str110[sizeof("Dash Punctuation")];
-+    char general_category_stringpool_str113[sizeof("Unassigned")];
-+    char general_category_stringpool_str118[sizeof("ModifierLetter")];
-+    char general_category_stringpool_str119[sizeof("Modifier Letter")];
-+    char general_category_stringpool_str120[sizeof("Mark")];
-+    char general_category_stringpool_str122[sizeof("Line Separator")];
-+    char general_category_stringpool_str123[sizeof("TitlecaseLetter")];
-+    char general_category_stringpool_str124[sizeof("Titlecase Letter")];
-+    char general_category_stringpool_str125[sizeof("DecimalNumber")];
-+    char general_category_stringpool_str126[sizeof("Decimal Number")];
-+    char general_category_stringpool_str128[sizeof("MathSymbol")];
-+    char general_category_stringpool_str130[sizeof("Space Separator")];
-+    char general_category_stringpool_str131[sizeof("Zs")];
-+    char general_category_stringpool_str132[sizeof("Pi")];
-+    char general_category_stringpool_str133[sizeof("SpacingMark")];
-+    char general_category_stringpool_str134[sizeof("Spacing Mark")];
-+    char general_category_stringpool_str138[sizeof("Nd")];
-+    char general_category_stringpool_str140[sizeof("Pd")];
-+    char general_category_stringpool_str142[sizeof("Sk")];
-+    char general_category_stringpool_str146[sizeof("Sm")];
-+    char general_category_stringpool_str149[sizeof("EnclosingMark")];
-+    char general_category_stringpool_str150[sizeof("Enclosing Mark")];
-+  };
-+static const struct general_category_stringpool_t general_category_stringpool_contents =
-+  {
-+    "L",
-+    "Ll",
-+    "C",
-+    "LC",
-+    "Cc",
-+    "Nl",
-+    "N",
-+    "Pc",
-+    "Cn",
-+    "Lt",
-+    "P",
-+    "Control",
-+    "Lo",
-+    "Co",
-+    "Lu",
-+    "No",
-+    "Cf",
-+    "Po",
-+    "OtherSymbol",
-+    "CurrencySymbol",
-+    "Currency Symbol",
-+    "Pf",
-+    "Format",
-+    "Close Punctuation",
-+    "ClosePunctuation",
-+    "OpenPunctuation",
-+    "ConnectorPunctuation",
-+    "Connector Punctuation",
-+    "Other Punctuation",
-+    "OtherPunctuation",
-+    "Open Punctuation",
-+    "Other",
-+    "Number",
-+    "Punctuation",
-+    "Sc",
-+    "Zl",
-+    "Symbol",
-+    "Other Letter",
-+    "Pe",
-+    "Letter",
-+    "Other Number",
-+    "Cased Letter",
-+    "Mc",
-+    "OtherNumber",
-+    "So",
-+    "Zp",
-+    "Letter Number",
-+    "Mn",
-+    "LetterNumber",
-+    "LowercaseLetter",
-+    "Lowercase Letter",
-+    "Other Symbol",
-+    "OtherLetter",
-+    "UppercaseLetter",
-+    "Uppercase Letter",
-+    "CasedLetter",
-+    "NonspacingMark",
-+    "Nonspacing Mark",
-+    "Math Symbol",
-+    "ParagraphSeparator",
-+    "Paragraph Separator",
-+    "PrivateUse",
-+    "Private Use",
-+    "S",
-+    "Cs",
-+    "InitialPunctuation",
-+    "Initial Punctuation",
-+    "Z",
-+    "Ps",
-+    "ModifierSymbol",
-+    "Modifier Symbol",
-+    "Me",
-+    "Surrogate",
-+    "Final Punctuation",
-+    "FinalPunctuation",
-+    "Separator",
-+    "M",
-+    "Lm",
-+    "DashPunctuation",
-+    "LineSeparator",
-+    "SpaceSeparator",
-+    "Dash Punctuation",
-+    "Unassigned",
-+    "ModifierLetter",
-+    "Modifier Letter",
-+    "Mark",
-+    "Line Separator",
-+    "TitlecaseLetter",
-+    "Titlecase Letter",
-+    "DecimalNumber",
-+    "Decimal Number",
-+    "MathSymbol",
-+    "Space Separator",
-+    "Zs",
-+    "Pi",
-+    "SpacingMark",
-+    "Spacing Mark",
-+    "Nd",
-+    "Pd",
-+    "Sk",
-+    "Sm",
-+    "EnclosingMark",
-+    "Enclosing Mark"
-+  };
-+#define general_category_stringpool ((const char *) &general_category_stringpool_contents)
-+
-+static const struct named_category general_category_names[] =
-+  {
-+    {-1},
-+#line 14 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str1, UC_CATEGORY_INDEX_L},
-+#line 17 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str2, UC_CATEGORY_INDEX_Ll},
-+#line 46 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str3, UC_CATEGORY_INDEX_C},
-+#line 15 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str4, UC_CATEGORY_INDEX_LC},
-+#line 47 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str5, UC_CATEGORY_INDEX_Cc},
-+#line 27 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str6, UC_CATEGORY_INDEX_Nl},
-+    {-1}, {-1},
-+#line 25 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str9, UC_CATEGORY_INDEX_N},
-+#line 30 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str10, UC_CATEGORY_INDEX_Pc},
-+#line 51 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str11, UC_CATEGORY_INDEX_Cn},
-+#line 18 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str12, UC_CATEGORY_INDEX_Lt},
-+#line 29 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str13, UC_CATEGORY_INDEX_P},
-+    {-1},
-+#line 111 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str15, UC_CATEGORY_INDEX_Cc},
-+#line 20 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str16, UC_CATEGORY_INDEX_Lo},
-+#line 50 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str17, UC_CATEGORY_INDEX_Co},
-+#line 16 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str18, UC_CATEGORY_INDEX_Lu},
-+    {-1},
-+#line 28 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str20, UC_CATEGORY_INDEX_No},
-+#line 48 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str21, UC_CATEGORY_INDEX_Cf},
-+#line 36 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str22, UC_CATEGORY_INDEX_Po},
-+#line 102 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str23, UC_CATEGORY_INDEX_So},
-+#line 98 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str24, UC_CATEGORY_INDEX_Sc},
-+#line 97 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str25, UC_CATEGORY_INDEX_Sc},
-+#line 35 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str26, UC_CATEGORY_INDEX_Pf},
-+#line 112 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str27, UC_CATEGORY_INDEX_Cf},
-+#line 86 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str28, UC_CATEGORY_INDEX_Pe},
-+#line 87 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str29, UC_CATEGORY_INDEX_Pe},
-+    {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
-+#line 85 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str36, UC_CATEGORY_INDEX_Ps},
-+#line 81 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str37, UC_CATEGORY_INDEX_Pc},
-+#line 80 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str38, UC_CATEGORY_INDEX_Pc},
-+#line 92 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str39, UC_CATEGORY_INDEX_Po},
-+#line 93 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str40, UC_CATEGORY_INDEX_Po},
-+#line 84 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str41, UC_CATEGORY_INDEX_Ps},
-+#line 110 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str42, UC_CATEGORY_INDEX_C},
-+#line 72 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str43, UC_CATEGORY_INDEX_N},
-+    {-1},
-+#line 79 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str45, UC_CATEGORY_INDEX_P},
-+#line 39 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str46, UC_CATEGORY_INDEX_Sc},
-+#line 44 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str47, UC_CATEGORY_INDEX_Zl},
-+#line 94 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str48, UC_CATEGORY_INDEX_S},
-+#line 63 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str49, UC_CATEGORY_INDEX_Lo},
-+#line 33 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str50, UC_CATEGORY_INDEX_Pe},
-+    {-1},
-+#line 52 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str52, UC_CATEGORY_INDEX_L},
-+#line 77 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str53, UC_CATEGORY_INDEX_No},
-+#line 53 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str54, UC_CATEGORY_INDEX_LC},
-+#line 23 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str55, UC_CATEGORY_INDEX_Mc},
-+#line 78 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str56, UC_CATEGORY_INDEX_No},
-+    {-1},
-+#line 41 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str58, UC_CATEGORY_INDEX_So},
-+#line 45 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str59, UC_CATEGORY_INDEX_Zp},
-+#line 75 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str60, UC_CATEGORY_INDEX_Nl},
-+#line 22 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str61, UC_CATEGORY_INDEX_Mn},
-+#line 76 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str62, UC_CATEGORY_INDEX_Nl},
-+#line 58 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str63, UC_CATEGORY_INDEX_Ll},
-+#line 57 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str64, UC_CATEGORY_INDEX_Ll},
-+    {-1},
-+#line 101 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str66, UC_CATEGORY_INDEX_So},
-+    {-1}, {-1},
-+#line 64 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str69, UC_CATEGORY_INDEX_Lo},
-+#line 56 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str70, UC_CATEGORY_INDEX_Lu},
-+#line 55 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str71, UC_CATEGORY_INDEX_Lu},
-+    {-1}, {-1},
-+#line 54 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str74, UC_CATEGORY_INDEX_LC},
-+#line 67 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str75, UC_CATEGORY_INDEX_Mn},
-+#line 66 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str76, UC_CATEGORY_INDEX_Mn},
-+    {-1},
-+#line 95 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str78, UC_CATEGORY_INDEX_Sm},
-+    {-1}, {-1},
-+#line 109 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str81, UC_CATEGORY_INDEX_Zp},
-+#line 108 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str82, UC_CATEGORY_INDEX_Zp},
-+#line 115 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str83, UC_CATEGORY_INDEX_Co},
-+#line 114 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str84, UC_CATEGORY_INDEX_Co},
-+#line 37 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str85, UC_CATEGORY_INDEX_S},
-+    {-1},
-+#line 49 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str87, UC_CATEGORY_INDEX_Cs},
-+#line 89 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str88, UC_CATEGORY_INDEX_Pi},
-+#line 88 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str89, UC_CATEGORY_INDEX_Pi},
-+    {-1},
-+#line 42 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str91, UC_CATEGORY_INDEX_Z},
-+#line 32 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str92, UC_CATEGORY_INDEX_Ps},
-+#line 100 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str93, UC_CATEGORY_INDEX_Sk},
-+#line 99 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str94, UC_CATEGORY_INDEX_Sk},
-+#line 24 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str95, UC_CATEGORY_INDEX_Me},
-+#line 113 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str96, UC_CATEGORY_INDEX_Cs},
-+    {-1},
-+#line 90 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str98, UC_CATEGORY_INDEX_Pf},
-+#line 91 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str99, UC_CATEGORY_INDEX_Pf},
-+    {-1}, {-1},
-+#line 103 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str102, UC_CATEGORY_INDEX_Z},
-+#line 21 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str103, UC_CATEGORY_INDEX_M},
-+#line 19 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str104, UC_CATEGORY_INDEX_Lm},
-+#line 83 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str105, UC_CATEGORY_INDEX_Pd},
-+#line 107 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str106, UC_CATEGORY_INDEX_Zl},
-+    {-1},
-+#line 105 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str108, UC_CATEGORY_INDEX_Zs},
-+    {-1},
-+#line 82 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str110, UC_CATEGORY_INDEX_Pd},
-+    {-1}, {-1},
-+#line 116 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str113, UC_CATEGORY_INDEX_Cn},
-+    {-1}, {-1}, {-1}, {-1},
-+#line 62 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str118, UC_CATEGORY_INDEX_Lm},
-+#line 61 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str119, UC_CATEGORY_INDEX_Lm},
-+#line 65 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str120, UC_CATEGORY_INDEX_M},
-+    {-1},
-+#line 106 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str122, UC_CATEGORY_INDEX_Zl},
-+#line 60 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str123, UC_CATEGORY_INDEX_Lt},
-+#line 59 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str124, UC_CATEGORY_INDEX_Lt},
-+#line 74 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str125, UC_CATEGORY_INDEX_Nd},
-+#line 73 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str126, UC_CATEGORY_INDEX_Nd},
-+    {-1},
-+#line 96 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str128, UC_CATEGORY_INDEX_Sm},
-+    {-1},
-+#line 104 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str130, UC_CATEGORY_INDEX_Zs},
-+#line 43 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str131, UC_CATEGORY_INDEX_Zs},
-+#line 34 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str132, UC_CATEGORY_INDEX_Pi},
-+#line 69 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str133, UC_CATEGORY_INDEX_Mc},
-+#line 68 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str134, UC_CATEGORY_INDEX_Mc},
-+    {-1}, {-1}, {-1},
-+#line 26 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str138, UC_CATEGORY_INDEX_Nd},
-+    {-1},
-+#line 31 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str140, UC_CATEGORY_INDEX_Pd},
-+    {-1},
-+#line 40 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str142, UC_CATEGORY_INDEX_Sk},
-+    {-1}, {-1}, {-1},
-+#line 38 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str146, UC_CATEGORY_INDEX_Sm},
-+    {-1}, {-1},
-+#line 71 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str149, UC_CATEGORY_INDEX_Me},
-+#line 70 "lib/unistring/unictype/categ_byname.gperf"
-+    {(int)(long)&((struct general_category_stringpool_t *)0)->general_category_stringpool_str150, UC_CATEGORY_INDEX_Me}
-+  };
-+
-+#ifdef __GNUC__
-+__inline
-+#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
-+__attribute__ ((__gnu_inline__))
-+#endif
-+#endif
-+const struct named_category *
-+uc_general_category_lookup (register const char *str, register unsigned int len)
-+{
-+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
-+    {
-+      register int key = general_category_hash (str, len);
-+
-+      if (key <= MAX_HASH_VALUE && key >= 0)
-+        {
-+          register int o = general_category_names[key].name;
-+          if (o >= 0)
-+            {
-+              register const char *s = o + general_category_stringpool;
-+
-+              if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strcmp (str, s))
-+                return &general_category_names[key];
-+            }
-+        }
-+    }
-+  return 0;
-+}
-diff --git a/SMP/lib/unistring/uninorm.h b/SMP/lib/unistring/uninorm.h
-new file mode 100644
-index 0000000..9c15471
---- /dev/null
-+++ b/SMP/lib/unistring/uninorm.h
-@@ -0,0 +1,258 @@
-+/* Normalization forms (composition and decomposition) of Unicode strings.
-+   Copyright (C) 2001-2002, 2009-2016 Free Software Foundation, Inc.
-+   Written by Bruno Haible <bruno@clisp.org>, 2009.
-+
-+   This program is free software: you can redistribute it and/or modify it
-+   under the terms of either:
-+
-+    * the GNU Lesser General Public License as published
-+   by the Free Software Foundation; either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   or
-+
-+   * the GNU General Public License as published by the Free
-+   Software Foundation; either version 2 of the License, or
-+   (at your option) any later version.
-+
-+   or both in parallel, as here.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-+
-+#ifndef _UNINORM_H
-+#define _UNINORM_H
-+
-+/* Get size_t.  */
-+#include <stddef.h>
-+
-+#include "unitypes.h"
-+
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+/* Conventions:
-+
-+   All functions prefixed with u8_ operate on UTF-8 encoded strings.
-+   Their unit is an uint8_t (1 byte).
-+
-+   All functions prefixed with u16_ operate on UTF-16 encoded strings.
-+   Their unit is an uint16_t (a 2-byte word).
-+
-+   All functions prefixed with u32_ operate on UCS-4 encoded strings.
-+   Their unit is an uint32_t (a 4-byte word).
-+
-+   All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly
-+   n units.
-+
-+   Functions returning a string result take a (resultbuf, lengthp) argument
-+   pair.  If resultbuf is not NULL and the result fits into *lengthp units,
-+   it is put in resultbuf, and resultbuf is returned.  Otherwise, a freshly
-+   allocated string is returned.  In both cases, *lengthp is set to the
-+   length (number of units) of the returned string.  In case of error,
-+   NULL is returned and errno is set.  */
-+
-+
-+enum
-+{
-+  UC_DECOMP_CANONICAL,/*            Canonical decomposition.                  */
-+  UC_DECOMP_FONT,    /*   <font>    A font variant (e.g. a blackletter form). */
-+  UC_DECOMP_NOBREAK, /* <noBreak>   A no-break version of a space or hyphen.  */
-+  UC_DECOMP_INITIAL, /* <initial>   An initial presentation form (Arabic).    */
-+  UC_DECOMP_MEDIAL,  /*  <medial>   A medial presentation form (Arabic).      */
-+  UC_DECOMP_FINAL,   /*  <final>    A final presentation form (Arabic).       */
-+  UC_DECOMP_ISOLATED,/* <isolated>  An isolated presentation form (Arabic).   */
-+  UC_DECOMP_CIRCLE,  /*  <circle>   An encircled form.                        */
-+  UC_DECOMP_SUPER,   /*  <super>    A superscript form.                       */
-+  UC_DECOMP_SUB,     /*   <sub>     A subscript form.                         */
-+  UC_DECOMP_VERTICAL,/* <vertical>  A vertical layout presentation form.      */
-+  UC_DECOMP_WIDE,    /*   <wide>    A wide (or zenkaku) compatibility character. */
-+  UC_DECOMP_NARROW,  /*  <narrow>   A narrow (or hankaku) compatibility character. */
-+  UC_DECOMP_SMALL,   /*  <small>    A small variant form (CNS compatibility). */
-+  UC_DECOMP_SQUARE,  /*  <square>   A CJK squared font variant.               */
-+  UC_DECOMP_FRACTION,/* <fraction>  A vulgar fraction form.                   */
-+  UC_DECOMP_COMPAT   /*  <compat>   Otherwise unspecified compatibility character. */
-+};
-+
-+/* Maximum size of decomposition of a single Unicode character.  */
-+#define UC_DECOMPOSITION_MAX_LENGTH 32
-+
-+/* Return the character decomposition mapping of a Unicode character.
-+   DECOMPOSITION must point to an array of at least UC_DECOMPOSITION_MAX_LENGTH
-+   ucs_t elements.
-+   When a decomposition exists, DECOMPOSITION[0..N-1] and *DECOMP_TAG are
-+   filled and N is returned.  Otherwise -1 is returned.  */
-+extern int
-+       uc_decomposition (ucs4_t uc, int *decomp_tag, ucs4_t *decomposition);
-+
-+/* Return the canonical character decomposition mapping of a Unicode character.
-+   DECOMPOSITION must point to an array of at least UC_DECOMPOSITION_MAX_LENGTH
-+   ucs_t elements.
-+   When a decomposition exists, DECOMPOSITION[0..N-1] is filled and N is
-+   returned.  Otherwise -1 is returned.  */
-+extern int
-+       uc_canonical_decomposition (ucs4_t uc, ucs4_t *decomposition);
-+
-+
-+/* Attempt to combine the Unicode characters uc1, uc2.
-+   uc1 is known to have canonical combining class 0.
-+   Return the combination of uc1 and uc2, if it exists.
-+   Return 0 otherwise.
-+   Not all decompositions can be recombined using this function.  See the
-+   Unicode file CompositionExclusions.txt for details.  */
-+extern ucs4_t
-+       uc_composition (ucs4_t uc1, ucs4_t uc2)
-+       _UC_ATTRIBUTE_CONST;
-+
-+
-+/* An object of type uninorm_t denotes a Unicode normalization form.  */
-+struct unicode_normalization_form;
-+typedef const struct unicode_normalization_form *uninorm_t;
-+
-+/* UNINORM_NFD: Normalization form D: canonical decomposition.  */
-+extern const struct unicode_normalization_form uninorm_nfd;
-+#define UNINORM_NFD (&uninorm_nfd)
-+
-+/* UNINORM_NFC: Normalization form C: canonical decomposition, then
-+   canonical composition.  */
-+extern const struct unicode_normalization_form uninorm_nfc;
-+#define UNINORM_NFC (&uninorm_nfc)
-+
-+/* UNINORM_NFKD: Normalization form KD: compatibility decomposition.  */
-+extern const struct unicode_normalization_form uninorm_nfkd;
-+#define UNINORM_NFKD (&uninorm_nfkd)
-+
-+/* UNINORM_NFKC: Normalization form KC: compatibility decomposition, then
-+   canonical composition.  */
-+extern const struct unicode_normalization_form uninorm_nfkc;
-+#define UNINORM_NFKC (&uninorm_nfkc)
-+
-+/* Test whether a normalization form does compatibility decomposition.  */
-+#define uninorm_is_compat_decomposing(nf) \
-+  ((* (const unsigned int *) (nf) >> 0) & 1)
-+
-+/* Test whether a normalization form includes canonical composition.  */
-+#define uninorm_is_composing(nf) \
-+  ((* (const unsigned int *) (nf) >> 1) & 1)
-+
-+/* Return the decomposing variant of a normalization form.
-+   This maps NFC,NFD -> NFD and NFKC,NFKD -> NFKD.  */
-+extern uninorm_t
-+       uninorm_decomposing_form (uninorm_t nf)
-+       _UC_ATTRIBUTE_PURE;
-+
-+
-+/* Return the specified normalization form of a string.  */
-+extern uint8_t *
-+       u8_normalize (uninorm_t nf, const uint8_t *s, size_t n,
-+                     uint8_t *resultbuf, size_t *lengthp);
-+extern uint16_t *
-+       u16_normalize (uninorm_t nf, const uint16_t *s, size_t n,
-+                      uint16_t *resultbuf, size_t *lengthp);
-+extern uint32_t *
-+       u32_normalize (uninorm_t nf, const uint32_t *s, size_t n,
-+                      uint32_t *resultbuf, size_t *lengthp);
-+
-+
-+/* Compare S1 and S2, ignoring differences in normalization.
-+   NF must be either UNINORM_NFD or UNINORM_NFKD.
-+   If successful, set *RESULTP to -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2, and
-+   return 0.  Upon failure, return -1 with errno set.  */
-+extern int
-+       u8_normcmp (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2,
-+                   uninorm_t nf, int *resultp);
-+extern int
-+       u16_normcmp (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2,
-+                    uninorm_t nf, int *resultp);
-+extern int
-+       u32_normcmp (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2,
-+                    uninorm_t nf, int *resultp);
-+
-+
-+/* Converts the string S of length N to a NUL-terminated byte sequence, in such
-+   a way that comparing uN_normxfrm (S1) and uN_normxfrm (S2) with uN_cmp2() is
-+   equivalent to comparing S1 and S2 with uN_normcoll().
-+   NF must be either UNINORM_NFC or UNINORM_NFKC.  */
-+extern char *
-+       u8_normxfrm (const uint8_t *s, size_t n, uninorm_t nf,
-+                    char *resultbuf, size_t *lengthp);
-+extern char *
-+       u16_normxfrm (const uint16_t *s, size_t n, uninorm_t nf,
-+                     char *resultbuf, size_t *lengthp);
-+extern char *
-+       u32_normxfrm (const uint32_t *s, size_t n, uninorm_t nf,
-+                     char *resultbuf, size_t *lengthp);
-+
-+
-+/* Compare S1 and S2, ignoring differences in normalization, using the
-+   collation rules of the current locale.
-+   NF must be either UNINORM_NFC or UNINORM_NFKC.
-+   If successful, set *RESULTP to -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2, and
-+   return 0.  Upon failure, return -1 with errno set.  */
-+extern int
-+       u8_normcoll (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2,
-+                    uninorm_t nf, int *resultp);
-+extern int
-+       u16_normcoll (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2,
-+                     uninorm_t nf, int *resultp);
-+extern int
-+       u32_normcoll (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2,
-+                     uninorm_t nf, int *resultp);
-+
-+
-+/* Normalization of a stream of Unicode characters.
-+
-+   A "stream of Unicode characters" is essentially a function that accepts an
-+   ucs4_t argument repeatedly, optionally combined with a function that
-+   "flushes" the stream.  */
-+
-+/* Data type of a stream of Unicode characters that normalizes its input
-+   according to a given normalization form and passes the normalized character
-+   sequence to the encapsulated stream of Unicode characters.  */
-+struct uninorm_filter;
-+
-+/* Create and return a normalization filter for Unicode characters.
-+   The pair (stream_func, stream_data) is the encapsulated stream.
-+   stream_func (stream_data, uc) receives the Unicode character uc
-+   and returns 0 if successful, or -1 with errno set upon failure.
-+   Return the new filter, or NULL with errno set upon failure.  */
-+extern struct uninorm_filter *
-+       uninorm_filter_create (uninorm_t nf,
-+                              int (*stream_func) (void *stream_data, ucs4_t uc),
-+                              void *stream_data);
-+
-+/* Stuff a Unicode character into a normalizing filter.
-+   Return 0 if successful, or -1 with errno set upon failure.  */
-+extern int
-+       uninorm_filter_write (struct uninorm_filter *filter, ucs4_t uc);
-+
-+/* Bring data buffered in the filter to its destination, the encapsulated
-+   stream.
-+   Return 0 if successful, or -1 with errno set upon failure.
-+   Note! If after calling this function, additional characters are written
-+   into the filter, the resulting character sequence in the encapsulated stream
-+   will not necessarily be normalized.  */
-+extern int
-+       uninorm_filter_flush (struct uninorm_filter *filter);
-+
-+/* Bring data buffered in the filter to its destination, the encapsulated
-+   stream, then close and free the filter.
-+   Return 0 if successful, or -1 with errno set upon failure.  */
-+extern int
-+       uninorm_filter_free (struct uninorm_filter *filter);
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+
-+#endif /* _UNINORM_H */
-diff --git a/SMP/lib/unistring/unistr.h b/SMP/lib/unistring/unistr.h
-new file mode 100644
-index 0000000..4619fa8
---- /dev/null
-+++ b/SMP/lib/unistring/unistr.h
-@@ -0,0 +1,756 @@
-+/* Elementary Unicode string functions.
-+   Copyright (C) 2001-2002, 2005-2016 Free Software Foundation, Inc.
-+
-+   This program is free software: you can redistribute it and/or modify it
-+   under the terms of either:
-+
-+    * the GNU Lesser General Public License as published
-+   by the Free Software Foundation; either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   or
-+
-+   * the GNU General Public License as published by the Free
-+   Software Foundation; either version 2 of the License, or
-+   (at your option) any later version.
-+
-+   or both in parallel, as here.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-+
-+#ifndef _UNISTR_H
-+#define _UNISTR_H
-+
-+#include "unitypes.h"
-+
-+/* Get common macros for C.  */
-+#include "unused-parameter.h"
-+
-+/* Get bool.  */
-+#include <stdbool.h>
-+
-+/* Get size_t.  */
-+#include <stddef.h>
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+/* Conventions:
-+
-+   All functions prefixed with u8_ operate on UTF-8 encoded strings.
-+   Their unit is an uint8_t (1 byte).
-+
-+   All functions prefixed with u16_ operate on UTF-16 encoded strings.
-+   Their unit is an uint16_t (a 2-byte word).
-+
-+   All functions prefixed with u32_ operate on UCS-4 encoded strings.
-+   Their unit is an uint32_t (a 4-byte word).
-+
-+   All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly
-+   n units.
-+
-+   All arguments starting with "str" and the arguments of functions starting
-+   with u8_str/u16_str/u32_str denote a NUL terminated string, i.e. a string
-+   which terminates at the first NUL unit.  This termination unit is
-+   considered part of the string for all memory allocation purposes, but
-+   is not considered part of the string for all other logical purposes.
-+
-+   Functions returning a string result take a (resultbuf, lengthp) argument
-+   pair.  If resultbuf is not NULL and the result fits into *lengthp units,
-+   it is put in resultbuf, and resultbuf is returned.  Otherwise, a freshly
-+   allocated string is returned.  In both cases, *lengthp is set to the
-+   length (number of units) of the returned string.  In case of error,
-+   NULL is returned and errno is set.  */
-+
-+
-+/* Elementary string checks.  */
-+
-+/* Check whether an UTF-8 string is well-formed.
-+   Return NULL if valid, or a pointer to the first invalid unit otherwise.  */
-+extern const uint8_t *
-+       u8_check (const uint8_t *s, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Check whether an UTF-16 string is well-formed.
-+   Return NULL if valid, or a pointer to the first invalid unit otherwise.  */
-+extern const uint16_t *
-+       u16_check (const uint16_t *s, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Check whether an UCS-4 string is well-formed.
-+   Return NULL if valid, or a pointer to the first invalid unit otherwise.  */
-+extern const uint32_t *
-+       u32_check (const uint32_t *s, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+
-+
-+/* Elementary string conversions.  */
-+
-+/* Convert an UTF-8 string to an UTF-16 string.  */
-+extern uint16_t *
-+       u8_to_u16 (const uint8_t *s, size_t n, uint16_t *resultbuf,
-+                  size_t *lengthp);
-+
-+/* Convert an UTF-8 string to an UCS-4 string.  */
-+extern uint32_t *
-+       u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf,
-+                  size_t *lengthp);
-+
-+/* Convert an UTF-16 string to an UTF-8 string.  */
-+extern uint8_t *
-+       u16_to_u8 (const uint16_t *s, size_t n, uint8_t *resultbuf,
-+                  size_t *lengthp);
-+
-+/* Convert an UTF-16 string to an UCS-4 string.  */
-+extern uint32_t *
-+       u16_to_u32 (const uint16_t *s, size_t n, uint32_t *resultbuf,
-+                   size_t *lengthp);
-+
-+/* Convert an UCS-4 string to an UTF-8 string.  */
-+extern uint8_t *
-+       u32_to_u8 (const uint32_t *s, size_t n, uint8_t *resultbuf,
-+                  size_t *lengthp);
-+
-+/* Convert an UCS-4 string to an UTF-16 string.  */
-+extern uint16_t *
-+       u32_to_u16 (const uint32_t *s, size_t n, uint16_t *resultbuf,
-+                   size_t *lengthp);
-+
-+
-+/* Elementary string functions.  */
-+
-+/* Return the length (number of units) of the first character in S, which is
-+   no longer than N.  Return 0 if it is the NUL character.  Return -1 upon
-+   failure.  */
-+/* Similar to mblen(), except that s must not be NULL.  */
-+extern int
-+       u8_mblen (const uint8_t *s, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u16_mblen (const uint16_t *s, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u32_mblen (const uint32_t *s, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the length (number of units) of the first character in S, putting
-+   its 'ucs4_t' representation in *PUC.  Upon failure, *PUC is set to 0xfffd,
-+   and an appropriate number of units is returned.
-+   The number of available units, N, must be > 0.  */
-+/* Similar to mbtowc(), except that puc and s must not be NULL, n must be > 0,
-+   and the NUL character is not treated specially.  */
-+/* The variants with _safe suffix are safe, even if the library is compiled
-+   without --enable-safety.  */
-+
-+#if GNULIB_UNISTR_U8_MBTOUC_UNSAFE || HAVE_LIBUNISTRING
-+# if !HAVE_INLINE
-+extern int
-+       u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n);
-+# else
-+extern int
-+       u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n);
-+static inline int
-+u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n)
-+{
-+  uint8_t c = *s;
-+
-+  if (c < 0x80)
-+    {
-+      *puc = c;
-+      return 1;
-+    }
-+  else
-+    return u8_mbtouc_unsafe_aux (puc, s, n);
-+}
-+# endif
-+#endif
-+
-+#if GNULIB_UNISTR_U16_MBTOUC_UNSAFE || HAVE_LIBUNISTRING
-+# if !HAVE_INLINE
-+extern int
-+       u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n);
-+# else
-+extern int
-+       u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n);
-+static inline int
-+u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n)
-+{
-+  uint16_t c = *s;
-+
-+  if (c < 0xd800 || c >= 0xe000)
-+    {
-+      *puc = c;
-+      return 1;
-+    }
-+  else
-+    return u16_mbtouc_unsafe_aux (puc, s, n);
-+}
-+# endif
-+#endif
-+
-+#if GNULIB_UNISTR_U32_MBTOUC_UNSAFE || HAVE_LIBUNISTRING
-+# if !HAVE_INLINE
-+extern int
-+       u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n);
-+# else
-+static inline int
-+u32_mbtouc_unsafe (ucs4_t *puc,
-+                   const uint32_t *s, size_t n _GL_UNUSED_PARAMETER)
-+{
-+  uint32_t c = *s;
-+
-+  if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
-+    *puc = c;
-+  else
-+    /* invalid multibyte character */
-+    *puc = 0xfffd;
-+  return 1;
-+}
-+# endif
-+#endif
-+
-+#if GNULIB_UNISTR_U8_MBTOUC || HAVE_LIBUNISTRING
-+# if !HAVE_INLINE
-+extern int
-+       u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n);
-+# else
-+extern int
-+       u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n);
-+static inline int
-+u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n)
-+{
-+  uint8_t c = *s;
-+
-+  if (c < 0x80)
-+    {
-+      *puc = c;
-+      return 1;
-+    }
-+  else
-+    return u8_mbtouc_aux (puc, s, n);
-+}
-+# endif
-+#endif
-+
-+#if GNULIB_UNISTR_U16_MBTOUC || HAVE_LIBUNISTRING
-+# if !HAVE_INLINE
-+extern int
-+       u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n);
-+# else
-+extern int
-+       u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n);
-+static inline int
-+u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n)
-+{
-+  uint16_t c = *s;
-+
-+  if (c < 0xd800 || c >= 0xe000)
-+    {
-+      *puc = c;
-+      return 1;
-+    }
-+  else
-+    return u16_mbtouc_aux (puc, s, n);
-+}
-+# endif
-+#endif
-+
-+#if GNULIB_UNISTR_U32_MBTOUC || HAVE_LIBUNISTRING
-+# if !HAVE_INLINE
-+extern int
-+       u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n);
-+# else
-+static inline int
-+u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n _GL_UNUSED_PARAMETER)
-+{
-+  uint32_t c = *s;
-+
-+  if (c < 0xd800 || (c >= 0xe000 && c < 0x110000))
-+    *puc = c;
-+  else
-+    /* invalid multibyte character */
-+    *puc = 0xfffd;
-+  return 1;
-+}
-+# endif
-+#endif
-+
-+/* Return the length (number of units) of the first character in S, putting
-+   its 'ucs4_t' representation in *PUC.  Upon failure, *PUC is set to 0xfffd,
-+   and -1 is returned for an invalid sequence of units, -2 is returned for an
-+   incomplete sequence of units.
-+   The number of available units, N, must be > 0.  */
-+/* Similar to u*_mbtouc(), except that the return value gives more details
-+   about the failure, similar to mbrtowc().  */
-+
-+#if GNULIB_UNISTR_U8_MBTOUCR || HAVE_LIBUNISTRING
-+extern int
-+       u8_mbtoucr (ucs4_t *puc, const uint8_t *s, size_t n);
-+#endif
-+
-+#if GNULIB_UNISTR_U16_MBTOUCR || HAVE_LIBUNISTRING
-+extern int
-+       u16_mbtoucr (ucs4_t *puc, const uint16_t *s, size_t n);
-+#endif
-+
-+#if GNULIB_UNISTR_U32_MBTOUCR || HAVE_LIBUNISTRING
-+extern int
-+       u32_mbtoucr (ucs4_t *puc, const uint32_t *s, size_t n);
-+#endif
-+
-+/* Put the multibyte character represented by UC in S, returning its
-+   length.  Return -1 upon failure, -2 if the number of available units, N,
-+   is too small.  The latter case cannot occur if N >= 6/2/1, respectively.  */
-+/* Similar to wctomb(), except that s must not be NULL, and the argument n
-+   must be specified.  */
-+
-+#if GNULIB_UNISTR_U8_UCTOMB || HAVE_LIBUNISTRING
-+/* Auxiliary function, also used by u8_chr, u8_strchr, u8_strrchr.  */
-+extern int
-+       u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n);
-+# if !HAVE_INLINE
-+extern int
-+       u8_uctomb (uint8_t *s, ucs4_t uc, int n);
-+# else
-+static inline int
-+u8_uctomb (uint8_t *s, ucs4_t uc, int n)
-+{
-+  if (uc < 0x80 && n > 0)
-+    {
-+      s[0] = uc;
-+      return 1;
-+    }
-+  else
-+    return u8_uctomb_aux (s, uc, n);
-+}
-+# endif
-+#endif
-+
-+#if GNULIB_UNISTR_U16_UCTOMB || HAVE_LIBUNISTRING
-+/* Auxiliary function, also used by u16_chr, u16_strchr, u16_strrchr.  */
-+extern int
-+       u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n);
-+# if !HAVE_INLINE
-+extern int
-+       u16_uctomb (uint16_t *s, ucs4_t uc, int n);
-+# else
-+static inline int
-+u16_uctomb (uint16_t *s, ucs4_t uc, int n)
-+{
-+  if (uc < 0xd800 && n > 0)
-+    {
-+      s[0] = uc;
-+      return 1;
-+    }
-+  else
-+    return u16_uctomb_aux (s, uc, n);
-+}
-+# endif
-+#endif
-+
-+#if GNULIB_UNISTR_U32_UCTOMB || HAVE_LIBUNISTRING
-+# if !HAVE_INLINE
-+extern int
-+       u32_uctomb (uint32_t *s, ucs4_t uc, int n);
-+# else
-+static inline int
-+u32_uctomb (uint32_t *s, ucs4_t uc, int n)
-+{
-+  if (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000))
-+    {
-+      if (n > 0)
-+        {
-+          *s = uc;
-+          return 1;
-+        }
-+      else
-+        return -2;
-+    }
-+  else
-+    return -1;
-+}
-+# endif
-+#endif
-+
-+/* Copy N units from SRC to DEST.  */
-+/* Similar to memcpy().  */
-+extern uint8_t *
-+       u8_cpy (uint8_t *dest, const uint8_t *src, size_t n);
-+extern uint16_t *
-+       u16_cpy (uint16_t *dest, const uint16_t *src, size_t n);
-+extern uint32_t *
-+       u32_cpy (uint32_t *dest, const uint32_t *src, size_t n);
-+
-+/* Copy N units from SRC to DEST, guaranteeing correct behavior for
-+   overlapping memory areas.  */
-+/* Similar to memmove().  */
-+extern uint8_t *
-+       u8_move (uint8_t *dest, const uint8_t *src, size_t n);
-+extern uint16_t *
-+       u16_move (uint16_t *dest, const uint16_t *src, size_t n);
-+extern uint32_t *
-+       u32_move (uint32_t *dest, const uint32_t *src, size_t n);
-+
-+/* Set the first N characters of S to UC.  UC should be a character that
-+   occupies only 1 unit.  */
-+/* Similar to memset().  */
-+extern uint8_t *
-+       u8_set (uint8_t *s, ucs4_t uc, size_t n);
-+extern uint16_t *
-+       u16_set (uint16_t *s, ucs4_t uc, size_t n);
-+extern uint32_t *
-+       u32_set (uint32_t *s, ucs4_t uc, size_t n);
-+
-+/* Compare S1 and S2, each of length N.  */
-+/* Similar to memcmp().  */
-+extern int
-+       u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u16_cmp (const uint16_t *s1, const uint16_t *s2, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u32_cmp (const uint32_t *s1, const uint32_t *s2, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Compare S1 and S2.  */
-+/* Similar to the gnulib function memcmp2().  */
-+extern int
-+       u8_cmp2 (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u16_cmp2 (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u32_cmp2 (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Search the string at S for UC.  */
-+/* Similar to memchr().  */
-+extern uint8_t *
-+       u8_chr (const uint8_t *s, size_t n, ucs4_t uc)
-+       _UC_ATTRIBUTE_PURE;
-+extern uint16_t *
-+       u16_chr (const uint16_t *s, size_t n, ucs4_t uc)
-+       _UC_ATTRIBUTE_PURE;
-+extern uint32_t *
-+       u32_chr (const uint32_t *s, size_t n, ucs4_t uc)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Count the number of Unicode characters in the N units from S.  */
-+/* Similar to mbsnlen().  */
-+extern size_t
-+       u8_mbsnlen (const uint8_t *s, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+extern size_t
-+       u16_mbsnlen (const uint16_t *s, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+extern size_t
-+       u32_mbsnlen (const uint32_t *s, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Elementary string functions with memory allocation.  */
-+
-+/* Make a freshly allocated copy of S, of length N.  */
-+extern uint8_t *
-+       u8_cpy_alloc (const uint8_t *s, size_t n);
-+extern uint16_t *
-+       u16_cpy_alloc (const uint16_t *s, size_t n);
-+extern uint32_t *
-+       u32_cpy_alloc (const uint32_t *s, size_t n);
-+
-+/* Elementary string functions on NUL terminated strings.  */
-+
-+/* Return the length (number of units) of the first character in S.
-+   Return 0 if it is the NUL character.  Return -1 upon failure.  */
-+extern int
-+       u8_strmblen (const uint8_t *s)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u16_strmblen (const uint16_t *s)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u32_strmblen (const uint32_t *s)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the length (number of units) of the first character in S, putting
-+   its 'ucs4_t' representation in *PUC.  Return 0 if it is the NUL
-+   character.  Return -1 upon failure.  */
-+extern int
-+       u8_strmbtouc (ucs4_t *puc, const uint8_t *s);
-+extern int
-+       u16_strmbtouc (ucs4_t *puc, const uint16_t *s);
-+extern int
-+       u32_strmbtouc (ucs4_t *puc, const uint32_t *s);
-+
-+/* Forward iteration step.  Advances the pointer past the next character,
-+   or returns NULL if the end of the string has been reached.  Puts the
-+   character's 'ucs4_t' representation in *PUC.  */
-+extern const uint8_t *
-+       u8_next (ucs4_t *puc, const uint8_t *s);
-+extern const uint16_t *
-+       u16_next (ucs4_t *puc, const uint16_t *s);
-+extern const uint32_t *
-+       u32_next (ucs4_t *puc, const uint32_t *s);
-+
-+/* Backward iteration step.  Advances the pointer to point to the previous
-+   character, or returns NULL if the beginning of the string had been reached.
-+   Puts the character's 'ucs4_t' representation in *PUC.  */
-+extern const uint8_t *
-+       u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start);
-+extern const uint16_t *
-+       u16_prev (ucs4_t *puc, const uint16_t *s, const uint16_t *start);
-+extern const uint32_t *
-+       u32_prev (ucs4_t *puc, const uint32_t *s, const uint32_t *start);
-+
-+/* Return the number of units in S.  */
-+/* Similar to strlen(), wcslen().  */
-+extern size_t
-+       u8_strlen (const uint8_t *s)
-+       _UC_ATTRIBUTE_PURE;
-+extern size_t
-+       u16_strlen (const uint16_t *s)
-+       _UC_ATTRIBUTE_PURE;
-+extern size_t
-+       u32_strlen (const uint32_t *s)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the number of units in S, but at most MAXLEN.  */
-+/* Similar to strnlen(), wcsnlen().  */
-+extern size_t
-+       u8_strnlen (const uint8_t *s, size_t maxlen)
-+       _UC_ATTRIBUTE_PURE;
-+extern size_t
-+       u16_strnlen (const uint16_t *s, size_t maxlen)
-+       _UC_ATTRIBUTE_PURE;
-+extern size_t
-+       u32_strnlen (const uint32_t *s, size_t maxlen)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Copy SRC to DEST.  */
-+/* Similar to strcpy(), wcscpy().  */
-+extern uint8_t *
-+       u8_strcpy (uint8_t *dest, const uint8_t *src);
-+extern uint16_t *
-+       u16_strcpy (uint16_t *dest, const uint16_t *src);
-+extern uint32_t *
-+       u32_strcpy (uint32_t *dest, const uint32_t *src);
-+
-+/* Copy SRC to DEST, returning the address of the terminating NUL in DEST.  */
-+/* Similar to stpcpy().  */
-+extern uint8_t *
-+       u8_stpcpy (uint8_t *dest, const uint8_t *src);
-+extern uint16_t *
-+       u16_stpcpy (uint16_t *dest, const uint16_t *src);
-+extern uint32_t *
-+       u32_stpcpy (uint32_t *dest, const uint32_t *src);
-+
-+/* Copy no more than N units of SRC to DEST.  */
-+/* Similar to strncpy(), wcsncpy().  */
-+extern uint8_t *
-+       u8_strncpy (uint8_t *dest, const uint8_t *src, size_t n);
-+extern uint16_t *
-+       u16_strncpy (uint16_t *dest, const uint16_t *src, size_t n);
-+extern uint32_t *
-+       u32_strncpy (uint32_t *dest, const uint32_t *src, size_t n);
-+
-+/* Copy no more than N units of SRC to DEST.  Return a pointer past the last
-+   non-NUL unit written into DEST.  */
-+/* Similar to stpncpy().  */
-+extern uint8_t *
-+       u8_stpncpy (uint8_t *dest, const uint8_t *src, size_t n);
-+extern uint16_t *
-+       u16_stpncpy (uint16_t *dest, const uint16_t *src, size_t n);
-+extern uint32_t *
-+       u32_stpncpy (uint32_t *dest, const uint32_t *src, size_t n);
-+
-+/* Append SRC onto DEST.  */
-+/* Similar to strcat(), wcscat().  */
-+extern uint8_t *
-+       u8_strcat (uint8_t *dest, const uint8_t *src);
-+extern uint16_t *
-+       u16_strcat (uint16_t *dest, const uint16_t *src);
-+extern uint32_t *
-+       u32_strcat (uint32_t *dest, const uint32_t *src);
-+
-+/* Append no more than N units of SRC onto DEST.  */
-+/* Similar to strncat(), wcsncat().  */
-+extern uint8_t *
-+       u8_strncat (uint8_t *dest, const uint8_t *src, size_t n);
-+extern uint16_t *
-+       u16_strncat (uint16_t *dest, const uint16_t *src, size_t n);
-+extern uint32_t *
-+       u32_strncat (uint32_t *dest, const uint32_t *src, size_t n);
-+
-+/* Compare S1 and S2.  */
-+/* Similar to strcmp(), wcscmp().  */
-+#ifdef __sun
-+/* Avoid a collision with the u8_strcmp() function in Solaris 11 libc.  */
-+extern int
-+       u8_strcmp_gnu (const uint8_t *s1, const uint8_t *s2)
-+       _UC_ATTRIBUTE_PURE;
-+# define u8_strcmp u8_strcmp_gnu
-+#else
-+extern int
-+       u8_strcmp (const uint8_t *s1, const uint8_t *s2)
-+       _UC_ATTRIBUTE_PURE;
-+#endif
-+extern int
-+       u16_strcmp (const uint16_t *s1, const uint16_t *s2)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u32_strcmp (const uint32_t *s1, const uint32_t *s2)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Compare S1 and S2 using the collation rules of the current locale.
-+   Return -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2.
-+   Upon failure, set errno and return any value.  */
-+/* Similar to strcoll(), wcscoll().  */
-+extern int
-+       u8_strcoll (const uint8_t *s1, const uint8_t *s2);
-+extern int
-+       u16_strcoll (const uint16_t *s1, const uint16_t *s2);
-+extern int
-+       u32_strcoll (const uint32_t *s1, const uint32_t *s2);
-+
-+/* Compare no more than N units of S1 and S2.  */
-+/* Similar to strncmp(), wcsncmp().  */
-+extern int
-+       u8_strncmp (const uint8_t *s1, const uint8_t *s2, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u16_strncmp (const uint16_t *s1, const uint16_t *s2, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+extern int
-+       u32_strncmp (const uint32_t *s1, const uint32_t *s2, size_t n)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Duplicate S, returning an identical malloc'd string.  */
-+/* Similar to strdup(), wcsdup().  */
-+extern uint8_t *
-+       u8_strdup (const uint8_t *s);
-+extern uint16_t *
-+       u16_strdup (const uint16_t *s);
-+extern uint32_t *
-+       u32_strdup (const uint32_t *s);
-+
-+/* Find the first occurrence of UC in STR.  */
-+/* Similar to strchr(), wcschr().  */
-+extern uint8_t *
-+       u8_strchr (const uint8_t *str, ucs4_t uc)
-+       _UC_ATTRIBUTE_PURE;
-+extern uint16_t *
-+       u16_strchr (const uint16_t *str, ucs4_t uc)
-+       _UC_ATTRIBUTE_PURE;
-+extern uint32_t *
-+       u32_strchr (const uint32_t *str, ucs4_t uc)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Find the last occurrence of UC in STR.  */
-+/* Similar to strrchr(), wcsrchr().  */
-+extern uint8_t *
-+       u8_strrchr (const uint8_t *str, ucs4_t uc)
-+       _UC_ATTRIBUTE_PURE;
-+extern uint16_t *
-+       u16_strrchr (const uint16_t *str, ucs4_t uc)
-+       _UC_ATTRIBUTE_PURE;
-+extern uint32_t *
-+       u32_strrchr (const uint32_t *str, ucs4_t uc)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the length of the initial segment of STR which consists entirely
-+   of Unicode characters not in REJECT.  */
-+/* Similar to strcspn(), wcscspn().  */
-+extern size_t
-+       u8_strcspn (const uint8_t *str, const uint8_t *reject)
-+       _UC_ATTRIBUTE_PURE;
-+extern size_t
-+       u16_strcspn (const uint16_t *str, const uint16_t *reject)
-+       _UC_ATTRIBUTE_PURE;
-+extern size_t
-+       u32_strcspn (const uint32_t *str, const uint32_t *reject)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Return the length of the initial segment of STR which consists entirely
-+   of Unicode characters in ACCEPT.  */
-+/* Similar to strspn(), wcsspn().  */
-+extern size_t
-+       u8_strspn (const uint8_t *str, const uint8_t *accept)
-+       _UC_ATTRIBUTE_PURE;
-+extern size_t
-+       u16_strspn (const uint16_t *str, const uint16_t *accept)
-+       _UC_ATTRIBUTE_PURE;
-+extern size_t
-+       u32_strspn (const uint32_t *str, const uint32_t *accept)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Find the first occurrence in STR of any character in ACCEPT.  */
-+/* Similar to strpbrk(), wcspbrk().  */
-+extern uint8_t *
-+       u8_strpbrk (const uint8_t *str, const uint8_t *accept)
-+       _UC_ATTRIBUTE_PURE;
-+extern uint16_t *
-+       u16_strpbrk (const uint16_t *str, const uint16_t *accept)
-+       _UC_ATTRIBUTE_PURE;
-+extern uint32_t *
-+       u32_strpbrk (const uint32_t *str, const uint32_t *accept)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Find the first occurrence of NEEDLE in HAYSTACK.  */
-+/* Similar to strstr(), wcsstr().  */
-+extern uint8_t *
-+       u8_strstr (const uint8_t *haystack, const uint8_t *needle)
-+       _UC_ATTRIBUTE_PURE;
-+extern uint16_t *
-+       u16_strstr (const uint16_t *haystack, const uint16_t *needle)
-+       _UC_ATTRIBUTE_PURE;
-+extern uint32_t *
-+       u32_strstr (const uint32_t *haystack, const uint32_t *needle)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Test whether STR starts with PREFIX.  */
-+extern bool
-+       u8_startswith (const uint8_t *str, const uint8_t *prefix)
-+       _UC_ATTRIBUTE_PURE;
-+extern bool
-+       u16_startswith (const uint16_t *str, const uint16_t *prefix)
-+       _UC_ATTRIBUTE_PURE;
-+extern bool
-+       u32_startswith (const uint32_t *str, const uint32_t *prefix)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Test whether STR ends with SUFFIX.  */
-+extern bool
-+       u8_endswith (const uint8_t *str, const uint8_t *suffix)
-+       _UC_ATTRIBUTE_PURE;
-+extern bool
-+       u16_endswith (const uint16_t *str, const uint16_t *suffix)
-+       _UC_ATTRIBUTE_PURE;
-+extern bool
-+       u32_endswith (const uint32_t *str, const uint32_t *suffix)
-+       _UC_ATTRIBUTE_PURE;
-+
-+/* Divide STR into tokens separated by characters in DELIM.
-+   This interface is actually more similar to wcstok than to strtok.  */
-+/* Similar to strtok_r(), wcstok().  */
-+extern uint8_t *
-+       u8_strtok (uint8_t *str, const uint8_t *delim, uint8_t **ptr);
-+extern uint16_t *
-+       u16_strtok (uint16_t *str, const uint16_t *delim, uint16_t **ptr);
-+extern uint32_t *
-+       u32_strtok (uint32_t *str, const uint32_t *delim, uint32_t **ptr);
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* _UNISTR_H */
-diff --git a/SMP/lib/unistring/unitypes.h b/SMP/lib/unistring/unitypes.h
-new file mode 100644
-index 0000000..7380d5c
---- /dev/null
-+++ b/SMP/lib/unistring/unitypes.h
-@@ -0,0 +1,56 @@
-+/* Elementary types and macros for the GNU UniString library.
-+   Copyright (C) 2002, 2005-2006, 2009-2016 Free Software Foundation, Inc.
-+
-+   This program is free software: you can redistribute it and/or modify it
-+   under the terms of either:
-+
-+    * the GNU Lesser General Public License as published
-+   by the Free Software Foundation; either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   or
-+
-+   * the GNU General Public License as published by the Free
-+   Software Foundation; either version 2 of the License, or
-+   (at your option) any later version.
-+
-+   or both in parallel, as here.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public License
-+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-+
-+#ifndef _UNITYPES_H
-+#define _UNITYPES_H
-+
-+/* Get uint8_t, uint16_t, uint32_t.  */
-+#include <stdint.h>
-+
-+/* Type representing a Unicode character.  */
-+typedef uint32_t ucs4_t;
-+
-+/* Attribute of a function whose result depends only on the arguments
-+   (not pointers!) and which has no side effects.  */
-+#ifndef _UC_ATTRIBUTE_CONST
-+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-+#  define _UC_ATTRIBUTE_CONST __attribute__ ((__const__))
-+# else
-+#  define _UC_ATTRIBUTE_CONST
-+# endif
-+#endif
-+
-+/* Attribute of a function whose result depends only on the arguments
-+   (possibly pointers) and global memory, and which has no side effects.  */
-+#ifndef _UC_ATTRIBUTE_PURE
-+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
-+#  define _UC_ATTRIBUTE_PURE __attribute__ ((__pure__))
-+# else
-+#  define _UC_ATTRIBUTE_PURE
-+# endif
-+#endif
-+
-+#endif /* _UNITYPES_H */
-diff --git a/SMP/lib/unused-parameter.h b/SMP/lib/unused-parameter.h
-new file mode 100644
-index 0000000..843db76
---- /dev/null
-+++ b/SMP/lib/unused-parameter.h
-@@ -0,0 +1,36 @@
-+/* A C macro for declaring that specific function parameters are not used.
-+   Copyright (C) 2008-2016 Free Software Foundation, Inc.
-+
-+   This program is free software: you can redistribute it and/or modify it
-+   under the terms of the GNU General Public License as published
-+   by the Free Software Foundation; either version 3 of the License, or
-+   (at your option) any later version.
-+
-+   This program is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   General Public License for more details.
-+
-+   You should have received a copy of the GNU General Public License
-+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-+
-+/* _GL_UNUSED_PARAMETER is a marker that can be appended to function parameter
-+   declarations for parameters that are not used.  This helps to reduce
-+   warnings, such as from GCC -Wunused-parameter.  The syntax is as follows:
-+       type param _GL_UNUSED_PARAMETER
-+   or more generally
-+       param_decl _GL_UNUSED_PARAMETER
-+   For example:
-+       int param _GL_UNUSED_PARAMETER
-+       int *(*param)(void) _GL_UNUSED_PARAMETER
-+   Other possible, but obscure and discouraged syntaxes:
-+       int _GL_UNUSED_PARAMETER *(*param)(void)
-+       _GL_UNUSED_PARAMETER int *(*param)(void)
-+ */
-+#ifndef _GL_UNUSED_PARAMETER
-+# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
-+#  define _GL_UNUSED_PARAMETER __attribute__ ((__unused__))
-+# else
-+#  define _GL_UNUSED_PARAMETER
-+# endif
-+#endif
-diff --git a/SMP/libgnutls.def b/SMP/libgnutls.def
-new file mode 100644
-index 0000000..179940e
---- /dev/null
-+++ b/SMP/libgnutls.def
-@@ -0,0 +1,1056 @@
-+EXPORTS
-+	gnutls_alert_get
-+	gnutls_alert_get_name
-+	gnutls_alert_send
-+	gnutls_alert_send_appropriate
-+	gnutls_anon_allocate_client_credentials
-+	gnutls_anon_allocate_server_credentials
-+	gnutls_anon_free_client_credentials
-+	gnutls_anon_free_server_credentials
-+	gnutls_anon_set_params_function
-+	gnutls_anon_set_server_dh_params
-+	gnutls_anon_set_server_params_function
-+	gnutls_auth_client_get_type
-+	gnutls_auth_get_type
-+	gnutls_auth_server_get_type
-+	gnutls_bye
-+	gnutls_calloc
-+	gnutls_certificate_activation_time_peers
-+	gnutls_certificate_allocate_credentials
-+	gnutls_certificate_client_get_request_status
-+	gnutls_certificate_expiration_time_peers
-+	gnutls_certificate_free_ca_names
-+	gnutls_certificate_free_cas
-+	gnutls_certificate_free_credentials
-+	gnutls_certificate_free_crls
-+	gnutls_certificate_free_keys
-+	gnutls_certificate_get_ours
-+	gnutls_certificate_get_peers
-+	gnutls_certificate_send_x509_rdn_sequence
-+	gnutls_certificate_server_set_request
-+	gnutls_certificate_set_dh_params
-+	gnutls_certificate_set_openpgp_key
-+	gnutls_certificate_set_openpgp_key_file2
-+	gnutls_certificate_set_openpgp_key_file
-+	gnutls_certificate_set_openpgp_key_mem2
-+	gnutls_certificate_set_openpgp_key_mem
-+	gnutls_certificate_set_openpgp_keyring_file
-+	gnutls_certificate_set_openpgp_keyring_mem
-+	gnutls_certificate_set_params_function
-+	gnutls_certificate_set_verify_flags
-+	gnutls_certificate_set_verify_limits
-+	gnutls_certificate_set_x509_crl
-+	gnutls_certificate_set_x509_crl_file
-+	gnutls_certificate_set_x509_crl_mem
-+	gnutls_certificate_set_x509_key
-+	gnutls_certificate_set_x509_key_file
-+	gnutls_certificate_set_x509_key_mem
-+	gnutls_certificate_set_x509_simple_pkcs12_file
-+	gnutls_certificate_set_x509_trust
-+	gnutls_certificate_set_x509_trust_file
-+	gnutls_certificate_set_x509_trust_mem
-+	gnutls_certificate_type_get
-+	gnutls_certificate_type_get_id
-+	gnutls_certificate_type_get_name
-+	gnutls_certificate_type_list
-+	gnutls_certificate_verify_peers2
-+	gnutls_check_version
-+	gnutls_cipher_get
-+	gnutls_cipher_get_id
-+	gnutls_cipher_get_key_size
-+	gnutls_cipher_get_name
-+	gnutls_cipher_list
-+	gnutls_cipher_suite_get_name
-+	gnutls_cipher_suite_info
-+	gnutls_compression_get
-+	gnutls_compression_get_id
-+	gnutls_compression_get_name
-+	gnutls_compression_list
-+	gnutls_credentials_clear
-+	gnutls_credentials_set
-+	gnutls_db_check_entry
-+	gnutls_db_get_ptr
-+	gnutls_db_remove_session
-+	gnutls_db_set_cache_expiration
-+	gnutls_db_set_ptr
-+	gnutls_db_set_remove_function
-+	gnutls_db_set_retrieve_function
-+	gnutls_db_set_store_function
-+	gnutls_deinit
-+	gnutls_dh_get_group
-+	gnutls_dh_get_peers_public_bits
-+	gnutls_dh_get_prime_bits
-+	gnutls_dh_get_pubkey
-+	gnutls_dh_get_secret_bits
-+	gnutls_dh_params_cpy
-+	gnutls_dh_params_deinit
-+	gnutls_dh_params_export_pkcs3
-+	gnutls_dh_params_export_raw
-+	gnutls_dh_params_generate2
-+	gnutls_dh_params_import_pkcs3
-+	gnutls_dh_params_import_raw
-+	gnutls_dh_params_init
-+	gnutls_dh_set_prime_bits
-+	gnutls_error_is_fatal
-+	gnutls_error_to_alert
-+	gnutls_fingerprint
-+	gnutls_free
-+	gnutls_global_deinit
-+	gnutls_global_init
-+	gnutls_global_set_log_function
-+	gnutls_global_set_log_level
-+	gnutls_global_set_mem_functions
-+	gnutls_handshake
-+	gnutls_handshake_get_last_in
-+	gnutls_handshake_get_last_out
-+	gnutls_handshake_set_max_packet_length
-+	gnutls_handshake_set_post_client_hello_function
-+	gnutls_handshake_set_private_extensions
-+	gnutls_hex2bin
-+	gnutls_hex_decode
-+	gnutls_hex_encode
-+	gnutls_init
-+	gnutls_kx_get
-+	gnutls_kx_get_id
-+	gnutls_kx_get_name
-+	gnutls_kx_list
-+	gnutls_mac_get
-+	gnutls_mac_get_id
-+	gnutls_mac_get_key_size
-+	gnutls_mac_get_name
-+	gnutls_mac_list
-+	gnutls_malloc
-+	gnutls_openpgp_crt_check_hostname
-+	gnutls_openpgp_crt_deinit
-+	gnutls_openpgp_crt_export
-+	gnutls_openpgp_crt_get_auth_subkey
-+	gnutls_openpgp_crt_get_creation_time
-+	gnutls_openpgp_crt_get_expiration_time
-+	gnutls_openpgp_crt_get_fingerprint
-+	gnutls_openpgp_crt_get_key_id
-+	gnutls_openpgp_crt_get_key_usage
-+	gnutls_openpgp_crt_get_name
-+	gnutls_openpgp_crt_get_pk_algorithm
-+	gnutls_openpgp_crt_get_pk_dsa_raw
-+	gnutls_openpgp_crt_get_pk_rsa_raw
-+	gnutls_openpgp_crt_get_preferred_key_id
-+	gnutls_openpgp_crt_get_revoked_status
-+	gnutls_openpgp_crt_get_subkey_count
-+	gnutls_openpgp_crt_get_subkey_creation_time
-+	gnutls_openpgp_crt_get_subkey_expiration_time
-+	gnutls_openpgp_crt_get_subkey_fingerprint
-+	gnutls_openpgp_crt_get_subkey_id
-+	gnutls_openpgp_crt_get_subkey_idx
-+	gnutls_openpgp_crt_get_subkey_pk_algorithm
-+	gnutls_openpgp_crt_get_subkey_pk_dsa_raw
-+	gnutls_openpgp_crt_get_subkey_pk_rsa_raw
-+	gnutls_openpgp_crt_get_subkey_revoked_status
-+	gnutls_openpgp_crt_get_subkey_usage
-+	gnutls_openpgp_crt_get_version
-+	gnutls_openpgp_crt_import
-+	gnutls_openpgp_crt_init
-+	gnutls_openpgp_crt_print
-+	gnutls_openpgp_crt_set_preferred_key_id
-+	gnutls_openpgp_crt_verify_ring
-+	gnutls_openpgp_crt_verify_self
-+	gnutls_openpgp_keyring_check_id
-+	gnutls_openpgp_keyring_deinit
-+	gnutls_openpgp_keyring_get_crt
-+	gnutls_openpgp_keyring_get_crt_count
-+	gnutls_openpgp_keyring_import
-+	gnutls_openpgp_keyring_init
-+	gnutls_openpgp_privkey_deinit
-+	gnutls_openpgp_privkey_export
-+	gnutls_openpgp_privkey_export_dsa_raw
-+	gnutls_openpgp_privkey_export_rsa_raw
-+	gnutls_openpgp_privkey_export_subkey_dsa_raw
-+	gnutls_openpgp_privkey_export_subkey_rsa_raw
-+	gnutls_openpgp_privkey_get_fingerprint
-+	gnutls_openpgp_privkey_get_key_id
-+	gnutls_openpgp_privkey_get_pk_algorithm
-+	gnutls_openpgp_privkey_get_preferred_key_id
-+	gnutls_openpgp_privkey_get_revoked_status
-+	gnutls_openpgp_privkey_get_subkey_count
-+	gnutls_openpgp_privkey_get_subkey_creation_time
-+	gnutls_openpgp_privkey_get_subkey_expiration_time
-+	gnutls_openpgp_privkey_get_subkey_fingerprint
-+	gnutls_openpgp_privkey_get_subkey_id
-+	gnutls_openpgp_privkey_get_subkey_idx
-+	gnutls_openpgp_privkey_get_subkey_pk_algorithm
-+	gnutls_openpgp_privkey_get_subkey_revoked_status
-+	gnutls_openpgp_privkey_import
-+	gnutls_openpgp_privkey_init
-+	gnutls_openpgp_privkey_set_preferred_key_id
-+	gnutls_openpgp_privkey_sign_hash
-+	gnutls_openpgp_send_cert
-+	gnutls_openpgp_set_recv_key_function
-+	gnutls_pem_base64_decode
-+	gnutls_pem_base64_decode2
-+	gnutls_pem_base64_encode
-+	gnutls_pem_base64_encode2
-+	gnutls_perror
-+	gnutls_pk_algorithm_get_name
-+	gnutls_pk_get_id
-+	gnutls_pk_get_name
-+	gnutls_pk_list
-+	gnutls_pkcs12_bag_decrypt
-+	gnutls_pkcs12_bag_deinit
-+	gnutls_pkcs12_bag_encrypt
-+	gnutls_pkcs12_bag_get_count
-+	gnutls_pkcs12_bag_get_data
-+	gnutls_pkcs12_bag_get_friendly_name
-+	gnutls_pkcs12_bag_get_key_id
-+	gnutls_pkcs12_bag_get_type
-+	gnutls_pkcs12_bag_init
-+	gnutls_pkcs12_bag_set_crl
-+	gnutls_pkcs12_bag_set_crt
-+	gnutls_pkcs12_bag_set_data
-+	gnutls_pkcs12_bag_set_friendly_name
-+	gnutls_pkcs12_bag_set_key_id
-+	gnutls_pkcs12_deinit
-+	gnutls_pkcs12_export
-+	gnutls_pkcs12_generate_mac
-+	gnutls_pkcs12_get_bag
-+	gnutls_pkcs12_import
-+	gnutls_pkcs12_init
-+	gnutls_pkcs12_set_bag
-+	gnutls_pkcs12_verify_mac
-+	gnutls_pkcs7_deinit
-+	gnutls_pkcs7_delete_crl
-+	gnutls_pkcs7_delete_crt
-+	gnutls_pkcs7_export
-+	gnutls_pkcs7_get_crl_count
-+	gnutls_pkcs7_get_crl_raw
-+	gnutls_pkcs7_get_crt_count
-+	gnutls_pkcs7_get_crt_raw
-+	gnutls_pkcs7_import
-+	gnutls_pkcs7_init
-+	gnutls_pkcs7_set_crl
-+	gnutls_pkcs7_set_crl_raw
-+	gnutls_pkcs7_set_crt
-+	gnutls_pkcs7_set_crt_raw
-+	gnutls_prf
-+	gnutls_prf_raw
-+	gnutls_priority_deinit
-+	gnutls_priority_init
-+	gnutls_priority_set
-+	gnutls_priority_set_direct
-+	gnutls_protocol_get_id
-+	gnutls_protocol_get_name
-+	gnutls_protocol_get_version
-+	gnutls_protocol_list
-+	gnutls_psk_allocate_client_credentials
-+	gnutls_psk_allocate_server_credentials
-+	gnutls_psk_client_get_hint
-+	gnutls_psk_free_client_credentials
-+	gnutls_psk_free_server_credentials
-+	gnutls_psk_server_get_username
-+	gnutls_psk_set_client_credentials
-+	gnutls_psk_set_client_credentials_function
-+	gnutls_psk_set_params_function
-+	gnutls_psk_set_server_credentials_file
-+	gnutls_psk_set_server_credentials_function
-+	gnutls_psk_set_server_credentials_hint
-+	gnutls_psk_set_server_dh_params
-+	gnutls_psk_set_server_params_function
-+	gnutls_realloc
-+	gnutls_record_check_pending
-+	gnutls_record_disable_padding
-+	gnutls_record_get_direction
-+	gnutls_record_get_max_size
-+	gnutls_record_recv
-+	gnutls_record_send
-+	gnutls_record_set_max_size
-+	gnutls_rehandshake
-+	gnutls_secure_malloc
-+	gnutls_server_name_get
-+	gnutls_server_name_set
-+	gnutls_session_enable_compatibility_mode
-+	gnutls_session_get_data2
-+	gnutls_session_get_data
-+	gnutls_session_get_id
-+	gnutls_session_get_ptr
-+	gnutls_session_is_resumed
-+	gnutls_session_set_data
-+	gnutls_session_set_ptr
-+	gnutls_set_default_priority
-+	gnutls_sign_get_id
-+	gnutls_sign_get_name
-+	gnutls_sign_list
-+	gnutls_srp_1024_group_generator
-+	gnutls_srp_1024_group_prime
-+	gnutls_srp_1536_group_generator
-+	gnutls_srp_1536_group_prime
-+	gnutls_srp_2048_group_generator
-+	gnutls_srp_2048_group_prime
-+	gnutls_srp_allocate_client_credentials
-+	gnutls_srp_allocate_server_credentials
-+	gnutls_srp_base64_decode
-+	gnutls_srp_base64_decode2
-+	gnutls_srp_base64_encode
-+	gnutls_srp_base64_encode2
-+	gnutls_srp_free_client_credentials
-+	gnutls_srp_free_server_credentials
-+	gnutls_srp_server_get_username
-+	gnutls_srp_set_client_credentials
-+	gnutls_srp_set_client_credentials_function
-+	gnutls_srp_set_prime_bits
-+	gnutls_srp_set_server_credentials_file
-+	gnutls_srp_set_server_credentials_function
-+	gnutls_srp_verifier
-+	gnutls_strdup
-+	gnutls_strerror
-+	gnutls_strerror_name
-+	gnutls_supplemental_get_name
-+	gnutls_transport_get_ptr2
-+	gnutls_transport_get_ptr
-+	gnutls_transport_set_errno
-+	gnutls_transport_set_ptr2
-+	gnutls_transport_set_ptr
-+	gnutls_transport_set_pull_function
-+	gnutls_transport_set_push_function
-+	gnutls_x509_crl_check_issuer
-+	gnutls_x509_crl_deinit
-+	gnutls_x509_crl_export
-+	gnutls_x509_crl_get_crt_count
-+	gnutls_x509_crl_get_crt_serial
-+	gnutls_x509_crl_get_dn_oid
-+	gnutls_x509_crl_get_issuer_dn
-+	gnutls_x509_crl_get_issuer_dn_by_oid
-+	gnutls_x509_crl_get_next_update
-+	gnutls_x509_crl_get_signature
-+	gnutls_x509_crl_get_signature_algorithm
-+	gnutls_x509_crl_get_this_update
-+	gnutls_x509_crl_get_version
-+	gnutls_x509_crl_import
-+	gnutls_x509_crl_init
-+	gnutls_x509_crl_print
-+	gnutls_x509_crl_set_crt
-+	gnutls_x509_crl_set_crt_serial
-+	gnutls_x509_crl_set_next_update
-+	gnutls_x509_crl_set_this_update
-+	gnutls_x509_crl_set_version
-+	gnutls_x509_crl_sign2
-+	gnutls_x509_crl_sign
-+	gnutls_x509_crl_verify
-+	gnutls_x509_crq_deinit
-+	gnutls_x509_crq_export
-+	gnutls_x509_crq_get_attribute_by_oid
-+	gnutls_x509_crq_get_challenge_password
-+	gnutls_x509_crq_get_dn
-+	gnutls_x509_crq_get_dn_by_oid
-+	gnutls_x509_crq_get_dn_oid
-+	gnutls_x509_crq_get_pk_algorithm
-+	gnutls_x509_crq_get_version
-+	gnutls_x509_crq_import
-+	gnutls_x509_crq_init
-+	gnutls_x509_crq_set_attribute_by_oid
-+	gnutls_x509_crq_set_challenge_password
-+	gnutls_x509_crq_set_dn_by_oid
-+	gnutls_x509_crq_set_key
-+	gnutls_x509_crq_set_key_rsa_raw
-+	gnutls_x509_crq_set_version
-+	gnutls_x509_crq_sign2
-+	gnutls_x509_crq_sign
-+	gnutls_x509_crt_check_hostname
-+	gnutls_x509_crt_check_issuer
-+	gnutls_x509_crt_check_revocation
-+	gnutls_x509_crt_cpy_crl_dist_points
-+	gnutls_x509_crt_deinit
-+	gnutls_x509_crt_export
-+	gnutls_x509_crt_get_activation_time
-+	gnutls_x509_crt_get_authority_key_id
-+	gnutls_x509_crt_get_basic_constraints
-+	gnutls_x509_crt_get_ca_status
-+	gnutls_x509_crt_get_crl_dist_points
-+	gnutls_x509_crt_get_dn
-+	gnutls_x509_crt_get_dn_by_oid
-+	gnutls_x509_crt_get_dn_oid
-+	gnutls_x509_crt_get_expiration_time
-+	gnutls_x509_crt_get_extension_by_oid
-+	gnutls_x509_crt_get_extension_data
-+	gnutls_x509_crt_get_extension_info
-+	gnutls_x509_crt_get_extension_oid
-+	gnutls_x509_crt_get_fingerprint
-+	gnutls_x509_crt_get_issuer
-+	gnutls_x509_crt_get_issuer_dn
-+	gnutls_x509_crt_get_issuer_dn_by_oid
-+	gnutls_x509_crt_get_issuer_dn_oid
-+	gnutls_x509_crt_get_issuer_unique_id
-+	gnutls_x509_crt_get_key_id
-+	gnutls_x509_crt_get_key_purpose_oid
-+	gnutls_x509_crt_get_key_usage
-+	gnutls_x509_crt_get_pk_algorithm
-+	gnutls_x509_crt_get_pk_dsa_raw
-+	gnutls_x509_crt_get_pk_rsa_raw
-+	gnutls_x509_crt_get_proxy
-+	gnutls_x509_crt_get_raw_dn
-+	gnutls_x509_crt_get_raw_issuer_dn
-+	gnutls_x509_crt_get_serial
-+	gnutls_x509_crt_get_signature
-+	gnutls_x509_crt_get_signature_algorithm
-+	gnutls_x509_crt_get_subject
-+	gnutls_x509_crt_get_subject_alt_name2
-+	gnutls_x509_crt_get_subject_alt_name
-+	gnutls_x509_crt_get_subject_alt_othername_oid
-+	gnutls_x509_crt_get_subject_key_id
-+	gnutls_x509_crt_get_subject_unique_id
-+	gnutls_x509_crt_get_version
-+	gnutls_x509_crt_import
-+	gnutls_x509_crt_init
-+	gnutls_x509_crt_list_import
-+	gnutls_x509_crt_list_verify
-+	gnutls_x509_crt_print
-+	gnutls_x509_crt_set_activation_time
-+	gnutls_x509_crt_set_authority_key_id
-+	gnutls_x509_crt_set_basic_constraints
-+	gnutls_x509_crt_set_ca_status
-+	gnutls_x509_crt_set_crl_dist_points2
-+	gnutls_x509_crt_set_crl_dist_points
-+	gnutls_x509_crt_set_crq
-+	gnutls_x509_crt_set_dn_by_oid
-+	gnutls_x509_crt_set_expiration_time
-+	gnutls_x509_crt_set_extension_by_oid
-+	gnutls_x509_crt_set_issuer_dn_by_oid
-+	gnutls_x509_crt_set_key
-+	gnutls_x509_crt_set_key_purpose_oid
-+	gnutls_x509_crt_set_key_usage
-+	gnutls_x509_crt_set_proxy
-+	gnutls_x509_crt_set_proxy_dn
-+	gnutls_x509_crt_set_serial
-+	gnutls_x509_crt_set_subject_alt_name
-+	gnutls_x509_crt_set_subject_alternative_name
-+	gnutls_x509_crt_set_subject_key_id
-+	gnutls_x509_crt_set_version
-+	gnutls_x509_crt_sign2
-+	gnutls_x509_crt_sign
-+	gnutls_x509_crt_verify
-+	gnutls_x509_dn_deinit
-+	gnutls_x509_dn_export
-+	gnutls_x509_dn_get_rdn_ava
-+	gnutls_x509_dn_import
-+	gnutls_x509_dn_init
-+	gnutls_x509_dn_oid_known
-+	gnutls_x509_privkey_cpy
-+	gnutls_x509_privkey_deinit
-+	gnutls_x509_privkey_export
-+	gnutls_x509_privkey_export_dsa_raw
-+	gnutls_x509_privkey_export_pkcs8
-+	gnutls_x509_privkey_export_rsa_raw
-+	gnutls_x509_privkey_fix
-+	gnutls_x509_privkey_generate
-+	gnutls_x509_privkey_get_key_id
-+	gnutls_x509_privkey_get_pk_algorithm
-+	gnutls_x509_privkey_import
-+	gnutls_x509_privkey_import_dsa_raw
-+	gnutls_x509_privkey_import_pkcs8
-+	gnutls_x509_privkey_import_rsa_raw
-+	gnutls_x509_privkey_init
-+	gnutls_x509_privkey_sign_data
-+	gnutls_x509_privkey_sign_hash
-+	gnutls_x509_rdn_get
-+	gnutls_x509_rdn_get_by_oid
-+	gnutls_x509_rdn_get_oid
-+	gnutls_certificate_set_x509_simple_pkcs12_mem
-+	gnutls_x509_crl_get_authority_key_id
-+	gnutls_x509_crl_get_extension_data
-+	gnutls_x509_crl_get_extension_info
-+	gnutls_x509_crl_get_extension_oid
-+	gnutls_x509_crl_get_number
-+	gnutls_x509_crl_set_authority_key_id
-+	gnutls_x509_crl_set_number
-+	gnutls_x509_crq_get_attribute_data
-+	gnutls_x509_crq_get_attribute_info
-+	gnutls_x509_crq_get_basic_constraints
-+	gnutls_x509_crq_get_extension_by_oid
-+	gnutls_x509_crq_get_extension_data
-+	gnutls_x509_crq_get_extension_info
-+	gnutls_x509_crq_get_key_id
-+	gnutls_x509_crq_get_key_purpose_oid
-+	gnutls_x509_crq_get_key_rsa_raw
-+	gnutls_x509_crq_get_key_usage
-+	gnutls_x509_crq_get_subject_alt_name
-+	gnutls_x509_crq_get_subject_alt_othername_oid
-+	gnutls_x509_crq_print
-+	gnutls_x509_crq_set_basic_constraints
-+	gnutls_x509_crq_set_key_purpose_oid
-+	gnutls_x509_crq_set_key_usage
-+	gnutls_x509_crq_set_subject_alt_name
-+	gnutls_x509_crt_set_crq_extensions
-+	gnutls_session_ticket_key_generate
-+	gnutls_session_ticket_enable_client
-+	gnutls_session_ticket_enable_server
-+	gnutls_x509_crt_get_issuer_alt_name2
-+	gnutls_x509_crt_get_issuer_alt_name
-+	gnutls_x509_crt_get_issuer_alt_othername_oid
-+	gnutls_sign_algorithm_get_requested
-+	gnutls_cipher_init
-+	gnutls_cipher_encrypt
-+	gnutls_cipher_decrypt
-+	gnutls_cipher_deinit
-+	gnutls_cipher_get_block_size
-+	gnutls_hash_init
-+	gnutls_hash_get_len
-+	gnutls_hash
-+	gnutls_hash_fast
-+	gnutls_hash_deinit
-+	gnutls_hash_output
-+	gnutls_hmac_init
-+	gnutls_hmac_get_len
-+	gnutls_hmac
-+	gnutls_hmac_fast
-+	gnutls_hmac_deinit
-+	gnutls_hmac_output
-+	gnutls_certificate_set_verify_function
-+	gnutls_safe_renegotiation_status
-+	gnutls_certificate_set_retrieve_function
-+	gnutls_x509_crt_import_url
-+	gnutls_privkey_init
-+	gnutls_privkey_deinit
-+	gnutls_privkey_get_pk_algorithm
-+	gnutls_privkey_get_type
-+	gnutls_privkey_import_x509
-+	gnutls_privkey_import_openpgp
-+	gnutls_privkey_decrypt_data
-+	gnutls_x509_crq_privkey_sign
-+	gnutls_x509_crl_privkey_sign
-+	gnutls_x509_crt_privkey_sign
-+	gnutls_pubkey_init
-+	gnutls_pubkey_deinit
-+	gnutls_pubkey_get_pk_algorithm
-+	gnutls_pubkey_import_x509
-+	gnutls_pubkey_import_openpgp
-+	gnutls_pubkey_export
-+	gnutls_pubkey_get_key_id
-+	gnutls_pubkey_get_key_usage
-+	gnutls_pubkey_import_dsa_raw
-+	gnutls_pubkey_import_rsa_raw
-+	gnutls_pubkey_import
-+	gnutls_x509_crt_set_pubkey
-+	gnutls_x509_crq_set_pubkey
-+	gnutls_x509_privkey_export_rsa_raw2
-+	gnutls_pubkey_get_preferred_hash_algorithm
-+	gnutls_x509_crt_get_preferred_hash_algorithm
-+	gnutls_global_set_mutex
-+	gnutls_transport_set_vec_push_function
-+	gnutls_transport_set_errno_function
-+	gnutls_sec_param_to_pk_bits
-+	gnutls_sec_param_get_name
-+	gnutls_pk_bits_to_sec_param
-+	gnutls_rnd
-+	gnutls_cipher_encrypt2
-+	gnutls_cipher_decrypt2
-+	gnutls_openpgp_privkey_sec_param
-+	gnutls_x509_privkey_sec_param
-+	gnutls_session_channel_binding
-+	gnutls_privkey_sign_hash
-+	gnutls_privkey_sign_data
-+	gnutls_pubkey_import_privkey
-+	gnutls_certificate_get_issuer
-+	gnutls_x509_crq_verify
-+	gnutls_global_set_time_function
-+	gnutls_x509_trust_list_verify_crt
-+	gnutls_x509_trust_list_add_crls
-+	gnutls_x509_trust_list_add_cas
-+	gnutls_x509_trust_list_init
-+	gnutls_x509_trust_list_deinit
-+	gnutls_x509_crl_list_import
-+	gnutls_x509_crl_list_import2
-+	gnutls_x509_crt_list_import2
-+	gnutls_cipher_tag
-+	gnutls_cipher_add_auth
-+	gnutls_dtls_set_timeouts
-+	gnutls_transport_set_pull_timeout_function
-+	gnutls_dtls_get_mtu
-+	gnutls_dtls_set_mtu
-+	gnutls_record_recv_seq
-+	gnutls_key_generate
-+	gnutls_dtls_cookie_verify
-+	gnutls_dtls_cookie_send
-+	gnutls_dtls_prestate_set
-+	gnutls_dtls_get_data_mtu
-+	gnutls_dtls_set_data_mtu
-+	gnutls_cipher_set_iv
-+	gnutls_pcert_deinit
-+	gnutls_pcert_import_x509
-+	gnutls_pcert_import_x509_raw
-+	gnutls_pcert_import_openpgp
-+	gnutls_pcert_import_openpgp_raw
-+	gnutls_pcert_export_x509
-+	gnutls_pcert_export_openpgp
-+	gnutls_pubkey_get_openpgp_key_id
-+	gnutls_certificate_set_retrieve_function2
-+	gnutls_x509_trust_list_get_issuer
-+	gnutls_global_set_audit_log_function
-+	gnutls_ecc_curve_get_name
-+	gnutls_ecc_curve_get_size
-+	gnutls_ecc_curve_get
-+	gnutls_x509_privkey_export_ecc_raw
-+	gnutls_x509_privkey_import_ecc_raw
-+	gnutls_pubkey_verify_data2
-+	gnutls_x509_trust_list_verify_named_crt
-+	gnutls_x509_trust_list_add_named_crt
-+	gnutls_alert_get_strname
-+	gnutls_pcert_list_import_x509_raw
-+	gnutls_pubkey_import_ecc_raw
-+	gnutls_record_get_discarded
-+	gnutls_x509_crt_get_authority_info_access
-+	gnutls_ocsp_req_add_cert
-+	gnutls_ocsp_req_add_cert_id
-+	gnutls_ocsp_req_deinit
-+	gnutls_ocsp_req_export
-+	gnutls_ocsp_req_get_cert_id
-+	gnutls_ocsp_req_get_extension
-+	gnutls_ocsp_req_get_nonce
-+	gnutls_ocsp_req_get_version
-+	gnutls_ocsp_req_import
-+	gnutls_ocsp_req_init
-+	gnutls_ocsp_req_print
-+	gnutls_ocsp_req_randomize_nonce
-+	gnutls_ocsp_req_set_extension
-+	gnutls_ocsp_req_set_nonce
-+	gnutls_ocsp_resp_deinit
-+	gnutls_ocsp_resp_export
-+	gnutls_ocsp_resp_get_certs
-+	gnutls_ocsp_resp_get_extension
-+	gnutls_ocsp_resp_get_nonce
-+	gnutls_ocsp_resp_get_produced
-+	gnutls_ocsp_resp_get_responder
-+	gnutls_ocsp_resp_get_response
-+	gnutls_ocsp_resp_get_signature
-+	gnutls_ocsp_resp_get_signature_algorithm
-+	gnutls_ocsp_resp_get_single
-+	gnutls_ocsp_resp_get_status
-+	gnutls_ocsp_resp_get_version
-+	gnutls_ocsp_resp_import
-+	gnutls_ocsp_resp_init
-+	gnutls_ocsp_resp_print
-+	gnutls_ocsp_resp_verify
-+	gnutls_ocsp_resp_verify_direct
-+	gnutls_privkey_import_ext
-+	gnutls_certificate_set_key
-+	gnutls_srp_3072_group_generator
-+	gnutls_srp_3072_group_prime
-+	gnutls_srp_4096_group_generator
-+	gnutls_srp_4096_group_prime
-+	gnutls_x509_privkey_verify_params
-+	gnutls_priority_get_cipher_suite_index
-+	gnutls_random_art
-+	gnutls_pubkey_encrypt_data
-+	gnutls_x509_dn_oid_name
-+	gnutls_session_resumption_requested
-+	gnutls_x509_crt_get_authority_key_gn_serial
-+	gnutls_x509_crl_get_authority_key_gn_serial
-+	gnutls_ecc_curve_list
-+	gnutls_priority_certificate_type_list
-+	gnutls_priority_sign_list
-+	gnutls_priority_protocol_list
-+	gnutls_priority_compression_list
-+	gnutls_priority_ecc_curve_list
-+	gnutls_verify_stored_pubkey
-+	gnutls_store_commitment
-+	gnutls_store_pubkey
-+	gnutls_dtls_get_timeout
-+	gnutls_tdb_init
-+	gnutls_tdb_set_store_func
-+	gnutls_tdb_set_store_commitment_func
-+	gnutls_tdb_set_verify_func
-+	gnutls_tdb_deinit
-+	gnutls_x509_crt_set_authority_info_access
-+	gnutls_x509_crt_get_private_key_usage_period
-+	gnutls_x509_crq_get_private_key_usage_period
-+	gnutls_x509_crt_set_private_key_usage_period
-+	gnutls_x509_crq_set_private_key_usage_period
-+	gnutls_session_get_random
-+	gnutls_pubkey_verify_hash2
-+	gnutls_pk_to_sign
-+	gnutls_certificate_set_x509_system_trust
-+	gnutls_session_set_premaster
-+	gnutls_ocsp_resp_check_crt
-+	gnutls_x509_trust_list_add_system_trust
-+	gnutls_x509_trust_list_add_trust_file
-+	gnutls_x509_trust_list_add_trust_mem
-+	gnutls_x509_trust_list_iter_get_ca
-+	gnutls_x509_trust_list_iter_deinit
-+	gnutls_pkcs12_simple_parse
-+	gnutls_privkey_import_openpgp_raw
-+	gnutls_privkey_import_x509_raw
-+	gnutls_load_file
-+	gnutls_x509_privkey_import_openssl
-+	gnutls_x509_privkey_import2
-+	gnutls_privkey_import_ext2
-+	gnutls_privkey_import_tpm_raw
-+	gnutls_tpm_privkey_generate
-+	gnutls_pubkey_import_tpm_raw
-+	gnutls_tpm_key_list_deinit
-+	gnutls_tpm_key_list_get_url
-+	gnutls_tpm_get_registered
-+	gnutls_tpm_privkey_delete
-+	gnutls_pubkey_import_tpm_url
-+	gnutls_privkey_import_tpm_url
-+	gnutls_privkey_import_url
-+	gnutls_pubkey_import_url
-+	gnutls_url_is_supported
-+	gnutls_privkey_set_pin_function
-+	gnutls_pubkey_set_pin_function
-+	gnutls_certificate_set_pin_function
-+	gnutls_x509_crt_set_pin_function
-+	gnutls_handshake_set_timeout
-+	gnutls_sign_get_pk_algorithm
-+	gnutls_sign_get_hash_algorithm
-+	gnutls_sign_algorithm_get
-+	gnutls_x509_privkey_get_pk_algorithm2
-+	gnutls_heartbeat_ping
-+	gnutls_heartbeat_pong
-+	gnutls_heartbeat_enable
-+	gnutls_heartbeat_allowed
-+	gnutls_heartbeat_get_timeout
-+	gnutls_heartbeat_set_timeouts
-+	gnutls_certificate_set_ocsp_status_request_function
-+	gnutls_certificate_set_ocsp_status_request_file
-+	gnutls_ocsp_status_request_enable_client
-+	gnutls_ocsp_status_request_get
-+	gnutls_dh_params_export2_pkcs3
-+	gnutls_pubkey_export2
-+	gnutls_x509_crt_export2
-+	gnutls_x509_dn_export2
-+	gnutls_x509_crl_export2
-+	gnutls_pkcs7_export2
-+	gnutls_x509_privkey_export2
-+	gnutls_x509_privkey_export2_pkcs8
-+	gnutls_x509_crq_export2
-+	gnutls_openpgp_crt_export2
-+	gnutls_openpgp_privkey_export2
-+	gnutls_pkcs12_export2
-+	gnutls_pubkey_import_openpgp_raw
-+	gnutls_pubkey_import_x509_raw
-+	gnutls_certificate_get_peers_subkey_id
-+	gnutls_session_get_id2
-+	gnutls_certificate_verify_peers3
-+	gnutls_certificate_verification_status_print
-+	gnutls_srtp_get_profile_id
-+	gnutls_srtp_get_profile_name
-+	gnutls_srtp_get_selected_profile
-+	gnutls_srtp_set_profile
-+	gnutls_srtp_set_profile_direct
-+	gnutls_srtp_get_keys
-+	gnutls_srtp_get_mki
-+	gnutls_srtp_set_mki
-+	gnutls_ocsp_status_request_is_checked
-+	gnutls_sign_is_secure
-+	gnutls_x509_crt_get_policy
-+	gnutls_x509_policy_release
-+	gnutls_x509_crt_set_policy
-+	gnutls_pubkey_import_x509_crq
-+	gnutls_pubkey_print
-+	gnutls_x509_crt_set_dn
-+	gnutls_x509_crq_set_dn
-+	gnutls_x509_crt_set_issuer_dn
-+	gnutls_session_force_valid
-+	gnutls_record_can_use_length_hiding
-+	gnutls_range_split
-+	gnutls_record_send_range
-+	gnutls_db_check_entry_time
-+	gnutls_handshake_set_random
-+	gnutls_record_cork
-+	gnutls_record_uncork
-+	gnutls_transport_set_int2
-+	gnutls_transport_get_int2
-+	gnutls_transport_get_int
-+	gnutls_x509_crt_get_issuer_dn2
-+	gnutls_x509_crt_get_dn2
-+	gnutls_x509_crl_get_issuer_dn2
-+	gnutls_x509_crq_get_dn2
-+	gnutls_x509_trust_list_remove_trust_mem
-+	gnutls_x509_trust_list_remove_trust_file
-+	gnutls_x509_trust_list_remove_cas
-+	gnutls_session_get_desc
-+	gnutls_privkey_status
-+	gnutls_cipher_get_iv_size
-+	gnutls_hmac_set_nonce
-+	gnutls_sign_algorithm_get_client
-+	gnutls_certificate_set_x509_key_mem2
-+	gnutls_certificate_set_x509_key_file2
-+	gnutls_alpn_get_selected_protocol
-+	gnutls_alpn_set_protocols
-+	gnutls_session_set_id
-+	gnutls_certificate_set_trust_list
-+	gnutls_certificate_get_trust_list
-+	gnutls_cipher_get_tag_size
-+	gnutls_record_overhead_size
-+	gnutls_handshake_set_hook_function
-+	gnutls_handshake_description_get_name
-+	gnutls_digest_list
-+	gnutls_digest_get_id
-+	gnutls_digest_get_name
-+	gnutls_priority_mac_list
-+	gnutls_priority_cipher_list
-+	gnutls_priority_kx_list
-+	gnutls_record_set_timeout
-+	gnutls_est_record_overhead_size
-+	gnutls_pubkey_set_key_usage
-+	gnutls_x509_privkey_import_rsa_raw2
-+	gnutls_pubkey_import_ecc_x962
-+	gnutls_rnd_refresh
-+	gnutls_mac_get_nonce_size
-+	gnutls_x509_crl_get_raw_issuer_dn
-+	gnutls_certificate_get_crt_raw
-+	gnutls_privkey_generate
-+	gnutls_privkey_export_x509
-+	gnutls_privkey_export_openpgp
-+	gnutls_fips140_mode_enabled
-+	gnutls_record_check_corked
-+	gnutls_sec_param_to_symmetric_bits
-+	gnutls_privkey_export_ecc_raw
-+	gnutls_privkey_export_dsa_raw
-+	gnutls_privkey_export_rsa_raw
-+	gnutls_privkey_import_rsa_raw
-+	gnutls_privkey_import_dsa_raw
-+	gnutls_privkey_import_ecc_raw
-+	gnutls_pubkey_export_ecc_x962
-+	gnutls_pubkey_export_ecc_raw
-+	gnutls_pubkey_export_dsa_raw
-+	gnutls_pubkey_export_rsa_raw
-+	gnutls_privkey_verify_params
-+	gnutls_pubkey_verify_params
-+	gnutls_db_get_default_cache_expiration
-+	gnutls_x509_name_constraints_init
-+	gnutls_x509_name_constraints_deinit
-+	gnutls_x509_crt_get_name_constraints
-+	gnutls_x509_name_constraints_add_permitted
-+	gnutls_x509_name_constraints_add_excluded
-+	gnutls_x509_crt_set_name_constraints
-+	gnutls_x509_name_constraints_get_permitted
-+	gnutls_x509_name_constraints_get_excluded
-+	gnutls_x509_name_constraints_check
-+	gnutls_x509_name_constraints_check_crt
-+	gnutls_x509_cidr_to_rfc5280
-+	gnutls_srp_set_server_fake_salt_seed
-+	gnutls_x509_crt_get_extension_data2
-+	gnutls_x509_crq_get_extension_data2
-+	gnutls_x509_crl_get_extension_data2
-+	gnutls_subject_alt_names_init
-+	gnutls_subject_alt_names_deinit
-+	gnutls_subject_alt_names_get
-+	gnutls_subject_alt_names_set
-+	gnutls_x509_ext_import_subject_alt_names
-+	gnutls_x509_ext_export_subject_alt_names
-+	gnutls_x509_crl_dist_points_init
-+	gnutls_x509_crl_dist_points_deinit
-+	gnutls_x509_crl_dist_points_get
-+	gnutls_x509_crl_dist_points_set
-+	gnutls_x509_ext_import_crl_dist_points
-+	gnutls_x509_ext_export_crl_dist_points
-+	gnutls_x509_ext_import_name_constraints
-+	gnutls_x509_ext_export_name_constraints
-+	gnutls_x509_aia_init
-+	gnutls_x509_aia_deinit
-+	gnutls_x509_aia_get
-+	gnutls_x509_aia_set
-+	gnutls_x509_ext_import_aia
-+	gnutls_x509_ext_export_aia
-+	gnutls_x509_ext_import_subject_key_id
-+	gnutls_x509_ext_export_subject_key_id
-+	gnutls_x509_ext_export_authority_key_id
-+	gnutls_x509_ext_import_authority_key_id
-+	gnutls_x509_aki_init
-+	gnutls_x509_aki_get_id
-+	gnutls_x509_aki_get_cert_issuer
-+	gnutls_x509_aki_set_id
-+	gnutls_x509_aki_set_cert_issuer
-+	gnutls_x509_aki_deinit
-+	gnutls_x509_ext_import_private_key_usage_period
-+	gnutls_x509_ext_export_private_key_usage_period
-+	gnutls_x509_ext_import_basic_constraints
-+	gnutls_x509_ext_export_basic_constraints
-+	gnutls_x509_ext_import_key_usage
-+	gnutls_x509_ext_export_key_usage
-+	gnutls_x509_ext_import_proxy
-+	gnutls_x509_ext_export_proxy
-+	gnutls_x509_policies_init
-+	gnutls_x509_policies_deinit
-+	gnutls_x509_policies_get
-+	gnutls_x509_policies_set
-+	gnutls_x509_ext_import_policies
-+	gnutls_x509_ext_export_policies
-+	gnutls_x509_crt_set_issuer_alt_name
-+	gnutls_x509_key_purpose_init
-+	gnutls_x509_key_purpose_deinit
-+	gnutls_x509_key_purpose_set
-+	gnutls_x509_key_purpose_get
-+	gnutls_x509_ext_import_key_purposes
-+	gnutls_x509_ext_export_key_purposes
-+	gnutls_x509_crt_check_hostname2
-+	gnutls_openpgp_crt_check_hostname2
-+	gnutls_certificate_verify_peers
-+	gnutls_certificate_get_verify_flags
-+	gnutls_certificate_get_x509_key
-+	gnutls_certificate_get_x509_crt
-+	gnutls_certificate_get_openpgp_key
-+	gnutls_certificate_get_openpgp_crt
-+	gnutls_credentials_get
-+	gnutls_x509_crl_iter_crt_serial
-+	gnutls_x509_crl_iter_deinit
-+	gnutls_packet_deinit
-+	gnutls_record_recv_packet
-+	gnutls_packet_get
-+	gnutls_x509_trust_list_add_trust_dir
-+	gnutls_certificate_set_x509_trust_dir
-+	gnutls_pkcs_schema_get_name
-+	gnutls_pkcs_schema_get_oid
-+	gnutls_pkcs8_info
-+	gnutls_pkcs12_bag_enc_info
-+	gnutls_pkcs12_mac_info
-+	gnutls_pkcs12_generate_mac2
-+	gnutls_x509_trust_list_verify_crt2
-+	gnutls_x509_crt_get_extension_by_oid2
-+	gnutls_x509_crq_get_extension_by_oid2
-+	gnutls_x509_ext_deinit
-+	gnutls_x509_ext_print
-+	gnutls_x509_othername_to_virtual
-+	gnutls_x509_crq_get_signature_algorithm
-+	gnutls_privkey_import_ext3
-+	gnutls_record_discard_queued
-+	gnutls_session_ext_master_secret_status
-+	gnutls_session_etm_status
-+	gnutls_priority_string_list
-+	gnutls_aead_cipher_init
-+	gnutls_aead_cipher_decrypt
-+	gnutls_aead_cipher_encrypt
-+	gnutls_aead_cipher_deinit
-+	gnutls_dh_params_import_raw2
-+	gnutls_memset
-+	gnutls_memcmp
-+	gnutls_pkcs12_bag_set_privkey
-+	gnutls_x509_privkey_set_pin_function
-+	gnutls_ocsp_resp_get_responder_raw_id
-+	gnutls_system_key_iter_deinit
-+	gnutls_system_key_iter_get_info
-+	gnutls_system_key_delete
-+	gnutls_system_key_add_x509
-+	gnutls_register_custom_url
-+	gnutls_pcert_import_x509_list
-+	gnutls_x509_trust_list_get_issuer_by_dn
-+	gnutls_system_recv_timeout
-+	gnutls_record_set_state
-+	gnutls_record_get_state
-+	gnutls_crypto_register_cipher
-+	gnutls_crypto_register_aead_cipher
-+	gnutls_crypto_register_mac
-+	gnutls_crypto_register_digest
-+	gnutls_ext_register
-+	gnutls_buffer_append_data
-+	gnutls_supplemental_register
-+	gnutls_supplemental_send
-+	gnutls_supplemental_recv
-+	gnutls_ext_get_data
-+	gnutls_ext_set_data
-+	gnutls_openpgp_crt_check_email
-+	gnutls_x509_crt_check_email
-+	gnutls_x509_crt_get_pk_ecc_raw
-+	gnutls_x509_dn_get_str
-+	gnutls_x509_trust_list_get_issuer_by_subject_key_id
-+	gnutls_pkcs7_get_crt_raw2
-+	gnutls_pkcs7_signature_info_deinit
-+	gnutls_pkcs7_get_signature_info
-+	gnutls_pkcs7_verify_direct
-+	gnutls_pkcs7_verify
-+	gnutls_pkcs7_get_crl_raw2
-+	gnutls_pkcs7_sign
-+	gnutls_pkcs7_attrs_deinit
-+	gnutls_pkcs7_add_attr
-+	gnutls_pkcs7_get_attr
-+	gnutls_pkcs7_print
-+	gnutls_x509_crt_verify_data2
-+	gnutls_pkcs7_get_signature_count
-+	gnutls_ecc_curve_get_oid
-+	gnutls_digest_get_oid
-+	gnutls_pk_get_oid
-+	gnutls_sign_get_oid
-+	gnutls_ecc_curve_get_id
-+	gnutls_oid_to_digest
-+	gnutls_oid_to_pk
-+	gnutls_oid_to_sign
-+	gnutls_oid_to_ecc_curve
-+	gnutls_prf_rfc5705
-+	gnutls_hex_decode2
-+	gnutls_hex_encode2
-+	gnutls_session_set_verify_function
-+	gnutls_session_set_verify_cert
-+	gnutls_session_set_verify_cert2
-+	gnutls_session_get_verify_cert_status
-+	gnutls_x509_privkey_generate2
-+	gnutls_x509_privkey_get_seed
-+	gnutls_x509_privkey_verify_seed
-+	gnutls_privkey_generate2
-+	gnutls_privkey_get_seed
-+	gnutls_privkey_verify_seed
-+	gnutls_x509_privkey_set_flags
-+	gnutls_privkey_set_flags
-+	gnutls_x509_crt_set_subject_unique_id
-+	gnutls_x509_crt_set_issuer_unique_id
-+	gnutls_certificate_set_flags
-+	gnutls_decode_ber_digest_info
-+	gnutls_encode_ber_digest_info
-+	gnutls_pkcs7_get_embedded_data
-+	gnutls_x509_crq_set_subject_alt_othername
-+	gnutls_x509_crt_set_subject_alt_othername
-+	gnutls_x509_crt_set_issuer_alt_othername
-+	gnutls_dh_params_import_dsa
-+	gnutls_session_get_flags
-+	gnutls_session_get_master_secret
-+	gnutls_x509_crt_get_signature_oid
-+	gnutls_x509_crt_get_pk_oid
-+	gnutls_x509_crq_get_signature_oid
-+	gnutls_x509_crq_get_pk_oid
-+	gnutls_x509_crl_get_signature_oid
-+	gnutls_ecc_curve_get_pk
-+	gnutls_x509_crt_equals
-+	gnutls_x509_crt_equals2
-+	gnutls_x509_ext_import_tlsfeatures
-+	gnutls_x509_ext_export_tlsfeatures
-+	gnutls_x509_tlsfeatures_add
-+	gnutls_x509_tlsfeatures_init
-+	gnutls_x509_tlsfeatures_deinit
-+	gnutls_x509_tlsfeatures_get
-+	gnutls_x509_crt_get_tlsfeatures
-+	gnutls_x509_crt_set_tlsfeatures
-+	gnutls_x509_crq_get_tlsfeatures
-+	gnutls_x509_crq_set_tlsfeatures
-+	gnutls_ext_get_name
-+	gnutls_x509_crt_set_crq_extension_by_oid
-+	gnutls_x509_tlsfeatures_check_crt
-+	gnutls_x509_crq_set_extension_by_oid
-+	gnutls_x509_dn_set_str
-+	gnutls_transport_set_fastopen
-+	gnutls_oid_to_mac
-+	gnutls_certificate_set_ocsp_status_request_function2
-+	gnutls_session_ext_register
-+	gnutls_session_supplemental_register
-+	gnutls_pkcs7_get_embedded_data_oid
-+	gnutls_ffdhe_8192_group_prime
-+	gnutls_ffdhe_8192_group_generator
-+	gnutls_ffdhe_4096_group_prime
-+	gnutls_ffdhe_4096_group_generator
-+	gnutls_ffdhe_3072_group_prime
-+	gnutls_ffdhe_3072_group_generator
-+	gnutls_ffdhe_2048_group_prime
-+	gnutls_ffdhe_2048_group_generator
-+	gnutls_ffdhe_8192_key_bits
-+	gnutls_ffdhe_4096_key_bits
-+	gnutls_ffdhe_2048_key_bits
-+	gnutls_ffdhe_3072_key_bits
-+	gnutls_certificate_set_known_dh_params
-+	gnutls_anon_set_server_known_dh_params
-+	gnutls_psk_set_server_known_dh_params
-+	gnutls_x509_crt_check_key_purpose
-+	gnutls_ocsp_resp_get_responder2
-+	gnutls_x509_crt_get_issuer_dn3
-+	gnutls_x509_crt_get_dn3
-+	gnutls_x509_rdn_get2
-+	gnutls_x509_dn_get_str2
-+	gnutls_x509_crl_get_issuer_dn3
-+	gnutls_x509_crq_get_dn3
-+	gnutls_utf8_password_normalize
-+	gnutls_idna_map
-+	gnutls_idna_reverse_map
-diff --git a/SMP/libgnutls.sln b/SMP/libgnutls.sln
-new file mode 100644
-index 0000000..86b4ce7
---- /dev/null
-+++ b/SMP/libgnutls.sln
-@@ -0,0 +1,57 @@
-+
-+Microsoft Visual Studio Solution File, Format Version 12.00
-+VisualStudioVersion = 12.0.30501.0
-+MinimumVisualStudioVersion = 12.0.30501.0
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgnutls", "libgnutls.vcxproj", "{6F610EE8-7F59-4191-AB88-F63843267C02}"
-+EndProject
-+Global
-+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-+		Debug|x64 = Debug|x64
-+		Debug|x86 = Debug|x86
-+		DebugDLL|x64 = DebugDLL|x64
-+		DebugDLL|x86 = DebugDLL|x86
-+		DebugDLLStaticDeps|x64 = DebugDLLStaticDeps|x64
-+		DebugDLLStaticDeps|x86 = DebugDLLStaticDeps|x86
-+		Release|x64 = Release|x64
-+		Release|x86 = Release|x86
-+		ReleaseDLL|x64 = ReleaseDLL|x64
-+		ReleaseDLL|x86 = ReleaseDLL|x86
-+		ReleaseDLLStaticDeps|x64 = ReleaseDLLStaticDeps|x64
-+		ReleaseDLLStaticDeps|x86 = ReleaseDLLStaticDeps|x86
-+		ReleaseLTO|x64 = ReleaseLTO|x64
-+		ReleaseLTO|x86 = ReleaseLTO|x86
-+	EndGlobalSection
-+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Debug|x64.ActiveCfg = Debug|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Debug|x64.Build.0 = Debug|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Debug|x86.ActiveCfg = Debug|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Debug|x86.Build.0 = Debug|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLL|x64.Build.0 = DebugDLL|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLLStaticDeps|x64.ActiveCfg = DebugDLLStaticDeps|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLLStaticDeps|x64.Build.0 = DebugDLLStaticDeps|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLLStaticDeps|x86.ActiveCfg = DebugDLLStaticDeps|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLLStaticDeps|x86.Build.0 = DebugDLLStaticDeps|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Release|x64.ActiveCfg = Release|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Release|x64.Build.0 = Release|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Release|x86.ActiveCfg = Release|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Release|x86.Build.0 = Release|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLLStaticDeps|x64.ActiveCfg = ReleaseDLLStaticDeps|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLLStaticDeps|x64.Build.0 = ReleaseDLLStaticDeps|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLLStaticDeps|x86.ActiveCfg = ReleaseDLLStaticDeps|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLLStaticDeps|x86.Build.0 = ReleaseDLLStaticDeps|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseLTO|x64.ActiveCfg = ReleaseLTO|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseLTO|x64.Build.0 = ReleaseLTO|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseLTO|x86.ActiveCfg = ReleaseLTO|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseLTO|x86.Build.0 = ReleaseLTO|Win32
-+	EndGlobalSection
-+	GlobalSection(SolutionProperties) = preSolution
-+		HideSolutionNode = FALSE
-+	EndGlobalSection
-+EndGlobal
-diff --git a/SMP/libgnutls.vcxproj b/SMP/libgnutls.vcxproj
-new file mode 100644
-index 0000000..1b385ab
---- /dev/null
-+++ b/SMP/libgnutls.vcxproj
-@@ -0,0 +1,2811 @@
-+<?xml version="1.0" encoding="utf-8"?>
-+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+  <ItemGroup Label="ProjectConfigurations">
-+    <ProjectConfiguration Include="DebugDLLStaticDeps|Win32">
-+      <Configuration>DebugDLLStaticDeps</Configuration>
-+      <Platform>Win32</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="DebugDLLStaticDeps|x64">
-+      <Configuration>DebugDLLStaticDeps</Configuration>
-+      <Platform>x64</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="DebugDLL|Win32">
-+      <Configuration>DebugDLL</Configuration>
-+      <Platform>Win32</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="DebugDLL|x64">
-+      <Configuration>DebugDLL</Configuration>
-+      <Platform>x64</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="Debug|Win32">
-+      <Configuration>Debug</Configuration>
-+      <Platform>Win32</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="Debug|x64">
-+      <Configuration>Debug</Configuration>
-+      <Platform>x64</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="ReleaseDLLStaticDeps|Win32">
-+      <Configuration>ReleaseDLLStaticDeps</Configuration>
-+      <Platform>Win32</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="ReleaseDLLStaticDeps|x64">
-+      <Configuration>ReleaseDLLStaticDeps</Configuration>
-+      <Platform>x64</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="ReleaseDLL|Win32">
-+      <Configuration>ReleaseDLL</Configuration>
-+      <Platform>Win32</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="ReleaseDLL|x64">
-+      <Configuration>ReleaseDLL</Configuration>
-+      <Platform>x64</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="ReleaseLTO|Win32">
-+      <Configuration>ReleaseLTO</Configuration>
-+      <Platform>Win32</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="ReleaseLTO|x64">
-+      <Configuration>ReleaseLTO</Configuration>
-+      <Platform>x64</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="Release|Win32">
-+      <Configuration>Release</Configuration>
-+      <Platform>Win32</Platform>
-+    </ProjectConfiguration>
-+    <ProjectConfiguration Include="Release|x64">
-+      <Configuration>Release</Configuration>
-+      <Platform>x64</Platform>
-+    </ProjectConfiguration>
-+  </ItemGroup>
-+  <ItemGroup>
-+    <ClInclude Include="..\lib\abstract_int.h" />
-+    <ClInclude Include="..\lib\accelerated\accelerated.h" />
-+    <ClInclude Include="..\lib\accelerated\cryptodev.h" />
-+    <ClInclude Include="..\lib\accelerated\x86\aes-gcm-aead.h" />
-+    <ClInclude Include="..\lib\accelerated\x86\aes-padlock.h" />
-+    <ClInclude Include="..\lib\accelerated\x86\aes-x86.h" />
-+    <ClInclude Include="..\lib\accelerated\x86\sha-padlock.h" />
-+    <ClInclude Include="..\lib\accelerated\x86\sha-x86.h" />
-+    <ClInclude Include="..\lib\accelerated\x86\x86-common.h" />
-+    <ClInclude Include="..\lib\algorithms.h" />
-+    <ClInclude Include="..\lib\atfork.h" />
-+    <ClInclude Include="..\lib\auth.h" />
-+    <ClInclude Include="..\lib\auth\anon.h" />
-+    <ClInclude Include="..\lib\auth\cert.h" />
-+    <ClInclude Include="..\lib\auth\dh_common.h" />
-+    <ClInclude Include="..\lib\auth\ecdhe.h" />
-+    <ClInclude Include="..\lib\auth\psk.h" />
-+    <ClInclude Include="..\lib\auth\psk_passwd.h" />
-+    <ClInclude Include="..\lib\auth\rsa_common.h" />
-+    <ClInclude Include="..\lib\auth\srp_kx.h" />
-+    <ClInclude Include="..\lib\auth\srp_passwd.h" />
-+    <ClInclude Include="..\lib\buffers.h" />
-+    <ClInclude Include="..\lib\cipher.h" />
-+    <ClInclude Include="..\lib\cipher_int.h" />
-+    <ClInclude Include="..\lib\compress.h" />
-+    <ClInclude Include="..\lib\constate.h" />
-+    <ClInclude Include="..\lib\crypto-backend.h" />
-+    <ClInclude Include="..\lib\crypto.h" />
-+    <ClInclude Include="..\lib\datum.h" />
-+    <ClInclude Include="..\lib\db.h" />
-+    <ClInclude Include="..\lib\debug.h" />
-+    <ClInclude Include="..\lib\dh.h" />
-+    <ClInclude Include="..\lib\dtls.h" />
-+    <ClInclude Include="..\lib\ecc.h" />
-+    <ClInclude Include="..\lib\errors.h" />
-+    <ClInclude Include="..\lib\extensions.h" />
-+    <ClInclude Include="..\lib\extras\hex.h" />
-+    <ClInclude Include="..\lib\extras\randomart.h" />
-+    <ClInclude Include="..\lib\ext\alpn.h" />
-+    <ClInclude Include="..\lib\ext\cert_type.h" />
-+    <ClInclude Include="..\lib\ext\dumbfw.h" />
-+    <ClInclude Include="..\lib\ext\ecc.h" />
-+    <ClInclude Include="..\lib\ext\etm.h" />
-+    <ClInclude Include="..\lib\ext\ext_master_secret.h" />
-+    <ClInclude Include="..\lib\ext\heartbeat.h" />
-+    <ClInclude Include="..\lib\ext\max_record.h" />
-+    <ClInclude Include="..\lib\ext\safe_renegotiation.h" />
-+    <ClInclude Include="..\lib\ext\server_name.h" />
-+    <ClInclude Include="..\lib\ext\session_ticket.h" />
-+    <ClInclude Include="..\lib\ext\signature.h" />
-+    <ClInclude Include="..\lib\ext\srp.h" />
-+    <ClInclude Include="..\lib\ext\srtp.h" />
-+    <ClInclude Include="..\lib\ext\status_request.h" />
-+    <ClInclude Include="..\lib\file.h" />
-+    <ClInclude Include="..\lib\fips.h" />
-+    <ClInclude Include="..\lib\global.h" />
-+    <ClInclude Include="..\lib\gnutls_int.h" />
-+    <ClInclude Include="..\lib\handshake.h" />
-+    <ClInclude Include="..\lib\hash_int.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\abstract.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\compat.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\crypto.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\dtls.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\ocsp.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\openpgp.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\pkcs11.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\pkcs12.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\pkcs7.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\self-test.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\socket.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\system-keys.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\tpm.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\urls.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\x509-ext.h" />
-+    <ClInclude Include="..\lib\includes\gnutls\x509.h" />
-+    <ClInclude Include="..\lib\kx.h" />
-+    <ClInclude Include="..\lib\locks.h" />
-+    <ClInclude Include="..\lib\mbuffers.h" />
-+    <ClInclude Include="..\lib\mem.h" />
-+    <ClInclude Include="..\lib\minitasn1\element.h" />
-+    <ClInclude Include="..\lib\minitasn1\gstr.h" />
-+    <ClInclude Include="..\lib\minitasn1\int.h" />
-+    <ClInclude Include="..\lib\minitasn1\libtasn1.h" />
-+    <ClInclude Include="..\lib\minitasn1\parser_aux.h" />
-+    <ClInclude Include="..\lib\minitasn1\structure.h" />
-+    <ClInclude Include="..\lib\mpi.h" />
-+    <ClInclude Include="..\lib\nettle\gnettle.h" />
-+    <ClInclude Include="..\lib\nettle\int\dsa-fips.h" />
-+    <ClInclude Include="..\lib\nettle\int\rsa-fips.h" />
-+    <ClInclude Include="..\lib\nettle\rnd-common.h" />
-+    <ClInclude Include="..\lib\num.h" />
-+    <ClInclude Include="..\lib\opencdk\context.h" />
-+    <ClInclude Include="..\lib\opencdk\filters.h" />
-+    <ClInclude Include="..\lib\opencdk\keydb.h" />
-+    <ClInclude Include="..\lib\opencdk\main.h" />
-+    <ClInclude Include="..\lib\opencdk\opencdk.h" />
-+    <ClInclude Include="..\lib\opencdk\packet.h" />
-+    <ClInclude Include="..\lib\opencdk\stream.h" />
-+    <ClInclude Include="..\lib\opencdk\types.h" />
-+    <ClInclude Include="..\lib\openpgp\openpgp.h" />
-+    <ClInclude Include="..\lib\openpgp\openpgp_int.h" />
-+    <ClInclude Include="..\lib\pin.h" />
-+    <ClInclude Include="..\lib\pk.h" />
-+    <ClInclude Include="..\lib\random.h" />
-+    <ClInclude Include="..\lib\record.h" />
-+    <ClInclude Include="..\lib\session_pack.h" />
-+    <ClInclude Include="..\lib\srp.h" />
-+    <ClInclude Include="..\lib\sslv2_compat.h" />
-+    <ClInclude Include="..\lib\state.h" />
-+    <ClInclude Include="..\lib\str.h" />
-+    <ClInclude Include="..\lib\str_array.h" />
-+    <ClInclude Include="..\lib\supplemental.h" />
-+    <ClInclude Include="..\lib\system-keys.h" />
-+    <ClInclude Include="..\lib\system.h" />
-+    <ClInclude Include="..\lib\tls-sig.h" />
-+    <ClInclude Include="..\lib\unistring\unicase\special-casing-table.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\bitmap.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_C.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Cc.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Cf.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Cn.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Co.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Cs.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_L.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_LC.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Ll.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Lm.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Lo.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Lt.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Lu.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_M.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Mc.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Me.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Mn.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_N.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Nd.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Nl.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_No.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_of.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_P.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Pc.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Pd.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Pe.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Pf.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Pi.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Po.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Ps.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_S.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Sc.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Sk.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Sm.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_So.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Z.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Zl.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Zp.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Zs.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\combiningclass.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\pr_default_ignorable_code_point.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\pr_join_control.h" />
-+    <ClInclude Include="..\lib\unistring\unictype\pr_not_a_character.h" />
-+    <ClInclude Include="..\lib\unistring\uninorm\composition-table.h" />
-+    <ClInclude Include="..\lib\unistring\uninorm\decompose-internal.h" />
-+    <ClInclude Include="..\lib\unistring\uninorm\decomposition-table.h" />
-+    <ClInclude Include="..\lib\unistring\uninorm\decomposition-table1.h" />
-+    <ClInclude Include="..\lib\unistring\uninorm\decomposition-table2.h" />
-+    <ClInclude Include="..\lib\unistring\uninorm\normalize-internal.h" />
-+    <ClInclude Include="..\lib\unistring\uninorm\u-normalize-internal.h" />
-+    <ClInclude Include="..\lib\unistring\unistr\u-cpy.h" />
-+    <ClInclude Include="..\lib\urls.h" />
-+    <ClInclude Include="..\lib\vasprintf.h" />
-+    <ClInclude Include="..\lib\x509.h" />
-+    <ClInclude Include="..\lib\x509\attributes.h" />
-+    <ClInclude Include="..\lib\x509\common.h" />
-+    <ClInclude Include="..\lib\x509\ip-in-cidr.h" />
-+    <ClInclude Include="..\lib\x509\ip.h" />
-+    <ClInclude Include="..\lib\x509\krb5.h" />
-+    <ClInclude Include="..\lib\x509\pkcs7_int.h" />
-+    <ClInclude Include="..\lib\x509\prov-seed.h" />
-+    <ClInclude Include="..\lib\x509\verify-high.h" />
-+    <ClInclude Include="..\lib\x509\virt-san.h" />
-+    <ClInclude Include="..\lib\x509\x509_ext_int.h" />
-+    <ClInclude Include="..\lib\x509\x509_int.h" />
-+    <ClInclude Include="..\lib\x509_b64.h" />
-+    <ClInclude Include="config.h" />
-+    <ClInclude Include="lib\priority_options.h" />
-+    <ClInclude Include="version.h" />
-+  </ItemGroup>
-+  <ItemGroup>
-+    <ClCompile Include="..\gl\c-ctype.c" />
-+    <ClCompile Include="..\gl\hash-pjw-bare.c" />
-+    <ClCompile Include="..\gl\msvc-inval.c" />
-+    <ClCompile Include="..\gl\msvc-nothrow.c" />
-+    <ClCompile Include="..\gl\read-file.c" />
-+    <ClCompile Include="..\gl\secure_getenv.c" />
-+    <ClCompile Include="..\lib\accelerated\accelerated.c" />
-+    <ClCompile Include="..\lib\accelerated\cryptodev-gcm.c" />
-+    <ClCompile Include="..\lib\accelerated\cryptodev.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\aes-cbc-x86-aesni.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\aes-cbc-x86-ssse3.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\aes-ccm-x86-aesni.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\aes-gcm-padlock.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\aes-gcm-x86-aesni.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\aes-gcm-x86-pclmul-avx.c">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-gcm-x86-pclmul.c">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-gcm-x86-ssse3.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\aes-padlock.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\hmac-padlock.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\hmac-x86-ssse3.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\sha-padlock.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\sha-x86-ssse3.c" />
-+    <ClCompile Include="..\lib\accelerated\x86\x86-common.c" />
-+    <ClCompile Include="..\lib\alert.c" />
-+    <ClCompile Include="..\lib\algorithms\cert_types.c" />
-+    <ClCompile Include="..\lib\algorithms\ciphers.c" />
-+    <ClCompile Include="..\lib\algorithms\ciphersuites.c" />
-+    <ClCompile Include="..\lib\algorithms\ecc.c" />
-+    <ClCompile Include="..\lib\algorithms\groups.c" />
-+    <ClCompile Include="..\lib\algorithms\kx.c" />
-+    <ClCompile Include="..\lib\algorithms\mac.c" />
-+    <ClCompile Include="..\lib\algorithms\protocols.c" />
-+    <ClCompile Include="..\lib\algorithms\publickey.c" />
-+    <ClCompile Include="..\lib\algorithms\secparams.c" />
-+    <ClCompile Include="..\lib\algorithms\sign.c" />
-+    <ClCompile Include="..\lib\anon_cred.c" />
-+    <ClCompile Include="..\lib\atfork.c" />
-+    <ClCompile Include="..\lib\auth.c" />
-+    <ClCompile Include="..\lib\auth\anon.c" />
-+    <ClCompile Include="..\lib\auth\anon_ecdh.c" />
-+    <ClCompile Include="..\lib\auth\cert.c">
-+      <ObjectFileName>$(IntDir)\auth_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\dhe.c" />
-+    <ClCompile Include="..\lib\auth\dhe_psk.c" />
-+    <ClCompile Include="..\lib\auth\dh_common.c" />
-+    <ClCompile Include="..\lib\auth\ecdhe.c" />
-+    <ClCompile Include="..\lib\auth\psk.c">
-+      <ObjectFileName>$(IntDir)\auth_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\psk_passwd.c" />
-+    <ClCompile Include="..\lib\auth\rsa.c" />
-+    <ClCompile Include="..\lib\auth\rsa_psk.c" />
-+    <ClCompile Include="..\lib\auth\srp_kx.c" />
-+    <ClCompile Include="..\lib\auth\srp_passwd.c" />
-+    <ClCompile Include="..\lib\auth\srp_rsa.c" />
-+    <ClCompile Include="..\lib\auth\srp_sb64.c" />
-+    <ClCompile Include="..\lib\auto-verify.c" />
-+    <ClCompile Include="..\lib\buffers.c" />
-+    <ClCompile Include="..\lib\cert-cred-rawpk.c" />
-+    <ClCompile Include="..\lib\cert-cred-x509.c" />
-+    <ClCompile Include="..\lib\cert-cred.c" />
-+    <ClCompile Include="..\lib\cert-session.c" />
-+    <ClCompile Include="..\lib\cipher-cbc.c" />
-+    <ClCompile Include="..\lib\cipher.c" />
-+    <ClCompile Include="..\lib\cipher_int.c" />
-+    <ClCompile Include="..\lib\compress.c" />
-+    <ClCompile Include="..\lib\constate.c" />
-+    <ClCompile Include="..\lib\crypto-api.c" />
-+    <ClCompile Include="..\lib\crypto-backend.c" />
-+    <ClCompile Include="..\lib\crypto-selftests-pk.c" />
-+    <ClCompile Include="..\lib\crypto-selftests.c" />
-+    <ClCompile Include="..\lib\datum.c" />
-+    <ClCompile Include="..\lib\db.c" />
-+    <ClCompile Include="..\lib\debug.c" />
-+    <ClCompile Include="..\lib\dh-primes.c" />
-+    <ClCompile Include="..\lib\dh-session.c" />
-+    <ClCompile Include="..\lib\dh.c" />
-+    <ClCompile Include="..\lib\dtls-sw.c" />
-+    <ClCompile Include="..\lib\dtls.c" />
-+    <ClCompile Include="..\lib\ecc.c" />
-+    <ClCompile Include="..\lib\errors.c" />
-+    <ClCompile Include="..\lib\extras\hex.c" />
-+    <ClCompile Include="..\lib\extras\randomart.c">
-+      <ObjectFileName>$(IntDir)\extras_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\extv.c" />
-+    <ClCompile Include="..\lib\ext\alpn.c" />
-+    <ClCompile Include="..\lib\ext\client_cert_type.c" />
-+    <ClCompile Include="..\lib\ext\cookie.c" />
-+    <ClCompile Include="..\lib\ext\dumbfw.c" />
-+    <ClCompile Include="..\lib\ext\early_data.c" />
-+    <ClCompile Include="..\lib\ext\ec_point_formats.c" />
-+    <ClCompile Include="..\lib\ext\etm.c" />
-+    <ClCompile Include="..\lib\ext\ext_master_secret.c" />
-+    <ClCompile Include="..\lib\ext\heartbeat.c" />
-+    <ClCompile Include="..\lib\ext\key_share.c" />
-+    <ClCompile Include="..\lib\ext\max_record.c" />
-+    <ClCompile Include="..\lib\ext\post_handshake.c" />
-+    <ClCompile Include="..\lib\ext\pre_shared_key.c" />
-+    <ClCompile Include="..\lib\ext\psk_ke_modes.c" />
-+    <ClCompile Include="..\lib\ext\record_size_limit.c" />
-+    <ClCompile Include="..\lib\ext\safe_renegotiation.c" />
-+    <ClCompile Include="..\lib\ext\server_cert_type.c" />
-+    <ClCompile Include="..\lib\ext\server_name.c" />
-+    <ClCompile Include="..\lib\ext\session_ticket.c" />
-+    <ClCompile Include="..\lib\ext\signature.c" />
-+    <ClCompile Include="..\lib\ext\srp.c" />
-+    <ClCompile Include="..\lib\ext\srtp.c" />
-+    <ClCompile Include="..\lib\ext\status_request.c" />
-+    <ClCompile Include="..\lib\ext\supported_groups.c" />
-+    <ClCompile Include="..\lib\ext\supported_versions.c" />
-+    <ClCompile Include="..\lib\file.c" />
-+    <ClCompile Include="..\lib\fingerprint.c" />
-+    <ClCompile Include="..\lib\fips.c" />
-+    <ClCompile Include="..\lib\global.c" />
-+    <ClCompile Include="..\lib\gnutls_asn1_tab.c" />
-+    <ClCompile Include="..\lib\handshake-checks.c" />
-+    <ClCompile Include="..\lib\handshake-tls13.c" />
-+    <ClCompile Include="..\lib\handshake.c" />
-+    <ClCompile Include="..\lib\hash_int.c" />
-+    <ClCompile Include="..\lib\hello_ext.c" />
-+    <ClCompile Include="..\lib\hello_ext_lib.c" />
-+    <ClCompile Include="..\lib\kx.c" />
-+    <ClCompile Include="..\lib\locks.c" />
-+    <ClCompile Include="..\lib\mbuffers.c" />
-+    <ClCompile Include="..\lib\mem.c" />
-+    <ClCompile Include="..\lib\minitasn1\coding.c" />
-+    <ClCompile Include="..\lib\minitasn1\decoding.c" />
-+    <ClCompile Include="..\lib\minitasn1\element.c" />
-+    <ClCompile Include="..\lib\minitasn1\errors.c">
-+      <ObjectFileName>$(IntDir)\minitasn1_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\minitasn1\gstr.c" />
-+    <ClCompile Include="..\lib\minitasn1\parser_aux.c" />
-+    <ClCompile Include="..\lib\minitasn1\structure.c" />
-+    <ClCompile Include="..\lib\minitasn1\version.c" />
-+    <ClCompile Include="..\lib\mpi.c" />
-+    <ClCompile Include="..\lib\nettle\backport\cfb8.c" />
-+    <ClCompile Include="..\lib\nettle\backport\cmac.c" />
-+    <ClCompile Include="..\lib\nettle\cipher.c">
-+      <ObjectFileName>$(IntDir)\nettle_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\bignum-le.c" />
-+    <ClCompile Include="..\lib\nettle\gost\ecc-gost-hash.c" />
-+    <ClCompile Include="..\lib\nettle\gost\ecc-gost256cpa.c" />
-+    <ClCompile Include="..\lib\nettle\gost\ecc-gost512a.c" />
-+    <ClCompile Include="..\lib\nettle\gost\ecc-gostdsa-sign.c" />
-+    <ClCompile Include="..\lib\nettle\gost\ecc-gostdsa-verify.c" />
-+    <ClCompile Include="..\lib\nettle\gost\gost28147.c" />
-+    <ClCompile Include="..\lib\nettle\gost\gostdsa-mask.c" />
-+    <ClCompile Include="..\lib\nettle\gost\gostdsa-sign.c" />
-+    <ClCompile Include="..\lib\nettle\gost\gostdsa-verify.c" />
-+    <ClCompile Include="..\lib\nettle\gost\gosthash94-meta.c" />
-+    <ClCompile Include="..\lib\nettle\gost\gosthash94.c" />
-+    <ClCompile Include="..\lib\nettle\gost\hmac-gosthash94.c" />
-+    <ClCompile Include="..\lib\nettle\gost\hmac-streebog.c" />
-+    <ClCompile Include="..\lib\nettle\gost\pbkdf2-hmac-gosthash94.c" />
-+    <ClCompile Include="..\lib\nettle\gost\pbkdf2-hmac-streebog.c" />
-+    <ClCompile Include="..\lib\nettle\gost\streebog-meta.c" />
-+    <ClCompile Include="..\lib\nettle\gost\streebog.c">
-+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CompileAsC</CompileAs>
-+      <CompileAs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CompileAsC</CompileAs>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\init.c" />
-+    <ClCompile Include="..\lib\nettle\int\drbg-aes-self-test.c" />
-+    <ClCompile Include="..\lib\nettle\int\drbg-aes.c" />
-+    <ClCompile Include="..\lib\nettle\int\dsa-keygen-fips186.c" />
-+    <ClCompile Include="..\lib\nettle\int\dsa-validate.c" />
-+    <ClCompile Include="..\lib\nettle\int\provable-prime.c" />
-+    <ClCompile Include="..\lib\nettle\int\rsa-keygen-fips186.c" />
-+    <ClCompile Include="..\lib\nettle\int\tls1-prf.c" />
-+    <ClCompile Include="..\lib\nettle\mac.c">
-+      <ObjectFileName>$(IntDir)\net_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\mpi.c">
-+      <ObjectFileName>$(IntDir)\nettle_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\pk.c">
-+      <ObjectFileName>$(IntDir)\nettle_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\prf.c" />
-+    <ClCompile Include="..\lib\nettle\rnd.c" />
-+    <ClCompile Include="..\lib\nettle\sysrng-windows.c" />
-+    <ClCompile Include="..\lib\num.c" />
-+    <ClCompile Include="..\lib\ocsp-api.c" />
-+    <ClCompile Include="..\lib\openpgp_compat.c" />
-+    <ClCompile Include="..\lib\pcert.c" />
-+    <ClCompile Include="..\lib\pin.c" />
-+    <ClCompile Include="..\lib\pk.c" />
-+    <ClCompile Include="..\lib\pkcs11.c">
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11x.c">
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11_int.c">
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11_privkey.c">
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11_secret.c">
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11_write.c">
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|x64'">true</ExcludedFromBuild>
-+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkix_asn1_tab.c" />
-+    <ClCompile Include="..\lib\prf.c" />
-+    <ClCompile Include="..\lib\priority.c" />
-+    <ClCompile Include="..\lib\privkey.c" />
-+    <ClCompile Include="..\lib\privkey_raw.c" />
-+    <ClCompile Include="..\lib\psk.c" />
-+    <ClCompile Include="..\lib\pubkey.c" />
-+    <ClCompile Include="..\lib\random.c" />
-+    <ClCompile Include="..\lib\randomart.c" />
-+    <ClCompile Include="..\lib\range.c" />
-+    <ClCompile Include="..\lib\record.c" />
-+    <ClCompile Include="..\lib\safe-memfuncs.c" />
-+    <ClCompile Include="..\lib\secrets.c" />
-+    <ClCompile Include="..\lib\session.c" />
-+    <ClCompile Include="..\lib\session_pack.c" />
-+    <ClCompile Include="..\lib\srp.c" />
-+    <ClCompile Include="..\lib\sslv2_compat.c" />
-+    <ClCompile Include="..\lib\state.c" />
-+    <ClCompile Include="..\lib\stek.c" />
-+    <ClCompile Include="..\lib\str-iconv.c" />
-+    <ClCompile Include="..\lib\str-idna.c" />
-+    <ClCompile Include="..\lib\str-unicode.c" />
-+    <ClCompile Include="..\lib\str.c" />
-+    <ClCompile Include="..\lib\supplemental.c" />
-+    <ClCompile Include="..\lib\system.c" />
-+    <ClCompile Include="..\lib\system\certs.c" />
-+    <ClCompile Include="..\lib\system\fastopen.c" />
-+    <ClCompile Include="..\lib\system\keys-win.c" />
-+    <ClCompile Include="..\lib\system\sockets.c" />
-+    <ClCompile Include="..\lib\system\threads.c" />
-+    <ClCompile Include="..\lib\system_override.c" />
-+    <ClCompile Include="..\lib\tls-sig.c" />
-+    <ClCompile Include="..\lib\tls13-sig.c" />
-+    <ClCompile Include="..\lib\tls13\anti_replay.c" />
-+    <ClCompile Include="..\lib\tls13\certificate.c" />
-+    <ClCompile Include="..\lib\tls13\certificate_request.c" />
-+    <ClCompile Include="..\lib\tls13\certificate_verify.c" />
-+    <ClCompile Include="..\lib\tls13\early_data.c" />
-+    <ClCompile Include="..\lib\tls13\encrypted_extensions.c" />
-+    <ClCompile Include="..\lib\tls13\finished.c" />
-+    <ClCompile Include="..\lib\tls13\hello_retry.c" />
-+    <ClCompile Include="..\lib\tls13\key_update.c" />
-+    <ClCompile Include="..\lib\tls13\post_handshake.c" />
-+    <ClCompile Include="..\lib\tls13\psk_ext_parser.c" />
-+    <ClCompile Include="..\lib\tls13\session_ticket.c" />
-+    <ClCompile Include="..\lib\tpm.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_and.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_and_not.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_byname.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_C.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Cc.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Cf.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Cn.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Co.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Cs.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_L.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_LC.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Ll.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Lm.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Lo.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_longname.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Lt.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Lu.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_M.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Mc.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Me.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Mn.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_N.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_name.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Nd.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Nl.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_No.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_none.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_of.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_or.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_P.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Pc.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Pd.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Pe.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Pf.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Pi.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Po.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Ps.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_S.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Sc.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Sk.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Sm.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_So.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_test.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Z.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Zl.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Zp.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Zs.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\combiningclass.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\pr_default_ignorable_code_point.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\pr_join_control.c" />
-+    <ClCompile Include="..\lib\unistring\unictype\pr_not_a_character.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\canonical-decomposition.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\compat-decomposition.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\composition.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\decompose-internal.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\decomposition-table.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\decomposition.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\nfc.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\nfd.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\nfkc.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\nfkd.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\u16-normalize.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\u32-normalize.c" />
-+    <ClCompile Include="..\lib\unistring\uninorm\u8-normalize.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u16-cpy.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u16-mbtouc-unsafe-aux.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u16-mbtouc-unsafe.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u16-mbtoucr.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u16-to-u8.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u16-uctomb-aux.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u16-uctomb.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u32-cpy.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u32-mbtouc-unsafe.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u32-to-u8.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u32-uctomb.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u8-check.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u8-cpy.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u8-mbtouc-unsafe-aux.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u8-mbtouc-unsafe.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u8-mbtoucr.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u8-to-u16.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u8-to-u32.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u8-uctomb-aux.c" />
-+    <ClCompile Include="..\lib\unistring\unistr\u8-uctomb.c" />
-+    <ClCompile Include="..\lib\urls.c" />
-+    <ClCompile Include="..\lib\verify-tofu.c" />
-+    <ClCompile Include="..\lib\x509\attributes.c" />
-+    <ClCompile Include="..\lib\x509\common.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\crl.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\crl_write.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\crq.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\dn.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\email-verify.c" />
-+    <ClCompile Include="..\lib\x509\extensions.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\hostname-verify.c" />
-+    <ClCompile Include="..\lib\x509\ip.c" />
-+    <ClCompile Include="..\lib\x509\key_decode.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\key_encode.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\krb5.c" />
-+    <ClCompile Include="..\lib\x509\mpi.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\name_constraints.c" />
-+    <ClCompile Include="..\lib\x509\ocsp.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\ocsp_output.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\output.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\pkcs12.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\pkcs12_bag.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\pkcs12_encr.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\pkcs7-attrs.c" />
-+    <ClCompile Include="..\lib\x509\pkcs7-crypt.c" />
-+    <ClCompile Include="..\lib\x509\pkcs7-output.c" />
-+    <ClCompile Include="..\lib\x509\pkcs7.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\privkey.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\privkey_openssl.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\privkey_pkcs8.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\privkey_pkcs8_pbes1.c" />
-+    <ClCompile Include="..\lib\x509\prov-seed.c" />
-+    <ClCompile Include="..\lib\x509\sign.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\time.c" />
-+    <ClCompile Include="..\lib\x509\tls_features.c" />
-+    <ClCompile Include="..\lib\x509\verify-high.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\verify-high2.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\verify.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\virt-san.c" />
-+    <ClCompile Include="..\lib\x509\x509.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\x509_dn.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\x509_ext.c" />
-+    <ClCompile Include="..\lib\x509\x509_write.c">
-+      <ObjectFileName>$(IntDir)\x509_%(Filename).obj</ObjectFileName>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509_b64.c" />
-+  </ItemGroup>
-+  <ItemGroup>
-+    <None Include="libgnutls.def" />
-+  </ItemGroup>
-+  <ItemGroup>
-+    <YASM Include="lib\accelerated\x86\coff\aes-ssse3-x86.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\aes-ssse3-x86_64.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\aesni-gcm-x86_64.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\aesni-x86.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\aesni-x86_64.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\cpuid-x86.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\cpuid-x86_64.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\e_padlock-x86.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\e_padlock-x86_64.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\ghash-x86.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\ghash-x86_64.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\sha1-ssse3-x86.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\sha1-ssse3-x86_64.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\sha256-avx-x86_64.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\sha256-ssse3-x86.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\sha256-ssse3-x86_64.asm">
-+      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
-+    </YASM>
-+  </ItemGroup>
-+  <PropertyGroup Label="Globals">
-+    <ProjectGuid>{6F610EE8-7F59-4191-AB88-F63843267C02}</ProjectGuid>
-+    <RootNamespace>libgnutls</RootNamespace>
-+    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-+  </PropertyGroup>
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-+    <ConfigurationType>StaticLibrary</ConfigurationType>
-+    <UseDebugLibraries>true</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-+    <ConfigurationType>StaticLibrary</ConfigurationType>
-+    <UseDebugLibraries>true</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'" Label="Configuration">
-+    <ConfigurationType>DynamicLibrary</ConfigurationType>
-+    <UseDebugLibraries>true</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|Win32'" Label="Configuration">
-+    <ConfigurationType>DynamicLibrary</ConfigurationType>
-+    <UseDebugLibraries>true</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'" Label="Configuration">
-+    <ConfigurationType>DynamicLibrary</ConfigurationType>
-+    <UseDebugLibraries>true</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|x64'" Label="Configuration">
-+    <ConfigurationType>DynamicLibrary</ConfigurationType>
-+    <UseDebugLibraries>true</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-+    <ConfigurationType>StaticLibrary</ConfigurationType>
-+    <UseDebugLibraries>false</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|Win32'" Label="Configuration">
-+    <ConfigurationType>StaticLibrary</ConfigurationType>
-+    <UseDebugLibraries>false</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+    <WholeProgramOptimization>true</WholeProgramOptimization>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-+    <ConfigurationType>StaticLibrary</ConfigurationType>
-+    <UseDebugLibraries>false</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|x64'" Label="Configuration">
-+    <ConfigurationType>StaticLibrary</ConfigurationType>
-+    <UseDebugLibraries>false</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+    <WholeProgramOptimization>true</WholeProgramOptimization>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="Configuration">
-+    <ConfigurationType>DynamicLibrary</ConfigurationType>
-+    <UseDebugLibraries>false</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|Win32'" Label="Configuration">
-+    <ConfigurationType>DynamicLibrary</ConfigurationType>
-+    <UseDebugLibraries>false</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="Configuration">
-+    <ConfigurationType>DynamicLibrary</ConfigurationType>
-+    <UseDebugLibraries>false</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|x64'" Label="Configuration">
-+    <ConfigurationType>DynamicLibrary</ConfigurationType>
-+    <UseDebugLibraries>false</UseDebugLibraries>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
-+    <PlatformToolset Condition="'$(VisualStudioVersion)' == '12.0'">v120</PlatformToolset>
-+    <CharacterSet>MultiByte</CharacterSet>
-+  </PropertyGroup>
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-+  <ImportGroup Label="ExtensionSettings">
-+    <Import Project="$(VCTargetsPath)\BuildCustomizations\yasm.props" />
-+  </ImportGroup>
-+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|Win32'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|x64'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|Win32'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|x64'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|Win32'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|x64'" Label="PropertySheets">
-+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-+  </ImportGroup>
-+  <PropertyGroup Label="UserMacros" />
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>libgnutlsd</TargetName>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>libgnutlsd</TargetName>
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>gnutlsd</TargetName>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|Win32'">
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>gnutlsd</TargetName>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>gnutlsd</TargetName>
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|x64'">
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>gnutlsd</TargetName>
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>libgnutls</TargetName>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|Win32'">
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>libgnutls</TargetName>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>libgnutls</TargetName>
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|x64'">
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>libgnutls</TargetName>
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>gnutls</TargetName>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|Win32'">
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>gnutls</TargetName>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>gnutls</TargetName>
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|x64'">
-+    <IntDir>$(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\</IntDir>
-+    <TargetName>gnutls</TargetName>
-+    <OutDir>$(ProjectDir)..\..\..\msvc\</OutDir>
-+    <CustomBuildAfterTargets>Clean</CustomBuildAfterTargets>
-+  </PropertyGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>Disabled</Optimization>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86;ASM_X86_32;_WIN32_WINNT=0x0502;_DEBUG;DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\backport;..\lib\nettle\gost;..\lib\nettle\int;..\lib\tls13;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4133;4142;4013;4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <ProgramDataBaseFileName>$(OutDir)\lib\x86\$(TargetName).pdb</ProgramDataBaseFileName>
-+      <MinimalRebuild>false</MinimalRebuild>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+    </Link>
-+    <Lib>
-+      <OutputFile>$(OutDir)\lib\x86\$(TargetName)$(TargetExt)</OutputFile>
-+      <TargetMachine>MachineX86</TargetMachine>
-+      <SubSystem>Windows</SubSystem>
-+      <AdditionalDependencies>Crypt32.lib;Ws2_32.lib;libzlibd.lib;libhogweedd.lib;libgmpd.lib;libnettled.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x86\;$(ProjectDir)\..\..\prebuilt\lib\x86\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+    </Lib>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>Disabled</Optimization>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86_64;_WIN32_WINNT=0x0A00;_DEBUG;DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\backport;..\lib\nettle\gost;..\lib\nettle\int;..\lib\tls13;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4133;4142;4013;4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <ProgramDataBaseFileName>$(OutDir)\lib\x64\$(TargetName).pdb</ProgramDataBaseFileName>
-+      <MinimalRebuild>false</MinimalRebuild>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+    </Link>
-+    <Lib>
-+      <OutputFile>$(OutDir)\lib\x64\$(TargetName)$(TargetExt)</OutputFile>
-+      <TargetMachine>MachineX64</TargetMachine>
-+      <SubSystem>Windows</SubSystem>
-+      <AdditionalDependencies>Crypt32.lib;bcrypt.lib;Ws2_32.lib;libzlibd.lib;libhogweedd.lib;libgmpd.lib;libnettled.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x64\;$(ProjectDir)\..\..\prebuilt\lib\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+    </Lib>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|Win32'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>Disabled</Optimization>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86;ASM_X86_32;_WIN32_WINNT=0x0502;_DEBUG;DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <BufferSecurityCheck>true</BufferSecurityCheck>
-+      <DisableSpecificWarnings>4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-+      <MinimalRebuild>false</MinimalRebuild>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <OutputFile>$(OutDir)\bin\x86\$(TargetName)$(TargetExt)</OutputFile>
-+      <ProgramDatabaseFile>$(OutDir)\lib\x86\$(TargetName).pdb</ProgramDatabaseFile>
-+      <SubSystem>Windows</SubSystem>
-+      <ImportLibrary>$(OutDir)\lib\x86\$(TargetName).lib</ImportLibrary>
-+      <ProfileGuidedDatabase>$(IntDir)\$(TargetName).pgd</ProfileGuidedDatabase>
-+      <ModuleDefinitionFile>libgnutls.def</ModuleDefinitionFile>
-+      <AdditionalDependencies>Crypt32.lib;Ws2_32.lib;zlibd.lib;hogweedd.lib;gmpd.lib;nettled.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x86\;$(ProjectDir)\..\..\prebuilt\lib\x86\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <LargeAddressAware>true</LargeAddressAware>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+      <MinimumRequiredVersion>5.1</MinimumRequiredVersion>
-+    </Link>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|Win32'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>Disabled</Optimization>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86;ASM_X86_32;_WIN32_WINNT=0x0502;_DEBUG;DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <BufferSecurityCheck>true</BufferSecurityCheck>
-+      <DisableSpecificWarnings>4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-+      <MinimalRebuild>false</MinimalRebuild>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <OutputFile>$(OutDir)\bin\x86\$(TargetName)$(TargetExt)</OutputFile>
-+      <ProgramDatabaseFile>$(OutDir)\lib\x86\$(TargetName).pdb</ProgramDatabaseFile>
-+      <SubSystem>Windows</SubSystem>
-+      <ImportLibrary>$(OutDir)\lib\x86\$(TargetName).lib</ImportLibrary>
-+      <ProfileGuidedDatabase>$(IntDir)\$(TargetName).pgd</ProfileGuidedDatabase>
-+      <ModuleDefinitionFile>libgnutls.def</ModuleDefinitionFile>
-+      <AdditionalDependencies>Crypt32.lib;Ws2_32.lib;libzlibd.lib;libhogweedd.lib;libgmpd.lib;libnettled.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x86\;$(ProjectDir)\..\..\prebuilt\lib\x86\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <LargeAddressAware>true</LargeAddressAware>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+      <MinimumRequiredVersion>5.1</MinimumRequiredVersion>
-+    </Link>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLL|x64'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>Disabled</Optimization>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86_64;_WIN32_WINNT=0x0A00;_DEBUG;DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-+      <MinimalRebuild>false</MinimalRebuild>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <OutputFile>$(OutDir)\bin\x64\$(TargetName)$(TargetExt)</OutputFile>
-+      <ProgramDatabaseFile>$(OutDir)\lib\x64\$(TargetName).pdb</ProgramDatabaseFile>
-+      <SubSystem>Windows</SubSystem>
-+      <ImportLibrary>$(OutDir)\lib\x64\$(TargetName).lib</ImportLibrary>
-+      <ProfileGuidedDatabase>$(IntDir)\$(TargetName).pgd</ProfileGuidedDatabase>
-+      <ModuleDefinitionFile>libgnutls.def</ModuleDefinitionFile>
-+      <AdditionalDependencies>Crypt32.lib;bcrypt.lib;Ws2_32.lib;zlibd.lib;hogweedd.lib;gmpd.lib;nettled.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x64\;$(ProjectDir)\..\..\prebuilt\lib\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+      <MinimumRequiredVersion>6.0</MinimumRequiredVersion>
-+    </Link>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugDLLStaticDeps|x64'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>Disabled</Optimization>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86_64;_WIN32_WINNT=0x0A00;_DEBUG;DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-+      <MinimalRebuild>false</MinimalRebuild>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <OutputFile>$(OutDir)\bin\x64\$(TargetName)$(TargetExt)</OutputFile>
-+      <ProgramDatabaseFile>$(OutDir)\lib\x64\$(TargetName).pdb</ProgramDatabaseFile>
-+      <SubSystem>Windows</SubSystem>
-+      <ImportLibrary>$(OutDir)\lib\x64\$(TargetName).lib</ImportLibrary>
-+      <ProfileGuidedDatabase>$(IntDir)\$(TargetName).pgd</ProfileGuidedDatabase>
-+      <ModuleDefinitionFile>libgnutls.def</ModuleDefinitionFile>
-+      <AdditionalDependencies>Crypt32.lib;bcrypt.lib;Ws2_32.lib;libzlibd.lib;libhogweedd.lib;libgmpd.lib;libnettled.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x64\;$(ProjectDir)\..\..\prebuilt\lib\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+      <MinimumRequiredVersion>6.0</MinimumRequiredVersion>
-+    </Link>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>MaxSpeed</Optimization>
-+      <FunctionLevelLinking>true</FunctionLevelLinking>
-+      <IntrinsicFunctions>true</IntrinsicFunctions>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-+      <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
-+      <OmitFramePointers>true</OmitFramePointers>
-+      <StringPooling>true</StringPooling>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86;ASM_X86_32;_WIN32_WINNT=0x0502;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\backport;..\lib\nettle\gost;..\lib\nettle\int;..\lib\tls13;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4133;4142;4013;4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <InterproceduralOptimization>SingleFile</InterproceduralOptimization>
-+      <ProgramDataBaseFileName>$(OutDir)\lib\x86\$(TargetName).pdb</ProgramDataBaseFileName>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+      <OptimizeReferences>true</OptimizeReferences>
-+    </Link>
-+    <Lib>
-+      <OutputFile>$(OutDir)\lib\x86\$(TargetName)$(TargetExt)</OutputFile>
-+      <TargetMachine>MachineX86</TargetMachine>
-+      <SubSystem>Windows</SubSystem>
-+      <AdditionalDependencies>Crypt32.lib;Ws2_32.lib;libzlib.lib;libhogweed.lib;libgmp.lib;libnettle.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x86\;$(ProjectDir)\..\..\prebuilt\lib\x86\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+    </Lib>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir "$(OutDir)"\licenses
-+copy ..\LICENSE "$(OutDir)"\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|Win32'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>MaxSpeed</Optimization>
-+      <FunctionLevelLinking>true</FunctionLevelLinking>
-+      <IntrinsicFunctions>true</IntrinsicFunctions>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-+      <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
-+      <OmitFramePointers>true</OmitFramePointers>
-+      <StringPooling>true</StringPooling>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86;ASM_X86_32;_WIN32_WINNT=0x0502;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <InterproceduralOptimization>SingleFile</InterproceduralOptimization>
-+      <ProgramDataBaseFileName>$(OutDir)\lib\x86\$(TargetName).pdb</ProgramDataBaseFileName>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+      <OptimizeReferences>true</OptimizeReferences>
-+    </Link>
-+    <Lib>
-+      <OutputFile>$(OutDir)\lib\x86\$(TargetName)$(TargetExt)</OutputFile>
-+      <TargetMachine>MachineX86</TargetMachine>
-+      <SubSystem>Windows</SubSystem>
-+      <AdditionalDependencies>Crypt32.lib;Ws2_32.lib;libzlib.lib;libhogweed.lib;libgmp.lib;libnettle.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x86\;$(ProjectDir)\..\..\prebuilt\lib\x86\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+    </Lib>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>MaxSpeed</Optimization>
-+      <FunctionLevelLinking>true</FunctionLevelLinking>
-+      <IntrinsicFunctions>true</IntrinsicFunctions>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-+      <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
-+      <OmitFramePointers>true</OmitFramePointers>
-+      <StringPooling>true</StringPooling>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86_64;_WIN32_WINNT=0x0A00;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\backport;..\lib\nettle\gost;..\lib\nettle\int;..\lib\tls13;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4133;4142;4013;4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <InterproceduralOptimization>SingleFile</InterproceduralOptimization>
-+      <ProgramDataBaseFileName>$(OutDir)\lib\x64\$(TargetName).pdb</ProgramDataBaseFileName>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+      <AdditionalOptions>
-+      </AdditionalOptions>
-+    </ClCompile>
-+    <Link>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+      <OptimizeReferences>true</OptimizeReferences>
-+    </Link>
-+    <Lib>
-+      <OutputFile>$(OutDir)\lib\x64\$(TargetName)$(TargetExt)</OutputFile>
-+      <TargetMachine>MachineX64</TargetMachine>
-+      <SubSystem>Windows</SubSystem>
-+      <AdditionalDependencies>Crypt32.lib;bcrypt.lib;Ws2_32.lib;libzlib.lib;libhogweed.lib;libgmp.lib;libnettle.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x64\;$(ProjectDir)\..\..\prebuilt\lib\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 /NODEFAULTLIB:LIBCMT.LIB %(AdditionalOptions)</AdditionalOptions>
-+    </Lib>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir "$(OutDir)"\licenses
-+copy ..\LICENSE "$(OutDir)"\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseLTO|x64'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>MaxSpeed</Optimization>
-+      <FunctionLevelLinking>true</FunctionLevelLinking>
-+      <IntrinsicFunctions>true</IntrinsicFunctions>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-+      <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
-+      <OmitFramePointers>true</OmitFramePointers>
-+      <StringPooling>true</StringPooling>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86_64;_WIN32_WINNT=0x0A00;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <InterproceduralOptimization>SingleFile</InterproceduralOptimization>
-+      <ProgramDataBaseFileName>$(OutDir)\lib\x64\$(TargetName).pdb</ProgramDataBaseFileName>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+      <OptimizeReferences>true</OptimizeReferences>
-+    </Link>
-+    <Lib>
-+      <OutputFile>$(OutDir)\lib\x64\$(TargetName)$(TargetExt)</OutputFile>
-+      <TargetMachine>MachineX64</TargetMachine>
-+      <SubSystem>Windows</SubSystem>
-+      <AdditionalDependencies>Crypt32.lib;bcrypt.lib;Ws2_32.lib;libzlib.lib;libhogweed.lib;libgmp.lib;libnettle.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x64\;$(ProjectDir)\..\..\prebuilt\lib\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+    </Lib>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|Win32'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>MaxSpeed</Optimization>
-+      <FunctionLevelLinking>true</FunctionLevelLinking>
-+      <IntrinsicFunctions>true</IntrinsicFunctions>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-+      <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
-+      <OmitFramePointers>true</OmitFramePointers>
-+      <StringPooling>true</StringPooling>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86;ASM_X86_32;_WIN32_WINNT=0x0502;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+      <OptimizeReferences>true</OptimizeReferences>
-+      <OutputFile>$(OutDir)\bin\x86\$(TargetName)$(TargetExt)</OutputFile>
-+      <ProgramDatabaseFile>$(OutDir)\lib\x86\$(TargetName).pdb</ProgramDatabaseFile>
-+      <SubSystem>Windows</SubSystem>
-+      <ImportLibrary>$(OutDir)\lib\x86\$(TargetName).lib</ImportLibrary>
-+      <ProfileGuidedDatabase>$(IntDir)\$(TargetName).pgd</ProfileGuidedDatabase>
-+      <ModuleDefinitionFile>libgnutls.def</ModuleDefinitionFile>
-+      <AdditionalDependencies>Crypt32.lib;Ws2_32.lib;zlib.lib;hogweed.lib;gmp.lib;nettle.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x86\;$(ProjectDir)\..\..\prebuilt\lib\x86\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <LargeAddressAware>true</LargeAddressAware>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <MinimumRequiredVersion>5.1</MinimumRequiredVersion>
-+    </Link>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|Win32'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>MaxSpeed</Optimization>
-+      <FunctionLevelLinking>true</FunctionLevelLinking>
-+      <IntrinsicFunctions>true</IntrinsicFunctions>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-+      <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
-+      <OmitFramePointers>true</OmitFramePointers>
-+      <StringPooling>true</StringPooling>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86;ASM_X86_32;_WIN32_WINNT=0x0502;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+      <OptimizeReferences>true</OptimizeReferences>
-+      <OutputFile>$(OutDir)\bin\x86\$(TargetName)$(TargetExt)</OutputFile>
-+      <ProgramDatabaseFile>$(OutDir)\lib\x86\$(TargetName).pdb</ProgramDatabaseFile>
-+      <SubSystem>Windows</SubSystem>
-+      <ImportLibrary>$(OutDir)\lib\x86\$(TargetName).lib</ImportLibrary>
-+      <ProfileGuidedDatabase>$(IntDir)\$(TargetName).pgd</ProfileGuidedDatabase>
-+      <ModuleDefinitionFile>libgnutls.def</ModuleDefinitionFile>
-+      <AdditionalDependencies>Crypt32.lib;Ws2_32.lib;libzlib.lib;libhogweed.lib;libgmp.lib;libnettle.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x86\;$(ProjectDir)\..\..\prebuilt\lib\x86\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <LargeAddressAware>true</LargeAddressAware>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <MinimumRequiredVersion>5.1</MinimumRequiredVersion>
-+    </Link>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLL|x64'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>MaxSpeed</Optimization>
-+      <FunctionLevelLinking>true</FunctionLevelLinking>
-+      <IntrinsicFunctions>true</IntrinsicFunctions>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-+      <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
-+      <OmitFramePointers>true</OmitFramePointers>
-+      <StringPooling>true</StringPooling>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86_64;_WIN32_WINNT=0x0A00;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+      <OptimizeReferences>true</OptimizeReferences>
-+      <OutputFile>$(OutDir)\bin\x64\$(TargetName)$(TargetExt)</OutputFile>
-+      <ProgramDatabaseFile>$(OutDir)\lib\x64\$(TargetName).pdb</ProgramDatabaseFile>
-+      <SubSystem>Windows</SubSystem>
-+      <ImportLibrary>$(OutDir)\lib\x64\$(TargetName).lib</ImportLibrary>
-+      <ProfileGuidedDatabase>$(IntDir)\$(TargetName).pgd</ProfileGuidedDatabase>
-+      <ModuleDefinitionFile>libgnutls.def</ModuleDefinitionFile>
-+      <AdditionalDependencies>Crypt32.lib;bcrypt.lib;Ws2_32.lib;zlib.lib;hogweed.lib;gmp.lib;nettle.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x64\;$(ProjectDir)\..\..\prebuilt\lib\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <MinimumRequiredVersion>6.0</MinimumRequiredVersion>
-+    </Link>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDLLStaticDeps|x64'">
-+    <ClCompile>
-+      <WarningLevel>Level3</WarningLevel>
-+      <Optimization>MaxSpeed</Optimization>
-+      <FunctionLevelLinking>true</FunctionLevelLinking>
-+      <IntrinsicFunctions>true</IntrinsicFunctions>
-+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
-+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-+      <EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
-+      <OmitFramePointers>true</OmitFramePointers>
-+      <StringPooling>true</StringPooling>
-+      <PreprocessorDefinitions>HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86_64;_WIN32_WINNT=0x0A00;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+      <AdditionalIncludeDirectories>.\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;.\lib\unistring;..\lib\unistring;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-+      <DisableSpecificWarnings>4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)</DisableSpecificWarnings>
-+      <ProgramDataBaseFileName>$(IntDir)$(TargetName).pdb</ProgramDataBaseFileName>
-+      <ObjectFileName>$(IntDir)\%(RelativeDir)\</ObjectFileName>
-+    </ClCompile>
-+    <Link>
-+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-+      <OptimizeReferences>true</OptimizeReferences>
-+      <OutputFile>$(OutDir)\bin\x64\$(TargetName)$(TargetExt)</OutputFile>
-+      <ProgramDatabaseFile>$(OutDir)\lib\x64\$(TargetName).pdb</ProgramDatabaseFile>
-+      <SubSystem>Windows</SubSystem>
-+      <ImportLibrary>$(OutDir)\lib\x64\$(TargetName).lib</ImportLibrary>
-+      <ProfileGuidedDatabase>$(IntDir)\$(TargetName).pgd</ProfileGuidedDatabase>
-+      <ModuleDefinitionFile>libgnutls.def</ModuleDefinitionFile>
-+      <AdditionalDependencies>Crypt32.lib;bcrypt.lib;Ws2_32.lib;libzlib.lib;libhogweed.lib;libgmp.lib;libnettle.lib;%(AdditionalDependencies)</AdditionalDependencies>
-+      <AdditionalLibraryDirectories>$(OutDir)\lib\x64\;$(ProjectDir)\..\..\prebuilt\lib\x64\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-+      <AdditionalOptions>/IGNORE:4006,4221,4042 %(AdditionalOptions)</AdditionalOptions>
-+      <GenerateDebugInformation>true</GenerateDebugInformation>
-+      <MinimumRequiredVersion>6.0</MinimumRequiredVersion>
-+    </Link>
-+    <PostBuildEvent>
-+      <Command>mkdir "$(OutDir)"\include
-+mkdir "$(OutDir)"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "$(OutDir)"\include\gnutls
-+copy .\gnutls\gnutls.h "$(OutDir)"\include\gnutls
-+mkdir $(OutDir)\licenses
-+copy ..\LICENSE $(OutDir)\licenses\gnutls.txt</Command>
-+    </PostBuildEvent>
-+    <PreBuildEvent>
-+      <Command>if exist ..\config.h (
-+del ..\config.h
-+)
-+if exist ..\lib\includes\gnutls\gnutls.h (
-+del ..\lib\includes\gnutls\gnutls.h
-+)
-+if exist ..\lib\priority_options.h (
-+del ..\lib\priority_options.h
-+)
-+if exist "$(OutDir)"\include\gnutls (
-+rd /s /q "$(OutDir)"\include\gnutls
-+cd ../
-+cd $(ProjectDir)
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\arpa\inet.h (
-+del ..\gl\arpa\inet.h
-+)
-+if exist ..\gl\byteswap.h (
-+del ..\gl\\byteswap.h
-+)
-+if exist ..\gl\signal.h (
-+del ..\gl\signal.h
-+)
-+if exist ..\gl\stdio.h (
-+del ..\gl\stdio.h
-+)
-+if exist ..\gl\stdlib.h (
-+del ..\gl\stdlib.h
-+)
-+if exist ..\gl\string.h (
-+del ..\gl\string.h
-+)
-+if exist ..\gl\strings.h (
-+del ..\gl\strings.h
-+)
-+if exist ..\gl\sys\select.h (
-+del ..\gl\sys\select.h
-+)
-+if exist ..\gl\sys\socket.h (
-+del ..\gl\sys\socket.h
-+)
-+if exist ..\gl\sys\stat.h (
-+del ..\gl\sys\stat.h
-+)
-+if exist ..\gl\sys\time.h (
-+del ..\gl\sys\time.h
-+)
-+if exist ..\gl\sys\types.h (
-+del ..\gl\sys\types.h
-+)
-+if exist ..\gl\sys\uio.h (
-+del ..\gl\sys\uio.h
-+)
-+if exist ..\gl\time.h (
-+del ..\gl\time.h
-+)
-+if exist ..\gl\unistd.h (
-+del ..\gl\unistd.h
-+)
-+if exist ..\gl\wchar.h (
-+del ..\gl\wchar.h
-+)
-+if exist ..\gl\errno.h (
-+del ..\gl\errno.h
-+)</Command>
-+    </PreBuildEvent>
-+    <CustomBuildStep>
-+      <Message>Custom Clean Step</Message>
-+    </CustomBuildStep>
-+    <CustomBuildStep>
-+      <Outputs>force_clean</Outputs>
-+      <Command>if exist "$(OutDir)"\include\gnutls (
-+rmdir /s /q "$(OutDir)"\include\gnutls
-+)
-+if exist $(OutDir)\licenses\gnutls.txt (
-+del /f /q $(OutDir)\licenses\gnutls.txt
-+)</Command>
-+    </CustomBuildStep>
-+    <YASM>
-+      <PreprocessorDefinitions>__NASM_VERSION_ID__=0x02030000;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-+    </YASM>
-+  </ItemDefinitionGroup>
-+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-+  <ImportGroup Label="ExtensionTargets">
-+    <Import Project="$(VCTargetsPath)\BuildCustomizations\yasm.targets" />
-+  </ImportGroup>
-+</Project>
-\ No newline at end of file
-diff --git a/SMP/libgnutls.vcxproj.filters b/SMP/libgnutls.vcxproj.filters
-new file mode 100644
-index 0000000..85202ab
---- /dev/null
-+++ b/SMP/libgnutls.vcxproj.filters
-@@ -0,0 +1,1804 @@
-+<?xml version="1.0" encoding="utf-8"?>
-+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-+  <ItemGroup>
-+    <Filter Include="Header Files">
-+      <UniqueIdentifier>{e850f24d-093f-4c30-a99c-413a7dfa71b8}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Resource Files">
-+      <UniqueIdentifier>{f18cd969-acc3-480c-9147-ea3ae1c8ba92}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files">
-+      <UniqueIdentifier>{bdd0568e-d423-4fcc-affe-6ba0c2a40f78}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib">
-+      <UniqueIdentifier>{846a84d9-f6ed-42fa-b50c-2f7863cb6f59}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib">
-+      <UniqueIdentifier>{71e41116-0a7f-426b-ac4c-8171392cfb42}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\x509">
-+      <UniqueIdentifier>{1e36f4d1-6f20-4d58-943b-cea4ad43176a}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\x509">
-+      <UniqueIdentifier>{6bc6970b-1b78-4be2-9533-f22a0e1c4e4f}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\accelerated">
-+      <UniqueIdentifier>{cacc9806-9bcd-4062-804c-4944b45f0633}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\accelerated">
-+      <UniqueIdentifier>{6687ddd2-a384-4b88-b6f1-6d8ebb43f65f}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\auth">
-+      <UniqueIdentifier>{37a0ca08-651d-420d-97c6-9c577325bdbd}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\auth">
-+      <UniqueIdentifier>{dea014de-cf7e-464e-aa39-96603d49a936}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\ext">
-+      <UniqueIdentifier>{17cfe271-8110-465e-b2b0-b2a7731203fc}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\ext">
-+      <UniqueIdentifier>{6c654e49-dc39-45e3-bb25-88a1d6df16c1}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\algorithms">
-+      <UniqueIdentifier>{3ff047f2-7e65-4a3f-8cf6-9f1cabb20c9d}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\extras">
-+      <UniqueIdentifier>{e0df656e-9c3c-41cc-8c76-e066482dd266}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\extras">
-+      <UniqueIdentifier>{d11cb355-4d28-468c-a771-99d8caaa37b8}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\minitasn1">
-+      <UniqueIdentifier>{ea53b459-c726-4e60-ae2a-e8b1942d1e04}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\minitasn1">
-+      <UniqueIdentifier>{0b42137d-60dd-4225-89f7-04f9c16bc03f}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\opencdk">
-+      <UniqueIdentifier>{a716acb9-1d19-4901-b51d-e8491cd6b1cd}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\openpgp">
-+      <UniqueIdentifier>{801859ed-a82a-4425-bc41-853a3e36c91f}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\nettle">
-+      <UniqueIdentifier>{1d37e53c-2b42-4c10-b915-8d5ea32ad5b8}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\nettle">
-+      <UniqueIdentifier>{5f3f5aa7-e3c3-4b10-bcfd-e57affb22689}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\includes">
-+      <UniqueIdentifier>{8196ba47-8e25-4785-84b7-5585d48180f0}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\includes\gnutls">
-+      <UniqueIdentifier>{a627b137-991b-4990-b694-a9b2d2c653a5}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\gl">
-+      <UniqueIdentifier>{f35f5731-aedc-4518-a473-6d2cb214104d}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\accelerated\x86">
-+      <UniqueIdentifier>{075c40f2-5cd7-4fd6-8eed-4d712901d635}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\accelerated\x86">
-+      <UniqueIdentifier>{c5ee836d-4b0b-49bc-873a-28ceb87a5faa}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\accelerated\x86\coff">
-+      <UniqueIdentifier>{8c3b1839-8bb4-46d1-9a23-50782c575e2b}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\system">
-+      <UniqueIdentifier>{76aa5080-e372-4c96-a1c7-83f54eb77073}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\nettle\int">
-+      <UniqueIdentifier>{b4e1b395-c5b4-4cca-bf0c-8b2dd4d759d6}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\nettle\int">
-+      <UniqueIdentifier>{10367618-d480-419d-a5fe-8ec68eb12027}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\unistring">
-+      <UniqueIdentifier>{abc680d5-b39e-4f85-87c0-e0aa59d89e9f}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\unistring\unictype">
-+      <UniqueIdentifier>{b9ad9166-4729-4357-995d-373469886c60}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\unistring\uninorm">
-+      <UniqueIdentifier>{fd64761c-61cb-4651-be22-593c83c644d5}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\unistring\unistr">
-+      <UniqueIdentifier>{ad287a87-3bf8-43f1-bc30-847e503bab04}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\unistring">
-+      <UniqueIdentifier>{5a6accd0-2489-4547-87f7-47aa7007346e}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\unistring\unicase">
-+      <UniqueIdentifier>{73e37f29-8dea-41f2-a47c-b7c615301f3f}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\unistring\unictype">
-+      <UniqueIdentifier>{cec5d9f9-5fa1-4465-b15c-90bc17c739c3}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\unistring\uninorm">
-+      <UniqueIdentifier>{9fdad55e-e7bb-48d5-b9bb-69e4a0a05bdc}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Header Files\lib\unistring\unistring">
-+      <UniqueIdentifier>{61d0ba14-cae2-4b4d-ba92-1e608145d2aa}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\nettle\gost">
-+      <UniqueIdentifier>{4b6e9ec2-1641-476a-a471-5c4fdd17cbdc}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\nettle\backport">
-+      <UniqueIdentifier>{acbf7848-4968-43cc-a912-95a1e5b88a7d}</UniqueIdentifier>
-+    </Filter>
-+    <Filter Include="Source Files\lib\tls13">
-+      <UniqueIdentifier>{3ef6a57c-114c-4352-b886-9e06e1297905}</UniqueIdentifier>
-+    </Filter>
-+  </ItemGroup>
-+  <ItemGroup>
-+    <ClInclude Include="config.h">
-+      <Filter>Header Files</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\ocsp.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\openpgp.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\pkcs11.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\pkcs12.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\tpm.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\x509.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\abstract.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\compat.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\crypto.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\dtls.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\common.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\verify-high.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\x509_int.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\accelerated\cryptodev.h">
-+      <Filter>Header Files\lib\accelerated</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\accelerated\accelerated.h">
-+      <Filter>Header Files\lib\accelerated</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\auth\anon.h">
-+      <Filter>Header Files\lib\auth</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\auth\cert.h">
-+      <Filter>Header Files\lib\auth</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\auth\dh_common.h">
-+      <Filter>Header Files\lib\auth</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\auth\ecdhe.h">
-+      <Filter>Header Files\lib\auth</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\auth\psk.h">
-+      <Filter>Header Files\lib\auth</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\auth\psk_passwd.h">
-+      <Filter>Header Files\lib\auth</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\auth\rsa_common.h">
-+      <Filter>Header Files\lib\auth</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\auth\srp_passwd.h">
-+      <Filter>Header Files\lib\auth</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\alpn.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\cert_type.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\dumbfw.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\ecc.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\heartbeat.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\max_record.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\safe_renegotiation.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\server_name.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\session_ticket.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\signature.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\srp.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\srtp.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\status_request.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\extras\randomart.h">
-+      <Filter>Header Files\lib\extras</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\minitasn1\element.h">
-+      <Filter>Header Files\lib\minitasn1</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\minitasn1\gstr.h">
-+      <Filter>Header Files\lib\minitasn1</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\minitasn1\int.h">
-+      <Filter>Header Files\lib\minitasn1</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\minitasn1\libtasn1.h">
-+      <Filter>Header Files\lib\minitasn1</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\minitasn1\parser_aux.h">
-+      <Filter>Header Files\lib\minitasn1</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\minitasn1\structure.h">
-+      <Filter>Header Files\lib\minitasn1</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\opencdk\context.h">
-+      <Filter>Header Files\lib\opencdk</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\opencdk\filters.h">
-+      <Filter>Header Files\lib\opencdk</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\opencdk\keydb.h">
-+      <Filter>Header Files\lib\opencdk</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\opencdk\main.h">
-+      <Filter>Header Files\lib\opencdk</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\opencdk\opencdk.h">
-+      <Filter>Header Files\lib\opencdk</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\opencdk\packet.h">
-+      <Filter>Header Files\lib\opencdk</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\opencdk\stream.h">
-+      <Filter>Header Files\lib\opencdk</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\opencdk\types.h">
-+      <Filter>Header Files\lib\opencdk</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\openpgp\openpgp_int.h">
-+      <Filter>Header Files\lib\openpgp</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\nettle\gnettle.h">
-+      <Filter>Header Files\lib\nettle</Filter>
-+    </ClInclude>
-+    <ClInclude Include="version.h">
-+      <Filter>Header Files</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\self-test.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\x509-ext.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\nettle\rnd-common.h">
-+      <Filter>Header Files\lib\nettle</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\accelerated\x86\aes-padlock.h">
-+      <Filter>Header Files\lib\accelerated\x86</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\accelerated\x86\aes-x86.h">
-+      <Filter>Header Files\lib\accelerated\x86</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\accelerated\x86\sha-padlock.h">
-+      <Filter>Header Files\lib\accelerated\x86</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\accelerated\x86\sha-x86.h">
-+      <Filter>Header Files\lib\accelerated\x86</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\accelerated\x86\x86-common.h">
-+      <Filter>Header Files\lib\accelerated\x86</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\accelerated\x86\aes-gcm-aead.h">
-+      <Filter>Header Files\lib\accelerated\x86</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\etm.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ext\ext_master_secret.h">
-+      <Filter>Header Files\lib\ext</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\extras\hex.h">
-+      <Filter>Header Files\lib\extras</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\system-keys.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\urls.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\pkcs7.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\auth\srp_kx.h">
-+      <Filter>Header Files\lib\auth</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\includes\gnutls\socket.h">
-+      <Filter>Header Files\lib\includes\gnutls</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\abstract_int.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\algorithms.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\atfork.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\auth.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\buffers.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\cipher.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\cipher_int.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\compress.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\constate.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\crypto.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\crypto-backend.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\datum.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\db.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\debug.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\dh.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\dtls.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\ecc.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\errors.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\extensions.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\file.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\fips.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\global.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\gnutls_int.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\handshake.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\hash_int.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\kx.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\locks.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\mbuffers.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\mem.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\mpi.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\num.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\pin.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\pk.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\random.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\record.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\session_pack.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\srp.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\sslv2_compat.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\state.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\str.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\str_array.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\supplemental.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\system.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\system-keys.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\tls-sig.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\urls.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\vasprintf.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509_b64.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="lib\priority_options.h">
-+      <Filter>Header Files\lib</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\nettle\int\dsa-fips.h">
-+      <Filter>Header Files\lib\nettle\int</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\nettle\int\rsa-fips.h">
-+      <Filter>Header Files\lib\nettle\int</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\openpgp\openpgp.h">
-+      <Filter>Header Files\lib\openpgp</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\ip.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\ip-in-cidr.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\krb5.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\pkcs7_int.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\virt-san.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\x509_ext_int.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unicase\special-casing-table.h">
-+      <Filter>Header Files\lib\unistring\unicase</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Pc.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Pd.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Pe.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Pf.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Pi.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Po.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Ps.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_S.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Sc.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Sk.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Sm.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_So.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Z.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Zl.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Zp.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Zs.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\combiningclass.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\pr_default_ignorable_code_point.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\pr_join_control.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\pr_not_a_character.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\bitmap.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_C.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Cc.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Cf.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Cn.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Co.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Cs.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_L.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_LC.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Ll.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Lm.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Lo.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Lt.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Lu.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_M.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Mc.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Me.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Mn.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_N.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Nd.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_Nl.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_No.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_of.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unictype\categ_P.h">
-+      <Filter>Header Files\lib\unistring\unictype</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\uninorm\composition-table.h">
-+      <Filter>Header Files\lib\unistring\uninorm</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\uninorm\decompose-internal.h">
-+      <Filter>Header Files\lib\unistring\uninorm</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\uninorm\decomposition-table.h">
-+      <Filter>Header Files\lib\unistring\uninorm</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\uninorm\decomposition-table1.h">
-+      <Filter>Header Files\lib\unistring\uninorm</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\uninorm\decomposition-table2.h">
-+      <Filter>Header Files\lib\unistring\uninorm</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\uninorm\normalize-internal.h">
-+      <Filter>Header Files\lib\unistring\uninorm</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\uninorm\u-normalize-internal.h">
-+      <Filter>Header Files\lib\unistring\uninorm</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\unistring\unistr\u-cpy.h">
-+      <Filter>Header Files\lib\unistring\unistring</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\attributes.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+    <ClInclude Include="..\lib\x509\prov-seed.h">
-+      <Filter>Header Files\lib\x509</Filter>
-+    </ClInclude>
-+  </ItemGroup>
-+  <ItemGroup>
-+    <ClCompile Include="..\lib\x509\pkcs7.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\pkcs12.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\pkcs12_bag.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\pkcs12_encr.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\privkey.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\privkey_openssl.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\privkey_pkcs8.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\sign.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\verify.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\verify-high.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\verify-high2.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\x509.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\x509_dn.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\x509_write.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\common.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\crl.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\crl_write.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\crq.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\dn.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\extensions.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\key_decode.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\key_encode.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\mpi.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\ocsp.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\ocsp_output.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\output.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\cryptodev-gcm.c">
-+      <Filter>Source Files\lib\accelerated</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\accelerated.c">
-+      <Filter>Source Files\lib\accelerated</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\cryptodev.c">
-+      <Filter>Source Files\lib\accelerated</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\dhe_psk.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\ecdhe.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\psk.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\psk_passwd.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\rsa.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\rsa_psk.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\srp_passwd.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\srp_rsa.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\srp_sb64.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\anon.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\anon_ecdh.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\cert.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\dh_common.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\dhe.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\extras\randomart.c">
-+      <Filter>Source Files\lib\extras</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\minitasn1\parser_aux.c">
-+      <Filter>Source Files\lib\minitasn1</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\minitasn1\structure.c">
-+      <Filter>Source Files\lib\minitasn1</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\minitasn1\version.c">
-+      <Filter>Source Files\lib\minitasn1</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\minitasn1\coding.c">
-+      <Filter>Source Files\lib\minitasn1</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\minitasn1\decoding.c">
-+      <Filter>Source Files\lib\minitasn1</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\minitasn1\element.c">
-+      <Filter>Source Files\lib\minitasn1</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\minitasn1\errors.c">
-+      <Filter>Source Files\lib\minitasn1</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\minitasn1\gstr.c">
-+      <Filter>Source Files\lib\minitasn1</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\mac.c">
-+      <Filter>Source Files\lib\nettle</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\mpi.c">
-+      <Filter>Source Files\lib\nettle</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\pk.c">
-+      <Filter>Source Files\lib\nettle</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\cipher.c">
-+      <Filter>Source Files\lib\nettle</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\init.c">
-+      <Filter>Source Files\lib\nettle</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\gl\c-ctype.c">
-+      <Filter>Source Files\gl</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\gl\read-file.c">
-+      <Filter>Source Files\gl</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\gl\hash-pjw-bare.c">
-+      <Filter>Source Files\gl</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\gl\msvc-nothrow.c">
-+      <Filter>Source Files\gl</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\gl\msvc-inval.c">
-+      <Filter>Source Files\gl</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\rnd.c">
-+      <Filter>Source Files\lib\nettle</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\name_constraints.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\x509_ext.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\x86-common.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-gcm-x86-pclmul.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-gcm-x86-ssse3.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-padlock.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\hmac-padlock.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\hmac-x86-ssse3.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\sha-padlock.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\sha-x86-ssse3.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-cbc-x86-aesni.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-cbc-x86-ssse3.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-gcm-padlock.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-gcm-x86-aesni.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-ccm-x86-aesni.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\extras\hex.c">
-+      <Filter>Source Files\lib\extras</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\email-verify.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\hostname-verify.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\pkcs7-attrs.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\pkcs7-output.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\gl\secure_getenv.c">
-+      <Filter>Source Files\gl</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\accelerated\x86\aes-gcm-x86-pclmul-avx.c">
-+      <Filter>Source Files\lib\accelerated\x86</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth\srp_kx.c">
-+      <Filter>Source Files\lib\auth</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\system\certs.c">
-+      <Filter>Source Files\lib\system</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\system\fastopen.c">
-+      <Filter>Source Files\lib\system</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\system\keys-win.c">
-+      <Filter>Source Files\lib\system</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\system\sockets.c">
-+      <Filter>Source Files\lib\system</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\system\threads.c">
-+      <Filter>Source Files\lib\system</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\sysrng-windows.c">
-+      <Filter>Source Files\lib\nettle</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\ip.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\krb5.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\pkcs7-crypt.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\privkey_pkcs8_pbes1.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\tls_features.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\virt-san.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Sm.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_So.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_test.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Z.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Zl.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Zp.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Zs.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\combiningclass.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\pr_default_ignorable_code_point.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\pr_join_control.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\pr_not_a_character.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_and.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_and_not.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_byname.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_C.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Cc.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Cf.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Cn.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Co.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Cs.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_L.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_LC.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Ll.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Lm.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Lo.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_longname.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Lt.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Lu.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_M.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Mc.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Me.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Mn.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_N.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_name.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Nd.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Nl.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_No.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_none.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_of.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_or.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_P.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Pc.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Pd.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Pe.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Pf.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Pi.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Po.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Ps.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_S.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Sc.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unictype\categ_Sk.c">
-+      <Filter>Source Files\lib\unistring\unictype</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\u32-normalize.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\canonical-decomposition.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\compat-decomposition.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\composition.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\decompose-internal.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\decomposition.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\decomposition-table.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\nfc.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\nfd.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\nfkc.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\nfkd.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\u8-normalize.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\uninorm\u16-normalize.c">
-+      <Filter>Source Files\lib\unistring\uninorm</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u8-mbtouc-unsafe-aux.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u8-to-u16.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u8-to-u32.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u8-uctomb.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u8-uctomb-aux.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u16-cpy.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u16-mbtoucr.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u16-mbtouc-unsafe.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u16-mbtouc-unsafe-aux.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u16-to-u8.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u16-uctomb.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u16-uctomb-aux.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u32-cpy.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u32-mbtouc-unsafe.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u32-to-u8.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u32-uctomb.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u8-check.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u8-cpy.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u8-mbtoucr.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\unistring\unistr\u8-mbtouc-unsafe.c">
-+      <Filter>Source Files\lib\unistring\unistr</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\time.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\attributes.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509\prov-seed.c">
-+      <Filter>Source Files\lib\x509</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\early_data.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\ec_point_formats.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\etm.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\ext_master_secret.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\heartbeat.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\key_share.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\max_record.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\post_handshake.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\pre_shared_key.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\psk_ke_modes.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\record_size_limit.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\safe_renegotiation.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\server_cert_type.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\server_name.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\session_ticket.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\signature.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\srp.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\srtp.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\status_request.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\supported_groups.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\supported_versions.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\alpn.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\client_cert_type.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\cookie.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ext\dumbfw.c">
-+      <Filter>Source Files\lib\ext</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\ecc-gost-hash.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\gost28147.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\gostdsa-mask.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\gostdsa-sign.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\gostdsa-verify.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\gosthash94.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\gosthash94-meta.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\hmac-gosthash94.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\hmac-streebog.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\pbkdf2-hmac-gosthash94.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\pbkdf2-hmac-streebog.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\streebog.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\streebog-meta.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\bignum-le.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\ecc-gost256cpa.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\ecc-gost512a.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\ecc-gostdsa-sign.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\gost\ecc-gostdsa-verify.c">
-+      <Filter>Source Files\lib\nettle\gost</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\backport\cfb8.c">
-+      <Filter>Source Files\lib\nettle\backport</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\backport\cmac.c">
-+      <Filter>Source Files\lib\nettle\backport</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\certificate_request.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\certificate_verify.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\early_data.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\encrypted_extensions.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\finished.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\hello_retry.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\key_update.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\post_handshake.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\psk_ext_parser.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\session_ticket.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\anti_replay.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13\certificate.c">
-+      <Filter>Source Files\lib\tls13</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\gnutls_asn1_tab.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\handshake.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\handshake-checks.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\handshake-tls13.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\hash_int.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\hello_ext.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\hello_ext_lib.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\kx.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\locks.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\mbuffers.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\mem.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\mpi.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\num.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ocsp-api.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\openpgp_compat.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pcert.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pin.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pk.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11_int.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11_privkey.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11_secret.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11_write.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkcs11x.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pkix_asn1_tab.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\prf.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\priority.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\privkey.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\privkey_raw.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\psk.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\pubkey.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\random.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\randomart.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\range.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\record.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\safe-memfuncs.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\secrets.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\session.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\session_pack.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\srp.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\sslv2_compat.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\state.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\stek.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\str.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\str-iconv.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\str-idna.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\str-unicode.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\supplemental.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\system.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\system_override.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls13-sig.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tls-sig.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\tpm.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\urls.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\verify-tofu.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\x509_b64.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\alert.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\anon_cred.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\atfork.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auth.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\auto-verify.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\buffers.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\cert-cred.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\cert-cred-rawpk.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\cert-cred-x509.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\cert-session.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\cipher.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\cipher_int.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\cipher-cbc.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\compress.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\constate.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\crypto-api.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\crypto-backend.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\crypto-selftests.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\crypto-selftests-pk.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\datum.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\db.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\debug.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\dh.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\dh-primes.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\dh-session.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\dtls.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\dtls-sw.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\ecc.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\errors.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\extv.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\file.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\fingerprint.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\fips.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\global.c">
-+      <Filter>Source Files\lib</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\ciphers.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\ciphersuites.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\ecc.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\groups.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\kx.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\mac.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\protocols.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\publickey.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\secparams.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\sign.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\algorithms\cert_types.c">
-+      <Filter>Source Files\lib\algorithms</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\prf.c">
-+      <Filter>Source Files\lib\nettle</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\int\drbg-aes-self-test.c">
-+      <Filter>Source Files\lib\nettle\int</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\int\dsa-keygen-fips186.c">
-+      <Filter>Source Files\lib\nettle\int</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\int\dsa-validate.c">
-+      <Filter>Source Files\lib\nettle\int</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\int\provable-prime.c">
-+      <Filter>Source Files\lib\nettle\int</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\int\rsa-keygen-fips186.c">
-+      <Filter>Source Files\lib\nettle\int</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\int\tls1-prf.c">
-+      <Filter>Source Files\lib\nettle\int</Filter>
-+    </ClCompile>
-+    <ClCompile Include="..\lib\nettle\int\drbg-aes.c">
-+      <Filter>Source Files\lib\nettle\int</Filter>
-+    </ClCompile>
-+  </ItemGroup>
-+  <ItemGroup>
-+    <None Include="libgnutls.def">
-+      <Filter>Resource Files</Filter>
-+    </None>
-+  </ItemGroup>
-+  <ItemGroup>
-+    <YASM Include="lib\accelerated\x86\coff\aesni-gcm-x86_64.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\aesni-x86.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\aesni-x86_64.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\aes-ssse3-x86.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\aes-ssse3-x86_64.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\cpuid-x86.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\cpuid-x86_64.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\e_padlock-x86.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\e_padlock-x86_64.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\ghash-x86.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\ghash-x86_64.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\sha1-ssse3-x86.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\sha1-ssse3-x86_64.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\sha256-ssse3-x86.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\sha256-avx-x86_64.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+    <YASM Include="lib\accelerated\x86\coff\sha256-ssse3-x86_64.asm">
-+      <Filter>Source Files\lib\accelerated\x86\coff</Filter>
-+    </YASM>
-+  </ItemGroup>
-+</Project>
-\ No newline at end of file
-diff --git a/SMP/libgnutls_deps.sln b/SMP/libgnutls_deps.sln
-new file mode 100644
-index 0000000..03cf8e4
---- /dev/null
-+++ b/SMP/libgnutls_deps.sln
-@@ -0,0 +1,195 @@
-+
-+Microsoft Visual Studio Solution File, Format Version 12.00
-+VisualStudioVersion = 12.0.30501.0
-+MinimumVisualStudioVersion = 12.0.30501.0
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgnutls", "libgnutls.vcxproj", "{6F610EE8-7F59-4191-AB88-F63843267C02}"
-+	ProjectSection(ProjectDependencies) = postProject
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2} = {02B94302-23D6-43EF-8865-95CDE99D5DC2}
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518} = {070FEF2B-0C3F-4F33-9D3C-53C7330BF518}
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32} = {CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C} = {200F3D3C-8B84-46D8-953A-6C0EBD283B5C}
-+	EndProjectSection
-+EndProject
-+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependencies", "dependencies", "{653672DB-3E16-4696-981A-81294116434F}"
-+EndProject
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libhogweed", "..\..\nettle\SMP\libhogweed.vcxproj", "{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}"
-+	ProjectSection(ProjectDependencies) = postProject
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2} = {02B94302-23D6-43EF-8865-95CDE99D5DC2}
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518} = {070FEF2B-0C3F-4F33-9D3C-53C7330BF518}
-+	EndProjectSection
-+EndProject
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libnettle", "..\..\nettle\SMP\libnettle.vcxproj", "{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}"
-+EndProject
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgmp", "..\..\gmp\SMP\libgmp.vcxproj", "{02B94302-23D6-43EF-8865-95CDE99D5DC2}"
-+EndProject
-+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzlib", "..\..\zlib\SMP\libzlib.vcxproj", "{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}"
-+EndProject
-+Global
-+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-+		Debug|x64 = Debug|x64
-+		Debug|x86 = Debug|x86
-+		DebugDLL|x64 = DebugDLL|x64
-+		DebugDLL|x86 = DebugDLL|x86
-+		DebugDLLStaticDeps|x64 = DebugDLLStaticDeps|x64
-+		DebugDLLStaticDeps|x86 = DebugDLLStaticDeps|x86
-+		Release|x64 = Release|x64
-+		Release|x86 = Release|x86
-+		ReleaseDLL|x64 = ReleaseDLL|x64
-+		ReleaseDLL|x86 = ReleaseDLL|x86
-+		ReleaseDLLStaticDeps|x64 = ReleaseDLLStaticDeps|x64
-+		ReleaseDLLStaticDeps|x86 = ReleaseDLLStaticDeps|x86
-+		ReleaseLTO|x64 = ReleaseLTO|x64
-+		ReleaseLTO|x86 = ReleaseLTO|x86
-+	EndGlobalSection
-+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Debug|x64.ActiveCfg = Debug|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Debug|x64.Build.0 = Debug|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Debug|x86.ActiveCfg = Debug|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Debug|x86.Build.0 = Debug|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLL|x64.Build.0 = DebugDLL|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLLStaticDeps|x64.ActiveCfg = DebugDLLStaticDeps|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLLStaticDeps|x64.Build.0 = DebugDLLStaticDeps|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLLStaticDeps|x86.ActiveCfg = DebugDLLStaticDeps|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.DebugDLLStaticDeps|x86.Build.0 = DebugDLLStaticDeps|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Release|x64.ActiveCfg = Release|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Release|x64.Build.0 = Release|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Release|x86.ActiveCfg = Release|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.Release|x86.Build.0 = Release|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLLStaticDeps|x64.ActiveCfg = ReleaseDLLStaticDeps|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLLStaticDeps|x64.Build.0 = ReleaseDLLStaticDeps|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLLStaticDeps|x86.ActiveCfg = ReleaseDLLStaticDeps|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseDLLStaticDeps|x86.Build.0 = ReleaseDLLStaticDeps|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseLTO|x64.ActiveCfg = ReleaseLTO|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseLTO|x64.Build.0 = ReleaseLTO|x64
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseLTO|x86.ActiveCfg = ReleaseLTO|Win32
-+		{6F610EE8-7F59-4191-AB88-F63843267C02}.ReleaseLTO|x86.Build.0 = ReleaseLTO|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.Debug|x64.ActiveCfg = Debug|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.Debug|x64.Build.0 = Debug|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.Debug|x86.ActiveCfg = Debug|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.Debug|x86.Build.0 = Debug|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.DebugDLL|x64.Build.0 = DebugDLL|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.DebugDLLStaticDeps|x64.ActiveCfg = Debug|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.DebugDLLStaticDeps|x64.Build.0 = Debug|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.DebugDLLStaticDeps|x86.ActiveCfg = Debug|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.DebugDLLStaticDeps|x86.Build.0 = Debug|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.Release|x64.ActiveCfg = Release|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.Release|x64.Build.0 = Release|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.Release|x86.ActiveCfg = Release|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.Release|x86.Build.0 = Release|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseDLLStaticDeps|x64.ActiveCfg = Release|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseDLLStaticDeps|x64.Build.0 = Release|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseDLLStaticDeps|x86.ActiveCfg = Release|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseDLLStaticDeps|x86.Build.0 = Release|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseLTO|x64.ActiveCfg = ReleaseLTO|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseLTO|x64.Build.0 = ReleaseLTO|x64
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseLTO|x86.ActiveCfg = ReleaseLTO|Win32
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}.ReleaseLTO|x86.Build.0 = ReleaseLTO|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.Debug|x64.ActiveCfg = Debug|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.Debug|x64.Build.0 = Debug|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.Debug|x86.ActiveCfg = Debug|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.Debug|x86.Build.0 = Debug|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.DebugDLL|x64.Build.0 = DebugDLL|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.DebugDLLStaticDeps|x64.ActiveCfg = Debug|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.DebugDLLStaticDeps|x64.Build.0 = Debug|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.DebugDLLStaticDeps|x86.ActiveCfg = Debug|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.DebugDLLStaticDeps|x86.Build.0 = Debug|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.Release|x64.ActiveCfg = Release|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.Release|x64.Build.0 = Release|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.Release|x86.ActiveCfg = Release|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.Release|x86.Build.0 = Release|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseDLLStaticDeps|x64.ActiveCfg = Release|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseDLLStaticDeps|x64.Build.0 = Release|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseDLLStaticDeps|x86.ActiveCfg = Release|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseDLLStaticDeps|x86.Build.0 = Release|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseLTO|x64.ActiveCfg = ReleaseLTO|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseLTO|x64.Build.0 = ReleaseLTO|x64
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseLTO|x86.ActiveCfg = ReleaseLTO|Win32
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}.ReleaseLTO|x86.Build.0 = ReleaseLTO|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.Debug|x64.ActiveCfg = Debug|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.Debug|x64.Build.0 = Debug|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.Debug|x86.ActiveCfg = Debug|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.Debug|x86.Build.0 = Debug|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.DebugDLL|x64.Build.0 = DebugDLL|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.DebugDLLStaticDeps|x64.ActiveCfg = Debug|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.DebugDLLStaticDeps|x64.Build.0 = Debug|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.DebugDLLStaticDeps|x86.ActiveCfg = Debug|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.DebugDLLStaticDeps|x86.Build.0 = Debug|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.Release|x64.ActiveCfg = Release|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.Release|x64.Build.0 = Release|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.Release|x86.ActiveCfg = Release|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.Release|x86.Build.0 = Release|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseDLLStaticDeps|x64.ActiveCfg = Release|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseDLLStaticDeps|x64.Build.0 = Release|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseDLLStaticDeps|x86.ActiveCfg = Release|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseDLLStaticDeps|x86.Build.0 = Release|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseLTO|x64.ActiveCfg = ReleaseLTO|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseLTO|x64.Build.0 = ReleaseLTO|x64
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseLTO|x86.ActiveCfg = ReleaseLTO|Win32
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2}.ReleaseLTO|x86.Build.0 = ReleaseLTO|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.Debug|x64.ActiveCfg = Debug|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.Debug|x64.Build.0 = Debug|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.Debug|x86.ActiveCfg = Debug|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.Debug|x86.Build.0 = Debug|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.DebugDLL|x64.ActiveCfg = DebugDLL|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.DebugDLL|x64.Build.0 = DebugDLL|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.DebugDLL|x86.ActiveCfg = DebugDLL|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.DebugDLL|x86.Build.0 = DebugDLL|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.DebugDLLStaticDeps|x64.ActiveCfg = Debug|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.DebugDLLStaticDeps|x64.Build.0 = Debug|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.DebugDLLStaticDeps|x86.ActiveCfg = Debug|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.DebugDLLStaticDeps|x86.Build.0 = Debug|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.Release|x64.ActiveCfg = Release|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.Release|x64.Build.0 = Release|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.Release|x86.ActiveCfg = Release|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.Release|x86.Build.0 = Release|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseDLL|x86.ActiveCfg = ReleaseDLL|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseDLL|x86.Build.0 = ReleaseDLL|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseDLLStaticDeps|x64.ActiveCfg = Release|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseDLLStaticDeps|x64.Build.0 = Release|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseDLLStaticDeps|x86.ActiveCfg = Release|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseDLLStaticDeps|x86.Build.0 = Release|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseLTO|x64.ActiveCfg = ReleaseLTO|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseLTO|x64.Build.0 = ReleaseLTO|x64
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseLTO|x86.ActiveCfg = ReleaseLTO|Win32
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}.ReleaseLTO|x86.Build.0 = ReleaseLTO|Win32
-+	EndGlobalSection
-+	GlobalSection(SolutionProperties) = preSolution
-+		HideSolutionNode = FALSE
-+	EndGlobalSection
-+	GlobalSection(NestedProjects) = preSolution
-+		{200F3D3C-8B84-46D8-953A-6C0EBD283B5C} = {653672DB-3E16-4696-981A-81294116434F}
-+		{070FEF2B-0C3F-4F33-9D3C-53C7330BF518} = {653672DB-3E16-4696-981A-81294116434F}
-+		{02B94302-23D6-43EF-8865-95CDE99D5DC2} = {653672DB-3E16-4696-981A-81294116434F}
-+		{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32} = {653672DB-3E16-4696-981A-81294116434F}
-+	EndGlobalSection
-+EndGlobal
-diff --git a/SMP/project_get_dependencies.bat b/SMP/project_get_dependencies.bat
-new file mode 100644
-index 0000000..91fd902
---- /dev/null
-+++ b/SMP/project_get_dependencies.bat
-@@ -0,0 +1,161 @@
-+@ECHO OFF
-+SETLOCAL EnableDelayedExpansion
-+
-+SET UPSTREAMURL=https://github.com/ShiftMediaProject
-+SET DEPENDENCIES=( ^
-+nettle, ^
-+zlib, ^
-+gmp ^
-+)
-+
-+REM Get passed in list of dependencies to skip
-+SET PASSDEPENDENCIES=%~1
-+
-+REM Check if git is installed and available
-+IF "%MSVC_VER%"=="" (
-+    git status >NUL 2>&1
-+    IF ERRORLEVEL 1 (
-+        ECHO A working copy of git was not found. To use this script you must first install git for windows.
-+        GOTO exitOnError
-+    )
-+)
-+
-+REM Store current directory and ensure working directory is the location of current .bat
-+SET CURRDIR="%CD%"
-+cd "%~dp0"
-+
-+REM Initialise error check value
-+SET ERROR=0
-+
-+cd ..\..
-+FOR %%I IN %DEPENDENCIES% DO (
-+    ECHO !PASSDEPENDENCIES! | FINDSTR /C:"%%I" >NUL 2>&1 || (
-+        REM Check if MSVC_VER environment variable is set
-+        IF "%MSVC_VER%"=="" (
-+            CALL :cloneOrUpdateRepo "%%I" || GOTO exitOnError
-+        ) ELSE (
-+            CALL :downloadLibs "%%I" || GOTO exitOnError
-+        )
-+    )
-+)
-+cd "%CURRDIR%" >NUL
-+GOTO exit
-+
-+REM Function to clone or update a repo
-+REM  cloneOrUpdateRepo: RepoName
-+REM    RepoName = Name of the repository
-+:cloneOrUpdateRepo
-+SET REPONAME=%~1
-+REM Check if the repo folder already exists
-+IF EXIST "%REPONAME%" (
-+    ECHO %REPONAME%: Existing folder found. Checking for updates...
-+    cd %REPONAME%
-+    REM Check if any updates are available
-+    FOR /f %%J IN ('git rev-parse HEAD') do set CURRHEAD=%%J
-+    FOR /f %%J IN ('git ls-remote origin HEAD') do set ORIGHEAD=%%J
-+    IF "!CURRHEAD!"=="!ORIGHEAD!" (
-+        ECHO %REPONAME%: Repository up to date.
-+    ) ELSE (
-+        REM Stash any uncommited changes then update from origin
-+        ECHO %REPONAME%: Updates available. Updating repository...
-+        git checkout master --quiet
-+        git stash --quiet
-+        git pull origin master --quiet -ff
-+        git stash pop --quiet
-+    )
-+    cd ..\
-+) ELSE (
-+    ECHO %REPONAME%: Existing folder not found. Cloning repository...
-+    REM Clone from the origin repo
-+    SET REPOURL=%UPSTREAMURL%/%REPONAME%.git
-+    git clone !REPOURL! --quiet
-+    IF ERRORLEVEL 1 (
-+        ECHO %REPONAME%: Git clone failed.
-+        GOTO exitOnError
-+    )
-+    REM Initialise autocrlf options to fix cross platform interoperation
-+    REM  Once updated the repo needs to be reset to correct the local line endings
-+    cd %REPONAME%
-+    git config --local core.autocrlf false
-+    git rm --cached -r . --quiet
-+    git reset --hard --quiet
-+    cd ..\
-+)
-+REM Add current repo to list of already passed dependencies
-+SET PASSDEPENDENCIES=%PASSDEPENDENCIES% %REPONAME%
-+REM Check if the repo itself has required dependencies
-+IF EXIST "%REPONAME%\SMP\project_get_dependencies.bat" (
-+    ECHO %REPONAME%: Found additional dependencies...
-+    ECHO.
-+    cd %REPONAME%\SMP
-+    project_get_dependencies.bat "!PASSDEPENDENCIES!" || EXIT /B 1
-+    cd ..\..
-+)
-+ECHO.
-+EXIT /B %ERRORLEVEL%
-+
-+REM Function to download existing prebuilt libraries
-+REM  downloadLibs: RepoName
-+REM    RepoName = Name of the repository
-+:downloadLibs
-+SET REPONAME=%~1
-+REM Get latest release
-+ECHO %REPONAME%: Getting latest release...
-+SET UPSTREAMAPIURL=%UPSTREAMURL:github.com=api.github.com/repos%
-+REM Check if secure OAuth is available
-+IF "%GITHUBTOKEN%" == "" (
-+    powershell -nologo -noprofile -command "$currentMaxTls = [Math]::Max([Net.ServicePointManager]::SecurityProtocol.value__,[Net.SecurityProtocolType]::Tls.value__);$newTlsTypes = [enum]::GetValues('Net.SecurityProtocolType') | ?{ $_ -gt $currentMaxTls };ForEach ($newTls in $newTlsTypes) { [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor $newTls };try { Invoke-RestMethod -Uri %UPSTREAMAPIURL%/%REPONAME%/releases/latest > latest.json } catch {exit 1}"
-+) ELSE (
-+    powershell -nologo -noprofile -command "$currentMaxTls = [Math]::Max([Net.ServicePointManager]::SecurityProtocol.value__,[Net.SecurityProtocolType]::Tls.value__);$newTlsTypes = [enum]::GetValues('Net.SecurityProtocolType') | ?{ $_ -gt $currentMaxTls };ForEach ($newTls in $newTlsTypes) { [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor $newTls };try { Invoke-RestMethod -Uri %UPSTREAMAPIURL%/%REPONAME%/releases/latest -Headers @{'Authorization' = 'token %GITHUBTOKEN%'} > latest.json } catch {exit 1}"
-+)
-+IF ERRORLEVEL 1 ( ECHO Failed getting latest %REPONAME% release & EXIT /B 1 )
-+REM Get tag for latest release
-+FOR /F "tokens=* USEBACKQ" %%F IN (`TYPE latest.json ^| FINDSTR /B "tag_name"`) DO SET TAG=%%F
-+FOR /F "tokens=2 delims=: " %%F in ("%TAG%") DO SET TAG=%%F
-+IF "%TAG%"=="" ( ECHO Failed getting latest %REPONAME% release tag information & EXIT /B 1 )
-+REM Get download name of latest release
-+SET LIBNAME=
-+FOR /F "tokens=* USEBACKQ" %%F IN (`TYPE latest.json ^| FINDSTR "name="`) DO ( SET TEMPF=%%F
-+    SET TEMPF=!TEMPF:*name=!
-+    IF "!TEMPF:~1,3!"=="lib" ( SET LIBNAME=!TEMPF:~1! )
-+)
-+FOR /F "tokens=1 delims=_" %%F in ("%LIBNAME%") DO SET LIBNAME=%%F
-+IF "%LIBNAME%"=="" ( ECHO Failed getting latest %REPONAME% release name information & EXIT /B 1 )
-+DEL /F /Q latest.json
-+REM Get the download location for the required tag
-+SET TAG2=%TAG:+=.%
-+SET DLURL=%UPSTREAMURL%/%REPONAME%/releases/download/%TAG%/%LIBNAME%_%TAG2%_msvc%MSVC_VER%.zip
-+REM Download a pre-built archive and extract
-+ECHO %REPONAME%: Downloading %LIBNAME%_%TAG%_msvc%MSVC_VER%.zip...
-+SET PREBUILTDIR=prebuilt
-+MKDIR %PREBUILTDIR% >NUL 2>&1
-+powershell -nologo -noprofile -command "$currentMaxTls = [Math]::Max([Net.ServicePointManager]::SecurityProtocol.value__,[Net.SecurityProtocolType]::Tls.value__);$newTlsTypes = [enum]::GetValues('Net.SecurityProtocolType') | ?{ $_ -gt $currentMaxTls };ForEach ($newTls in $newTlsTypes) { [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor $newTls };try { (New-Object Net.WebClient).DownloadFile('%DLURL%', '%PREBUILTDIR%\temp.zip') } catch {exit 1}"
-+IF ERRORLEVEL 1 ( ECHO Failed downloading %DLURL% & EXIT /B 1 )
-+powershell -nologo -noprofile -command "Add-Type -AssemblyName System.IO.Compression.FileSystem; $zip=[System.IO.Compression.ZipFile]::OpenRead('%PREBUILTDIR%\temp.zip'); foreach ($item in $zip.Entries) { try {$file=(Join-Path -Path .\%PREBUILTDIR% -ChildPath $item.FullName); $null=[System.IO.Directory]::CreateDirectory((Split-Path -Path $file)); [System.IO.Compression.ZipFileExtensions]::ExtractToFile($item,$file,$true)} catch {exit 1} }"
-+IF ERRORLEVEL 1 ( ECHO Failed extracting downloaded archive & EXIT /B 1 )
-+DEL /F /Q %PREBUILTDIR%\\temp.zip
-+ECHO.
-+EXIT /B %ERRORLEVEL%
-+
-+:exitOnError
-+cd "%CURRDIR%"
-+SET ERROR=1
-+
-+:exit
-+REM Directly exit if an AppVeyor build
-+IF NOT "%APPVEYOR%"=="" (
-+    GOTO return
-+)
-+REM Return the passed dependency list
-+(
-+    ENDLOCAL
-+    SET PASSDEPENDENCIES=%PASSDEPENDENCIES%
-+)
-+    
-+REM Check if this was launched from an existing terminal or directly from .bat
-+REM  If launched by executing the .bat then pause on completion
-+ECHO %CMDCMDLINE% | FINDSTR /L %COMSPEC% >NUL 2>&1
-+IF %ERRORLEVEL% == 0 IF "%~1"=="" PAUSE
-+
-+:return
-+EXIT /B %ERROR%
-\ No newline at end of file
-diff --git a/SMP/readme.txt b/SMP/readme.txt
-new file mode 100644
-index 0000000..fa73ea3
---- /dev/null
-+++ b/SMP/readme.txt
-@@ -0,0 +1,16 @@
-+
-+This is a small list of steps in order to build gnutls into a msvc DLL and lib file.
-+
-+The project contains Release and Debug builds for static lib files (Debug/Release)
-+  as well as dynamic shared dll files (DebugDLL/ReleaseDLL).
-+Choose whichever project configuration meets your requirements.
-+
-+
-+*** Building with YASM ***
-+
-+In order to build gmp using msvc you must first download and install YASM.
-+YASM is required to compile all gmp assembly files.
-+
-+1) Visual Studio YASM integration can be downloaded from https://github.com/ShiftMediaProject/VSYASM/releases/latest
-+
-+2) Once downloaded simply follow the install instructions included in the download.
-\ No newline at end of file
-diff --git a/SMP/stdio.h b/SMP/stdio.h
-new file mode 100644
-index 0000000..1f97403
---- /dev/null
-+++ b/SMP/stdio.h
-@@ -0,0 +1,147 @@
-+/*
-+ * MSVC stdio.h compatibility header.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+#ifndef SMP_STDIO_H
-+#define SMP_STDIO_H
-+
-+#ifndef _MSC_VER
-+#   include_next <stdio.h>
-+#else
-+
-+#include <crtversion.h>
-+#if _VC_CRT_MAJOR_VERSION >= 14
-+#   include <../ucrt/stdio.h>
-+#else
-+#   include <../include/stdio.h>
-+#   define snprintf _snprintf
-+#endif
-+
-+#include <unistd.h>
-+#include <limits.h>
-+#include <stdint.h>
-+#include <stdlib.h>
-+#include <errno.h>
-+#include <stdarg.h>
-+
-+#ifndef SSIZE_MAX
-+#   define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
-+#endif
-+
-+static __inline ssize_t getdelim(char **lineptr, size_t *n, int delimiter, FILE *fp)
-+{
-+    ssize_t result;
-+    size_t cur_len = 0;
-+
-+    if (lineptr == NULL || n == NULL || fp == NULL) {
-+        errno = EINVAL;
-+        return -1;
-+    }
-+    if (*lineptr == NULL || *n == 0) {
-+        char *new_lineptr;
-+        *n = 120;
-+        new_lineptr = (char *)realloc(*lineptr, *n);
-+        if (new_lineptr == NULL) {
-+            result = -1;
-+            return result;
-+        }
-+        *lineptr = new_lineptr;
-+    }
-+
-+    for (;;) {
-+        int i;
-+        i = getc(fp);
-+        if (i == EOF) {
-+            result = -1;
-+            break;
-+        }
-+        if (cur_len + 1 >= *n) {
-+            size_t needed_max = SSIZE_MAX < SIZE_MAX ? (size_t)SSIZE_MAX + 1 : SIZE_MAX;
-+            size_t needed = 2 * *n + 1;
-+            char *new_lineptr;
-+            if (needed_max < needed) {
-+                needed = needed_max;
-+            }
-+            if (cur_len + 1 >= needed) {
-+                result = -1;
-+                errno = EOVERFLOW;
-+                return result;
-+            }
-+            new_lineptr = (char *)realloc(*lineptr, needed);
-+            if (new_lineptr == NULL) {
-+                result = -1;
-+                return result;
-+            }
-+            *lineptr = new_lineptr;
-+            *n = needed;
-+        }
-+        (*lineptr)[cur_len] = i;
-+        cur_len++;
-+        if (i == delimiter) {
-+            break;
-+        }
-+    }
-+    (*lineptr)[cur_len] = '\0';
-+    result = cur_len ? cur_len : result;
-+
-+    return result;
-+}
-+
-+static __inline ssize_t getline(char **lineptr, size_t *n, FILE *stream)
-+{
-+    return getdelim(lineptr, n, '\n', stream);
-+}
-+
-+static __inline int vasprintf(char **res, char const *fmt, va_list args)
-+{
-+    int r, sz = _vscprintf(fmt, args);
-+    if (sz >= 0) {
-+        if ((*res = malloc(sz + 1)) == NULL) {
-+            return -1;
-+        }
-+        r = vsnprintf(*res, sz + 1, fmt, args);
-+        if ((r < 0) || (r > sz)) {
-+            free(*res);
-+            *res = NULL;
-+            return -1;
-+        }
-+        return r;
-+    } else {
-+        return -1;
-+    }
-+}
-+
-+static __inline int asprintf(char **strp, const char *fmt, ...)
-+{
-+    int r;
-+    va_list ap;
-+    va_start(ap, fmt);
-+    r = vasprintf(strp, fmt, ap);
-+    va_end(ap);
-+    return(r);
-+}
-+
-+#define fseeko _fseeki64
-+#define ftello _ftelli64
-+
-+#endif /* _MSC_VER */
-+
-+#endif /* SMP_STDIO_H */
-\ No newline at end of file
-diff --git a/SMP/string.h b/SMP/string.h
-new file mode 100644
-index 0000000..39854ea
---- /dev/null
-+++ b/SMP/string.h
-@@ -0,0 +1,130 @@
-+/*
-+ * MSVC string.h compatibility header.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+#ifndef SMP_STRING_H
-+#define SMP_STRING_H
-+
-+#ifndef _MSC_VER
-+#   include_next <string.h>
-+#else
-+
-+#include <crtversion.h>
-+#if _VC_CRT_MAJOR_VERSION >= 14
-+#   include <../ucrt/string.h>
-+#else
-+#   include <../include/string.h>
-+#   define strtoll _strtoi64
-+#endif
-+
-+static __inline void *memmem(const void *haystack, size_t haystack_len, const void *needle, size_t needle_len)
-+{
-+    const char *begin = haystack;
-+    const char *last_possible = begin + haystack_len - needle_len;
-+    const char *tail = needle;
-+    char point;
-+
-+    if (needle_len == 0)
-+        return (void *)begin;
-+
-+    if (haystack_len < needle_len)
-+        return NULL;
-+
-+    point = *tail++;
-+    for (; begin <= last_possible; begin++) {
-+        if (*begin == point && !memcmp(begin + 1, tail, needle_len - 1))
-+            return (void *)begin;
-+    }
-+
-+    return NULL;
-+}
-+
-+#include <stdint.h>
-+#include <ctype.h>
-+
-+#define  S_N    0x0
-+#define  S_I    0x3
-+#define  S_F    0x6
-+#define  S_Z    0x9
-+
-+#define  CMP    2
-+#define  LEN    3
-+
-+static __inline int strverscmp(const char *s1, const char *s2)
-+{
-+    const unsigned char *p1 = (const unsigned char *)s1;
-+    const unsigned char *p2 = (const unsigned char *)s2;
-+
-+    const uint8_t next_state[] =
-+    {
-+        /* state    x    d    0  */
-+        /* S_N */  S_N, S_I, S_Z,
-+        /* S_I */  S_N, S_I, S_I,
-+        /* S_F */  S_N, S_F, S_F,
-+        /* S_Z */  S_N, S_F, S_Z
-+    };
-+
-+    const int8_t result_type[] =
-+    {
-+        /* S_N */  CMP, CMP, CMP, CMP, LEN, CMP, CMP, CMP, CMP,
-+        /* S_I */  CMP, -1, -1, +1, LEN, LEN, +1, LEN, LEN,
-+        /* S_F */  CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
-+        /* S_Z */  CMP, +1, +1, -1, CMP, CMP, -1, CMP, CMP
-+    };
-+
-+    if (p1 == p2)
-+        return 0;
-+    unsigned char c1 = *p1++;
-+    unsigned char c2 = *p2++;
-+    int state = S_N + ((c1 == '0') + (isdigit(c1) != 0));
-+    int diff;
-+    while ((diff = c1 - c2) == 0) {
-+        if (c1 == '\0') {
-+            return diff;
-+        }
-+        state = next_state[state];
-+        c1 = *p1++;
-+        c2 = *p2++;
-+        state += (c1 == '0') + (isdigit(c1) != 0);
-+    }
-+    state = result_type[state * 3 + (((c2 == '0') + (isdigit(c2) != 0)))];
-+    switch (state) {
-+        case CMP:
-+            return diff;
-+        case LEN:
-+            while (isdigit(*p1++)) {
-+                if (!isdigit(*p2++)) {
-+                    return 1;
-+                }
-+            }
-+            return isdigit(*p2) ? -1 : diff;
-+        default:
-+            return state;
-+    }
-+}
-+
-+#define strtok_r strtok_s
-+#define strcasecmp _stricmp
-+#define strncasecmp _strnicmp
-+
-+#endif /* _MSC_VER */
-+
-+#endif /* SMP_STRING_H */
-\ No newline at end of file
-diff --git a/SMP/sys/socket.h b/SMP/sys/socket.h
-new file mode 100644
-index 0000000..9fff505
---- /dev/null
-+++ b/SMP/sys/socket.h
-@@ -0,0 +1,35 @@
-+/*
-+ * MSVC sys/socket.h compatibility header.
-+ * Copyright (c) 2015 Matthew Oliver
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+#ifndef SMP_SYS_SOCKET_H
-+#define SMP_SYS_SOCKET_H
-+
-+#ifndef _MSC_VER
-+#   include_next <sys/socket.h>
-+#else
-+
-+#include <Winsock2.h>
-+
-+#endif /* _MSC_VER */
-+
-+#endif /* SMP_SYS_SOCKET_H */
-\ No newline at end of file
-diff --git a/SMP/sys/stat.h b/SMP/sys/stat.h
-new file mode 100644
-index 0000000..e35d122
---- /dev/null
-+++ b/SMP/sys/stat.h
-@@ -0,0 +1,103 @@
-+/*
-+ * MSVC sys/stat.h compatibility header.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+#ifndef SMP_SYS_STAT_H
-+#define SMP_SYS_STAT_H
-+
-+#ifndef _MSC_VER
-+#   include_next <sys/stat.h>
-+#else
-+
-+#include <crtversion.h>
-+#if _VC_CRT_MAJOR_VERSION >= 14
-+#   include <../ucrt/sys/stat.h>
-+#else
-+#   include <../include/sys/stat.h>
-+#endif
-+
-+#ifndef S_ISBLK
-+#define S_ISBLK(mode)  (((mode) & S_IFMT) == S_IFBLK)
-+#endif
-+
-+#ifndef S_ISFIFO
-+#define S_ISFIFO(mode)  (((mode) & S_IFMT) == S_IFIFO)
-+#endif
-+
-+#ifndef S_ISCHR
-+#define S_ISCHR(mode)  (((mode) & S_IFMT) == S_IFCHR)
-+#endif
-+
-+#ifndef S_ISDIR
-+#define S_ISDIR(mode)  (((mode) & S_IFMT) == S_IFDIR)
-+#endif
-+
-+#ifndef S_ISREG
-+#define S_ISREG(mode)  (((mode) & S_IFMT) == S_IFREG)
-+#endif
-+
-+#ifndef S_ISLNK
-+#define S_ISLNK(mode)  (((mode) & S_IFMT) == S_IFLNK)
-+#endif
-+
-+#ifndef S_ISSOCK
-+#define S_ISSOCK(mode)  (((mode) & S_IFMT) == S_IFSOCK)
-+#endif
-+
-+#define	_S_ISUID        0004000
-+#define	_S_ISGID        0002000
-+#define	_S_ISVTX        0001000
-+
-+#define	S_ISUID        _S_ISUID
-+#define	S_ISGID        _S_ISGID
-+#define	S_ISVTX        _S_ISVTX
-+
-+#define	_S_IRWXU	     (_S_IREAD | _S_IWRITE | _S_IEXEC)
-+#define	_S_IXUSR	     _S_IEXEC
-+#define	_S_IWUSR	     _S_IWRITE
-+#define	_S_IRUSR	     _S_IREAD
-+#define	_S_IRWXG        (_S_IRWXU >> 3)
-+#define	_S_IXGRP        (_S_IXUSR >> 3)
-+#define	_S_IWGRP        (_S_IWUSR >> 3)
-+#define	_S_IRGRP        (_S_IRUSR >> 3)
-+#define	_S_IRWXO        (_S_IRWXG >> 3)
-+#define	_S_IXOTH        (_S_IXGRP >> 3)
-+#define	_S_IWOTH        (_S_IWGRP >> 3)
-+#define	_S_IROTH        (_S_IRGRP  >> 3)
-+
-+#ifndef S_IRWXU
-+#define	S_IRWXU	     _S_IRWXU
-+#define	S_IXUSR	     _S_IXUSR
-+#define	S_IWUSR	     _S_IWUSR
-+#define	S_IRUSR	     _S_IRUSR
-+#endif
-+#define	S_IRWXG        _S_IRWXG
-+#define	S_IXGRP        _S_IXGRP
-+#define	S_IWGRP        _S_IWGRP
-+#define	S_IRGRP        _S_IRGRP
-+#define	S_IRWXO        _S_IRWXO
-+#define	S_IXOTH        _S_IXOTH
-+#define	S_IWOTH        _S_IWOTH
-+#define	S_IROTH        _S_IROTH
-+
-+#endif /* _MSC_VER */
-+
-+#endif /* SMP_SYS_STAT_H */
-\ No newline at end of file
-diff --git a/SMP/sys/time.h b/SMP/sys/time.h
-new file mode 100644
-index 0000000..8d060ea
---- /dev/null
-+++ b/SMP/sys/time.h
-@@ -0,0 +1,72 @@
-+/*
-+ * MSVC sys/time.h compatibility header.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+#ifndef SMP_SYS_TIME_H
-+#define SMP_SYS_TIME_H
-+
-+#ifndef _MSC_VER
-+#   include_next <sys/time.h>
-+#else
-+
-+#include <time.h>
-+#include <winsock2.h>
-+#include <winapifamily.h>
-+
-+struct timezone
-+{
-+    int  tz_minuteswest; /* minutes W of Greenwich */
-+    int  tz_dsttime;     /* type of dst correction */
-+};
-+
-+static __inline int gettimeofday(struct timeval * tp, struct timezone * tzp)
-+{
-+    FILETIME    file_time;
-+    SYSTEMTIME  system_time;
-+    ULARGE_INTEGER ularge;
-+    static int tzflag;
-+
-+    GetSystemTime(&system_time);
-+    SystemTimeToFileTime(&system_time, &file_time);
-+    ularge.LowPart = file_time.dwLowDateTime;
-+    ularge.HighPart = file_time.dwHighDateTime;
-+
-+    tp->tv_sec = (long) ((ularge.QuadPart - 116444736000000000Ui64) / 10000000L);
-+    tp->tv_usec = (long) (system_time.wMilliseconds * 1000);
-+
-+#if !(defined(WINAPI_FAMILY_PARTITION) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP))
-+    if (NULL != tzp)
-+    {
-+        if (!tzflag)
-+        {
-+          _tzset();
-+          tzflag++;
-+        }
-+        tzp->tz_minuteswest = _timezone / 60;
-+        tzp->tz_dsttime = _daylight;
-+    }
-+#endif
-+    return 0;
-+}
-+
-+#endif /* _MSC_VER */
-+
-+#endif /* SMP_SYS_TIME_H */
-\ No newline at end of file
-diff --git a/SMP/test.bat b/SMP/test.bat
-new file mode 100644
-index 0000000..1836af3
---- /dev/null
-+++ b/SMP/test.bat
-@@ -0,0 +1,6 @@
-+mkdir "C:\Users\fner\Projects\ring-project\daemon\contrib\build\gnutls - 3.6.7\SMP\..\..\..\msvc\"\include
-+mkdir "C:\Users\fner\Projects\ring-project\daemon\contrib\build\gnutls - 3.6.7\SMP\..\..\..\msvc\"\include\gnutls
-+copy ..\lib\includes\gnutls\*.h "C:\Users\fner\Projects\ring-project\daemon\contrib\build\gnutls - 3.6.7\SMP\..\..\..\msvc\"\include\gnutls
-+copy .\gnutls\gnutls.h "C:\Users\fner\Projects\ring-project\daemon\contrib\build\gnutls - 3.6.7\SMP\..\..\..\msvc\"\include\gnutls
-+mkdir C:\Users\fner\Projects\ring-project\daemon\contrib\build\gnutls - 3.6.7\SMP\..\..\..\msvc\\licenses
-+copy ..\LICENSE C:\Users\fner\Projects\ring-project\daemon\contrib\build\gnutls - 3.6.7\SMP\..\..\..\msvc\\licenses\gnutls.txt
-\ No newline at end of file
-diff --git a/SMP/time.h b/SMP/time.h
-new file mode 100644
-index 0000000..05f55a9
---- /dev/null
-+++ b/SMP/time.h
-@@ -0,0 +1,47 @@
-+/*
-+ * MSVC time.h compatibility header.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+#ifndef SMP_TIME_H
-+#define SMP_TIME_H
-+
-+#ifndef _MSC_VER
-+#   include_next <time.h>
-+#else
-+
-+#include <crtversion.h>
-+#if _VC_CRT_MAJOR_VERSION >= 14
-+#   include <../ucrt/time.h>
-+#else
-+#   include <../include/time.h>
-+struct timespec
-+{
-+    time_t tv_sec;
-+    long int tv_nsec;
-+};
-+#endif
-+
-+#define gmtime_r(x,y) ((gmtime_s(y,x)==0)?x:NULL)
-+#define localtime_r ((localtime_s(y,x)==0)?x:NULL)
-+
-+#endif /* _MSC_VER */
-+
-+#endif /* SMP_TIME_H */
-\ No newline at end of file
-diff --git a/SMP/unistd.h b/SMP/unistd.h
-new file mode 100644
-index 0000000..cef9584
---- /dev/null
-+++ b/SMP/unistd.h
-@@ -0,0 +1,78 @@
-+/*
-+ * MSVC unistd.h compatibility header.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
-+#ifndef SMP_UNISTD_H
-+#define SMP_UNISTD_H
-+
-+#ifndef _MSC_VER
-+#   include_next <unistd.h>
-+#else
-+
-+#include <stdlib.h>
-+#include <process.h>
-+#include <direct.h>
-+#include <fcntl.h>
-+
-+#define R_OK    4       /* Test for read permission.  */
-+#define W_OK    2       /* Test for write permission.  */
-+//#define   X_OK    1       /* execute permission - unsupported in windows*/
-+#define F_OK    0       /* Test for existence.  */
-+
-+#ifndef STDIN_FILENO
-+#define STDIN_FILENO 0
-+#endif
-+
-+#ifndef STDOUT_FILENO
-+#define STDOUT_FILENO 1
-+#endif
-+
-+#ifndef STDERR_FILENO
-+#define STDERR_FILENO 2
-+#endif
-+
-+#define srandom srand
-+#define random rand
-+
-+#define inline __inline
-+typedef int mode_t;
-+#include <BaseTsd.h>
-+typedef SSIZE_T ssize_t;
-+
-+#include <winapifamily.h>
-+#if defined(WINAPI_FAMILY_PARTITION) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-+#include <winsock2.h>
-+#include <windows.h>
-+static __inline char *getcwd(char *buffer, size_t size)
-+{
-+    return NULL;
-+}
-+
-+typedef int pid_t;
-+static __inline pid_t getpid(void)
-+{
-+    return GetCurrentProcessId();
-+}
-+#endif
-+
-+#endif /* _MSC_VER */
-+
-+#endif /* SMP_UNISTD_H */
-\ No newline at end of file
-diff --git a/SMP/version.h b/SMP/version.h
-new file mode 100644
-index 0000000..9d44d0d
---- /dev/null
-+++ b/SMP/version.h
-@@ -0,0 +1,5 @@
-+/* Define to the version of this package. */
-+#define PACKAGE_VERSION "3.6.7"
-+
-+/* Version number of package */
-+#define VERSION "3.6.7"
--- 
-2.7.4
-
-
diff --git a/contrib/src/gnutls/gnutls-no-egd.patch b/contrib/src/gnutls/gnutls-no-egd.patch
deleted file mode 100644
index d4b5f093e7..0000000000
--- a/contrib/src/gnutls/gnutls-no-egd.patch
+++ /dev/null
@@ -1,107 +0,0 @@
- {a => b}/lib/nettle/Makefile.am  |  2 +-
- {a => b}/lib/nettle/Makefile.in  | 11 +++++------
- {a => b}/lib/nettle/rnd-common.c |  7 +++++--
- 3 files changed, 11 insertions(+), 9 deletions(-)
-
-diff --git a/lib/nettle/Makefile.am b/lib/nettle/Makefile.am
-index e84ed1f..4767663 100644
---- a/lib/nettle/Makefile.am
-+++ b/lib/nettle/Makefile.am
-@@ -38,7 +38,7 @@ endif
- 
- noinst_LTLIBRARIES = libcrypto.la
- 
--libcrypto_la_SOURCES = pk.c mpi.c mac.c cipher.c init.c egd.c egd.h \
-+libcrypto_la_SOURCES = pk.c mpi.c mac.c cipher.c init.c \
- 	gnettle.h rnd-common.h rnd-common.c \
- 	rnd.c
- 
-diff --git a/lib/nettle/Makefile.in b/lib/nettle/Makefile.in
-index 88ae7cf..6ddd536 100644
---- a/lib/nettle/Makefile.in
-+++ b/lib/nettle/Makefile.in
-@@ -221,8 +221,8 @@ CONFIG_CLEAN_FILES =
- CONFIG_CLEAN_VPATH_FILES =
- LTLIBRARIES = $(noinst_LTLIBRARIES)
- libcrypto_la_LIBADD =
--am__libcrypto_la_SOURCES_DIST = pk.c mpi.c mac.c cipher.c init.c egd.c \
--	egd.h gnettle.h rnd-common.h rnd-common.c rnd.c rnd-fips.c \
-+am__libcrypto_la_SOURCES_DIST = pk.c mpi.c mac.c cipher.c init.c \
-+	gnettle.h rnd-common.h rnd-common.c rnd.c rnd-fips.c \
- 	int/drbg-aes-self-test.c int/dsa-fips.h \
- 	int/dsa-keygen-fips186.c int/dsa-validate.c \
- 	int/provable-prime.c int/drbg-aes.c int/drbg-aes.h \
-@@ -233,7 +233,7 @@ am__dirstamp = $(am__leading_dot)dirstamp
- @ENABLE_FIPS140_TRUE@	int/dsa-keygen-fips186.lo \
- @ENABLE_FIPS140_TRUE@	int/dsa-validate.lo int/provable-prime.lo \
- @ENABLE_FIPS140_TRUE@	int/drbg-aes.lo int/rsa-keygen-fips186.lo
--am_libcrypto_la_OBJECTS = pk.lo mpi.lo mac.lo cipher.lo init.lo egd.lo \
-+am_libcrypto_la_OBJECTS = pk.lo mpi.lo mac.lo cipher.lo init.lo \
- 	rnd-common.lo rnd.lo $(am__objects_1)
- libcrypto_la_OBJECTS = $(am_libcrypto_la_OBJECTS)
- AM_V_lt = $(am__v_lt_@AM_V@)
-@@ -1279,8 +1279,8 @@ AM_CPPFLAGS = -I$(srcdir)/int -I$(srcdir)/../../gl \
- 	-I$(builddir)/../includes -I$(builddir)/../../gl \
- 	-I$(srcdir)/.. $(am__append_1)
- noinst_LTLIBRARIES = libcrypto.la
--libcrypto_la_SOURCES = pk.c mpi.c mac.c cipher.c init.c egd.c egd.h \
--	gnettle.h rnd-common.h rnd-common.c rnd.c $(am__append_2)
-+libcrypto_la_SOURCES = pk.c mpi.c mac.c cipher.c init.c gnettle.h \
-+	rnd-common.h rnd-common.c rnd.c $(am__append_2)
- all: all-am
- 
- .SUFFIXES:
-@@ -1355,7 +1355,6 @@ distclean-compile:
- 	-rm -f *.tab.c
- 
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cipher.Plo@am__quote@
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/egd.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mac.Plo@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi.Plo@am__quote@
-diff --git a/lib/nettle/rnd-common.c b/lib/nettle/rnd-common.c
-index c69ff3b..80b5f32 100644
---- a/lib/nettle/rnd-common.c
-+++ b/lib/nettle/rnd-common.c
-@@ -139,7 +139,7 @@ void _rnd_system_entropy_deinit(void)
- #include <sys/time.h>
- #include <fcntl.h>
- #include <locks.h>
--#include "egd.h"
-+//#include "egd.h"
- 
- static int _gnutls_urandom_fd = -1;
- static mode_t _gnutls_urandom_fd_mode = 0;
-@@ -208,6 +208,7 @@ static int _rnd_get_system_entropy_urandom(void* _rnd, size_t size)
- 	return 0;
- }
- 
-+#if 0
- static
- int _rnd_get_system_entropy_egd(void* _rnd, size_t size)
- {
-@@ -232,6 +233,7 @@ int _rnd_get_system_entropy_egd(void* _rnd, size_t size)
- 
- 	return 0;
- }
-+#endif
- 
- int _rnd_system_entropy_check(void)
- {
-@@ -268,6 +270,7 @@ int _rnd_system_entropy_init(void)
- 
- 	return 0;
- fallback:
-+#if 0
- 	_gnutls_urandom_fd = _rndegd_connect_socket();
- 	if (_gnutls_urandom_fd < 0) {
- 		_gnutls_debug_log("Cannot open egd socket!\n");
-@@ -281,7 +284,7 @@ fallback:
- 	}
- 
- 	_rnd_get_system_entropy = _rnd_get_system_entropy_egd;
--	
-+#endif
- 	return 0;
- }
- 
diff --git a/contrib/src/gnutls/gnutls-uwp.patch b/contrib/src/gnutls/gnutls-uwp.patch
deleted file mode 100644
index 6d7f422479..0000000000
--- a/contrib/src/gnutls/gnutls-uwp.patch
+++ /dev/null
@@ -1,196 +0,0 @@
---- a/lib/nettle/sysrng-windows.c
-+++ b/lib/nettle/sysrng-windows.c
-@@ -46,19 +46,19 @@
-  */
- 
- #include <windows.h>
--#include <wincrypt.h>
-+#include <bcrypt.h>
- 
--static HCRYPTPROV device_fd = 0;
-+static BCRYPT_ALG_HANDLE bdevice_fd = 0;
- 
- static
- int _rnd_get_system_entropy_win32(void* rnd, size_t size)
- {
--	if (!CryptGenRandom(device_fd, (DWORD) size, rnd)) {
--		_gnutls_debug_log("Error in CryptGenRandom: %d\n",
--					(int)GetLastError());
-+	NTSTATUS ret = BCryptGenRandom(bdevice_fd, rnd, (ULONG)size, 0);
-+	if (!(BCRYPT_SUCCESS(ret))) {
-+		_gnutls_debug_log("Error in BCryptGenRandom: %d\n",
-+			(int)GetLastError());
- 		return GNUTLS_E_RANDOM_DEVICE_ERROR;
- 	}
--
- 	return 0;
- }
- 
-@@ -69,19 +69,19 @@ int _rnd_system_entropy_check(void)
- 
- int _rnd_system_entropy_init(void)
- {
--	if (!CryptAcquireContext
--		(&device_fd, NULL, NULL, PROV_RSA_FULL,
--		 CRYPT_SILENT | CRYPT_VERIFYCONTEXT)) {
-+	NTSTATUS ret = BCryptOpenAlgorithmProvider(&bdevice_fd,
-+		BCRYPT_RNG_ALGORITHM, MS_PRIMITIVE_PROVIDER,
-+		0);
-+	if (!(BCRYPT_SUCCESS(ret))) {
- 		_gnutls_debug_log
--			("error in CryptAcquireContext!\n");
-+		("error in BCryptOpenAlgorithmProvider!\n");
- 		return GNUTLS_E_RANDOM_DEVICE_ERROR;
- 	}
--
- 	_rnd_get_system_entropy = _rnd_get_system_entropy_win32;
- 	return 0;
- }
- 
- void _rnd_system_entropy_deinit(void)
- {
--	CryptReleaseContext(device_fd, 0);
-+	BCryptCloseAlgorithmProvider(bdevice_fd, 0);
- }
---- a/lib/opencdk/misc.c
-+++ b/lib/opencdk/misc.c
-@@ -149,6 +149,12 @@ int _cdk_check_args(int overwrite, const char *in, const char *out)
- }
- 
- #ifdef _WIN32
-+#if (_WIN32_WINNT >= 0x0600)
-+FILE *_cdk_tmpfile(void)
-+{
-+	return NULL;
-+}
-+#else
- #include <io.h>
- #include <fcntl.h>
- 
-@@ -183,6 +189,7 @@ FILE *_cdk_tmpfile(void)
- 	_close(fd);
- 	return NULL;
- }
-+#endif /*_WIN32*/
- #else
- FILE *_cdk_tmpfile(void)
- {
---- a/lib/system.c
-+++ b/lib/system.c
-@@ -34,7 +34,7 @@
- 
- #ifdef _WIN32
- # include <windows.h>
--# include <wincrypt.h>
-+# include <bcrypt.h>
- # if defined(NEED_CERT_ENUM_CRLS)
- CertEnumCRLsInStoreFunc pCertEnumCRLsInStore;
- static HMODULE Crypt32_dll;
---- a/lib/system/certs.c
-+++ b/lib/system/certs.c
-@@ -161,9 +161,17 @@ int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags,
- 		gnutls_datum_t data;
- 
- 		if (i == 0)
--			store = CertOpenSystemStore(0, "ROOT");
-+			store = CertOpenStore(CERT_STORE_PROV_SYSTEM_A,
-+				X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
-+				0,
-+				CERT_SYSTEM_STORE_CURRENT_USER,
-+				(const void*)"ROOT");
- 		else
--			store = CertOpenSystemStore(0, "CA");
-+			store = CertOpenStore(CERT_STORE_PROV_SYSTEM_A,
-+				X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
-+				0,
-+				CERT_SYSTEM_STORE_CURRENT_USER,
-+				(const void*)"CA");
- 
- 		if (store == NULL)
- 			return GNUTLS_E_FILE_ERROR;
---- a/lib/system/keys-win.c
-+++ b/lib/system/keys-win.c
-@@ -41,7 +41,7 @@
- #error should not be included
- #endif
- 
--#include <wincrypt.h>
-+#include <bcrypt.h>
- #include <winbase.h>
- 
- #define DYN_NCRYPT
-@@ -647,7 +647,11 @@ int _gnutls_privkey_import_system_url(gnutls_privkey_t pkey, const char *url)
- 	blob.cbData = id_size;
- 	blob.pbData = id;
- 
--	store = CertOpenSystemStore(0, "MY");
-+	store = CertOpenStore(CERT_STORE_PROV_SYSTEM_A,
-+		X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
-+		0,
-+		CERT_SYSTEM_STORE_CURRENT_USER,
-+		(const void*)"MY");
- 	if (store == NULL) {
- 		gnutls_assert();
- 		ret = GNUTLS_E_FILE_ERROR;
-@@ -884,7 +888,11 @@ int _gnutls_x509_crt_import_system_url(gnutls_x509_crt_t crt, const char *url)
- 	blob.cbData = id_size;
- 	blob.pbData = id;
- 
--	store = CertOpenSystemStore(0, "MY");
-+	store = CertOpenStore(CERT_STORE_PROV_SYSTEM_A,
-+		X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
-+		0,
-+		CERT_SYSTEM_STORE_CURRENT_USER,
-+		(const void*)"MY");
- 	if (store == NULL) {
- 		gnutls_assert();
- 		ret = GNUTLS_E_FILE_ERROR;
-@@ -1132,7 +1140,11 @@ gnutls_system_key_iter_get_info(gnutls_system_key_iter_t * iter,
- 		if (*iter == NULL)
- 			return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
- 
--		(*iter)->store = CertOpenSystemStore(0, "MY");
-+		(*iter)->store = CertOpenStore(CERT_STORE_PROV_SYSTEM_A,
-+			X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
-+			0,
-+			CERT_SYSTEM_STORE_CURRENT_USER,
-+			(const void*)"MY");
- 		if ((*iter)->store == NULL) {
- 			gnutls_free(*iter);
- 			*iter = NULL;
-@@ -1205,7 +1217,11 @@ int gnutls_system_key_delete(const char *cert_url, const char *key_url)
- 	blob.cbData = id_size;
- 	blob.pbData = id;
- 
--	store = CertOpenSystemStore(0, "MY");
-+	store = CertOpenStore(CERT_STORE_PROV_SYSTEM_A,
-+		X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
-+		0,
-+		CERT_SYSTEM_STORE_CURRENT_USER,
-+		(const void*)"MY");
- 	if (store != NULL) {
- 		do {
- 			cert = CertFindCertificateInStore(store,
-@@ -1426,7 +1442,7 @@ int _gnutls_system_key_init(void)
- 	int ret;
- 
- #ifdef DYN_NCRYPT
--	ncrypt_lib = LoadLibraryA("ncrypt.dll");
-+	ncrypt_lib = LoadPackagedLibrary("ncrypt.dll", 0);
- 	if (ncrypt_lib == NULL) {
- 		return gnutls_assert_val(GNUTLS_E_CRYPTO_INIT_FAILED);
- 	}
---- a/lib/x509.c
-+++ b/lib/x509.c
-@@ -49,7 +49,7 @@
- #include "system-keys.h"
- #include "urls.h"
- #ifdef _WIN32
--#include <wincrypt.h>
-+#include <bcrypt.h>
- #endif
- 
- /*
--- 
-2.10.2.windows.1
-
diff --git a/contrib/src/gnutls/gnutls_tasn.patch b/contrib/src/gnutls/gnutls_tasn.patch
deleted file mode 100644
index 32eba778ab..0000000000
--- a/contrib/src/gnutls/gnutls_tasn.patch
+++ /dev/null
@@ -1,423 +0,0 @@
-diff --git a/lib/minitasn1/Makefile.in b/lib/minitasn1/Makefile.in
-index fe3586d..b4f2d8c 100644
---- a/lib/minitasn1/Makefile.in
-+++ b/lib/minitasn1/Makefile.in
-@@ -137,6 +137,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
- 	$(top_srcdir)/src/gl/m4/gnulib-comp.m4 \
- 	$(top_srcdir)/src/gl/m4/hostent.m4 \
- 	$(top_srcdir)/src/gl/m4/intl-thread-locale.m4 \
-+	$(top_srcdir)/src/gl/m4/intlmacosx.m4 \
- 	$(top_srcdir)/src/gl/m4/inttostr.m4 \
- 	$(top_srcdir)/src/gl/m4/ioctl.m4 \
- 	$(top_srcdir)/src/gl/m4/isblank.m4 \
-@@ -163,6 +164,7 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
- 	$(top_srcdir)/src/gl/m4/putenv.m4 \
- 	$(top_srcdir)/src/gl/m4/raise.m4 \
- 	$(top_srcdir)/src/gl/m4/sched_h.m4 \
-+	$(top_srcdir)/src/gl/m4/sched_yield.m4 \
- 	$(top_srcdir)/src/gl/m4/select.m4 \
- 	$(top_srcdir)/src/gl/m4/semaphore.m4 \
- 	$(top_srcdir)/src/gl/m4/servent.m4 \
-@@ -188,7 +190,6 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
- 	$(top_srcdir)/src/gl/m4/tzset.m4 \
- 	$(top_srcdir)/src/gl/m4/ungetc.m4 \
- 	$(top_srcdir)/src/gl/m4/usleep.m4 \
--	$(top_srcdir)/src/gl/m4/visibility.m4 \
- 	$(top_srcdir)/src/gl/m4/xalloc.m4 \
- 	$(top_srcdir)/src/gl/m4/yield.m4 \
- 	$(top_srcdir)/src/libopts/m4/libopts.m4 \
-@@ -217,11 +218,10 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
- 	$(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getline.m4 \
- 	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \
- 	$(top_srcdir)/m4/gnulib-common.m4 \
--	$(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/gtk-doc.m4 \
--	$(top_srcdir)/m4/guile.m4 $(top_srcdir)/m4/hooks.m4 \
--	$(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \
--	$(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inet_ntop.m4 \
--	$(top_srcdir)/m4/inet_pton.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-+	$(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/guile.m4 \
-+	$(top_srcdir)/m4/hooks.m4 $(top_srcdir)/m4/host-cpu-c-abi.m4 \
-+	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/include_next.m4 \
-+	$(top_srcdir)/m4/inet_ntop.m4 $(top_srcdir)/m4/inet_pton.m4 \
- 	$(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes.m4 \
- 	$(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/largefile.m4 \
- 	$(top_srcdir)/m4/ld-output-def.m4 \
-@@ -265,11 +265,11 @@ am__aclocal_m4_deps = $(top_srcdir)/lib/unistring/m4/gnulib-comp.m4 \
- 	$(top_srcdir)/m4/time_r.m4 $(top_srcdir)/m4/unistd_h.m4 \
- 	$(top_srcdir)/m4/valgrind-tests.m4 \
- 	$(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \
--	$(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/warn-on-use.m4 \
--	$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/m4/wchar_h.m4 \
--	$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
--	$(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/zzgnulib.m4 \
--	$(top_srcdir)/configure.ac
-+	$(top_srcdir)/m4/visibility.m4 $(top_srcdir)/m4/vsnprintf.m4 \
-+	$(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \
-+	$(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \
-+	$(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xsize.m4 \
-+	$(top_srcdir)/m4/zzgnulib.m4 $(top_srcdir)/configure.ac
- am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- 	$(ACLOCAL_M4)
- DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -722,6 +722,7 @@ GNULIB_SYMLINK = @GNULIB_SYMLINK@
- GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
- GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
- GNULIB_TIMEGM = @GNULIB_TIMEGM@
-+GNULIB_TIMESPEC_GET = @GNULIB_TIMESPEC_GET@
- GNULIB_TIME_R = @GNULIB_TIME_R@
- GNULIB_TIME_RZ = @GNULIB_TIME_RZ@
- GNULIB_TMPFILE = @GNULIB_TMPFILE@
-@@ -787,12 +788,6 @@ GNULIB__EXIT = @GNULIB__EXIT@
- GNUTLS_LIBS_PRIVATE = @GNUTLS_LIBS_PRIVATE@
- GNUTLS_REQUIRES_PRIVATE = @GNUTLS_REQUIRES_PRIVATE@
- GREP = @GREP@
--GTKDOC_CHECK = @GTKDOC_CHECK@
--GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@
--GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
--GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
--GTKDOC_MKPDF = @GTKDOC_MKPDF@
--GTKDOC_REBASE = @GTKDOC_REBASE@
- GUILD = @GUILD@
- GUILE = @GUILE@
- GUILE_CFLAGS = @GUILE_CFLAGS@
-@@ -1088,6 +1083,7 @@ HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@
- HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
- HAVE_SYS_UIO_H = @HAVE_SYS_UIO_H@
- HAVE_TIMEGM = @HAVE_TIMEGM@
-+HAVE_TIMESPEC_GET = @HAVE_TIMESPEC_GET@
- HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@
- HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@
- HAVE_UNISTD_H = @HAVE_UNISTD_H@
-@@ -1142,7 +1138,6 @@ HAVE__EXIT = @HAVE__EXIT@
- HOGWEED_CFLAGS = @HOGWEED_CFLAGS@
- HOGWEED_LIBS = @HOGWEED_LIBS@
- HOSTENT_LIB = @HOSTENT_LIB@
--HTML_DIR = @HTML_DIR@
- INCLUDE_NEXT = @INCLUDE_NEXT@
- INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
- INET_NTOP_LIB = @INET_NTOP_LIB@
-@@ -1175,6 +1170,8 @@ LIBICONV = @LIBICONV@
- LIBIDN2_CFLAGS = @LIBIDN2_CFLAGS@
- LIBIDN2_LIBS = @LIBIDN2_LIBS@
- LIBINTL = @LIBINTL@
-+LIBKCAPI_CFLAGS = @LIBKCAPI_CFLAGS@
-+LIBKCAPI_LIBS = @LIBKCAPI_LIBS@
- LIBMULTITHREAD = @LIBMULTITHREAD@
- LIBOBJS = @LIBOBJS@
- LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
-@@ -1212,6 +1209,7 @@ LIB_SETLOCALE_NULL = @LIB_SETLOCALE_NULL@
- LIMITS_H = @LIMITS_H@
- LIPO = @LIPO@
- LN_S = @LN_S@
-+LOCALENAME_ENHANCE_LOCALE_FUNCS = @LOCALENAME_ENHANCE_LOCALE_FUNCS@
- LOCALE_FR = @LOCALE_FR@
- LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@
- LOCALE_JA = @LOCALE_JA@
-@@ -1249,8 +1247,8 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
- MINOR_VERSION = @MINOR_VERSION@
- MKDIR_P = @MKDIR_P@
- MSGFMT = @MSGFMT@
-+MSGFMT_015 = @MSGFMT_015@
- MSGMERGE = @MSGMERGE@
--MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@
- NETINET_IN_H = @NETINET_IN_H@
- NETTLE_CFLAGS = @NETTLE_CFLAGS@
- NETTLE_LIBS = @NETTLE_LIBS@
-@@ -1377,6 +1375,7 @@ REPLACE_FCLOSE = @REPLACE_FCLOSE@
- REPLACE_FCNTL = @REPLACE_FCNTL@
- REPLACE_FDOPEN = @REPLACE_FDOPEN@
- REPLACE_FFLUSH = @REPLACE_FFLUSH@
-+REPLACE_FFSLL = @REPLACE_FFSLL@
- REPLACE_FOPEN = @REPLACE_FOPEN@
- REPLACE_FPRINTF = @REPLACE_FPRINTF@
- REPLACE_FPURGE = @REPLACE_FPURGE@
-@@ -1430,7 +1429,9 @@ REPLACE_MEMCHR = @REPLACE_MEMCHR@
- REPLACE_MEMMEM = @REPLACE_MEMMEM@
- REPLACE_MKDIR = @REPLACE_MKDIR@
- REPLACE_MKFIFO = @REPLACE_MKFIFO@
-+REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@
- REPLACE_MKNOD = @REPLACE_MKNOD@
-+REPLACE_MKNODAT = @REPLACE_MKNODAT@
- REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
- REPLACE_MKTIME = @REPLACE_MKTIME@
- REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
-@@ -1590,6 +1591,7 @@ SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@
- SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
- SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
- TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
-+TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@
- TROUSERS_LIB = @TROUSERS_LIB@
- TSS_CFLAGS = @TSS_CFLAGS@
- TSS_LIBS = @TSS_LIBS@
-@@ -1689,6 +1691,7 @@ program_transform_name = @program_transform_name@
- psdir = @psdir@
- pyexecdir = @pyexecdir@
- pythondir = @pythondir@
-+runstatedir = @runstatedir@
- sbindir = @sbindir@
- sharedstatedir = @sharedstatedir@
- srcdir = @srcdir@
-diff --git a/lib/minitasn1/coding.c b/lib/minitasn1/coding.c
-index 245ea64..e76114d 100644
---- a/lib/minitasn1/coding.c
-+++ b/lib/minitasn1/coding.c
-@@ -265,9 +265,6 @@ _asn1_time_der (unsigned char *str, int str_len, unsigned char *der,
-   int len_len;
-   int max_len;
- 
--  if (der == NULL)
--    return ASN1_VALUE_NOT_VALID;
--
-   max_len = *der_len;
- 
-   asn1_length_der (str_len, (max_len > 0) ? der : NULL, &len_len);
-@@ -959,9 +956,6 @@ _asn1_ordering_set_of (unsigned char *der, int der_len, asn1_node node)
-   unsigned char *out = NULL;
-   int err;
- 
--  if (der == NULL)
--    return ASN1_VALUE_NOT_VALID;
--
-   counter = 0;
- 
-   if (type_field (node->type) != ASN1_ETYPE_SET_OF)
-@@ -1084,6 +1078,7 @@ asn1_der_coding (asn1_node_const element, const char *name, void *ider, int *len
-   int counter, counter_old, len2, len3, move, max_len, max_len_old;
-   int err;
-   unsigned char *der = ider;
-+  unsigned char dummy;
- 
-   if (ErrorDescription)
-     ErrorDescription[0] = 0;
-@@ -1204,7 +1199,7 @@ asn1_der_coding (asn1_node_const element, const char *name, void *ider, int *len
- 		  goto error;
- 		}
- 	      len2 = max_len;
--	      err = _asn1_object_id_der ((char*)p->value, der + counter, &len2);
-+	      err = _asn1_object_id_der ((char*)p->value, der ? der + counter : &dummy, &len2);
- 	      if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR)
- 		goto error;
- 
-@@ -1222,7 +1217,7 @@ asn1_der_coding (asn1_node_const element, const char *name, void *ider, int *len
- 	      goto error;
- 	    }
- 	  len2 = max_len;
--	  err = _asn1_time_der (p->value, p->value_len, der + counter, &len2);
-+	  err = _asn1_time_der (p->value, p->value_len, der ? der + counter : &dummy, &len2);
- 	  if (err != ASN1_SUCCESS && err != ASN1_MEM_ERROR)
- 	    goto error;
- 
-@@ -1290,7 +1285,7 @@ asn1_der_coding (asn1_node_const element, const char *name, void *ider, int *len
- 	      p->tmp_ival = 0;
- 	      if ((type_field (p->type) == ASN1_ETYPE_SET) && (max_len >= 0))
- 		{
--		  err = _asn1_ordering_set (der + len2, counter - len2, p);
-+		  err = _asn1_ordering_set (der ? der + len2 : &dummy, counter - len2, p);
- 		  if (err != ASN1_SUCCESS)
- 		    goto error;
- 		}
-@@ -1331,7 +1326,7 @@ asn1_der_coding (asn1_node_const element, const char *name, void *ider, int *len
- 	      if ((type_field (p->type) == ASN1_ETYPE_SET_OF)
- 		  && (counter - len2 > 0) && (max_len >= 0))
- 		{
--		  err = _asn1_ordering_set_of (der + len2, counter - len2, p);
-+		  err = _asn1_ordering_set_of (der ? der + len2 : &dummy, counter - len2, p);
- 		  if (err != ASN1_SUCCESS)
- 		    goto error;
- 		}
-diff --git a/lib/minitasn1/decoding.c b/lib/minitasn1/decoding.c
-index ff04eb7..5c26c67 100644
---- a/lib/minitasn1/decoding.c
-+++ b/lib/minitasn1/decoding.c
-@@ -32,7 +32,7 @@
- #include <element.h>
- #include <limits.h>
- #include <intprops.h>
--#include <c-ctype.h>
-+#include "c-ctype.h"
- 
- #ifdef DEBUG
- # define warn() fprintf(stderr, "%s: %d\n", __func__, __LINE__)
-diff --git a/lib/minitasn1/gstr.c b/lib/minitasn1/gstr.c
-index e91a3a1..50bf6e4 100644
---- a/lib/minitasn1/gstr.c
-+++ b/lib/minitasn1/gstr.c
-@@ -40,7 +40,7 @@ _asn1_str_cat (char *dest, size_t dest_tot_size, const char *src)
-     }
-   else
-     {
--      if (dest_tot_size - dest_size > 0)
-+      if (dest_tot_size > dest_size)
- 	{
- 	  strncat (dest, src, (dest_tot_size - dest_size) - 1);
- 	  dest[dest_tot_size - 1] = 0;
-diff --git a/lib/minitasn1/libtasn1.h b/lib/minitasn1/libtasn1.h
-index 6fd7a30..f8818e1 100644
---- a/lib/minitasn1/libtasn1.h
-+++ b/lib/minitasn1/libtasn1.h
-@@ -21,12 +21,8 @@
-  */
- 
- /**
-- * libtasn1:Short_Description:
-- *
-- * GNU ASN.1 library
-- */
--/**
-- * libtasn1:Long_Description:
-+ * SECTION:libtasn1
-+ * @short_description: GNU ASN.1 library
-  *
-  * The Libtasn1 library provides Abstract Syntax Notation One (ASN.1, as
-  * specified by the X.680 ITU-T recommendation) parsing and structures
-@@ -207,13 +203,12 @@ typedef const asn1_node_st *asn1_node_const;
-  *
-  * For the on-disk format of ASN.1 trees, created by asn1_parser2array().
-  */
--struct asn1_static_node_st
-+typedef struct asn1_static_node_st
- {
-   const char *name;		/* Node name */
-   unsigned int type;		/* Node type */
-   const void *value;		/* Node value */
--};
--typedef struct asn1_static_node_st asn1_static_node;
-+} asn1_static_node;
- 
- /* List of constants for field type of node_asn  */
- #define ASN1_ETYPE_INVALID        0
-@@ -498,7 +493,7 @@ extern ASN1_API int
-  *
-  * Deprecated: 3.0: Use int instead.
-  */
--typedef int asn1_retCode;
-+typedef int asn1_retCode _ASN1_GCC_ATTR_DEPRECATED;
- 
- /**
-  * node_asn_struct:
-@@ -507,7 +502,13 @@ typedef int asn1_retCode;
-  *
-  * Deprecated: 3.0: Use #asn1_node instead.
-  */
-+#ifndef ASN1_DISABLE_DEPRECATED
-+#if _ASN1_GCC_VERSION >= 30100
-+#define node_asn_struct _Pragma ("GCC warning \"'node_asn_struct' macro is deprecated, use 'asn1_node' instead.\"") asn1_node_st
-+#else
- #define node_asn_struct asn1_node_st
-+#endif
-+#endif /* !ASN1_DISABLE_DEPRECATED */
- 
- /**
-  * node_asn:
-@@ -516,7 +517,13 @@ typedef int asn1_retCode;
-  *
-  * Deprecated: 3.0: Use #asn1_node instead.
-  */
-+#ifndef ASN1_DISABLE_DEPRECATED
-+#if _ASN1_GCC_VERSION >= 30100
-+#define node_asn _Pragma ("GCC warning \"'node_asn' macro is deprecated, use 'asn1_node' instead.\"") asn1_node_st
-+#else
- #define node_asn asn1_node_st
-+#endif
-+#endif /* !ASN1_DISABLE_DEPRECATED */
- 
- /**
-  * ASN1_TYPE:
-@@ -525,7 +532,13 @@ typedef int asn1_retCode;
-  *
-  * Deprecated: 3.0: Use #asn1_node instead.
-  */
-+#ifndef ASN1_DISABLE_DEPRECATED
-+#if _ASN1_GCC_VERSION >= 30100
-+#define ASN1_TYPE _Pragma ("GCC warning \"'ASN1_TYPE' macro is deprecated, use 'asn1_node' instead.\"") asn1_node
-+#else
- #define ASN1_TYPE asn1_node
-+#endif
-+#endif /* !ASN1_DISABLE_DEPRECATED */
- 
- /**
-  * ASN1_TYPE_EMPTY:
-@@ -534,7 +547,13 @@ typedef int asn1_retCode;
-  *
-  * Deprecated: 3.0: Use NULL instead.
-  */
-+#ifndef ASN1_DISABLE_DEPRECATED
-+#if _ASN1_GCC_VERSION >= 30100
-+#define ASN1_TYPE_EMPTY _Pragma ("GCC warning \"'ASN1_TYPE_EMPTY' macro is deprecated, use 'NULL' instead.\"") NULL
-+#else
- #define ASN1_TYPE_EMPTY NULL
-+#endif
-+#endif /* !ASN1_DISABLE_DEPRECATED */
- 
- /**
-  * static_struct_asn:
-@@ -543,7 +562,13 @@ typedef int asn1_retCode;
-  *
-  * Deprecated: 3.0: Use #asn1_static_node instead.
-  */
-+#ifndef ASN1_DISABLE_DEPRECATED
-+#if _ASN1_GCC_VERSION >= 30100
-+#define static_struct_asn _Pragma ("GCC warning \"'static_struct_asn' macro is deprecated, use 'asn1_static_node_st' instead.\"") asn1_static_node_st
-+#else
- #define static_struct_asn asn1_static_node_st
-+#endif
-+#endif /* !ASN1_DISABLE_DEPRECATED */
- 
- /**
-  * ASN1_ARRAY_TYPE:
-@@ -552,7 +577,13 @@ typedef int asn1_retCode;
-  *
-  * Deprecated: 3.0: Use #asn1_static_node instead.
-  */
-+#ifndef ASN1_DISABLE_DEPRECATED
-+#if _ASN1_GCC_VERSION >= 30100
-+#define ASN1_ARRAY_TYPE _Pragma ("GCC warning \"'ASN1_ARRAY_TYPE' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_static_node
-+#else
- #define ASN1_ARRAY_TYPE asn1_static_node
-+#endif
-+#endif /* !ASN1_DISABLE_DEPRECATED */
- 
- /**
-  * asn1_static_node_t:
-@@ -561,7 +592,13 @@ typedef int asn1_retCode;
-  *
-  * Deprecated: 3.0: Use #asn1_static_node instead.
-  */
-+#ifndef ASN1_DISABLE_DEPRECATED
-+#if _ASN1_GCC_VERSION >= 30100
-+#define asn1_static_node_t _Pragma ("GCC warning \"'asn1_static_node_t' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_static_node
-+#else
- #define asn1_static_node_t asn1_static_node
-+#endif
-+#endif /* !ASN1_DISABLE_DEPRECATED */
- 
- /**
-  * node_data_struct:
-@@ -570,7 +607,13 @@ typedef int asn1_retCode;
-  *
-  * Deprecated: 3.0: Use #asn1_data_node_st instead.
-  */
-+#ifndef ASN1_DISABLE_DEPRECATED
-+#if _ASN1_GCC_VERSION >= 30100
-+#define node_data_struct _Pragma ("GCC warning \"'node_data_struct' macro is deprecated, use 'asn1_data_node_st' instead.\"") asn1_data_node_st
-+#else
- #define node_data_struct asn1_data_node_st
-+#endif
-+#endif /* !ASN1_DISABLE_DEPRECATED */
- 
- /**
-  * ASN1_DATA_NODE:
-@@ -579,7 +622,13 @@ typedef int asn1_retCode;
-  *
-  * Deprecated: 3.0: Use #asn1_data_node_st instead.
-  */
-+#ifndef ASN1_DISABLE_DEPRECATED
-+#if _ASN1_GCC_VERSION >= 30100
-+#define ASN1_DATA_NODE _Pragma ("GCC warning \"'asn1_static_node_t' macro is deprecated, use 'asn1_static_node' instead.\"") asn1_data_node_st
-+#else
- #define ASN1_DATA_NODE asn1_data_node_st
-+#endif
-+#endif /* !ASN1_DISABLE_DEPRECATED */
- 
- #ifdef __cplusplus
- }
diff --git a/contrib/src/gnutls/no-create-time-h.patch b/contrib/src/gnutls/no-create-time-h.patch
deleted file mode 100644
index d355c7cc6b..0000000000
--- a/contrib/src/gnutls/no-create-time-h.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gnutls/gl/Makefile.am	2011-04-07 17:30:44.000000000 -0700
-+++ gnutls/gl/Makefile.am	2012-03-02 19:51:53.576555217 -0800
-@@ -891,7 +891,7 @@ EXTRA_DIST += sys_stat.in.h
- 
- ## begin gnulib module time
- 
--BUILT_SOURCES += time.h
-+#BUILT_SOURCES += time.h
- 
- # We need the following in order to create <time.h> when the system
- # doesn't have one that works with the given compiler.
diff --git a/contrib/src/gnutls/read-file-limits.h.patch b/contrib/src/gnutls/read-file-limits.h.patch
deleted file mode 100644
index b13b1a88f4..0000000000
--- a/contrib/src/gnutls/read-file-limits.h.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- gnutls/gl/read-file.c.orig	2012-03-06 20:59:29.600593329 -0500
-+++ gnutls/gl/read-file.c	2012-03-06 20:59:44.568593328 -0500
-@@ -35,6 +35,9 @@
- /* Get errno. */
- #include <errno.h>
- 
-+/* Get SIZE_MAX */
-+#include <limits.h>
-+
- /* Read a STREAM and return a newly allocated string with the content,
-    and set *LENGTH to the length of the string.  The string is
-    zero-terminated, but the terminating zero byte is not counted in
diff --git a/contrib/src/gnutls/rules.mak b/contrib/src/gnutls/rules.mak
index 26655b3a54..d4e85f6090 100644
--- a/contrib/src/gnutls/rules.mak
+++ b/contrib/src/gnutls/rules.mak
@@ -1,7 +1,6 @@
 # GnuTLS
 
-GNUTLS_VERSION := 3.7.1
-
+GNUTLS_VERSION := 3.7.6
 GNUTLS_URL := https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-$(GNUTLS_VERSION).tar.xz
 
 PKGS += gnutls
@@ -17,27 +16,11 @@ $(TARBALLS)/gnutls-$(GNUTLS_VERSION).tar.xz:
 
 gnutls: gnutls-$(GNUTLS_VERSION).tar.xz .sum-gnutls
 	$(UNPACK)
-	$(APPLY) $(SRC)/gnutls/gnutls_tasn.patch
-ifdef HAVE_WIN32
-	$(APPLY) $(SRC)/gnutls/gnutls-win32.patch
-else
-	$(APPLY) $(SRC)/gnutls/downgrade-gettext-requirement.patch
-endif
-ifdef HAVE_ANDROID
-	$(APPLY) $(SRC)/gnutls/no-create-time-h.patch
-endif
-ifdef HAVE_DARWIN_OS
-	$(APPLY) $(SRC)/gnutls/0001-use-system-isdigit.patch
-endif
-ifdef HAVE_MACOSX
-	$(APPLY) $(SRC)/gnutls/gnutls-disable-getentropy-osx.patch
-endif
-	$(APPLY) $(SRC)/gnutls/read-file-limits.h.patch
+	$(APPLY) $(SRC)/gnutls/0001-m4-remove-malloc-realloc.patch
 ifndef HAVE_IOS
 	$(APPLY) $(SRC)/gnutls/mac-keychain-lookup.patch
 endif
 	$(call pkg_static,"lib/gnutls.pc.in")
-	$(UPDATE_AUTOCONFIG)
 	$(MOVE)
 
 GNUTLS_CONF := \
@@ -70,9 +53,8 @@ CFLAGS="-D_POSIX_C_SOURCE"
 endif
 
 .gnutls: gnutls
-	$(RECONF)
 ifdef HAVE_ANDROID
-	cd $< && $(HOSTVARS) gl_cv_header_working_stdint_h=yes ./configure $(GNUTLS_CONF)
+	cd $< && $(HOSTVARS) ./configure $(GNUTLS_CONF)
 else
 ifdef HAVE_IOS
 	cd $< && $(HOSTVARS) ac_cv_func_clock_gettime=no ./configure $(GNUTLS_CONF)
-- 
GitLab