From 64f38bf58812f0c660d51fb231230e96b122982c Mon Sep 17 00:00:00 2001
From: Logan Aerl Arias <logana@srb2.org>
Date: Sat, 10 Feb 2024 22:09:28 -0500
Subject: [PATCH] update zlib to v1.3.1

update zlib to v1.3.1
---
 libs/zlib/CMakeLists.txt                      |   83 +-
 libs/zlib/ChangeLog                           |  215 +-
 libs/zlib/FAQ                                 |    5 +-
 libs/zlib/LICENSE                             |   22 +
 libs/zlib/Makefile.in                         |   54 +-
 libs/zlib/README                              |   24 +-
 libs/zlib/adler32.c                           |   32 +-
 libs/zlib/compress.c                          |   21 +-
 libs/zlib/configure                           |  164 +-
 libs/zlib/contrib/README.contrib              |   23 +-
 libs/zlib/contrib/ada/readme.txt              |    4 +-
 libs/zlib/contrib/ada/test.adb                |    4 +-
 libs/zlib/contrib/ada/zlib-streams.ads        |    2 +-
 libs/zlib/contrib/ada/zlib.adb                |    2 +-
 libs/zlib/contrib/ada/zlib.ads                |    2 +-
 libs/zlib/contrib/amd64/amd64-match.S         |  452 -
 libs/zlib/contrib/asm686/README.686           |   51 -
 libs/zlib/contrib/asm686/match.S              |  357 -
 libs/zlib/contrib/blast/blast.h               |    2 +-
 libs/zlib/contrib/delphi/ZLib.pas             |    2 +-
 .../contrib/dotzlib/DotZLib/ChecksumImpl.cs   |    4 +-
 .../zlib/contrib/dotzlib/DotZLib/CodecBase.cs |    4 +-
 .../contrib/dotzlib/DotZLib/GZipStream.cs     |    6 +-
 .../zlib/contrib/dotzlib/DotZLib/UnitTests.cs |    2 +-
 libs/zlib/contrib/dotzlib/readme.txt          |    2 +-
 libs/zlib/contrib/infback9/infback9.c         |   24 +-
 libs/zlib/contrib/infback9/infback9.h         |   16 +-
 libs/zlib/contrib/infback9/inftree9.c         |   17 +-
 libs/zlib/contrib/infback9/inftree9.h         |   12 +-
 libs/zlib/contrib/inflate86/inffas86.c        | 1157 --
 libs/zlib/contrib/inflate86/inffast.S         | 1368 ---
 libs/zlib/contrib/iostream3/zfstream.h        |    4 +-
 libs/zlib/contrib/masmx64/bld_ml64.bat        |    2 -
 libs/zlib/contrib/masmx64/gvmat64.asm         |  553 -
 libs/zlib/contrib/masmx64/inffas8664.c        |  186 -
 libs/zlib/contrib/masmx64/inffasx64.asm       |  396 -
 libs/zlib/contrib/masmx64/readme.txt          |   31 -
 libs/zlib/contrib/masmx86/bld_ml32.bat        |    2 -
 libs/zlib/contrib/masmx86/inffas32.asm        | 1080 --
 libs/zlib/contrib/masmx86/match686.asm        |  479 -
 libs/zlib/contrib/masmx86/readme.txt          |   27 -
 libs/zlib/contrib/minizip/Makefile            |   14 +-
 .../contrib/minizip/MiniZip64_Changes.txt     |    2 +-
 libs/zlib/contrib/minizip/configure.ac        |    2 +-
 libs/zlib/contrib/minizip/crypt.h             |   29 +-
 libs/zlib/contrib/minizip/ioapi.c             |   78 +-
 libs/zlib/contrib/minizip/ioapi.h             |   46 +-
 libs/zlib/contrib/minizip/iowin32.c           |   70 +-
 libs/zlib/contrib/minizip/iowin32.h           |    8 +-
 libs/zlib/contrib/minizip/miniunz.c           |  103 +-
 libs/zlib/contrib/minizip/minizip.c           |   87 +-
 libs/zlib/contrib/minizip/mztools.c           |    8 +-
 libs/zlib/contrib/minizip/unzip.c             |  552 +-
 libs/zlib/contrib/minizip/unzip.h             |  150 +-
 libs/zlib/contrib/minizip/zip.c               |  367 +-
 libs/zlib/contrib/minizip/zip.h               |  310 +-
 libs/zlib/contrib/nuget/nuget.csproj          |   43 +
 libs/zlib/contrib/nuget/nuget.sln             |   22 +
 libs/zlib/contrib/pascal/zlibpas.pas          |    2 +-
 libs/zlib/contrib/puff/README                 |    2 +-
 libs/zlib/contrib/puff/puff.c                 |   12 +-
 libs/zlib/contrib/puff/pufftest.c             |    2 +-
 libs/zlib/contrib/testzlib/testzlib.c         |    2 +-
 libs/zlib/contrib/untgz/untgz.c               |   63 +-
 libs/zlib/contrib/vstudio/readme.txt          |   13 +-
 .../vstudio/vc10/miniunz.vcxproj.filters      |    2 +-
 .../contrib/vstudio/vc10/miniunz.vcxproj.user |    3 -
 .../vstudio/vc10/minizip.vcxproj.filters      |    2 +-
 .../contrib/vstudio/vc10/minizip.vcxproj.user |    3 -
 .../contrib/vstudio/vc10/testzlib.vcxproj     |   24 +-
 .../vstudio/vc10/testzlib.vcxproj.filters     |    5 +-
 .../vstudio/vc10/testzlib.vcxproj.user        |    3 -
 .../vstudio/vc10/testzlibdll.vcxproj.filters  |    2 +-
 .../vstudio/vc10/testzlibdll.vcxproj.user     |    3 -
 libs/zlib/contrib/vstudio/vc10/zlib.rc        |    8 +-
 .../contrib/vstudio/vc10/zlibstat.vcxproj     |   50 +-
 .../vstudio/vc10/zlibstat.vcxproj.filters     |    3 -
 .../vstudio/vc10/zlibstat.vcxproj.user        |    3 -
 libs/zlib/contrib/vstudio/vc10/zlibvc.def     |    7 +-
 libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj |   58 +-
 .../vstudio/vc10/zlibvc.vcxproj.filters       |    3 -
 .../contrib/vstudio/vc10/zlibvc.vcxproj.user  |    3 -
 .../contrib/vstudio/vc11/testzlib.vcxproj     |   24 +-
 libs/zlib/contrib/vstudio/vc11/zlib.rc        |    8 +-
 .../contrib/vstudio/vc11/zlibstat.vcxproj     |   34 +-
 libs/zlib/contrib/vstudio/vc11/zlibvc.def     |    7 +-
 libs/zlib/contrib/vstudio/vc11/zlibvc.vcxproj |   58 +-
 .../contrib/vstudio/vc12/testzlib.vcxproj     |   24 +-
 libs/zlib/contrib/vstudio/vc12/zlib.rc        |    8 +-
 .../contrib/vstudio/vc12/zlibstat.vcxproj     |   34 +-
 libs/zlib/contrib/vstudio/vc12/zlibvc.def     |    7 +-
 libs/zlib/contrib/vstudio/vc12/zlibvc.vcxproj |   58 +-
 .../contrib/vstudio/vc14/testzlib.vcxproj     |   24 +-
 libs/zlib/contrib/vstudio/vc14/zlib.rc        |    8 +-
 .../contrib/vstudio/vc14/zlibstat.vcxproj     |   34 +-
 libs/zlib/contrib/vstudio/vc14/zlibvc.def     |    7 +-
 libs/zlib/contrib/vstudio/vc14/zlibvc.vcxproj |   58 +-
 .../zlib/contrib/vstudio/vc17/miniunz.vcxproj |  409 +
 .../zlib/contrib/vstudio/vc17/minizip.vcxproj |  405 +
 .../contrib/vstudio/vc17/testzlib.vcxproj     |  473 +
 .../contrib/vstudio/vc17/testzlibdll.vcxproj  |  409 +
 .../contrib/vstudio/{vc8 => vc17}/zlib.rc     |   12 +-
 .../contrib/vstudio/vc17/zlibstat.vcxproj     |  602 +
 .../contrib/vstudio/{vc8 => vc17}/zlibvc.def  |   72 +-
 libs/zlib/contrib/vstudio/vc17/zlibvc.sln     |  179 +
 libs/zlib/contrib/vstudio/vc17/zlibvc.vcxproj |  875 ++
 libs/zlib/contrib/vstudio/vc7/miniunz.vcproj  |  126 -
 libs/zlib/contrib/vstudio/vc7/minizip.vcproj  |  126 -
 libs/zlib/contrib/vstudio/vc7/testzlib.vcproj |  126 -
 libs/zlib/contrib/vstudio/vc7/zlib.rc         |   32 -
 libs/zlib/contrib/vstudio/vc7/zlibstat.vcproj |  246 -
 libs/zlib/contrib/vstudio/vc7/zlibvc.def      |   92 -
 libs/zlib/contrib/vstudio/vc7/zlibvc.sln      |   78 -
 libs/zlib/contrib/vstudio/vc7/zlibvc.vcproj   |  445 -
 libs/zlib/contrib/vstudio/vc8/miniunz.vcproj  |  566 -
 libs/zlib/contrib/vstudio/vc8/minizip.vcproj  |  563 -
 libs/zlib/contrib/vstudio/vc8/testzlib.vcproj |  948 --
 .../contrib/vstudio/vc8/testzlibdll.vcproj    |  567 -
 libs/zlib/contrib/vstudio/vc8/zlibstat.vcproj |  870 --
 libs/zlib/contrib/vstudio/vc8/zlibvc.sln      |  144 -
 libs/zlib/contrib/vstudio/vc8/zlibvc.vcproj   | 1219 --
 libs/zlib/contrib/vstudio/vc9/miniunz.vcproj  |    2 +-
 libs/zlib/contrib/vstudio/vc9/minizip.vcproj  |    2 +-
 libs/zlib/contrib/vstudio/vc9/testzlib.vcproj |   66 +-
 .../contrib/vstudio/vc9/testzlibdll.vcproj    |    2 +-
 libs/zlib/contrib/vstudio/vc9/zlib.rc         |    8 +-
 libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj |   76 +-
 libs/zlib/contrib/vstudio/vc9/zlibvc.def      |    7 +-
 libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj   |   82 +-
 libs/zlib/crc32.c                             | 1253 ++-
 libs/zlib/crc32.h                             | 9877 ++++++++++++++++-
 libs/zlib/deflate.c                           |  880 +-
 libs/zlib/deflate.h                           |   74 +-
 libs/zlib/doc/algorithm.txt                   |    2 +-
 libs/zlib/doc/crc-doc.1.0.pdf                 |  Bin 0 -> 776142 bytes
 libs/zlib/doc/txtvsbin.txt                    |   12 +-
 libs/zlib/examples/README.examples            |    5 +
 libs/zlib/examples/enough.c                   |  745 +-
 libs/zlib/examples/fitblk.c                   |    6 +-
 libs/zlib/examples/gun.c                      |    2 +-
 libs/zlib/examples/gzappend.c                 |    6 +-
 libs/zlib/examples/gzlog.c                    |   10 +-
 libs/zlib/examples/gzlog.h                    |    2 +-
 libs/zlib/examples/gznorm.c                   |  470 +
 libs/zlib/examples/zlib_how.html              |   26 +-
 libs/zlib/examples/zran.c                     |  740 +-
 libs/zlib/examples/zran.h                     |   51 +
 libs/zlib/gzclose.c                           |    4 +-
 libs/zlib/gzguts.h                            |   34 +-
 libs/zlib/gzlib.c                             |  119 +-
 libs/zlib/gzread.c                            |  108 +-
 libs/zlib/gzwrite.c                           |  118 +-
 libs/zlib/infback.c                           |   50 +-
 libs/zlib/inffast.c                           |   33 +-
 libs/zlib/inffast.h                           |    2 +-
 libs/zlib/inflate.c                           |  185 +-
 libs/zlib/inflate.h                           |    5 +-
 libs/zlib/inftrees.c                          |   17 +-
 libs/zlib/inftrees.h                          |   12 +-
 libs/zlib/make_vms.com                        |    4 +-
 libs/zlib/old/as400/bndsrc                    |  132 -
 libs/zlib/old/as400/compile.clp               |  123 -
 libs/zlib/old/as400/readme.txt                |  111 -
 libs/zlib/old/as400/zlib.inc                  |  331 -
 libs/zlib/old/visual-basic.txt                |    2 +-
 libs/zlib/old/visualc6/README.txt             |   73 -
 libs/zlib/old/visualc6/example.dsp            |  278 -
 libs/zlib/old/visualc6/minigzip.dsp           |  278 -
 libs/zlib/old/visualc6/zlib.dsp               |  621 --
 libs/zlib/old/visualc6/zlib.dsw               |   59 -
 libs/zlib/os400/README400                     |    6 +-
 libs/zlib/os400/bndsrc                        |    8 +
 libs/zlib/os400/zlib.inc                      |    8 +-
 libs/zlib/projects/README.projects            |   41 -
 libs/zlib/projects/visualc10/.gitignore       |    5 -
 libs/zlib/projects/visualc10/zlib.vcxproj     |  619 --
 libs/zlib/projects/visualc6/README.txt        |   73 -
 libs/zlib/projects/visualc6/example.dsp       |  278 -
 libs/zlib/projects/visualc6/minigzip.dsp      |  278 -
 libs/zlib/projects/visualc6/zlib.dsp          |  283 -
 libs/zlib/projects/visualc6/zlib.dsw          |   59 -
 libs/zlib/projects/visualc9/.gitignore        |    3 -
 libs/zlib/projects/visualc9/zlib.vcproj       | 1056 --
 libs/zlib/qnx/package.qpg                     |   10 +-
 libs/zlib/test/example.c                      |  112 +-
 libs/zlib/test/infcover.c                     |    5 +-
 libs/zlib/test/minigzip.c                     |  176 +-
 libs/zlib/treebuild.xml                       |    4 +-
 libs/zlib/trees.c                             |  674 +-
 libs/zlib/uncompr.c                           |   16 +-
 libs/zlib/win32/DLL_FAQ.txt                   |   20 +-
 libs/zlib/win32/Makefile.bor                  |    1 -
 libs/zlib/win32/Makefile.emx                  |   69 -
 libs/zlib/win32/Makefile.gcc                  |    5 -
 libs/zlib/win32/Makefile.msc                  |    4 -
 libs/zlib/win32/README-WIN32.txt              |    8 +-
 libs/zlib/win32/libz32.a                      |  Bin 117602 -> 0 bytes
 libs/zlib/win32/libz64.a                      |  Bin 130026 -> 0 bytes
 libs/zlib/win32/zlib.def                      |    3 +
 libs/zlib/win32/zlib1.rc                      |    2 +-
 libs/zlib/zconf.h                             |   39 +-
 libs/zlib/zconf.h.cmakein                     |   37 +-
 libs/zlib/zconf.h.in                          |   37 +-
 libs/zlib/zlib.3                              |    6 +-
 libs/zlib/zlib.3.pdf                          |  Bin 19318 -> 25523 bytes
 libs/zlib/zlib.h                              |  594 +-
 libs/zlib/zlib.map                            |    6 +
 libs/zlib/zlib2ansi                           |  152 -
 libs/zlib/zutil.c                             |   66 +-
 libs/zlib/zutil.h                             |   65 +-
 thirdparty/cpm-zlib.cmake                     |   59 +-
 211 files changed, 18286 insertions(+), 22745 deletions(-)
 create mode 100644 libs/zlib/LICENSE
 delete mode 100644 libs/zlib/contrib/amd64/amd64-match.S
 delete mode 100644 libs/zlib/contrib/asm686/README.686
 delete mode 100644 libs/zlib/contrib/asm686/match.S
 delete mode 100644 libs/zlib/contrib/inflate86/inffas86.c
 delete mode 100644 libs/zlib/contrib/inflate86/inffast.S
 delete mode 100644 libs/zlib/contrib/masmx64/bld_ml64.bat
 delete mode 100644 libs/zlib/contrib/masmx64/gvmat64.asm
 delete mode 100644 libs/zlib/contrib/masmx64/inffas8664.c
 delete mode 100644 libs/zlib/contrib/masmx64/inffasx64.asm
 delete mode 100644 libs/zlib/contrib/masmx64/readme.txt
 delete mode 100644 libs/zlib/contrib/masmx86/bld_ml32.bat
 delete mode 100644 libs/zlib/contrib/masmx86/inffas32.asm
 delete mode 100644 libs/zlib/contrib/masmx86/match686.asm
 delete mode 100644 libs/zlib/contrib/masmx86/readme.txt
 create mode 100644 libs/zlib/contrib/nuget/nuget.csproj
 create mode 100644 libs/zlib/contrib/nuget/nuget.sln
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.user
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user
 delete mode 100644 libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user
 create mode 100644 libs/zlib/contrib/vstudio/vc17/miniunz.vcxproj
 create mode 100644 libs/zlib/contrib/vstudio/vc17/minizip.vcxproj
 create mode 100644 libs/zlib/contrib/vstudio/vc17/testzlib.vcxproj
 create mode 100644 libs/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj
 rename libs/zlib/contrib/vstudio/{vc8 => vc17}/zlib.rc (68%)
 create mode 100644 libs/zlib/contrib/vstudio/vc17/zlibstat.vcxproj
 rename libs/zlib/contrib/vstudio/{vc8 => vc17}/zlibvc.def (60%)
 create mode 100644 libs/zlib/contrib/vstudio/vc17/zlibvc.sln
 create mode 100644 libs/zlib/contrib/vstudio/vc17/zlibvc.vcxproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/miniunz.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/minizip.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/testzlib.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/zlib.rc
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/zlibstat.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/zlibvc.def
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/zlibvc.sln
 delete mode 100644 libs/zlib/contrib/vstudio/vc7/zlibvc.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/miniunz.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/minizip.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/testzlib.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/testzlibdll.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/zlibstat.vcproj
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/zlibvc.sln
 delete mode 100644 libs/zlib/contrib/vstudio/vc8/zlibvc.vcproj
 create mode 100644 libs/zlib/doc/crc-doc.1.0.pdf
 create mode 100644 libs/zlib/examples/gznorm.c
 create mode 100644 libs/zlib/examples/zran.h
 delete mode 100644 libs/zlib/old/as400/bndsrc
 delete mode 100644 libs/zlib/old/as400/compile.clp
 delete mode 100644 libs/zlib/old/as400/readme.txt
 delete mode 100644 libs/zlib/old/as400/zlib.inc
 delete mode 100644 libs/zlib/old/visualc6/README.txt
 delete mode 100644 libs/zlib/old/visualc6/example.dsp
 delete mode 100644 libs/zlib/old/visualc6/minigzip.dsp
 delete mode 100644 libs/zlib/old/visualc6/zlib.dsp
 delete mode 100644 libs/zlib/old/visualc6/zlib.dsw
 delete mode 100644 libs/zlib/projects/README.projects
 delete mode 100644 libs/zlib/projects/visualc10/.gitignore
 delete mode 100644 libs/zlib/projects/visualc10/zlib.vcxproj
 delete mode 100644 libs/zlib/projects/visualc6/README.txt
 delete mode 100644 libs/zlib/projects/visualc6/example.dsp
 delete mode 100644 libs/zlib/projects/visualc6/minigzip.dsp
 delete mode 100644 libs/zlib/projects/visualc6/zlib.dsp
 delete mode 100644 libs/zlib/projects/visualc6/zlib.dsw
 delete mode 100644 libs/zlib/projects/visualc9/.gitignore
 delete mode 100644 libs/zlib/projects/visualc9/zlib.vcproj
 delete mode 100644 libs/zlib/win32/Makefile.emx
 delete mode 100644 libs/zlib/win32/libz32.a
 delete mode 100644 libs/zlib/win32/libz64.a
 delete mode 100755 libs/zlib/zlib2ansi

diff --git a/libs/zlib/CMakeLists.txt b/libs/zlib/CMakeLists.txt
index 0fe939df6..15ceebe78 100644
--- a/libs/zlib/CMakeLists.txt
+++ b/libs/zlib/CMakeLists.txt
@@ -1,12 +1,11 @@
-cmake_minimum_required(VERSION 2.4.4)
+cmake_minimum_required(VERSION 2.4.4...3.15.0)
 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
 
 project(zlib C)
 
-set(VERSION "1.2.11")
+set(VERSION "1.3.1")
 
-option(ASM686 "Enable building i686 assembly implementation")
-option(AMD64 "Enable building amd64 assembly implementation")
+option(ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" ON)
 
 set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
 set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries")
@@ -129,39 +128,6 @@ if(NOT MINGW)
     )
 endif()
 
-if(CMAKE_COMPILER_IS_GNUCC)
-    if(ASM686)
-        set(ZLIB_ASMS contrib/asm686/match.S)
-    elseif (AMD64)
-        set(ZLIB_ASMS contrib/amd64/amd64-match.S)
-    endif ()
-
-	if(ZLIB_ASMS)
-		add_definitions(-DASMV)
-		set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE)
-	endif()
-endif()
-
-if(MSVC)
-    if(ASM686)
-		ENABLE_LANGUAGE(ASM_MASM)
-        set(ZLIB_ASMS
-			contrib/masmx86/inffas32.asm
-			contrib/masmx86/match686.asm
-		)
-    elseif (AMD64)
-		ENABLE_LANGUAGE(ASM_MASM)
-        set(ZLIB_ASMS
-			contrib/masmx64/gvmat64.asm
-			contrib/masmx64/inffasx64.asm
-		)
-    endif()
-
-	if(ZLIB_ASMS)
-		add_definitions(-DASMV -DASMINF)
-	endif()
-endif()
-
 # parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
 file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
 string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
@@ -183,8 +149,10 @@ if(MINGW)
     set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
 endif(MINGW)
 
-add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
-add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+target_include_directories(zlib PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
+target_include_directories(zlibstatic PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
 set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
 set_target_properties(zlib PROPERTIES SOVERSION 1)
 
@@ -202,7 +170,7 @@ endif()
 if(UNIX)
     # On unix-like platforms the library is almost always called libz
    set_target_properties(zlib zlibstatic PROPERTIES OUTPUT_NAME z)
-   if(NOT APPLE)
+   if(NOT APPLE AND NOT(CMAKE_SYSTEM_NAME STREQUAL AIX))
      set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
    endif()
 elseif(BUILD_SHARED_LIBS AND WIN32)
@@ -229,21 +197,22 @@ endif()
 #============================================================================
 # Example binaries
 #============================================================================
-
-add_executable(example test/example.c)
-target_link_libraries(example zlib)
-add_test(example example)
-
-add_executable(minigzip test/minigzip.c)
-target_link_libraries(minigzip zlib)
-
-if(HAVE_OFF64_T)
-    add_executable(example64 test/example.c)
-    target_link_libraries(example64 zlib)
-    set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
-    add_test(example64 example64)
-
-    add_executable(minigzip64 test/minigzip.c)
-    target_link_libraries(minigzip64 zlib)
-    set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+if(ZLIB_BUILD_EXAMPLES)
+    add_executable(example test/example.c)
+    target_link_libraries(example zlib)
+    add_test(example example)
+
+    add_executable(minigzip test/minigzip.c)
+    target_link_libraries(minigzip zlib)
+
+    if(HAVE_OFF64_T)
+        add_executable(example64 test/example.c)
+        target_link_libraries(example64 zlib)
+        set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+        add_test(example64 example64)
+
+        add_executable(minigzip64 test/minigzip.c)
+        target_link_libraries(minigzip64 zlib)
+        set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+    endif()
 endif()
diff --git a/libs/zlib/ChangeLog b/libs/zlib/ChangeLog
index 30199a65a..b801a1031 100644
--- a/libs/zlib/ChangeLog
+++ b/libs/zlib/ChangeLog
@@ -1,6 +1,109 @@
 
                 ChangeLog file for zlib
 
+Changes in 1.3.1 (22 Jan 2024)
+- Reject overflows of zip header fields in minizip
+- Fix bug in inflateSync() for data held in bit buffer
+- Add LIT_MEM define to use more memory for a small deflate speedup
+- Fix decision on the emission of Zip64 end records in minizip
+- Add bounds checking to ERR_MSG() macro, used by zError()
+- Neutralize zip file traversal attacks in miniunz
+- Fix a bug in ZLIB_DEBUG compiles in check_match()
+- Various portability and appearance improvements
+
+Changes in 1.3 (18 Aug 2023)
+- Remove K&R function definitions and zlib2ansi
+- Fix bug in deflateBound() for level 0 and memLevel 9
+- Fix bug when gzungetc() is used immediately after gzopen()
+- Fix bug when using gzflush() with a very small buffer
+- Fix crash when gzsetparams() attempted for transparent write
+- Fix test/example.c to work with FORCE_STORED
+- Rewrite of zran in examples (see zran.c version history)
+- Fix minizip to allow it to open an empty zip file
+- Fix reading disk number start on zip64 files in minizip
+- Fix logic error in minizip argument processing
+- Add minizip testing to Makefile
+- Read multiple bytes instead of byte-by-byte in minizip unzip.c
+- Add memory sanitizer to configure (--memory)
+- Various portability improvements
+- Various documentation improvements
+- Various spelling and typo corrections
+
+Changes in 1.2.13 (13 Oct 2022)
+- Fix configure issue that discarded provided CC definition
+- Correct incorrect inputs provided to the CRC functions
+- Repair prototypes and exporting of new CRC functions
+- Fix inflateBack to detect invalid input with distances too far
+- Have infback() deliver all of the available output up to any error
+- Fix a bug when getting a gzip header extra field with inflate()
+- Fix bug in block type selection when Z_FIXED used
+- Tighten deflateBound bounds
+- Remove deleted assembler code references
+- Various portability and appearance improvements
+
+Changes in 1.2.12 (27 Mar 2022)
+- Cygwin does not have _wopen(), so do not create gzopen_w() there
+- Permit a deflateParams() parameter change as soon as possible
+- Limit hash table inserts after switch from stored deflate
+- Fix bug when window full in deflate_stored()
+- Fix CLEAR_HASH macro to be usable as a single statement
+- Avoid a conversion error in gzseek when off_t type too small
+- Have Makefile return non-zero error code on test failure
+- Avoid some conversion warnings in gzread.c and gzwrite.c
+- Update use of errno for newer Windows CE versions
+- Small speedup to inflate [psumbera]
+- Return an error if the gzputs string length can't fit in an int
+- Add address checking in clang to -w option of configure
+- Don't compute check value for raw inflate if asked to validate
+- Handle case where inflateSync used when header never processed
+- Avoid the use of ptrdiff_t
+- Avoid an undefined behavior of memcpy() in gzappend()
+- Avoid undefined behaviors of memcpy() in gz*printf()
+- Avoid an undefined behavior of memcpy() in _tr_stored_block()
+- Make the names in functions declarations identical to definitions
+- Remove old assembler code in which bugs have manifested
+- Fix deflateEnd() to not report an error at start of raw deflate
+- Add legal disclaimer to README
+- Emphasize the need to continue decompressing gzip members
+- Correct the initialization requirements for deflateInit2()
+- Fix a bug that can crash deflate on some input when using Z_FIXED
+- Assure that the number of bits for deflatePrime() is valid
+- Use a structure to make globals in enough.c evident
+- Use a macro for the printf format of big_t in enough.c
+- Clean up code style in enough.c, update version
+- Use inline function instead of macro for index in enough.c
+- Clarify that prefix codes are counted in enough.c
+- Show all the codes for the maximum tables size in enough.c
+- Add gznorm.c example, which normalizes gzip files
+- Fix the zran.c example to work on a multiple-member gzip file
+- Add tables for crc32_combine(), to speed it up by a factor of 200
+- Add crc32_combine_gen() and crc32_combine_op() for fast combines
+- Speed up software CRC-32 computation by a factor of 1.5 to 3
+- Use atomic test and set, if available, for dynamic CRC tables
+- Don't bother computing check value after successful inflateSync()
+- Correct comment in crc32.c
+- Add use of the ARMv8 crc32 instructions when requested
+- Use ARM crc32 instructions if the ARM architecture has them
+- Explicitly note that the 32-bit check values are 32 bits
+- Avoid adding empty gzip member after gzflush with Z_FINISH
+- Fix memory leak on error in gzlog.c
+- Fix error in comment on the polynomial representation of a byte
+- Clarify gz* function interfaces, referring to parameter names
+- Change macro name in inflate.c to avoid collision in VxWorks
+- Correct typo in blast.c
+- Improve portability of contrib/minizip
+- Fix indentation in minizip's zip.c
+- Replace black/white with allow/block. (theresa-m)
+- minizip warning fix if MAXU32 already defined. (gvollant)
+- Fix unztell64() in minizip to work past 4GB. (Daniël Hörchner)
+- Clean up minizip to reduce warnings for testing
+- Add fallthrough comments for gcc
+- Eliminate use of ULL constants
+- Separate out address sanitizing from warnings in configure
+- Remove destructive aspects of make distclean
+- Check for cc masquerading as gcc or clang in configure
+- Fix crc32.c to compile local functions only if used
+
 Changes in 1.2.11 (15 Jan 2017)
 - Fix deflate stored bug when pulling last block from window
 - Permit immediate deflateParams changes before any deflate input
@@ -96,7 +199,7 @@ Changes in 1.2.7.1 (24 Mar 2013)
 - Fix types in contrib/minizip to match result of get_crc_table()
 - Simplify contrib/vstudio/vc10 with 'd' suffix
 - Add TOP support to win32/Makefile.msc
-- Suport i686 and amd64 assembler builds in CMakeLists.txt
+- Support i686 and amd64 assembler builds in CMakeLists.txt
 - Fix typos in the use of _LARGEFILE64_SOURCE in zconf.h
 - Add vc11 and vc12 build files to contrib/vstudio
 - Add gzvprintf() as an undocumented function in zlib
@@ -296,14 +399,14 @@ Changes in 1.2.5.1 (10 Sep 2011)
 - Use u4 type for crc_table to avoid conversion warnings
 - Apply casts in zlib.h to avoid conversion warnings
 - Add OF to prototypes for adler32_combine_ and crc32_combine_ [Miller]
-- Improve inflateSync() documentation to note indeterminancy
+- Improve inflateSync() documentation to note indeterminacy
 - Add deflatePending() function to return the amount of pending output
 - Correct the spelling of "specification" in FAQ [Randers-Pehrson]
 - Add a check in configure for stdarg.h, use for gzprintf()
 - Check that pointers fit in ints when gzprint() compiled old style
 - Add dummy name before $(SHAREDLIBV) in Makefile [Bar-Lev, Bowler]
 - Delete line in configure that adds -L. libz.a to LDFLAGS [Weigelt]
-- Add debug records in assmebler code [Londer]
+- Add debug records in assembler code [Londer]
 - Update RFC references to use http://tools.ietf.org/html/... [Li]
 - Add --archs option, use of libtool to configure for Mac OS X [Borstel]
 
@@ -511,7 +614,7 @@ Changes in 1.2.3.5 (8 Jan 2010)
 - Don't use _vsnprintf on later versions of MSVC [Lowman]
 - Add CMake build script and input file [Lowman]
 - Update contrib/minizip to 1.1 [Svensson, Vollant]
-- Moved nintendods directory from contrib to .
+- Moved nintendods directory from contrib to root
 - Replace gzio.c with a new set of routines with the same functionality
 - Add gzbuffer(), gzoffset(), gzclose_r(), gzclose_w() as part of above
 - Update contrib/minizip to 1.1b
@@ -685,7 +788,7 @@ Changes in 1.2.2.4 (11 July 2005)
 - Be more strict on incomplete code sets in inflate_table() and increase
   ENOUGH and MAXD -- this repairs a possible security vulnerability for
   invalid inflate input.  Thanks to Tavis Ormandy and Markus Oberhumer for
-  discovering the vulnerability and providing test cases.
+  discovering the vulnerability and providing test cases
 - Add ia64 support to configure for HP-UX [Smith]
 - Add error return to gzread() for format or i/o error [Levin]
 - Use malloc.h for OS/2 [Necasek]
@@ -721,7 +824,7 @@ Changes in 1.2.2.2 (30 December 2004)
 - Add Z_FIXED strategy option to deflateInit2() to force fixed trees
 - Add updated make_vms.com [Coghlan], update README
 - Create a new "examples" directory, move gzappend.c there, add zpipe.c,
-  fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html.
+  fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html
 - Add FAQ entry and comments in deflate.c on uninitialized memory access
 - Add Solaris 9 make options in configure [Gilbert]
 - Allow strerror() usage in gzio.c for STDC
@@ -792,7 +895,7 @@ Changes in 1.2.1.1 (9 January 2004)
 - Fix a big fat bug in inftrees.c that prevented decoding valid
   dynamic blocks with only literals and no distance codes --
   Thanks to "Hot Emu" for the bug report and sample file
-- Add a note to puff.c on no distance codes case.
+- Add a note to puff.c on no distance codes case
 
 Changes in 1.2.1 (17 November 2003)
 - Remove a tab in contrib/gzappend/gzappend.c
@@ -970,7 +1073,7 @@ Changes in 1.2.0.1 (17 March 2003)
     - Include additional header file on VMS for off_t typedef
 - Try to use _vsnprintf where it supplants vsprintf [Vollant]
 - Add some casts in inffast.c
-- Enchance comments in zlib.h on what happens if gzprintf() tries to
+- Enhance comments in zlib.h on what happens if gzprintf() tries to
   write more than 4095 bytes before compression
 - Remove unused state from inflateBackEnd()
 - Remove exit(0) from minigzip.c, example.c
@@ -1036,14 +1139,14 @@ Changes in 1.2.0 (9 March 2003)
 - Add contrib/puff/ simple inflate for deflate format description
 
 Changes in 1.1.4 (11 March 2002)
-- ZFREE was repeated on same allocation on some error conditions.
+- ZFREE was repeated on same allocation on some error conditions
   This creates a security problem described in
   http://www.zlib.org/advisory-2002-03-11.txt
 - Returned incorrect error (Z_MEM_ERROR) on some invalid data
 - Avoid accesses before window for invalid distances with inflate window
-  less than 32K.
+  less than 32K
 - force windowBits > 8 to avoid a bug in the encoder for a window size
-  of 256 bytes. (A complete fix will be available in 1.1.5).
+  of 256 bytes. (A complete fix will be available in 1.1.5)
 
 Changes in 1.1.3 (9 July 1998)
 - fix "an inflate input buffer bug that shows up on rare but persistent
@@ -1117,7 +1220,7 @@ Changes in 1.1.1 (27 Feb 98)
 - remove block truncation heuristic which had very marginal effect for zlib
   (smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
   compression ratio on some files. This also allows inlining _tr_tally for
-  matches in deflate_slow.
+  matches in deflate_slow
 - added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier)
 
 Changes in 1.1.0 (24 Feb 98)
@@ -1148,7 +1251,7 @@ Changes in 1.0.9 (17 Feb 1998)
 - Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8
 - in inftrees.c, avoid cc -O bug on HP (Farshid Elahi)
 - in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with
-  the declaration of FAR (Gilles VOllant)
+  the declaration of FAR (Gilles Vollant)
 - install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann)
 - read_buf buf parameter of type Bytef* instead of charf*
 - zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout)
@@ -1162,7 +1265,7 @@ Changes in 1.0.8 (27 Jan 1998)
 - include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong)
 - use constant arrays for the static trees in trees.c instead of computing
   them at run time (thanks to Ken Raeburn for this suggestion). To create
-  trees.h, compile with GEN_TREES_H and run "make test".
+  trees.h, compile with GEN_TREES_H and run "make test"
 - check return code of example in "make test" and display result
 - pass minigzip command line options to file_compress
 - simplifying code of inflateSync to avoid gcc 2.8 bug
@@ -1201,12 +1304,12 @@ Changes in 1.0.6 (19 Jan 1998)
 - add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and
   gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code)
 - Fix a deflate bug occurring only with compression level 0 (thanks to
-  Andy Buckler for finding this one).
-- In minigzip, pass transparently also the first byte for .Z files.
+  Andy Buckler for finding this one)
+- In minigzip, pass transparently also the first byte for .Z files
 - return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress()
 - check Z_FINISH in inflate (thanks to Marc Schluper)
 - Implement deflateCopy (thanks to Adam Costello)
-- make static libraries by default in configure, add --shared option.
+- make static libraries by default in configure, add --shared option
 - move MSDOS or Windows specific files to directory msdos
 - suppress the notion of partial flush to simplify the interface
   (but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4)
@@ -1218,7 +1321,7 @@ Changes in 1.0.6 (19 Jan 1998)
 - added Makefile.nt (thanks to Stephen Williams)
 - added the unsupported "contrib" directory:
    contrib/asm386/ by Gilles Vollant <info@winimage.com>
-        386 asm code replacing longest_match().
+        386 asm code replacing longest_match()
    contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
         A C++ I/O streams interface to the zlib gz* functions
    contrib/iostream2/  by Tyge Løvset <Tyge.Lovset@cmr.no>
@@ -1226,7 +1329,7 @@ Changes in 1.0.6 (19 Jan 1998)
    contrib/untgz/  by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
         A very simple tar.gz file extractor using zlib
    contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl>
-        How to use compress(), uncompress() and the gz* functions from VB.
+        How to use compress(), uncompress() and the gz* functions from VB
 - pass params -f (filtered data), -h (huffman only), -1 to -9 (compression
   level) in minigzip (thanks to Tom Lane)
 
@@ -1235,8 +1338,8 @@ Changes in 1.0.6 (19 Jan 1998)
 - add undocumented function inflateSyncPoint() (hack for Paul Mackerras)
 - add undocumented function zError to convert error code to string
   (for Tim Smithers)
-- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code.
-- Use default memcpy for Symantec MSDOS compiler.
+- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code
+- Use default memcpy for Symantec MSDOS compiler
 - Add EXPORT keyword for check_func (needed for Windows DLL)
 - add current directory to LD_LIBRARY_PATH for "make test"
 - create also a link for libz.so.1
@@ -1249,7 +1352,7 @@ Changes in 1.0.6 (19 Jan 1998)
 - allow compilation with ANSI keywords only enabled for TurboC in large model
 - avoid "versionString"[0] (Borland bug)
 - add NEED_DUMMY_RETURN for Borland
-- use variable z_verbose for tracing in debug mode (L. Peter Deutsch).
+- use variable z_verbose for tracing in debug mode (L. Peter Deutsch)
 - allow compilation with CC
 - defined STDC for OS/2 (David Charlap)
 - limit external names to 8 chars for MVS (Thomas Lund)
@@ -1259,7 +1362,7 @@ Changes in 1.0.6 (19 Jan 1998)
 - use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
 - added makelcc.bat for lcc-win32 (Tom St Denis)
 - in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
-- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
+- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion
 - check for unistd.h in configure (for off_t)
 - remove useless check parameter in inflate_blocks_free
 - avoid useless assignment of s->check to itself in inflate_blocks_new
@@ -1280,7 +1383,7 @@ Changes in 1.0.5 (3 Jan 98)
 Changes in 1.0.4 (24 Jul 96)
 - In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
   bit, so the decompressor could decompress all the correct data but went
-  on to attempt decompressing extra garbage data. This affected minigzip too.
+  on to attempt decompressing extra garbage data. This affected minigzip too
 - zlibVersion and gzerror return const char* (needed for DLL)
 - port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
 - use z_error only for DEBUG (avoid problem with DLLs)
@@ -1310,7 +1413,7 @@ Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
 - fix array overlay in deflate.c which sometimes caused bad compressed data
 - fix inflate bug with empty stored block
 - fix MSDOS medium model which was broken in 0.99
-- fix deflateParams() which could generate bad compressed data.
+- fix deflateParams() which could generate bad compressed data
 - Bytef is define'd instead of typedef'ed (work around Borland bug)
 - added an INDEX file
 - new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
@@ -1331,7 +1434,7 @@ Changes in 0.99 (27 Jan 96)
 - allow preset dictionary shared between compressor and decompressor
 - allow compression level 0 (no compression)
 - add deflateParams in zlib.h: allow dynamic change of compression level
-  and compression strategy.
+  and compression strategy
 - test large buffers and deflateParams in example.c
 - add optional "configure" to build zlib as a shared library
 - suppress Makefile.qnx, use configure instead
@@ -1370,33 +1473,33 @@ Changes in 0.99 (27 Jan 96)
 - fix typo in Make_vms.com (f$trnlnm -> f$getsyi)
 - in fcalloc, normalize pointer if size > 65520 bytes
 - don't use special fcalloc for 32 bit Borland C++
-- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc...
+- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc.
 - use Z_BINARY instead of BINARY
 - document that gzclose after gzdopen will close the file
-- allow "a" as mode in gzopen.
+- allow "a" as mode in gzopen
 - fix error checking in gzread
 - allow skipping .gz extra-field on pipes
 - added reference to Perl interface in README
 - put the crc table in FAR data (I dislike more and more the medium model :)
 - added get_crc_table
-- added a dimension to all arrays (Borland C can't count).
+- added a dimension to all arrays (Borland C can't count)
 - workaround Borland C bug in declaration of inflate_codes_new & inflate_fast
 - guard against multiple inclusion of *.h (for precompiled header on Mac)
-- Watcom C pretends to be Microsoft C small model even in 32 bit mode.
+- Watcom C pretends to be Microsoft C small model even in 32 bit mode
 - don't use unsized arrays to avoid silly warnings by Visual C++:
      warning C4746: 'inflate_mask' : unsized array treated as  '__far'
-     (what's wrong with far data in far model?).
+     (what's wrong with far data in far model?)
 - define enum out of inflate_blocks_state to allow compilation with C++
 
 Changes in 0.95 (16 Aug 95)
 - fix MSDOS small and medium model (now easier to adapt to any compiler)
 - inlined send_bits
 - fix the final (:-) bug for deflate with flush (output was correct but
-  not completely flushed in rare occasions).
+  not completely flushed in rare occasions)
 - default window size is same for compression and decompression
-  (it's now sufficient to set MAX_WBITS in zconf.h).
+  (it's now sufficient to set MAX_WBITS in zconf.h)
 - voidp -> voidpf and voidnp -> voidp (for consistency with other
-  typedefs and because voidnp was not near in large model).
+  typedefs and because voidnp was not near in large model)
 
 Changes in 0.94 (13 Aug 95)
 - support MSDOS medium model
@@ -1405,12 +1508,12 @@ Changes in 0.94 (13 Aug 95)
 - added support for VMS
 - allow a compression level in gzopen()
 - gzflush now calls fflush
-- For deflate with flush, flush even if no more input is provided.
+- For deflate with flush, flush even if no more input is provided
 - rename libgz.a as libz.a
 - avoid complex expression in infcodes.c triggering Turbo C bug
 - work around a problem with gcc on Alpha (in INSERT_STRING)
 - don't use inline functions (problem with some gcc versions)
-- allow renaming of Byte, uInt, etc... with #define.
+- allow renaming of Byte, uInt, etc... with #define
 - avoid warning about (unused) pointer before start of array in deflate.c
 - avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c
 - avoid reserved word 'new' in trees.c
@@ -1429,7 +1532,7 @@ Changes in 0.92 (3 May 95)
 - no memcpy on Pyramid
 - suppressed inftest.c
 - optimized fill_window, put longest_match inline for gcc
-- optimized inflate on stored blocks.
+- optimized inflate on stored blocks
 - untabify all sources to simplify patches
 
 Changes in 0.91 (2 May 95)
@@ -1447,7 +1550,7 @@ Changes in 0.9 (1 May 95)
 - let again gzread copy uncompressed data unchanged (was working in 0.71)
 - deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented
 - added a test of inflateSync in example.c
-- moved MAX_WBITS to zconf.h because users might want to change that.
+- moved MAX_WBITS to zconf.h because users might want to change that
 - document explicitly that zalloc(64K) on MSDOS must return a normalized
   pointer (zero offset)
 - added Makefiles for Microsoft C, Turbo C, Borland C++
@@ -1456,7 +1559,7 @@ Changes in 0.9 (1 May 95)
 Changes in 0.8 (29 April 95)
 - added fast inflate (inffast.c)
 - deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this
-  is incompatible with previous versions of zlib which returned Z_OK.
+  is incompatible with previous versions of zlib which returned Z_OK
 - work around a TurboC compiler bug (bad code for b << 0, see infutil.h)
   (actually that was not a compiler bug, see 0.81 above)
 - gzread no longer reads one extra byte in certain cases
@@ -1466,50 +1569,50 @@ Changes in 0.8 (29 April 95)
 
 Changes in 0.71 (14 April 95)
 - Fixed more MSDOS compilation problems :( There is still a bug with
-  TurboC large model.
+  TurboC large model
 
 Changes in 0.7 (14 April 95)
-- Added full inflate support.
+- Added full inflate support
 - Simplified the crc32() interface. The pre- and post-conditioning
   (one's complement) is now done inside crc32(). WARNING: this is
-  incompatible with previous versions; see zlib.h for the new usage.
+  incompatible with previous versions; see zlib.h for the new usage
 
 Changes in 0.61 (12 April 95)
-- workaround for a bug in TurboC. example and minigzip now work on MSDOS.
+- workaround for a bug in TurboC. example and minigzip now work on MSDOS
 
 Changes in 0.6 (11 April 95)
 - added minigzip.c
 - added gzdopen to reopen a file descriptor as gzFile
-- added transparent reading of non-gziped files in gzread.
+- added transparent reading of non-gziped files in gzread
 - fixed bug in gzread (don't read crc as data)
-- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose).
+- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose)
 - don't allocate big arrays in the stack (for MSDOS)
 - fix some MSDOS compilation problems
 
 Changes in 0.5:
 - do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but
-  not yet Z_FULL_FLUSH.
+  not yet Z_FULL_FLUSH
 - support decompression but only in a single step (forced Z_FINISH)
-- added opaque object for zalloc and zfree.
+- added opaque object for zalloc and zfree
 - added deflateReset and inflateReset
-- added a variable zlib_version for consistency checking.
-- renamed the 'filter' parameter of deflateInit2 as 'strategy'.
-  Added Z_FILTERED and Z_HUFFMAN_ONLY constants.
+- added a variable zlib_version for consistency checking
+- renamed the 'filter' parameter of deflateInit2 as 'strategy'
+  Added Z_FILTERED and Z_HUFFMAN_ONLY constants
 
 Changes in 0.4:
-- avoid "zip" everywhere, use zlib instead of ziplib.
+- avoid "zip" everywhere, use zlib instead of ziplib
 - suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush
-  if compression method == 8.
+  if compression method == 8
 - added adler32 and crc32
 - renamed deflateOptions as deflateInit2, call one or the other but not both
-- added the method parameter for deflateInit2.
+- added the method parameter for deflateInit2
 - added inflateInit2
-- simplied considerably deflateInit and inflateInit by not supporting
+- simplified considerably deflateInit and inflateInit by not supporting
   user-provided history buffer. This is supported only in deflateInit2
-  and inflateInit2.
+  and inflateInit2
 
 Changes in 0.3:
 - prefix all macro names with Z_
-- use Z_FINISH instead of deflateEnd to finish compression.
+- use Z_FINISH instead of deflateEnd to finish compression
 - added Z_HUFFMAN_ONLY
 - added gzerror()
diff --git a/libs/zlib/FAQ b/libs/zlib/FAQ
index 99b7cf92e..92f5d3e29 100644
--- a/libs/zlib/FAQ
+++ b/libs/zlib/FAQ
@@ -4,7 +4,7 @@
 
 If your question is not there, please check the zlib home page
 http://zlib.net/ which may have more recent information.
-The lastest zlib FAQ is at http://zlib.net/zlib_faq.html
+The latest zlib FAQ is at http://zlib.net/zlib_faq.html
 
 
  1. Is zlib Y2K-compliant?
@@ -14,8 +14,7 @@ The lastest zlib FAQ is at http://zlib.net/zlib_faq.html
  2. Where can I get a Windows DLL version?
 
     The zlib sources can be compiled without change to produce a DLL.  See the
-    file win32/DLL_FAQ.txt in the zlib distribution.  Pointers to the
-    precompiled DLL are found in the zlib web site at http://zlib.net/ .
+    file win32/DLL_FAQ.txt in the zlib distribution.
 
  3. Where can I get a Visual Basic interface to zlib?
 
diff --git a/libs/zlib/LICENSE b/libs/zlib/LICENSE
new file mode 100644
index 000000000..ab8ee6f71
--- /dev/null
+++ b/libs/zlib/LICENSE
@@ -0,0 +1,22 @@
+Copyright notice:
+
+ (C) 1995-2022 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
diff --git a/libs/zlib/Makefile.in b/libs/zlib/Makefile.in
index 5a77949ff..cb8b00a9b 100644
--- a/libs/zlib/Makefile.in
+++ b/libs/zlib/Makefile.in
@@ -1,5 +1,5 @@
 # Makefile for zlib
-# Copyright (C) 1995-2017 Jean-loup Gailly, Mark Adler
+# Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
 # For conditions of distribution and use, see copyright notice in zlib.h
 
 # To compile and test, type:
@@ -7,10 +7,6 @@
 # Normally configure builds both a static and a shared library.
 # If you want to build just a static library, use: ./configure --static
 
-# To use the asm code, type:
-#    cp contrib/asm?86/match.S ./match.S
-#    make LOC=-DASMV OBJA=match.o
-
 # To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type:
 #    make install
 # To install in $HOME instead of /usr/local, use:
@@ -26,13 +22,13 @@ CFLAGS=-O
 
 SFLAGS=-O
 LDFLAGS=
-TEST_LDFLAGS=-L. libz.a
+TEST_LIBS=-L. libz.a
 LDSHARED=$(CC)
 CPP=$(CC) -E
 
 STATICLIB=libz.a
 SHAREDLIB=libz.so
-SHAREDLIBV=libz.so.1.2.11
+SHAREDLIBV=libz.so.1.3.1
 SHAREDLIBM=libz.so.1
 LIBS=$(STATICLIB) $(SHAREDLIBV)
 
@@ -87,12 +83,12 @@ test: all teststatic testshared
 
 teststatic: static
 	@TMPST=tmpst_$$; \
-	if echo hello world | ./minigzip | ./minigzip -d && ./example $$TMPST ; then \
+	if echo hello world | ${QEMU_RUN} ./minigzip | ${QEMU_RUN} ./minigzip -d && ${QEMU_RUN} ./example $$TMPST ; then \
 	  echo '		*** zlib test OK ***'; \
 	else \
 	  echo '		*** zlib test FAILED ***'; false; \
-	fi; \
-	rm -f $$TMPST
+	fi
+	@rm -f tmpst_$$
 
 testshared: shared
 	@LD_LIBRARY_PATH=`pwd`:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \
@@ -100,21 +96,21 @@ testshared: shared
 	DYLD_LIBRARY_PATH=`pwd`:$(DYLD_LIBRARY_PATH) ; export DYLD_LIBRARY_PATH; \
 	SHLIB_PATH=`pwd`:$(SHLIB_PATH) ; export SHLIB_PATH; \
 	TMPSH=tmpsh_$$; \
-	if echo hello world | ./minigzipsh | ./minigzipsh -d && ./examplesh $$TMPSH; then \
+	if echo hello world | ${QEMU_RUN} ./minigzipsh | ${QEMU_RUN} ./minigzipsh -d && ${QEMU_RUN} ./examplesh $$TMPSH; then \
 	  echo '		*** zlib shared test OK ***'; \
 	else \
 	  echo '		*** zlib shared test FAILED ***'; false; \
-	fi; \
-	rm -f $$TMPSH
+	fi
+	@rm -f tmpsh_$$
 
 test64: all64
 	@TMP64=tmp64_$$; \
-	if echo hello world | ./minigzip64 | ./minigzip64 -d && ./example64 $$TMP64; then \
+	if echo hello world | ${QEMU_RUN} ./minigzip64 | ${QEMU_RUN} ./minigzip64 -d && ${QEMU_RUN} ./example64 $$TMP64; then \
 	  echo '		*** zlib 64-bit test OK ***'; \
 	else \
 	  echo '		*** zlib 64-bit test FAILED ***'; false; \
-	fi; \
-	rm -f $$TMP64
+	fi
+	@rm -f tmp64_$$
 
 infcover.o: $(SRCDIR)test/infcover.c $(SRCDIR)zlib.h zconf.h
 	$(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/infcover.c
@@ -124,7 +120,7 @@ infcover: infcover.o libz.a
 
 cover: infcover
 	rm -f *.gcda
-	./infcover
+	${QEMU_RUN} ./infcover
 	gcov inf*.c
 
 libz.a: $(OBJS)
@@ -286,22 +282,22 @@ placebo $(SHAREDLIBV): $(PIC_OBJS) libz.a
 	-@rmdir objs
 
 example$(EXE): example.o $(STATICLIB)
-	$(CC) $(CFLAGS) -o $@ example.o $(TEST_LDFLAGS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ example.o $(TEST_LIBS)
 
 minigzip$(EXE): minigzip.o $(STATICLIB)
-	$(CC) $(CFLAGS) -o $@ minigzip.o $(TEST_LDFLAGS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ minigzip.o $(TEST_LIBS)
 
 examplesh$(EXE): example.o $(SHAREDLIBV)
-	$(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDLIBV)
+	$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) -L. $(SHAREDLIBV)
 
 minigzipsh$(EXE): minigzip.o $(SHAREDLIBV)
-	$(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDLIBV)
+	$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) -L. $(SHAREDLIBV)
 
 example64$(EXE): example64.o $(STATICLIB)
-	$(CC) $(CFLAGS) -o $@ example64.o $(TEST_LDFLAGS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ example64.o $(TEST_LIBS)
 
 minigzip64$(EXE): minigzip64.o $(STATICLIB)
-	$(CC) $(CFLAGS) -o $@ minigzip64.o $(TEST_LDFLAGS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ minigzip64.o $(TEST_LIBS)
 
 install-libs: $(LIBS)
 	-@if [ ! -d $(DESTDIR)$(exec_prefix)  ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi
@@ -363,8 +359,14 @@ zconf.h.cmakein: $(SRCDIR)zconf.h.in
 zconf: $(SRCDIR)zconf.h.in
 	cp -p $(SRCDIR)zconf.h.in zconf.h
 
+minizip-test: static
+	cd contrib/minizip && { CC="$(CC)" CFLAGS="$(CFLAGS)" $(MAKE) test ; cd ../.. ; }
+
+minizip-clean:
+	cd contrib/minizip && { $(MAKE) clean ; cd ../.. ; }
+
 mostlyclean: clean
-clean:
+clean: minizip-clean
 	rm -f *.o *.lo *~ \
 	   example$(EXE) minigzip$(EXE) examplesh$(EXE) minigzipsh$(EXE) \
 	   example64$(EXE) minigzip64$(EXE) \
@@ -376,15 +378,13 @@ clean:
 	rm -f contrib/infback9/*.gcda contrib/infback9/*.gcno contrib/infback9/*.gcov
 
 maintainer-clean: distclean
-distclean: clean zconf zconf.h.cmakein docs
+distclean: clean zconf zconf.h.cmakein
 	rm -f Makefile zlib.pc configure.log
 	-@rm -f .DS_Store
 	@if [ -f Makefile.in ]; then \
 	printf 'all:\n\t-@echo "Please use ./configure first.  Thank you."\n' > Makefile ; \
 	printf '\ndistclean:\n\tmake -f Makefile.in distclean\n' >> Makefile ; \
 	touch -r $(SRCDIR)Makefile.in Makefile ; fi
-	@if [ ! -f zconf.h.in ]; then rm -f zconf.h zconf.h.cmakein ; fi
-	@if [ ! -f zlib.3 ]; then rm -f zlib.3.pdf ; fi
 
 tags:
 	etags $(SRCDIR)*.[ch]
diff --git a/libs/zlib/README b/libs/zlib/README
index 51106de47..c5f917540 100644
--- a/libs/zlib/README
+++ b/libs/zlib/README
@@ -1,6 +1,6 @@
 ZLIB DATA COMPRESSION LIBRARY
 
-zlib 1.2.11 is a general purpose data compression library.  All the code is
+zlib 1.3.1 is a general purpose data compression library.  All the code is
 thread safe.  The data format used by the zlib library is described by RFCs
 (Request for Comments) 1950 to 1952 in the files
 http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
@@ -29,18 +29,17 @@ PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help.
 
 Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan.  1997
 issue of Dr.  Dobb's Journal; a copy of the article is available at
-http://marknelson.us/1997/01/01/zlib-engine/ .
+https://marknelson.us/posts/1997/01/01/zlib-engine.html .
 
-The changes made in version 1.2.11 are documented in the file ChangeLog.
+The changes made in version 1.3.1 are documented in the file ChangeLog.
 
 Unsupported third party contributions are provided in directory contrib/ .
 
-zlib is available in Java using the java.util.zip package, documented at
-http://java.sun.com/developer/technicalArticles/Programming/compression/ .
+zlib is available in Java using the java.util.zip package. Follow the API
+Documentation link at: https://docs.oracle.com/search/?q=java.util.zip .
 
-A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is available
-at CPAN (Comprehensive Perl Archive Network) sites, including
-http://search.cpan.org/~pmqs/IO-Compress-Zlib/ .
+A Perl interface to zlib and bzip2 written by Paul Marquess <pmqs@cpan.org>
+can be found at https://github.com/pmqs/IO-Compress .
 
 A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is
 available in Python 1.5 and later versions, see
@@ -64,7 +63,7 @@ Notes for some targets:
 - zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works
   when compiled with cc.
 
-- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is
+- On Digital Unix 4.0D (formerly OSF/1) on AlphaServer, the cc option -std1 is
   necessary to get gzprintf working correctly. This is done by configure.
 
 - zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
@@ -84,7 +83,7 @@ Acknowledgments:
 
 Copyright notice:
 
- (C) 1995-2017 Jean-loup Gailly and Mark Adler
+ (C) 1995-2024 Jean-loup Gailly and Mark Adler
 
   This software is provided 'as-is', without any express or implied
   warranty.  In no event will the authors be held liable for any damages
@@ -108,7 +107,10 @@ Copyright notice:
 If you use the zlib library in a product, we would appreciate *not* receiving
 lengthy legal documents to sign.  The sources are provided for free but without
 warranty of any kind.  The library has been entirely written by Jean-loup
-Gailly and Mark Adler; it does not include third-party code.
+Gailly and Mark Adler; it does not include third-party code.  We make all
+contributions to and distributions of this project solely in our personal
+capacity, and are not conveying any rights to any intellectual property of
+any third parties.
 
 If you redistribute modified sources, we would appreciate that you include in
 the file ChangeLog history information documenting your changes.  Please read
diff --git a/libs/zlib/adler32.c b/libs/zlib/adler32.c
index d0be4380a..04b81d29b 100644
--- a/libs/zlib/adler32.c
+++ b/libs/zlib/adler32.c
@@ -7,8 +7,6 @@
 
 #include "zutil.h"
 
-local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2));
-
 #define BASE 65521U     /* largest prime smaller than 65536 */
 #define NMAX 5552
 /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
@@ -60,11 +58,7 @@ local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2));
 #endif
 
 /* ========================================================================= */
-uLong ZEXPORT adler32_z(adler, buf, len)
-    uLong adler;
-    const Bytef *buf;
-    z_size_t len;
-{
+uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) {
     unsigned long sum2;
     unsigned n;
 
@@ -131,20 +125,12 @@ uLong ZEXPORT adler32_z(adler, buf, len)
 }
 
 /* ========================================================================= */
-uLong ZEXPORT adler32(adler, buf, len)
-    uLong adler;
-    const Bytef *buf;
-    uInt len;
-{
+uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len) {
     return adler32_z(adler, buf, len);
 }
 
 /* ========================================================================= */
-local uLong adler32_combine_(adler1, adler2, len2)
-    uLong adler1;
-    uLong adler2;
-    z_off64_t len2;
-{
+local uLong adler32_combine_(uLong adler1, uLong adler2, z_off64_t len2) {
     unsigned long sum1;
     unsigned long sum2;
     unsigned rem;
@@ -169,18 +155,10 @@ local uLong adler32_combine_(adler1, adler2, len2)
 }
 
 /* ========================================================================= */
-uLong ZEXPORT adler32_combine(adler1, adler2, len2)
-    uLong adler1;
-    uLong adler2;
-    z_off_t len2;
-{
+uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, z_off_t len2) {
     return adler32_combine_(adler1, adler2, len2);
 }
 
-uLong ZEXPORT adler32_combine64(adler1, adler2, len2)
-    uLong adler1;
-    uLong adler2;
-    z_off64_t len2;
-{
+uLong ZEXPORT adler32_combine64(uLong adler1, uLong adler2, z_off64_t len2) {
     return adler32_combine_(adler1, adler2, len2);
 }
diff --git a/libs/zlib/compress.c b/libs/zlib/compress.c
index e2db404ab..f43bacf7a 100644
--- a/libs/zlib/compress.c
+++ b/libs/zlib/compress.c
@@ -19,13 +19,8 @@
    memory, Z_BUF_ERROR if there was not enough room in the output buffer,
    Z_STREAM_ERROR if the level parameter is invalid.
 */
-int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong sourceLen;
-    int level;
-{
+int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source,
+                      uLong sourceLen, int level) {
     z_stream stream;
     int err;
     const uInt max = (uInt)-1;
@@ -65,12 +60,8 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
 
 /* ===========================================================================
  */
-int ZEXPORT compress (dest, destLen, source, sourceLen)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong sourceLen;
-{
+int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source,
+                     uLong sourceLen) {
     return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION);
 }
 
@@ -78,9 +69,7 @@ int ZEXPORT compress (dest, destLen, source, sourceLen)
      If the default memLevel or windowBits for deflateInit() is changed, then
    this function needs to be updated.
  */
-uLong ZEXPORT compressBound (sourceLen)
-    uLong sourceLen;
-{
+uLong ZEXPORT compressBound(uLong sourceLen) {
     return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
            (sourceLen >> 25) + 13;
 }
diff --git a/libs/zlib/configure b/libs/zlib/configure
index e974d1fd7..c55098afc 100755
--- a/libs/zlib/configure
+++ b/libs/zlib/configure
@@ -25,15 +25,18 @@ if test $SRCDIR = "."; then
     ZINCOUT="-I."
     SRCDIR=""
 else
-    ZINC='-include zconf.h'
+    ZINC='-I. -include zconf.h'
     ZINCOUT='-I. -I$(SRCDIR)'
     SRCDIR="$SRCDIR/"
 fi
 
 # set command prefix for cross-compilation
 if [ -n "${CHOST}" ]; then
-    uname="`echo "${CHOST}" | sed -e 's/^[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)-.*$/\1/'`"
+    uname=${CHOST}
+    mname=${CHOST}
     CROSS_PREFIX="${CHOST}-"
+else
+    mname=`(uname -a || echo unknown) 2>/dev/null`
 fi
 
 # destination name for static library
@@ -41,9 +44,8 @@ STATICLIB=libz.a
 
 # extract zlib version numbers from zlib.h
 VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < ${SRCDIR}zlib.h`
-VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < ${SRCDIR}zlib.h`
-VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.h`
-VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.h`
+VER3=`echo ${VER}|sed -n -e 's/\([0-9]\{1,\}\(\\.[0-9]\{1,\}\)\{1,2\}\).*/\1/p'`
+VER1=`echo ${VER}|sed -n -e 's/\([0-9]\{1,\}\)\\..*/\1/p'`
 
 # establish commands for library building
 if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
@@ -87,6 +89,8 @@ build64=0
 gcc=0
 warn=0
 debug=0
+address=0
+memory=0
 old_cc="$CC"
 old_cflags="$CFLAGS"
 OBJC='$(OBJZ) $(OBJG)'
@@ -98,7 +102,7 @@ leave()
   if test "$*" != "0"; then
     echo "** $0 aborting." | tee -a configure.log
   fi
-  rm -f $test.[co] $test $test$shared_ext $test.gcno ./--version
+  rm -rf $test.[co] $test $test$shared_ext $test.gcno $test.dSYM ./--version
   echo -------------------- >> configure.log
   echo >> configure.log
   echo >> configure.log
@@ -137,6 +141,9 @@ case "$1" in
     -c* | --const) zconst=1; shift ;;
     -w* | --warn) warn=1; shift ;;
     -d* | --debug) debug=1; shift ;;
+    --sanitize) address=1; shift ;;
+    --address) address=1; shift ;;
+    --memory) memory=1; shift ;;
     *)
       echo "unknown option: $1" | tee -a configure.log
       echo "$0 --help for help" | tee -a configure.log
@@ -165,10 +172,17 @@ extern int getchar();
 int hello() {return getchar();}
 EOF
 
-test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log
-cc=${CC-${CROSS_PREFIX}gcc}
-cflags=${CFLAGS-"-O3"}
-# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
+if test -z "$CC"; then
+  echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log
+  if ${CROSS_PREFIX}gcc -v >/dev/null 2>&1; then
+    cc=${CROSS_PREFIX}gcc
+  else
+    cc=${CROSS_PREFIX}cc
+  fi
+else
+  cc=${CC}
+fi
+
 case "$cc" in
   *gcc*) gcc=1 ;;
   *clang*) gcc=1 ;;
@@ -194,11 +208,17 @@ if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then
   fi
   if test "$warn" -eq 1; then
     if test "$zconst" -eq 1; then
-      CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual -pedantic -DZLIB_CONST"
+      CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual -DZLIB_CONST"
     else
-      CFLAGS="${CFLAGS} -Wall -Wextra -pedantic"
+      CFLAGS="${CFLAGS} -Wall -Wextra"
     fi
   fi
+  if test $address -eq 1; then
+    CFLAGS="${CFLAGS} -g -fsanitize=address -fno-omit-frame-pointer"
+  fi
+  if test $memory -eq 1; then
+    CFLAGS="${CFLAGS} -g -fsanitize=memory -fno-omit-frame-pointer"
+  fi
   if test $debug -eq 1; then
     CFLAGS="${CFLAGS} -DZLIB_DEBUG"
     SFLAGS="${SFLAGS} -DZLIB_DEBUG"
@@ -207,47 +227,54 @@ if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then
     uname=`(uname -s || echo unknown) 2>/dev/null`
   fi
   case "$uname" in
-  Linux* | linux* | GNU | GNU/* | solaris*)
+  Linux* | linux* | *-linux* | GNU | GNU/* | solaris*)
+        case "$mname" in
+        *sparc*)
+            LDFLAGS="${LDFLAGS} -Wl,--no-warn-rwx-segments" ;;
+        esac
         LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}zlib.map"} ;;
   *BSD | *bsd* | DragonFly)
         LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}zlib.map"}
         LDCONFIG="ldconfig -m" ;;
-  CYGWIN* | Cygwin* | cygwin* | OS/2*)
+  CYGWIN* | Cygwin* | cygwin* | *-cygwin* | OS/2*)
         EXE='.exe' ;;
-  MINGW* | mingw*)
-# temporary bypass
+  MINGW* | mingw* | *-mingw*)
         rm -f $test.[co] $test $test$shared_ext
-        echo "Please use win32/Makefile.gcc instead." | tee -a configure.log
-        leave 1
+        echo "If this doesn't work for you, try win32/Makefile.gcc." | tee -a configure.log
         LDSHARED=${LDSHARED-"$cc -shared"}
         LDSHAREDLIBC=""
         EXE='.exe' ;;
-  QNX*)  # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
-         # (alain.bonnefoy@icbt.com)
-                 LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;;
+  QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
+        # (alain.bonnefoy@icbt.com)
+        LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;;
   HP-UX*)
-         LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
-         case `(uname -m || echo unknown) 2>/dev/null` in
-         ia64)
-                 shared_ext='.so'
-                 SHAREDLIB='libz.so' ;;
-         *)
-                 shared_ext='.sl'
-                 SHAREDLIB='libz.sl' ;;
-         esac ;;
-  Darwin* | darwin*)
-             shared_ext='.dylib'
-             SHAREDLIB=libz$shared_ext
-             SHAREDLIBV=libz.$VER$shared_ext
-             SHAREDLIBM=libz.$VER1$shared_ext
-             LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}
-             if libtool -V 2>&1 | grep Apple > /dev/null; then
-                 AR="libtool"
-             else
-                 AR="/usr/bin/libtool"
-             fi
-             ARFLAGS="-o" ;;
-  *)             LDSHARED=${LDSHARED-"$cc -shared"} ;;
+        LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
+        case `(uname -m || echo unknown) 2>/dev/null` in
+        ia64)
+            shared_ext='.so'
+            SHAREDLIB='libz.so' ;;
+        *)
+            shared_ext='.sl'
+            SHAREDLIB='libz.sl' ;;
+        esac ;;
+  AIX*)
+        LDFLAGS="${LDFLAGS} -Wl,-brtl" ;;
+  Darwin* | darwin* | *-darwin*)
+        shared_ext='.dylib'
+        SHAREDLIB=libz$shared_ext
+        SHAREDLIBV=libz.$VER$shared_ext
+        SHAREDLIBM=libz.$VER1$shared_ext
+        LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}
+        if "${CROSS_PREFIX}libtool" -V 2>&1 | grep Apple > /dev/null; then
+            AR="${CROSS_PREFIX}libtool"
+        elif libtool -V 2>&1 | grep Apple > /dev/null; then
+            AR="libtool"
+        else
+            AR="/usr/bin/libtool"
+        fi
+        ARFLAGS="-o" ;;
+  *)
+        LDSHARED=${LDSHARED-"$cc -shared"} ;;
   esac
 else
   # find system name and corresponding cc options
@@ -367,8 +394,11 @@ else
   try()
   {
     show $*
-    ( $* ) >> configure.log 2>&1
+    got=`( $* ) 2>&1`
     ret=$?
+    if test "$got" != ""; then
+      printf "%s\n" "$got" >> configure.log
+    fi
     if test $ret -ne 0; then
       echo "(exit code "$ret")" >> configure.log
     fi
@@ -381,8 +411,11 @@ tryboth()
   show $*
   got=`( $* ) 2>&1`
   ret=$?
-  printf %s "$got" >> configure.log
+  if test "$got" != ""; then
+    printf "%s\n" "$got" >> configure.log
+  fi
   if test $ret -ne 0; then
+    echo "(exit code "$ret")" >> configure.log
     return $ret
   fi
   test "$got" = ""
@@ -409,7 +442,7 @@ EOF
 if test $shared -eq 1; then
   echo Checking for shared library support... | tee -a configure.log
   # we must test in two steps (cc then ld), required at least on SunOS 4.x
-  if try $CC -w -c $SFLAGS $test.c &&
+  if try $CC -c $SFLAGS $test.c &&
      try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
     echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log
   elif test -z "$old_cc" -a -z "$old_cflags"; then
@@ -433,20 +466,6 @@ else
   TEST="all teststatic testshared"
 fi
 
-# check for underscores in external names for use by assembler code
-CPP=${CPP-"$CC -E"}
-case $CFLAGS in
-  *ASMV*)
-    echo >> configure.log
-    show "$NM $test.o | grep _hello"
-    if test "`$NM $test.o | grep _hello | tee -a configure.log`" = ""; then
-      CPP="$CPP -DNO_UNDERLINE"
-      echo Checking for underline in external names... No. | tee -a configure.log
-    else
-      echo Checking for underline in external names... Yes. | tee -a configure.log
-    fi ;;
-esac
-
 echo >> configure.log
 
 # check for size_t
@@ -457,17 +476,11 @@ size_t dummy = 0;
 EOF
 if try $CC -c $CFLAGS $test.c; then
   echo "Checking for size_t... Yes." | tee -a configure.log
-  need_sizet=0
 else
   echo "Checking for size_t... No." | tee -a configure.log
-  need_sizet=1
-fi
-
-echo >> configure.log
-
-# find the size_t integer type, if needed
-if test $need_sizet -eq 1; then
-  cat > $test.c <<EOF
+  # find a size_t integer type
+  # check for long long
+  cat > $test.c << EOF
 long long dummy = 0;
 EOF
   if try $CC -c $CFLAGS $test.c; then
@@ -495,17 +508,13 @@ EOF
   if try $CC $CFLAGS -o $test $test.c; then
     sizet=`./$test`
     echo "Checking for a pointer-size integer type..." $sizet"." | tee -a configure.log
+    CFLAGS="${CFLAGS} -DNO_SIZE_T=${sizet}"
+    SFLAGS="${SFLAGS} -DNO_SIZE_T=${sizet}"
   else
-    echo "Failed to find a pointer-size integer type." | tee -a configure.log
-    leave 1
+    echo "Checking for a pointer-size integer type... not found." | tee -a configure.log
   fi
 fi
 
-if test $need_sizet -eq 1; then
-  CFLAGS="${CFLAGS} -DNO_SIZE_T=${sizet}"
-  SFLAGS="${SFLAGS} -DNO_SIZE_T=${sizet}"
-fi
-
 echo >> configure.log
 
 # check for large file support, and if none, check for fseeko()
@@ -849,7 +858,6 @@ echo SHAREDLIBV = $SHAREDLIBV >> configure.log
 echo STATICLIB = $STATICLIB >> configure.log
 echo TEST = $TEST >> configure.log
 echo VER = $VER >> configure.log
-echo Z_U4 = $Z_U4 >> configure.log
 echo SRCDIR = $SRCDIR >> configure.log
 echo exec_prefix = $exec_prefix >> configure.log
 echo includedir = $includedir >> configure.log
@@ -859,7 +867,7 @@ echo prefix = $prefix >> configure.log
 echo sharedlibdir = $sharedlibdir >> configure.log
 echo uname = $uname >> configure.log
 
-# udpate Makefile with the configure results
+# update Makefile with the configure results
 sed < ${SRCDIR}Makefile.in "
 /^CC *=/s#=.*#=$CC#
 /^CFLAGS *=/s#=.*#=$CFLAGS#
diff --git a/libs/zlib/contrib/README.contrib b/libs/zlib/contrib/README.contrib
index a411d5c39..5e5f95054 100644
--- a/libs/zlib/contrib/README.contrib
+++ b/libs/zlib/contrib/README.contrib
@@ -1,4 +1,4 @@
-All files under this contrib directory are UNSUPPORTED. There were
+All files under this contrib directory are UNSUPPORTED. They were
 provided by users of zlib and were not tested by the authors of zlib.
 Use at your own risk. Please contact the authors of the contributions
 for help about these, not the zlib authors. Thanks.
@@ -8,14 +8,6 @@ ada/        by Dmitriy Anisimkov <anisimkov@yahoo.com>
         Support for Ada
         See http://zlib-ada.sourceforge.net/
 
-amd64/      by Mikhail Teterin <mi@ALDAN.algebra.com>
-        asm code for AMD64
-        See patch at http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/96393
-
-asm686/     by Brian Raiter <breadbox@muppetlabs.com>
-        asm code for Pentium and PPro/PII, using the AT&T (GNU as) syntax
-        See http://www.muppetlabs.com/~breadbox/software/assembly.html
-
 blast/      by Mark Adler <madler@alumni.caltech.edu>
         Decompressor for output of PKWare Data Compression Library (DCL)
 
@@ -32,9 +24,6 @@ gcc_gvmat64/by Gilles Vollant <info@winimage.com>
 infback9/   by Mark Adler <madler@alumni.caltech.edu>
         Unsupported diffs to infback to decode the deflate64 format
 
-inflate86/  by Chris Anderson <christop@charm.net>
-        Tuned x86 gcc asm code to replace inflate_fast()
-
 iostream/   by Kevin Ruland <kevin@rodin.wustl.edu>
         A C++ I/O streams interface to the zlib gz* functions
 
@@ -45,16 +34,6 @@ iostream3/  by Ludwig Schwardt <schwardt@sun.ac.za>
             and Kevin Ruland <kevin@rodin.wustl.edu>
         Yet another C++ I/O streams interface
 
-masmx64/    by Gilles Vollant <info@winimage.com>
-        x86 64-bit (AMD64 and Intel EM64t) code for x64 assembler to
-        replace longest_match() and inflate_fast(),  also masm x86
-        64-bits translation of Chris Anderson inflate_fast()
-
-masmx86/    by Gilles Vollant <info@winimage.com>
-        x86 asm code to replace longest_match() and inflate_fast(),
-        for Visual C++ and MASM (32 bits).
-        Based on Brian Raiter (asm686) and Chris Anderson (inflate86)
-
 minizip/    by Gilles Vollant <info@winimage.com>
         Mini zip and unzip based on zlib
         Includes Zip64 support by Mathias Svensson <mathias@result42.com>
diff --git a/libs/zlib/contrib/ada/readme.txt b/libs/zlib/contrib/ada/readme.txt
index ce4d2cadf..efdd639fb 100644
--- a/libs/zlib/contrib/ada/readme.txt
+++ b/libs/zlib/contrib/ada/readme.txt
@@ -8,8 +8,8 @@ It provides Ada-style access to the ZLib C library.
 
         Here are the main changes since ZLib.Ada 1.2:
 
-- Attension: ZLib.Read generic routine have a initialization requirement
-  for Read_Last parameter now. It is a bit incompartible with previous version,
+- Attention: ZLib.Read generic routine have a initialization requirement
+  for Read_Last parameter now. It is a bit incompatible with previous version,
   but extends functionality, we could use new parameters Allow_Read_Some and
   Flush now.
 
diff --git a/libs/zlib/contrib/ada/test.adb b/libs/zlib/contrib/ada/test.adb
index 90773acfa..8b3503150 100644
--- a/libs/zlib/contrib/ada/test.adb
+++ b/libs/zlib/contrib/ada/test.adb
@@ -65,12 +65,12 @@ procedure Test is
    Time_Stamp : Ada.Calendar.Time;
 
    procedure Generate_File;
-   --  Generate file of spetsified size with some random data.
+   --  Generate file of specified size with some random data.
    --  The random data is repeatable, for the good compression.
 
    procedure Compare_Streams
      (Left, Right : in out Root_Stream_Type'Class);
-   --  The procedure compearing data in 2 streams.
+   --  The procedure comparing data in 2 streams.
    --  It is for compare data before and after compression/decompression.
 
    procedure Compare_Files (Left, Right : String);
diff --git a/libs/zlib/contrib/ada/zlib-streams.ads b/libs/zlib/contrib/ada/zlib-streams.ads
index 8e26cd450..af136933e 100644
--- a/libs/zlib/contrib/ada/zlib-streams.ads
+++ b/libs/zlib/contrib/ada/zlib-streams.ads
@@ -62,7 +62,7 @@ package ZLib.Streams is
                                     := Default_Buffer_Size;
       Write_Buffer_Size : in     Ada.Streams.Stream_Element_Offset
                                     := Default_Buffer_Size);
-   --  Create the Comression/Decompression stream.
+   --  Create the Compression/Decompression stream.
    --  If mode is In_Stream then Write operation is disabled.
    --  If mode is Out_Stream then Read operation is disabled.
 
diff --git a/libs/zlib/contrib/ada/zlib.adb b/libs/zlib/contrib/ada/zlib.adb
index 8b6fd686a..c1abe791d 100644
--- a/libs/zlib/contrib/ada/zlib.adb
+++ b/libs/zlib/contrib/ada/zlib.adb
@@ -204,7 +204,7 @@ package body ZLib is
       end if;
 
       --  We allow ZLib to make header only in case of default header type.
-      --  Otherwise we would either do header by ourselfs, or do not do
+      --  Otherwise we would either do header by ourselves, or do not do
       --  header at all.
 
       if Header = None or else Header = GZip then
diff --git a/libs/zlib/contrib/ada/zlib.ads b/libs/zlib/contrib/ada/zlib.ads
index 79ffc4095..81aaf1b6a 100644
--- a/libs/zlib/contrib/ada/zlib.ads
+++ b/libs/zlib/contrib/ada/zlib.ads
@@ -114,7 +114,7 @@ package ZLib is
    -- Compression strategy constants --
    ------------------------------------
 
-   --  RLE stategy could be used only in version 1.2.0 and later.
+   --  RLE strategy could be used only in version 1.2.0 and later.
 
    Filtered         : constant Strategy_Type;
    Huffman_Only     : constant Strategy_Type;
diff --git a/libs/zlib/contrib/amd64/amd64-match.S b/libs/zlib/contrib/amd64/amd64-match.S
deleted file mode 100644
index 81d4a1c94..000000000
--- a/libs/zlib/contrib/amd64/amd64-match.S
+++ /dev/null
@@ -1,452 +0,0 @@
-/*
- * match.S -- optimized version of longest_match()
- * based on the similar work by Gilles Vollant, and Brian Raiter, written 1998
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the BSD License. Use by owners of Che Guevarra
- * parafernalia is prohibited, where possible, and highly discouraged
- * elsewhere.
- */
-
-#ifndef NO_UNDERLINE
-#	define	match_init	_match_init
-#	define	longest_match	_longest_match
-#endif
-
-#define	scanend		ebx
-#define	scanendw	bx
-#define	chainlenwmask	edx /* high word: current chain len low word: s->wmask */
-#define	curmatch	rsi
-#define	curmatchd	esi
-#define	windowbestlen	r8
-#define	scanalign	r9
-#define	scanalignd	r9d
-#define	window		r10
-#define	bestlen		r11
-#define	bestlend	r11d
-#define	scanstart	r12d
-#define	scanstartw	r12w
-#define scan		r13
-#define nicematch	r14d
-#define	limit		r15
-#define	limitd		r15d
-#define prev		rcx
-
-/*
- * The 258 is a "magic number, not a parameter -- changing it
- * breaks the hell loose
- */
-#define	MAX_MATCH	(258)
-#define	MIN_MATCH	(3)
-#define	MIN_LOOKAHEAD	(MAX_MATCH + MIN_MATCH + 1)
-#define	MAX_MATCH_8	((MAX_MATCH + 7) & ~7)
-
-/* stack frame offsets */
-#define	LocalVarsSize	(112)
-#define _chainlenwmask	( 8-LocalVarsSize)(%rsp)
-#define _windowbestlen	(16-LocalVarsSize)(%rsp)
-#define save_r14        (24-LocalVarsSize)(%rsp)
-#define save_rsi        (32-LocalVarsSize)(%rsp)
-#define save_rbx        (40-LocalVarsSize)(%rsp)
-#define save_r12        (56-LocalVarsSize)(%rsp)
-#define save_r13        (64-LocalVarsSize)(%rsp)
-#define save_r15        (80-LocalVarsSize)(%rsp)
-
-
-.globl	match_init, longest_match
-
-/*
- * On AMD64 the first argument of a function (in our case -- the pointer to
- * deflate_state structure) is passed in %rdi, hence our offsets below are
- * all off of that.
- */
-
-/* you can check the structure offset by running
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "deflate.h"
-
-void print_depl()
-{
-deflate_state ds;
-deflate_state *s=&ds;
-printf("size pointer=%u\n",(int)sizeof(void*));
-
-printf("#define dsWSize         (%3u)(%%rdi)\n",(int)(((char*)&(s->w_size))-((char*)s)));
-printf("#define dsWMask         (%3u)(%%rdi)\n",(int)(((char*)&(s->w_mask))-((char*)s)));
-printf("#define dsWindow        (%3u)(%%rdi)\n",(int)(((char*)&(s->window))-((char*)s)));
-printf("#define dsPrev          (%3u)(%%rdi)\n",(int)(((char*)&(s->prev))-((char*)s)));
-printf("#define dsMatchLen      (%3u)(%%rdi)\n",(int)(((char*)&(s->match_length))-((char*)s)));
-printf("#define dsPrevMatch     (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_match))-((char*)s)));
-printf("#define dsStrStart      (%3u)(%%rdi)\n",(int)(((char*)&(s->strstart))-((char*)s)));
-printf("#define dsMatchStart    (%3u)(%%rdi)\n",(int)(((char*)&(s->match_start))-((char*)s)));
-printf("#define dsLookahead     (%3u)(%%rdi)\n",(int)(((char*)&(s->lookahead))-((char*)s)));
-printf("#define dsPrevLen       (%3u)(%%rdi)\n",(int)(((char*)&(s->prev_length))-((char*)s)));
-printf("#define dsMaxChainLen   (%3u)(%%rdi)\n",(int)(((char*)&(s->max_chain_length))-((char*)s)));
-printf("#define dsGoodMatch     (%3u)(%%rdi)\n",(int)(((char*)&(s->good_match))-((char*)s)));
-printf("#define dsNiceMatch     (%3u)(%%rdi)\n",(int)(((char*)&(s->nice_match))-((char*)s)));
-}
-
-*/
-
-
-/*
-  to compile for XCode 3.2 on MacOSX x86_64
-  - run "gcc -g -c -DXCODE_MAC_X64_STRUCTURE amd64-match.S"
- */
-
-
-#ifndef CURRENT_LINX_XCODE_MAC_X64_STRUCTURE
-#define dsWSize		( 68)(%rdi)
-#define dsWMask		( 76)(%rdi)
-#define dsWindow	( 80)(%rdi)
-#define dsPrev		( 96)(%rdi)
-#define dsMatchLen	(144)(%rdi)
-#define dsPrevMatch	(148)(%rdi)
-#define dsStrStart	(156)(%rdi)
-#define dsMatchStart	(160)(%rdi)
-#define dsLookahead	(164)(%rdi)
-#define dsPrevLen	(168)(%rdi)
-#define dsMaxChainLen	(172)(%rdi)
-#define dsGoodMatch	(188)(%rdi)
-#define dsNiceMatch	(192)(%rdi)
-
-#else 
-
-#ifndef STRUCT_OFFSET
-#	define STRUCT_OFFSET	(0)
-#endif
-
-
-#define dsWSize		( 56 + STRUCT_OFFSET)(%rdi)
-#define dsWMask		( 64 + STRUCT_OFFSET)(%rdi)
-#define dsWindow	( 72 + STRUCT_OFFSET)(%rdi)
-#define dsPrev		( 88 + STRUCT_OFFSET)(%rdi)
-#define dsMatchLen	(136 + STRUCT_OFFSET)(%rdi)
-#define dsPrevMatch	(140 + STRUCT_OFFSET)(%rdi)
-#define dsStrStart	(148 + STRUCT_OFFSET)(%rdi)
-#define dsMatchStart	(152 + STRUCT_OFFSET)(%rdi)
-#define dsLookahead	(156 + STRUCT_OFFSET)(%rdi)
-#define dsPrevLen	(160 + STRUCT_OFFSET)(%rdi)
-#define dsMaxChainLen	(164 + STRUCT_OFFSET)(%rdi)
-#define dsGoodMatch	(180 + STRUCT_OFFSET)(%rdi)
-#define dsNiceMatch	(184 + STRUCT_OFFSET)(%rdi)
-
-#endif
-
-
-
-
-.text
-
-/* uInt longest_match(deflate_state *deflatestate, IPos curmatch) */
-
-longest_match:
-/*
- * Retrieve the function arguments. %curmatch will hold cur_match
- * throughout the entire function (passed via rsi on amd64).
- * rdi will hold the pointer to the deflate_state (first arg on amd64)
- */
-		mov     %rsi, save_rsi
-		mov     %rbx, save_rbx
-		mov	%r12, save_r12
-		mov     %r13, save_r13
-		mov     %r14, save_r14
-		mov     %r15, save_r15
-
-/* uInt wmask = s->w_mask;						*/
-/* unsigned chain_length = s->max_chain_length;				*/
-/* if (s->prev_length >= s->good_match) {				*/
-/*     chain_length >>= 2;						*/
-/* }									*/
-
-		movl	dsPrevLen, %eax
-		movl	dsGoodMatch, %ebx
-		cmpl	%ebx, %eax
-		movl	dsWMask, %eax
-		movl	dsMaxChainLen, %chainlenwmask
-		jl	LastMatchGood
-		shrl	$2, %chainlenwmask
-LastMatchGood:
-
-/* chainlen is decremented once beforehand so that the function can	*/
-/* use the sign flag instead of the zero flag for the exit test.	*/
-/* It is then shifted into the high word, to make room for the wmask	*/
-/* value, which it will always accompany.				*/
-
-		decl	%chainlenwmask
-		shll	$16, %chainlenwmask
-		orl	%eax, %chainlenwmask
-
-/* if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;	*/
-
-		movl	dsNiceMatch, %eax
-		movl	dsLookahead, %ebx
-		cmpl	%eax, %ebx
-		jl	LookaheadLess
-		movl	%eax, %ebx
-LookaheadLess:	movl	%ebx, %nicematch
-
-/* register Bytef *scan = s->window + s->strstart;			*/
-
-		mov	dsWindow, %window
-		movl	dsStrStart, %limitd
-		lea	(%limit, %window), %scan
-
-/* Determine how many bytes the scan ptr is off from being		*/
-/* dword-aligned.							*/
-
-		mov	%scan, %scanalign
-		negl	%scanalignd
-		andl	$3, %scanalignd
-
-/* IPos limit = s->strstart > (IPos)MAX_DIST(s) ?			*/
-/*     s->strstart - (IPos)MAX_DIST(s) : NIL;				*/
-
-		movl	dsWSize, %eax
-		subl	$MIN_LOOKAHEAD, %eax
-		xorl	%ecx, %ecx
-		subl	%eax, %limitd
-		cmovng	%ecx, %limitd
-
-/* int best_len = s->prev_length;					*/
-
-		movl	dsPrevLen, %bestlend
-
-/* Store the sum of s->window + best_len in %windowbestlen locally, and in memory.	*/
-
-		lea	(%window, %bestlen), %windowbestlen
-		mov	%windowbestlen, _windowbestlen
-
-/* register ush scan_start = *(ushf*)scan;				*/
-/* register ush scan_end   = *(ushf*)(scan+best_len-1);			*/
-/* Posf *prev = s->prev;						*/
-
-		movzwl	(%scan), %scanstart
-		movzwl	-1(%scan, %bestlen), %scanend
-		mov	dsPrev, %prev
-
-/* Jump into the main loop.						*/
-
-		movl	%chainlenwmask, _chainlenwmask
-		jmp	LoopEntry
-
-.balign 16
-
-/* do {
- *     match = s->window + cur_match;
- *     if (*(ushf*)(match+best_len-1) != scan_end ||
- *         *(ushf*)match != scan_start) continue;
- *     [...]
- * } while ((cur_match = prev[cur_match & wmask]) > limit
- *          && --chain_length != 0);
- *
- * Here is the inner loop of the function. The function will spend the
- * majority of its time in this loop, and majority of that time will
- * be spent in the first ten instructions.
- */
-LookupLoop:
-		andl	%chainlenwmask, %curmatchd
-		movzwl	(%prev, %curmatch, 2), %curmatchd
-		cmpl	%limitd, %curmatchd
-		jbe	LeaveNow
-		subl	$0x00010000, %chainlenwmask
-		js	LeaveNow
-LoopEntry:	cmpw	-1(%windowbestlen, %curmatch), %scanendw
-		jne	LookupLoop
-		cmpw	%scanstartw, (%window, %curmatch)
-		jne	LookupLoop
-
-/* Store the current value of chainlen.					*/
-		movl	%chainlenwmask, _chainlenwmask
-
-/* %scan is the string under scrutiny, and %prev to the string we	*/
-/* are hoping to match it up with. In actuality, %esi and %edi are	*/
-/* both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and %edx is	*/
-/* initialized to -(MAX_MATCH_8 - scanalign).				*/
-
-		mov	$(-MAX_MATCH_8), %rdx
-		lea	(%curmatch, %window), %windowbestlen
-		lea	MAX_MATCH_8(%windowbestlen, %scanalign), %windowbestlen
-		lea	MAX_MATCH_8(%scan, %scanalign), %prev
-
-/* the prefetching below makes very little difference... */
-		prefetcht1	(%windowbestlen, %rdx)
-		prefetcht1	(%prev, %rdx)
-
-/*
- * Test the strings for equality, 8 bytes at a time. At the end,
- * adjust %rdx so that it is offset to the exact byte that mismatched.
- *
- * It should be confessed that this loop usually does not represent
- * much of the total running time. Replacing it with a more
- * straightforward "rep cmpsb" would not drastically degrade
- * performance -- unrolling it, for example, makes no difference.
- */
-
-#undef USE_SSE	/* works, but is 6-7% slower, than non-SSE... */
-
-LoopCmps:
-#ifdef USE_SSE
-		/* Preload the SSE registers */
-		movdqu	  (%windowbestlen, %rdx), %xmm1
-		movdqu	  (%prev, %rdx), %xmm2
-		pcmpeqb	%xmm2, %xmm1
-		movdqu	16(%windowbestlen, %rdx), %xmm3
-		movdqu	16(%prev, %rdx), %xmm4
-		pcmpeqb	%xmm4, %xmm3
-		movdqu	32(%windowbestlen, %rdx), %xmm5
-		movdqu	32(%prev, %rdx), %xmm6
-		pcmpeqb	%xmm6, %xmm5
-		movdqu	48(%windowbestlen, %rdx), %xmm7
-		movdqu	48(%prev, %rdx), %xmm8
-		pcmpeqb	%xmm8, %xmm7
-
-		/* Check the comparisions' results */
-		pmovmskb %xmm1, %rax
-		notw	%ax
-		bsfw	%ax, %ax
-		jnz	LeaveLoopCmps
-		
-		/* this is the only iteration of the loop with a possibility of having
-		   incremented rdx by 0x108 (each loop iteration add 16*4 = 0x40 
-		   and (0x40*4)+8=0x108 */
-		add	$8, %rdx
-		jz LenMaximum
-		add	$8, %rdx
-
-		
-		pmovmskb %xmm3, %rax
-		notw	%ax
-		bsfw	%ax, %ax
-		jnz	LeaveLoopCmps
-		
-		
-		add	$16, %rdx
-
-
-		pmovmskb %xmm5, %rax
-		notw	%ax
-		bsfw	%ax, %ax
-		jnz	LeaveLoopCmps
-		
-		add	$16, %rdx
-
-
-		pmovmskb %xmm7, %rax
-		notw	%ax
-		bsfw	%ax, %ax
-		jnz	LeaveLoopCmps
-		
-		add	$16, %rdx
-		
-		jmp	LoopCmps
-LeaveLoopCmps:	add	%rax, %rdx
-#else
-		mov	(%windowbestlen, %rdx), %rax
-		xor	(%prev, %rdx), %rax
-		jnz	LeaveLoopCmps
-		
-		mov	8(%windowbestlen, %rdx), %rax
-		xor	8(%prev, %rdx), %rax
-		jnz	LeaveLoopCmps8
-
-		mov	16(%windowbestlen, %rdx), %rax
-		xor	16(%prev, %rdx), %rax
-		jnz	LeaveLoopCmps16
-				
-		add	$24, %rdx
-		jnz	LoopCmps
-		jmp	LenMaximum
-#	if 0
-/*
- * This three-liner is tantalizingly simple, but bsf is a slow instruction,
- * and the complicated alternative down below is quite a bit faster. Sad...
- */
-
-LeaveLoopCmps:	bsf	%rax, %rax /* find the first non-zero bit */
-		shrl	$3, %eax /* divide by 8 to get the byte */
-		add	%rax, %rdx
-#	else
-LeaveLoopCmps16:
-		add	$8, %rdx
-LeaveLoopCmps8:
-		add	$8, %rdx
-LeaveLoopCmps:	testl   $0xFFFFFFFF, %eax /* Check the first 4 bytes */
-		jnz     Check16
-		add     $4, %rdx
-		shr     $32, %rax
-Check16:        testw   $0xFFFF, %ax
-		jnz     LenLower
-		add	$2, %rdx
-		shrl	$16, %eax
-LenLower:	subb	$1, %al
-		adc	$0, %rdx
-#	endif
-#endif
-
-/* Calculate the length of the match. If it is longer than MAX_MATCH,	*/
-/* then automatically accept it as the best possible match and leave.	*/
-
-		lea	(%prev, %rdx), %rax
-		sub	%scan, %rax
-		cmpl	$MAX_MATCH, %eax
-		jge	LenMaximum
-
-/* If the length of the match is not longer than the best match we	*/
-/* have so far, then forget it and return to the lookup loop.		*/
-
-		cmpl	%bestlend, %eax
-		jg	LongerMatch
-		mov	_windowbestlen, %windowbestlen
-		mov	dsPrev, %prev
-		movl	_chainlenwmask, %edx
-		jmp	LookupLoop
-
-/*         s->match_start = cur_match;					*/
-/*         best_len = len;						*/
-/*         if (len >= nice_match) break;				*/
-/*         scan_end = *(ushf*)(scan+best_len-1);			*/
-
-LongerMatch:
-		movl	%eax, %bestlend
-		movl	%curmatchd, dsMatchStart
-		cmpl	%nicematch, %eax
-		jge	LeaveNow
-
-		lea	(%window, %bestlen), %windowbestlen
-		mov	%windowbestlen, _windowbestlen
-
-		movzwl	-1(%scan, %rax), %scanend
-		mov	dsPrev, %prev
-		movl	_chainlenwmask, %chainlenwmask
-		jmp	LookupLoop
-
-/* Accept the current string, with the maximum possible length.		*/
-
-LenMaximum:
-		movl	$MAX_MATCH, %bestlend
-		movl	%curmatchd, dsMatchStart
-
-/* if ((uInt)best_len <= s->lookahead) return (uInt)best_len;		*/
-/* return s->lookahead;							*/
-
-LeaveNow:
-		movl	dsLookahead, %eax
-		cmpl	%eax, %bestlend
-		cmovngl	%bestlend, %eax
-LookaheadRet:
-
-/* Restore the registers and return from whence we came.			*/
-
-	mov	save_rsi, %rsi
-	mov	save_rbx, %rbx
-	mov	save_r12, %r12
-	mov	save_r13, %r13
-	mov	save_r14, %r14
-	mov	save_r15, %r15
-
-	ret
-
-match_init:	ret
diff --git a/libs/zlib/contrib/asm686/README.686 b/libs/zlib/contrib/asm686/README.686
deleted file mode 100644
index a0bf3bea4..000000000
--- a/libs/zlib/contrib/asm686/README.686
+++ /dev/null
@@ -1,51 +0,0 @@
-This is a patched version of zlib, modified to use
-Pentium-Pro-optimized assembly code in the deflation algorithm. The
-files changed/added by this patch are:
-
-README.686
-match.S
-
-The speedup that this patch provides varies, depending on whether the
-compiler used to build the original version of zlib falls afoul of the
-PPro's speed traps. My own tests show a speedup of around 10-20% at
-the default compression level, and 20-30% using -9, against a version
-compiled using gcc 2.7.2.3. Your mileage may vary.
-
-Note that this code has been tailored for the PPro/PII in particular,
-and will not perform particuarly well on a Pentium.
-
-If you are using an assembler other than GNU as, you will have to
-translate match.S to use your assembler's syntax. (Have fun.)
-
-Brian Raiter
-breadbox@muppetlabs.com
-April, 1998
-
-
-Added for zlib 1.1.3:
-
-The patches come from
-http://www.muppetlabs.com/~breadbox/software/assembly.html
-
-To compile zlib with this asm file, copy match.S to the zlib directory
-then do:
-
-CFLAGS="-O3 -DASMV" ./configure
-make OBJA=match.o
-
-
-Update:
-
-I've been ignoring these assembly routines for years, believing that
-gcc's generated code had caught up with it sometime around gcc 2.95
-and the major rearchitecting of the Pentium 4. However, I recently
-learned that, despite what I believed, this code still has some life
-in it. On the Pentium 4 and AMD64 chips, it continues to run about 8%
-faster than the code produced by gcc 4.1.
-
-In acknowledgement of its continuing usefulness, I've altered the
-license to match that of the rest of zlib. Share and Enjoy!
-
-Brian Raiter
-breadbox@muppetlabs.com
-April, 2007
diff --git a/libs/zlib/contrib/asm686/match.S b/libs/zlib/contrib/asm686/match.S
deleted file mode 100644
index fa4210927..000000000
--- a/libs/zlib/contrib/asm686/match.S
+++ /dev/null
@@ -1,357 +0,0 @@
-/* match.S -- x86 assembly version of the zlib longest_match() function.
- * Optimized for the Intel 686 chips (PPro and later).
- *
- * Copyright (C) 1998, 2007 Brian Raiter <breadbox@muppetlabs.com>
- *
- * This software is provided 'as-is', without any express or implied
- * warranty.  In no event will the author be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- *    claim that you wrote the original software. If you use this software
- *    in a product, an acknowledgment in the product documentation would be
- *    appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- */
-
-#ifndef NO_UNDERLINE
-#define	match_init	_match_init
-#define	longest_match	_longest_match
-#endif
-
-#define	MAX_MATCH	(258)
-#define	MIN_MATCH	(3)
-#define	MIN_LOOKAHEAD	(MAX_MATCH + MIN_MATCH + 1)
-#define	MAX_MATCH_8	((MAX_MATCH + 7) & ~7)
-
-/* stack frame offsets */
-
-#define	chainlenwmask		0	/* high word: current chain len	*/
-					/* low word: s->wmask		*/
-#define	window			4	/* local copy of s->window	*/
-#define	windowbestlen		8	/* s->window + bestlen		*/
-#define	scanstart		16	/* first two bytes of string	*/
-#define	scanend			12	/* last two bytes of string	*/
-#define	scanalign		20	/* dword-misalignment of string	*/
-#define	nicematch		24	/* a good enough match size	*/
-#define	bestlen			28	/* size of best match so far	*/
-#define	scan			32	/* ptr to string wanting match	*/
-
-#define	LocalVarsSize		(36)
-/*	saved ebx		36 */
-/*	saved edi		40 */
-/*	saved esi		44 */
-/*	saved ebp		48 */
-/*	return address		52 */
-#define	deflatestate		56	/* the function arguments	*/
-#define	curmatch		60
-
-/* All the +zlib1222add offsets are due to the addition of fields
- *  in zlib in the deflate_state structure since the asm code was first written
- * (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)").
- * (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0").
- * if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8").
- */
-
-#define zlib1222add		(8)
-
-#define	dsWSize			(36+zlib1222add)
-#define	dsWMask			(44+zlib1222add)
-#define	dsWindow		(48+zlib1222add)
-#define	dsPrev			(56+zlib1222add)
-#define	dsMatchLen		(88+zlib1222add)
-#define	dsPrevMatch		(92+zlib1222add)
-#define	dsStrStart		(100+zlib1222add)
-#define	dsMatchStart		(104+zlib1222add)
-#define	dsLookahead		(108+zlib1222add)
-#define	dsPrevLen		(112+zlib1222add)
-#define	dsMaxChainLen		(116+zlib1222add)
-#define	dsGoodMatch		(132+zlib1222add)
-#define	dsNiceMatch		(136+zlib1222add)
-
-
-.file "match.S"
-
-.globl	match_init, longest_match
-
-.text
-
-/* uInt longest_match(deflate_state *deflatestate, IPos curmatch) */
-.cfi_sections	.debug_frame
-
-longest_match:
-
-.cfi_startproc
-/* Save registers that the compiler may be using, and adjust %esp to	*/
-/* make room for our stack frame.					*/
-
-		pushl	%ebp
-		.cfi_def_cfa_offset 8
-		.cfi_offset ebp, -8
-		pushl	%edi
-		.cfi_def_cfa_offset 12
-		pushl	%esi
-		.cfi_def_cfa_offset 16
-		pushl	%ebx
-		.cfi_def_cfa_offset 20
-		subl	$LocalVarsSize, %esp
-		.cfi_def_cfa_offset LocalVarsSize+20
-
-/* Retrieve the function arguments. %ecx will hold cur_match		*/
-/* throughout the entire function. %edx will hold the pointer to the	*/
-/* deflate_state structure during the function's setup (before		*/
-/* entering the main loop).						*/
-
-		movl	deflatestate(%esp), %edx
-		movl	curmatch(%esp), %ecx
-
-/* uInt wmask = s->w_mask;						*/
-/* unsigned chain_length = s->max_chain_length;				*/
-/* if (s->prev_length >= s->good_match) {				*/
-/*     chain_length >>= 2;						*/
-/* }									*/
- 
-		movl	dsPrevLen(%edx), %eax
-		movl	dsGoodMatch(%edx), %ebx
-		cmpl	%ebx, %eax
-		movl	dsWMask(%edx), %eax
-		movl	dsMaxChainLen(%edx), %ebx
-		jl	LastMatchGood
-		shrl	$2, %ebx
-LastMatchGood:
-
-/* chainlen is decremented once beforehand so that the function can	*/
-/* use the sign flag instead of the zero flag for the exit test.	*/
-/* It is then shifted into the high word, to make room for the wmask	*/
-/* value, which it will always accompany.				*/
-
-		decl	%ebx
-		shll	$16, %ebx
-		orl	%eax, %ebx
-		movl	%ebx, chainlenwmask(%esp)
-
-/* if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;	*/
-
-		movl	dsNiceMatch(%edx), %eax
-		movl	dsLookahead(%edx), %ebx
-		cmpl	%eax, %ebx
-		jl	LookaheadLess
-		movl	%eax, %ebx
-LookaheadLess:	movl	%ebx, nicematch(%esp)
-
-/* register Bytef *scan = s->window + s->strstart;			*/
-
-		movl	dsWindow(%edx), %esi
-		movl	%esi, window(%esp)
-		movl	dsStrStart(%edx), %ebp
-		lea	(%esi,%ebp), %edi
-		movl	%edi, scan(%esp)
-
-/* Determine how many bytes the scan ptr is off from being		*/
-/* dword-aligned.							*/
-
-		movl	%edi, %eax
-		negl	%eax
-		andl	$3, %eax
-		movl	%eax, scanalign(%esp)
-
-/* IPos limit = s->strstart > (IPos)MAX_DIST(s) ?			*/
-/*     s->strstart - (IPos)MAX_DIST(s) : NIL;				*/
-
-		movl	dsWSize(%edx), %eax
-		subl	$MIN_LOOKAHEAD, %eax
-		subl	%eax, %ebp
-		jg	LimitPositive
-		xorl	%ebp, %ebp
-LimitPositive:
-
-/* int best_len = s->prev_length;					*/
-
-		movl	dsPrevLen(%edx), %eax
-		movl	%eax, bestlen(%esp)
-
-/* Store the sum of s->window + best_len in %esi locally, and in %esi.	*/
-
-		addl	%eax, %esi
-		movl	%esi, windowbestlen(%esp)
-
-/* register ush scan_start = *(ushf*)scan;				*/
-/* register ush scan_end   = *(ushf*)(scan+best_len-1);			*/
-/* Posf *prev = s->prev;						*/
-
-		movzwl	(%edi), %ebx
-		movl	%ebx, scanstart(%esp)
-		movzwl	-1(%edi,%eax), %ebx
-		movl	%ebx, scanend(%esp)
-		movl	dsPrev(%edx), %edi
-
-/* Jump into the main loop.						*/
-
-		movl	chainlenwmask(%esp), %edx
-		jmp	LoopEntry
-
-.balign 16
-
-/* do {
- *     match = s->window + cur_match;
- *     if (*(ushf*)(match+best_len-1) != scan_end ||
- *         *(ushf*)match != scan_start) continue;
- *     [...]
- * } while ((cur_match = prev[cur_match & wmask]) > limit
- *          && --chain_length != 0);
- *
- * Here is the inner loop of the function. The function will spend the
- * majority of its time in this loop, and majority of that time will
- * be spent in the first ten instructions.
- *
- * Within this loop:
- * %ebx = scanend
- * %ecx = curmatch
- * %edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
- * %esi = windowbestlen - i.e., (window + bestlen)
- * %edi = prev
- * %ebp = limit
- */
-LookupLoop:
-		andl	%edx, %ecx
-		movzwl	(%edi,%ecx,2), %ecx
-		cmpl	%ebp, %ecx
-		jbe	LeaveNow
-		subl	$0x00010000, %edx
-		js	LeaveNow
-LoopEntry:	movzwl	-1(%esi,%ecx), %eax
-		cmpl	%ebx, %eax
-		jnz	LookupLoop
-		movl	window(%esp), %eax
-		movzwl	(%eax,%ecx), %eax
-		cmpl	scanstart(%esp), %eax
-		jnz	LookupLoop
-
-/* Store the current value of chainlen.					*/
-
-		movl	%edx, chainlenwmask(%esp)
-
-/* Point %edi to the string under scrutiny, and %esi to the string we	*/
-/* are hoping to match it up with. In actuality, %esi and %edi are	*/
-/* both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and %edx is	*/
-/* initialized to -(MAX_MATCH_8 - scanalign).				*/
-
-		movl	window(%esp), %esi
-		movl	scan(%esp), %edi
-		addl	%ecx, %esi
-		movl	scanalign(%esp), %eax
-		movl	$(-MAX_MATCH_8), %edx
-		lea	MAX_MATCH_8(%edi,%eax), %edi
-		lea	MAX_MATCH_8(%esi,%eax), %esi
-
-/* Test the strings for equality, 8 bytes at a time. At the end,
- * adjust %edx so that it is offset to the exact byte that mismatched.
- *
- * We already know at this point that the first three bytes of the
- * strings match each other, and they can be safely passed over before
- * starting the compare loop. So what this code does is skip over 0-3
- * bytes, as much as necessary in order to dword-align the %edi
- * pointer. (%esi will still be misaligned three times out of four.)
- *
- * It should be confessed that this loop usually does not represent
- * much of the total running time. Replacing it with a more
- * straightforward "rep cmpsb" would not drastically degrade
- * performance.
- */
-LoopCmps:
-		movl	(%esi,%edx), %eax
-		xorl	(%edi,%edx), %eax
-		jnz	LeaveLoopCmps
-		movl	4(%esi,%edx), %eax
-		xorl	4(%edi,%edx), %eax
-		jnz	LeaveLoopCmps4
-		addl	$8, %edx
-		jnz	LoopCmps
-		jmp	LenMaximum
-LeaveLoopCmps4:	addl	$4, %edx
-LeaveLoopCmps:	testl	$0x0000FFFF, %eax
-		jnz	LenLower
-		addl	$2, %edx
-		shrl	$16, %eax
-LenLower:	subb	$1, %al
-		adcl	$0, %edx
-
-/* Calculate the length of the match. If it is longer than MAX_MATCH,	*/
-/* then automatically accept it as the best possible match and leave.	*/
-
-		lea	(%edi,%edx), %eax
-		movl	scan(%esp), %edi
-		subl	%edi, %eax
-		cmpl	$MAX_MATCH, %eax
-		jge	LenMaximum
-
-/* If the length of the match is not longer than the best match we	*/
-/* have so far, then forget it and return to the lookup loop.		*/
-
-		movl	deflatestate(%esp), %edx
-		movl	bestlen(%esp), %ebx
-		cmpl	%ebx, %eax
-		jg	LongerMatch
-		movl	windowbestlen(%esp), %esi
-		movl	dsPrev(%edx), %edi
-		movl	scanend(%esp), %ebx
-		movl	chainlenwmask(%esp), %edx
-		jmp	LookupLoop
-
-/*         s->match_start = cur_match;					*/
-/*         best_len = len;						*/
-/*         if (len >= nice_match) break;				*/
-/*         scan_end = *(ushf*)(scan+best_len-1);			*/
-
-LongerMatch:	movl	nicematch(%esp), %ebx
-		movl	%eax, bestlen(%esp)
-		movl	%ecx, dsMatchStart(%edx)
-		cmpl	%ebx, %eax
-		jge	LeaveNow
-		movl	window(%esp), %esi
-		addl	%eax, %esi
-		movl	%esi, windowbestlen(%esp)
-		movzwl	-1(%edi,%eax), %ebx
-		movl	dsPrev(%edx), %edi
-		movl	%ebx, scanend(%esp)
-		movl	chainlenwmask(%esp), %edx
-		jmp	LookupLoop
-
-/* Accept the current string, with the maximum possible length.		*/
-
-LenMaximum:	movl	deflatestate(%esp), %edx
-		movl	$MAX_MATCH, bestlen(%esp)
-		movl	%ecx, dsMatchStart(%edx)
-
-/* if ((uInt)best_len <= s->lookahead) return (uInt)best_len;		*/
-/* return s->lookahead;							*/
-
-LeaveNow:
-		movl	deflatestate(%esp), %edx
-		movl	bestlen(%esp), %ebx
-		movl	dsLookahead(%edx), %eax
-		cmpl	%eax, %ebx
-		jg	LookaheadRet
-		movl	%ebx, %eax
-LookaheadRet:
-
-/* Restore the stack and return from whence we came.			*/
-
-		addl	$LocalVarsSize, %esp
-		.cfi_def_cfa_offset 20
-		popl	%ebx
-		.cfi_def_cfa_offset 16
-		popl	%esi
-		.cfi_def_cfa_offset 12
-		popl	%edi
-		.cfi_def_cfa_offset 8
-		popl	%ebp
-		.cfi_def_cfa_offset 4
-.cfi_endproc
-match_init:	ret
diff --git a/libs/zlib/contrib/blast/blast.h b/libs/zlib/contrib/blast/blast.h
index 6cf65eda1..ef8544c53 100644
--- a/libs/zlib/contrib/blast/blast.h
+++ b/libs/zlib/contrib/blast/blast.h
@@ -57,7 +57,7 @@ int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow,
  * use by the application to pass an input descriptor to infun(), if desired.
  *
  * If left and in are not NULL and *left is not zero when blast() is called,
- * then the *left bytes are *in are consumed for input before infun() is used.
+ * then the *left bytes at *in are consumed for input before infun() is used.
  *
  * The output function is invoked: err = outfun(how, buf, len), where the bytes
  * to be written are buf[0..len-1].  If err is not zero, then blast() returns
diff --git a/libs/zlib/contrib/delphi/ZLib.pas b/libs/zlib/contrib/delphi/ZLib.pas
index 060e19911..93fa4c9ed 100644
--- a/libs/zlib/contrib/delphi/ZLib.pas
+++ b/libs/zlib/contrib/delphi/ZLib.pas
@@ -152,7 +152,7 @@ procedure DecompressToUserBuf(const InBuf: Pointer; InBytes: Integer;
   const OutBuf: Pointer; BufSize: Integer);
 
 const
-  zlib_version = '1.2.11';
+  zlib_version = '1.3.1';
 
 type
   EZlibError = class(Exception);
diff --git a/libs/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs b/libs/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs
index 788b2fcec..de88dcf11 100644
--- a/libs/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs
+++ b/libs/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs
@@ -34,7 +34,7 @@ namespace DotZLib
         }
 
         /// <summary>
-        /// Initializes a new instance of the checksum generator basewith a specified value
+        /// Initializes a new instance of the checksum generator base with a specified value
         /// </summary>
         /// <param name="initialValue">The value to set the current checksum to</param>
         public ChecksumGeneratorBase(uint initialValue)
@@ -61,7 +61,7 @@ namespace DotZLib
         /// <exception cref="ArgumentException">The sum of offset and count is larger than the length of <c>data</c></exception>
         /// <exception cref="NullReferenceException"><c>data</c> is a null reference</exception>
         /// <exception cref="ArgumentOutOfRangeException">Offset or count is negative.</exception>
-        /// <remarks>All the other <c>Update</c> methods are implmeneted in terms of this one.
+        /// <remarks>All the other <c>Update</c> methods are implemented in terms of this one.
         /// This is therefore the only method a derived class has to implement</remarks>
         public abstract void Update(byte[] data, int offset, int count);
 
diff --git a/libs/zlib/contrib/dotzlib/DotZLib/CodecBase.cs b/libs/zlib/contrib/dotzlib/DotZLib/CodecBase.cs
index 42e6da3a5..c4bc8b879 100644
--- a/libs/zlib/contrib/dotzlib/DotZLib/CodecBase.cs
+++ b/libs/zlib/contrib/dotzlib/DotZLib/CodecBase.cs
@@ -139,7 +139,7 @@ namespace DotZLib
         /// <remarks>This must be implemented by a derived class</remarks>
         protected abstract void CleanUp();
 
-        // performs the release of the handles and calls the dereived CleanUp()
+        // performs the release of the handles and calls the derived CleanUp()
         private void CleanUp(bool isDisposing)
         {
             if (!_isDisposed)
@@ -160,7 +160,7 @@ namespace DotZLib
         #region Helper methods
 
         /// <summary>
-        /// Copies a number of bytes to the internal codec buffer - ready for proccesing
+        /// Copies a number of bytes to the internal codec buffer - ready for processing
         /// </summary>
         /// <param name="data">The byte array that contains the data to copy</param>
         /// <param name="startIndex">The index of the first byte to copy</param>
diff --git a/libs/zlib/contrib/dotzlib/DotZLib/GZipStream.cs b/libs/zlib/contrib/dotzlib/DotZLib/GZipStream.cs
index b161300b1..58091d3a3 100644
--- a/libs/zlib/contrib/dotzlib/DotZLib/GZipStream.cs
+++ b/libs/zlib/contrib/dotzlib/DotZLib/GZipStream.cs
@@ -246,7 +246,7 @@ namespace DotZLib
         }
 
         /// <summary>
-        ///  Not suppported.
+        ///  Not supported.
         /// </summary>
         /// <param name="offset"></param>
         /// <param name="origin"></param>
@@ -268,7 +268,7 @@ namespace DotZLib
         }
 
         /// <summary>
-        /// Gets/sets the current position in the <c>GZipStream</c>. Not suppported.
+        /// Gets/sets the current position in the <c>GZipStream</c>. Not supported.
         /// </summary>
         /// <remarks>In this implementation this property is not supported</remarks>
         /// <exception cref="NotSupportedException">Always thrown</exception>
@@ -285,7 +285,7 @@ namespace DotZLib
         }
 
         /// <summary>
-        /// Gets the size of the stream. Not suppported.
+        /// Gets the size of the stream. Not supported.
         /// </summary>
         /// <remarks>In this implementation this property is not supported</remarks>
         /// <exception cref="NotSupportedException">Always thrown</exception>
diff --git a/libs/zlib/contrib/dotzlib/DotZLib/UnitTests.cs b/libs/zlib/contrib/dotzlib/DotZLib/UnitTests.cs
index 44f76332b..d4f098023 100644
--- a/libs/zlib/contrib/dotzlib/DotZLib/UnitTests.cs
+++ b/libs/zlib/contrib/dotzlib/DotZLib/UnitTests.cs
@@ -156,7 +156,7 @@ namespace DotZLibTests
         public void Info_Version()
         {
             Info info = new Info();
-            Assert.AreEqual("1.2.11", Info.Version);
+            Assert.AreEqual("1.3.1", Info.Version);
             Assert.AreEqual(32, info.SizeOfUInt);
             Assert.AreEqual(32, info.SizeOfULong);
             Assert.AreEqual(32, info.SizeOfPointer);
diff --git a/libs/zlib/contrib/dotzlib/readme.txt b/libs/zlib/contrib/dotzlib/readme.txt
index 4d8c2dd93..9675f41d2 100644
--- a/libs/zlib/contrib/dotzlib/readme.txt
+++ b/libs/zlib/contrib/dotzlib/readme.txt
@@ -36,7 +36,7 @@ Build instructions:
    in the same directory as the DotZLib.build file.
    You can define 2 properties on the nant command-line to control the build:
    debug={true|false} to toggle between release/debug builds (default=true).
-   nunit={true|false} to include or esclude unit tests (default=true).
+   nunit={true|false} to include or exclude unit tests (default=true).
    Also the target clean will remove binaries.
    Output file (DotZLib.dll) will be found in either ./DotZLib/bin/release
    or ./DotZLib/bin/debug, depending on whether you are building the release
diff --git a/libs/zlib/contrib/infback9/infback9.c b/libs/zlib/contrib/infback9/infback9.c
index 05fb3e338..742a39214 100644
--- a/libs/zlib/contrib/infback9/infback9.c
+++ b/libs/zlib/contrib/infback9/infback9.c
@@ -16,12 +16,8 @@
 
    window is a user-supplied window and output buffer that is 64K bytes.
  */
-int ZEXPORT inflateBack9Init_(strm, window, version, stream_size)
-z_stream FAR *strm;
-unsigned char FAR *window;
-const char *version;
-int stream_size;
-{
+int ZEXPORT inflateBack9Init_(z_stream FAR *strm, unsigned char FAR *window,
+                              const char *version, int stream_size) {
     struct inflate_state FAR *state;
 
     if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
@@ -51,8 +47,7 @@ int stream_size;
 #ifdef MAKEFIXED
 #include <stdio.h>
 
-void makefixed9(void)
-{
+void makefixed9(void) {
     unsigned sym, bits, low, size;
     code *next, *lenfix, *distfix;
     struct inflate_state state;
@@ -214,13 +209,8 @@ void makefixed9(void)
    inflateBack() can also return Z_STREAM_ERROR if the input parameters
    are not correct, i.e. strm is Z_NULL or the state was not initialized.
  */
-int ZEXPORT inflateBack9(strm, in, in_desc, out, out_desc)
-z_stream FAR *strm;
-in_func in;
-void FAR *in_desc;
-out_func out;
-void FAR *out_desc;
-{
+int ZEXPORT inflateBack9(z_stream FAR *strm, in_func in, void FAR *in_desc,
+                         out_func out, void FAR *out_desc) {
     struct inflate_state FAR *state;
     z_const unsigned char FAR *next;    /* next input */
     unsigned char FAR *put;     /* next output */
@@ -603,9 +593,7 @@ void FAR *out_desc;
     return ret;
 }
 
-int ZEXPORT inflateBack9End(strm)
-z_stream FAR *strm;
-{
+int ZEXPORT inflateBack9End(z_stream FAR *strm) {
     if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
         return Z_STREAM_ERROR;
     ZFREE(strm, strm->state);
diff --git a/libs/zlib/contrib/infback9/infback9.h b/libs/zlib/contrib/infback9/infback9.h
index 1073c0a38..8371b4ec7 100644
--- a/libs/zlib/contrib/infback9/infback9.h
+++ b/libs/zlib/contrib/infback9/infback9.h
@@ -20,14 +20,14 @@
 extern "C" {
 #endif
 
-ZEXTERN int ZEXPORT inflateBack9 OF((z_stream FAR *strm,
-                                    in_func in, void FAR *in_desc,
-                                    out_func out, void FAR *out_desc));
-ZEXTERN int ZEXPORT inflateBack9End OF((z_stream FAR *strm));
-ZEXTERN int ZEXPORT inflateBack9Init_ OF((z_stream FAR *strm,
-                                         unsigned char FAR *window,
-                                         const char *version,
-                                         int stream_size));
+ZEXTERN int ZEXPORT inflateBack9(z_stream FAR *strm,
+                                 in_func in, void FAR *in_desc,
+                                 out_func out, void FAR *out_desc);
+ZEXTERN int ZEXPORT inflateBack9End(z_stream FAR *strm);
+ZEXTERN int ZEXPORT inflateBack9Init_(z_stream FAR *strm,
+                                      unsigned char FAR *window,
+                                      const char *version,
+                                      int stream_size);
 #define inflateBack9Init(strm, window) \
         inflateBack9Init_((strm), (window), \
         ZLIB_VERSION, sizeof(z_stream))
diff --git a/libs/zlib/contrib/infback9/inftree9.c b/libs/zlib/contrib/infback9/inftree9.c
index 5f4a76798..ac707ed3f 100644
--- a/libs/zlib/contrib/infback9/inftree9.c
+++ b/libs/zlib/contrib/infback9/inftree9.c
@@ -1,5 +1,5 @@
 /* inftree9.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2017 Mark Adler
+ * Copyright (C) 1995-2024 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -9,7 +9,7 @@
 #define MAXBITS 15
 
 const char inflate9_copyright[] =
-   " inflate9 1.2.11 Copyright 1995-2017 Mark Adler ";
+   " inflate9 1.3.1 Copyright 1995-2024 Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -29,14 +29,9 @@ const char inflate9_copyright[] =
    table index bits.  It will differ if the request is greater than the
    longest code or if it is less than the shortest code.
  */
-int inflate_table9(type, lens, codes, table, bits, work)
-codetype type;
-unsigned short FAR *lens;
-unsigned codes;
-code FAR * FAR *table;
-unsigned FAR *bits;
-unsigned short FAR *work;
-{
+int inflate_table9(codetype type, unsigned short FAR *lens, unsigned codes,
+                   code FAR * FAR *table, unsigned FAR *bits,
+                   unsigned short FAR *work) {
     unsigned len;               /* a code's length in bits */
     unsigned sym;               /* index of code symbols */
     unsigned min, max;          /* minimum and maximum code lengths */
@@ -64,7 +59,7 @@ unsigned short FAR *work;
     static const unsigned short lext[31] = { /* Length codes 257..285 extra */
         128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129,
         130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132,
-        133, 133, 133, 133, 144, 77, 202};
+        133, 133, 133, 133, 144, 203, 77};
     static const unsigned short dbase[32] = { /* Distance codes 0..31 base */
         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49,
         65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073,
diff --git a/libs/zlib/contrib/infback9/inftree9.h b/libs/zlib/contrib/infback9/inftree9.h
index 5ab21f0c6..ab2ea28b2 100644
--- a/libs/zlib/contrib/infback9/inftree9.h
+++ b/libs/zlib/contrib/infback9/inftree9.h
@@ -38,11 +38,11 @@ typedef struct {
 /* Maximum size of the dynamic table.  The maximum number of code structures is
    1446, which is the sum of 852 for literal/length codes and 594 for distance
    codes.  These values were found by exhaustive searches using the program
-   examples/enough.c found in the zlib distribtution.  The arguments to that
+   examples/enough.c found in the zlib distribution.  The arguments to that
    program are the number of symbols, the initial root table size, and the
    maximum bit length of a code.  "enough 286 9 15" for literal/length codes
-   returns returns 852, and "enough 32 6 15" for distance codes returns 594.
-   The initial root table size (9 or 6) is found in the fifth argument of the
+   returns 852, and "enough 32 6 15" for distance codes returns 594. The
+   initial root table size (9 or 6) is found in the fifth argument of the
    inflate_table() calls in infback9.c.  If the root table size is changed,
    then these maximum sizes would be need to be recalculated and updated. */
 #define ENOUGH_LENS 852
@@ -56,6 +56,6 @@ typedef enum {
     DISTS
 } codetype;
 
-extern int inflate_table9 OF((codetype type, unsigned short FAR *lens,
-                             unsigned codes, code FAR * FAR *table,
-                             unsigned FAR *bits, unsigned short FAR *work));
+extern int inflate_table9(codetype type, unsigned short FAR *lens,
+                          unsigned codes, code FAR * FAR *table,
+                          unsigned FAR *bits, unsigned short FAR *work);
diff --git a/libs/zlib/contrib/inflate86/inffas86.c b/libs/zlib/contrib/inflate86/inffas86.c
deleted file mode 100644
index 7292f67b7..000000000
--- a/libs/zlib/contrib/inflate86/inffas86.c
+++ /dev/null
@@ -1,1157 +0,0 @@
-/* inffas86.c is a hand tuned assembler version of
- *
- * inffast.c -- fast decoding
- * Copyright (C) 1995-2003 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Copyright (C) 2003 Chris Anderson <christop@charm.net>
- * Please use the copyright conditions above.
- *
- * Dec-29-2003 -- I added AMD64 inflate asm support.  This version is also
- * slightly quicker on x86 systems because, instead of using rep movsb to copy
- * data, it uses rep movsw, which moves data in 2-byte chunks instead of single
- * bytes.  I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates
- * from http://fedora.linux.duke.edu/fc1_x86_64
- * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with
- * 1GB ram.  The 64-bit version is about 4% faster than the 32-bit version,
- * when decompressing mozilla-source-1.3.tar.gz.
- *
- * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
- * the gcc -S output of zlib-1.2.0/inffast.c.  Zlib-1.2.0 is in beta release at
- * the moment.  I have successfully compiled and tested this code with gcc2.96,
- * gcc3.2, icc5.0, msvc6.0.  It is very close to the speed of inffast.S
- * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
- * enabled.  I will attempt to merge the MMX code into this version.  Newer
- * versions of this and inffast.S can be found at
- * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
- */
-
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-/* Mark Adler's comments from inffast.c: */
-
-/*
-   Decode literal, length, and distance codes and write out the resulting
-   literal and match bytes until either not enough input or output is
-   available, an end-of-block is encountered, or a data error is encountered.
-   When large enough input and output buffers are supplied to inflate(), for
-   example, a 16K input buffer and a 64K output buffer, more than 95% of the
-   inflate execution time is spent in this routine.
-
-   Entry assumptions:
-
-        state->mode == LEN
-        strm->avail_in >= 6
-        strm->avail_out >= 258
-        start >= strm->avail_out
-        state->bits < 8
-
-   On return, state->mode is one of:
-
-        LEN -- ran out of enough output space or enough available input
-        TYPE -- reached end of block code, inflate() to interpret next block
-        BAD -- error in block data
-
-   Notes:
-
-    - The maximum input bits used by a length/distance pair is 15 bits for the
-      length code, 5 bits for the length extra, 15 bits for the distance code,
-      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
-      Therefore if strm->avail_in >= 6, then there is enough input to avoid
-      checking for available input while decoding.
-
-    - The maximum bytes that a single length/distance pair can output is 258
-      bytes, which is the maximum length that can be coded.  inflate_fast()
-      requires strm->avail_out >= 258 for each loop to avoid checking for
-      output space.
- */
-void inflate_fast(strm, start)
-z_streamp strm;
-unsigned start;         /* inflate()'s starting value for strm->avail_out */
-{
-    struct inflate_state FAR *state;
-    struct inffast_ar {
-/* 64   32                               x86  x86_64 */
-/* ar offset                              register */
-/*  0    0 */ void *esp;                /* esp save */
-/*  8    4 */ void *ebp;                /* ebp save */
-/* 16    8 */ unsigned char FAR *in;    /* esi rsi  local strm->next_in */
-/* 24   12 */ unsigned char FAR *last;  /*     r9   while in < last */
-/* 32   16 */ unsigned char FAR *out;   /* edi rdi  local strm->next_out */
-/* 40   20 */ unsigned char FAR *beg;   /*          inflate()'s init next_out */
-/* 48   24 */ unsigned char FAR *end;   /*     r10  while out < end */
-/* 56   28 */ unsigned char FAR *window;/*          size of window, wsize!=0 */
-/* 64   32 */ code const FAR *lcode;    /* ebp rbp  local strm->lencode */
-/* 72   36 */ code const FAR *dcode;    /*     r11  local strm->distcode */
-/* 80   40 */ unsigned long hold;       /* edx rdx  local strm->hold */
-/* 88   44 */ unsigned bits;            /* ebx rbx  local strm->bits */
-/* 92   48 */ unsigned wsize;           /*          window size */
-/* 96   52 */ unsigned write;           /*          window write index */
-/*100   56 */ unsigned lmask;           /*     r12  mask for lcode */
-/*104   60 */ unsigned dmask;           /*     r13  mask for dcode */
-/*108   64 */ unsigned len;             /*     r14  match length */
-/*112   68 */ unsigned dist;            /*     r15  match distance */
-/*116   72 */ unsigned status;          /*          set when state chng*/
-    } ar;
-
-#if defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )
-#define PAD_AVAIL_IN 6
-#define PAD_AVAIL_OUT 258
-#else
-#define PAD_AVAIL_IN 5
-#define PAD_AVAIL_OUT 257
-#endif
-
-    /* copy state to local variables */
-    state = (struct inflate_state FAR *)strm->state;
-    ar.in = strm->next_in;
-    ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN);
-    ar.out = strm->next_out;
-    ar.beg = ar.out - (start - strm->avail_out);
-    ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT);
-    ar.wsize = state->wsize;
-    ar.write = state->wnext;
-    ar.window = state->window;
-    ar.hold = state->hold;
-    ar.bits = state->bits;
-    ar.lcode = state->lencode;
-    ar.dcode = state->distcode;
-    ar.lmask = (1U << state->lenbits) - 1;
-    ar.dmask = (1U << state->distbits) - 1;
-
-    /* decode literals and length/distances until end-of-block or not enough
-       input data or output space */
-
-    /* align in on 1/2 hold size boundary */
-    while (((unsigned long)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) {
-        ar.hold += (unsigned long)*ar.in++ << ar.bits;
-        ar.bits += 8;
-    }
-
-#if defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )
-    __asm__ __volatile__ (
-"        leaq    %0, %%rax\n"
-"        movq    %%rbp, 8(%%rax)\n"       /* save regs rbp and rsp */
-"        movq    %%rsp, (%%rax)\n"
-"        movq    %%rax, %%rsp\n"          /* make rsp point to &ar */
-"        movq    16(%%rsp), %%rsi\n"      /* rsi  = in */
-"        movq    32(%%rsp), %%rdi\n"      /* rdi  = out */
-"        movq    24(%%rsp), %%r9\n"       /* r9   = last */
-"        movq    48(%%rsp), %%r10\n"      /* r10  = end */
-"        movq    64(%%rsp), %%rbp\n"      /* rbp  = lcode */
-"        movq    72(%%rsp), %%r11\n"      /* r11  = dcode */
-"        movq    80(%%rsp), %%rdx\n"      /* rdx  = hold */
-"        movl    88(%%rsp), %%ebx\n"      /* ebx  = bits */
-"        movl    100(%%rsp), %%r12d\n"    /* r12d = lmask */
-"        movl    104(%%rsp), %%r13d\n"    /* r13d = dmask */
-                                          /* r14d = len */
-                                          /* r15d = dist */
-"        cld\n"
-"        cmpq    %%rdi, %%r10\n"
-"        je      .L_one_time\n"           /* if only one decode left */
-"        cmpq    %%rsi, %%r9\n"
-"        je      .L_one_time\n"
-"        jmp     .L_do_loop\n"
-
-".L_one_time:\n"
-"        movq    %%r12, %%r8\n"           /* r8 = lmask */
-"        cmpb    $32, %%bl\n"
-"        ja      .L_get_length_code_one_time\n"
-
-"        lodsl\n"                         /* eax = *(uint *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $32, %%bl\n"             /* bits += 32 */
-"        shlq    %%cl, %%rax\n"
-"        orq     %%rax, %%rdx\n"          /* hold |= *((uint *)in)++ << bits */
-"        jmp     .L_get_length_code_one_time\n"
-
-".align 32,0x90\n"
-".L_while_test:\n"
-"        cmpq    %%rdi, %%r10\n"
-"        jbe     .L_break_loop\n"
-"        cmpq    %%rsi, %%r9\n"
-"        jbe     .L_break_loop\n"
-
-".L_do_loop:\n"
-"        movq    %%r12, %%r8\n"           /* r8 = lmask */
-"        cmpb    $32, %%bl\n"
-"        ja      .L_get_length_code\n"    /* if (32 < bits) */
-
-"        lodsl\n"                         /* eax = *(uint *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $32, %%bl\n"             /* bits += 32 */
-"        shlq    %%cl, %%rax\n"
-"        orq     %%rax, %%rdx\n"          /* hold |= *((uint *)in)++ << bits */
-
-".L_get_length_code:\n"
-"        andq    %%rdx, %%r8\n"            /* r8 &= hold */
-"        movl    (%%rbp,%%r8,4), %%eax\n"  /* eax = lcode[hold & lmask] */
-
-"        movb    %%ah, %%cl\n"            /* cl = this.bits */
-"        subb    %%ah, %%bl\n"            /* bits -= this.bits */
-"        shrq    %%cl, %%rdx\n"           /* hold >>= this.bits */
-
-"        testb   %%al, %%al\n"
-"        jnz     .L_test_for_length_base\n" /* if (op != 0) 45.7% */
-
-"        movq    %%r12, %%r8\n"            /* r8 = lmask */
-"        shrl    $16, %%eax\n"            /* output this.val char */
-"        stosb\n"
-
-".L_get_length_code_one_time:\n"
-"        andq    %%rdx, %%r8\n"            /* r8 &= hold */
-"        movl    (%%rbp,%%r8,4), %%eax\n" /* eax = lcode[hold & lmask] */
-
-".L_dolen:\n"
-"        movb    %%ah, %%cl\n"            /* cl = this.bits */
-"        subb    %%ah, %%bl\n"            /* bits -= this.bits */
-"        shrq    %%cl, %%rdx\n"           /* hold >>= this.bits */
-
-"        testb   %%al, %%al\n"
-"        jnz     .L_test_for_length_base\n" /* if (op != 0) 45.7% */
-
-"        shrl    $16, %%eax\n"            /* output this.val char */
-"        stosb\n"
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_test_for_length_base:\n"
-"        movl    %%eax, %%r14d\n"         /* len = this */
-"        shrl    $16, %%r14d\n"           /* len = this.val */
-"        movb    %%al, %%cl\n"
-
-"        testb   $16, %%al\n"
-"        jz      .L_test_for_second_level_length\n" /* if ((op & 16) == 0) 8% */
-"        andb    $15, %%cl\n"             /* op &= 15 */
-"        jz      .L_decode_distance\n"    /* if (!op) */
-
-".L_add_bits_to_len:\n"
-"        subb    %%cl, %%bl\n"
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        shrq    %%cl, %%rdx\n"
-"        addl    %%eax, %%r14d\n"         /* len += hold & mask[op] */
-
-".L_decode_distance:\n"
-"        movq    %%r13, %%r8\n"           /* r8 = dmask */
-"        cmpb    $32, %%bl\n"
-"        ja      .L_get_distance_code\n"  /* if (32 < bits) */
-
-"        lodsl\n"                         /* eax = *(uint *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $32, %%bl\n"             /* bits += 32 */
-"        shlq    %%cl, %%rax\n"
-"        orq     %%rax, %%rdx\n"          /* hold |= *((uint *)in)++ << bits */
-
-".L_get_distance_code:\n"
-"        andq    %%rdx, %%r8\n"           /* r8 &= hold */
-"        movl    (%%r11,%%r8,4), %%eax\n" /* eax = dcode[hold & dmask] */
-
-".L_dodist:\n"
-"        movl    %%eax, %%r15d\n"         /* dist = this */
-"        shrl    $16, %%r15d\n"           /* dist = this.val */
-"        movb    %%ah, %%cl\n"
-"        subb    %%ah, %%bl\n"            /* bits -= this.bits */
-"        shrq    %%cl, %%rdx\n"           /* hold >>= this.bits */
-"        movb    %%al, %%cl\n"            /* cl = this.op */
-
-"        testb   $16, %%al\n"             /* if ((op & 16) == 0) */
-"        jz      .L_test_for_second_level_dist\n"
-"        andb    $15, %%cl\n"             /* op &= 15 */
-"        jz      .L_check_dist_one\n"
-
-".L_add_bits_to_dist:\n"
-"        subb    %%cl, %%bl\n"
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"                 /* (1 << op) - 1 */
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        shrq    %%cl, %%rdx\n"
-"        addl    %%eax, %%r15d\n"         /* dist += hold & ((1 << op) - 1) */
-
-".L_check_window:\n"
-"        movq    %%rsi, %%r8\n"           /* save in so from can use it's reg */
-"        movq    %%rdi, %%rax\n"
-"        subq    40(%%rsp), %%rax\n"      /* nbytes = out - beg */
-
-"        cmpl    %%r15d, %%eax\n"
-"        jb      .L_clip_window\n"        /* if (dist > nbytes) 4.2% */
-
-"        movl    %%r14d, %%ecx\n"         /* ecx = len */
-"        movq    %%rdi, %%rsi\n"
-"        subq    %%r15, %%rsi\n"          /* from = out - dist */
-
-"        sarl    %%ecx\n"
-"        jnc     .L_copy_two\n"           /* if len % 2 == 0 */
-
-"        rep     movsw\n"
-"        movb    (%%rsi), %%al\n"
-"        movb    %%al, (%%rdi)\n"
-"        incq    %%rdi\n"
-
-"        movq    %%r8, %%rsi\n"           /* move in back to %rsi, toss from */
-"        jmp     .L_while_test\n"
-
-".L_copy_two:\n"
-"        rep     movsw\n"
-"        movq    %%r8, %%rsi\n"           /* move in back to %rsi, toss from */
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_check_dist_one:\n"
-"        cmpl    $1, %%r15d\n"            /* if dist 1, is a memset */
-"        jne     .L_check_window\n"
-"        cmpq    %%rdi, 40(%%rsp)\n"      /* if out == beg, outside window */
-"        je      .L_check_window\n"
-
-"        movl    %%r14d, %%ecx\n"         /* ecx = len */
-"        movb    -1(%%rdi), %%al\n"
-"        movb    %%al, %%ah\n"
-
-"        sarl    %%ecx\n"
-"        jnc     .L_set_two\n"
-"        movb    %%al, (%%rdi)\n"
-"        incq    %%rdi\n"
-
-".L_set_two:\n"
-"        rep     stosw\n"
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_test_for_second_level_length:\n"
-"        testb   $64, %%al\n"
-"        jnz     .L_test_for_end_of_block\n" /* if ((op & 64) != 0) */
-
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"         /* eax &= hold */
-"        addl    %%r14d, %%eax\n"        /* eax += len */
-"        movl    (%%rbp,%%rax,4), %%eax\n" /* eax = lcode[val+(hold&mask[op])]*/
-"        jmp     .L_dolen\n"
-
-".align 32,0x90\n"
-".L_test_for_second_level_dist:\n"
-"        testb   $64, %%al\n"
-"        jnz     .L_invalid_distance_code\n" /* if ((op & 64) != 0) */
-
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"         /* eax &= hold */
-"        addl    %%r15d, %%eax\n"        /* eax += dist */
-"        movl    (%%r11,%%rax,4), %%eax\n" /* eax = dcode[val+(hold&mask[op])]*/
-"        jmp     .L_dodist\n"
-
-".align 32,0x90\n"
-".L_clip_window:\n"
-"        movl    %%eax, %%ecx\n"         /* ecx = nbytes */
-"        movl    92(%%rsp), %%eax\n"     /* eax = wsize, prepare for dist cmp */
-"        negl    %%ecx\n"                /* nbytes = -nbytes */
-
-"        cmpl    %%r15d, %%eax\n"
-"        jb      .L_invalid_distance_too_far\n" /* if (dist > wsize) */
-
-"        addl    %%r15d, %%ecx\n"         /* nbytes = dist - nbytes */
-"        cmpl    $0, 96(%%rsp)\n"
-"        jne     .L_wrap_around_window\n" /* if (write != 0) */
-
-"        movq    56(%%rsp), %%rsi\n"     /* from  = window */
-"        subl    %%ecx, %%eax\n"         /* eax  -= nbytes */
-"        addq    %%rax, %%rsi\n"         /* from += wsize - nbytes */
-
-"        movl    %%r14d, %%eax\n"        /* eax = len */
-"        cmpl    %%ecx, %%r14d\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* eax -= nbytes */
-"        rep     movsb\n"
-"        movq    %%rdi, %%rsi\n"
-"        subq    %%r15, %%rsi\n"         /* from = &out[ -dist ] */
-"        jmp     .L_do_copy\n"
-
-".align 32,0x90\n"
-".L_wrap_around_window:\n"
-"        movl    96(%%rsp), %%eax\n"     /* eax = write */
-"        cmpl    %%eax, %%ecx\n"
-"        jbe     .L_contiguous_in_window\n" /* if (write >= nbytes) */
-
-"        movl    92(%%rsp), %%esi\n"     /* from  = wsize */
-"        addq    56(%%rsp), %%rsi\n"     /* from += window */
-"        addq    %%rax, %%rsi\n"         /* from += write */
-"        subq    %%rcx, %%rsi\n"         /* from -= nbytes */
-"        subl    %%eax, %%ecx\n"         /* nbytes -= write */
-
-"        movl    %%r14d, %%eax\n"        /* eax = len */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movq    56(%%rsp), %%rsi\n"     /* from = window */
-"        movl    96(%%rsp), %%ecx\n"     /* nbytes = write */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movq    %%rdi, %%rsi\n"
-"        subq    %%r15, %%rsi\n"         /* from = out - dist */
-"        jmp     .L_do_copy\n"
-
-".align 32,0x90\n"
-".L_contiguous_in_window:\n"
-"        movq    56(%%rsp), %%rsi\n"     /* rsi = window */
-"        addq    %%rax, %%rsi\n"
-"        subq    %%rcx, %%rsi\n"         /* from += write - nbytes */
-
-"        movl    %%r14d, %%eax\n"        /* eax = len */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movq    %%rdi, %%rsi\n"
-"        subq    %%r15, %%rsi\n"         /* from = out - dist */
-"        jmp     .L_do_copy\n"           /* if (nbytes >= len) */
-
-".align 32,0x90\n"
-".L_do_copy:\n"
-"        movl    %%eax, %%ecx\n"         /* ecx = len */
-"        rep     movsb\n"
-
-"        movq    %%r8, %%rsi\n"          /* move in back to %esi, toss from */
-"        jmp     .L_while_test\n"
-
-".L_test_for_end_of_block:\n"
-"        testb   $32, %%al\n"
-"        jz      .L_invalid_literal_length_code\n"
-"        movl    $1, 116(%%rsp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_literal_length_code:\n"
-"        movl    $2, 116(%%rsp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_distance_code:\n"
-"        movl    $3, 116(%%rsp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_distance_too_far:\n"
-"        movl    $4, 116(%%rsp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_break_loop:\n"
-"        movl    $0, 116(%%rsp)\n"
-
-".L_break_loop_with_status:\n"
-/* put in, out, bits, and hold back into ar and pop esp */
-"        movq    %%rsi, 16(%%rsp)\n"     /* in */
-"        movq    %%rdi, 32(%%rsp)\n"     /* out */
-"        movl    %%ebx, 88(%%rsp)\n"     /* bits */
-"        movq    %%rdx, 80(%%rsp)\n"     /* hold */
-"        movq    (%%rsp), %%rax\n"       /* restore rbp and rsp */
-"        movq    8(%%rsp), %%rbp\n"
-"        movq    %%rax, %%rsp\n"
-          :
-          : "m" (ar)
-          : "memory", "%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%rdi",
-            "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"
-    );
-#elif ( defined( __GNUC__ ) || defined( __ICC ) ) && defined( __i386 )
-    __asm__ __volatile__ (
-"        leal    %0, %%eax\n"
-"        movl    %%esp, (%%eax)\n"        /* save esp, ebp */
-"        movl    %%ebp, 4(%%eax)\n"
-"        movl    %%eax, %%esp\n"
-"        movl    8(%%esp), %%esi\n"       /* esi = in */
-"        movl    16(%%esp), %%edi\n"      /* edi = out */
-"        movl    40(%%esp), %%edx\n"      /* edx = hold */
-"        movl    44(%%esp), %%ebx\n"      /* ebx = bits */
-"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */
-
-"        cld\n"
-"        jmp     .L_do_loop\n"
-
-".align 32,0x90\n"
-".L_while_test:\n"
-"        cmpl    %%edi, 24(%%esp)\n"      /* out < end */
-"        jbe     .L_break_loop\n"
-"        cmpl    %%esi, 12(%%esp)\n"      /* in < last */
-"        jbe     .L_break_loop\n"
-
-".L_do_loop:\n"
-"        cmpb    $15, %%bl\n"
-"        ja      .L_get_length_code\n"    /* if (15 < bits) */
-
-"        xorl    %%eax, %%eax\n"
-"        lodsw\n"                         /* al = *(ushort *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $16, %%bl\n"             /* bits += 16 */
-"        shll    %%cl, %%eax\n"
-"        orl     %%eax, %%edx\n"        /* hold |= *((ushort *)in)++ << bits */
-
-".L_get_length_code:\n"
-"        movl    56(%%esp), %%eax\n"      /* eax = lmask */
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        movl    (%%ebp,%%eax,4), %%eax\n" /* eax = lcode[hold & lmask] */
-
-".L_dolen:\n"
-"        movb    %%ah, %%cl\n"            /* cl = this.bits */
-"        subb    %%ah, %%bl\n"            /* bits -= this.bits */
-"        shrl    %%cl, %%edx\n"           /* hold >>= this.bits */
-
-"        testb   %%al, %%al\n"
-"        jnz     .L_test_for_length_base\n" /* if (op != 0) 45.7% */
-
-"        shrl    $16, %%eax\n"            /* output this.val char */
-"        stosb\n"
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_test_for_length_base:\n"
-"        movl    %%eax, %%ecx\n"          /* len = this */
-"        shrl    $16, %%ecx\n"            /* len = this.val */
-"        movl    %%ecx, 64(%%esp)\n"      /* save len */
-"        movb    %%al, %%cl\n"
-
-"        testb   $16, %%al\n"
-"        jz      .L_test_for_second_level_length\n" /* if ((op & 16) == 0) 8% */
-"        andb    $15, %%cl\n"             /* op &= 15 */
-"        jz      .L_decode_distance\n"    /* if (!op) */
-"        cmpb    %%cl, %%bl\n"
-"        jae     .L_add_bits_to_len\n"    /* if (op <= bits) */
-
-"        movb    %%cl, %%ch\n"            /* stash op in ch, freeing cl */
-"        xorl    %%eax, %%eax\n"
-"        lodsw\n"                         /* al = *(ushort *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $16, %%bl\n"             /* bits += 16 */
-"        shll    %%cl, %%eax\n"
-"        orl     %%eax, %%edx\n"         /* hold |= *((ushort *)in)++ << bits */
-"        movb    %%ch, %%cl\n"            /* move op back to ecx */
-
-".L_add_bits_to_len:\n"
-"        subb    %%cl, %%bl\n"
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        shrl    %%cl, %%edx\n"
-"        addl    %%eax, 64(%%esp)\n"      /* len += hold & mask[op] */
-
-".L_decode_distance:\n"
-"        cmpb    $15, %%bl\n"
-"        ja      .L_get_distance_code\n"  /* if (15 < bits) */
-
-"        xorl    %%eax, %%eax\n"
-"        lodsw\n"                         /* al = *(ushort *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $16, %%bl\n"             /* bits += 16 */
-"        shll    %%cl, %%eax\n"
-"        orl     %%eax, %%edx\n"         /* hold |= *((ushort *)in)++ << bits */
-
-".L_get_distance_code:\n"
-"        movl    60(%%esp), %%eax\n"      /* eax = dmask */
-"        movl    36(%%esp), %%ecx\n"      /* ecx = dcode */
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        movl    (%%ecx,%%eax,4), %%eax\n"/* eax = dcode[hold & dmask] */
-
-".L_dodist:\n"
-"        movl    %%eax, %%ebp\n"          /* dist = this */
-"        shrl    $16, %%ebp\n"            /* dist = this.val */
-"        movb    %%ah, %%cl\n"
-"        subb    %%ah, %%bl\n"            /* bits -= this.bits */
-"        shrl    %%cl, %%edx\n"           /* hold >>= this.bits */
-"        movb    %%al, %%cl\n"            /* cl = this.op */
-
-"        testb   $16, %%al\n"             /* if ((op & 16) == 0) */
-"        jz      .L_test_for_second_level_dist\n"
-"        andb    $15, %%cl\n"             /* op &= 15 */
-"        jz      .L_check_dist_one\n"
-"        cmpb    %%cl, %%bl\n"
-"        jae     .L_add_bits_to_dist\n"   /* if (op <= bits) 97.6% */
-
-"        movb    %%cl, %%ch\n"            /* stash op in ch, freeing cl */
-"        xorl    %%eax, %%eax\n"
-"        lodsw\n"                         /* al = *(ushort *)in++ */
-"        movb    %%bl, %%cl\n"            /* cl = bits, needs it for shifting */
-"        addb    $16, %%bl\n"             /* bits += 16 */
-"        shll    %%cl, %%eax\n"
-"        orl     %%eax, %%edx\n"        /* hold |= *((ushort *)in)++ << bits */
-"        movb    %%ch, %%cl\n"            /* move op back to ecx */
-
-".L_add_bits_to_dist:\n"
-"        subb    %%cl, %%bl\n"
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"                 /* (1 << op) - 1 */
-"        andl    %%edx, %%eax\n"          /* eax &= hold */
-"        shrl    %%cl, %%edx\n"
-"        addl    %%eax, %%ebp\n"          /* dist += hold & ((1 << op) - 1) */
-
-".L_check_window:\n"
-"        movl    %%esi, 8(%%esp)\n"       /* save in so from can use it's reg */
-"        movl    %%edi, %%eax\n"
-"        subl    20(%%esp), %%eax\n"      /* nbytes = out - beg */
-
-"        cmpl    %%ebp, %%eax\n"
-"        jb      .L_clip_window\n"        /* if (dist > nbytes) 4.2% */
-
-"        movl    64(%%esp), %%ecx\n"      /* ecx = len */
-"        movl    %%edi, %%esi\n"
-"        subl    %%ebp, %%esi\n"          /* from = out - dist */
-
-"        sarl    %%ecx\n"
-"        jnc     .L_copy_two\n"           /* if len % 2 == 0 */
-
-"        rep     movsw\n"
-"        movb    (%%esi), %%al\n"
-"        movb    %%al, (%%edi)\n"
-"        incl    %%edi\n"
-
-"        movl    8(%%esp), %%esi\n"       /* move in back to %esi, toss from */
-"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */
-"        jmp     .L_while_test\n"
-
-".L_copy_two:\n"
-"        rep     movsw\n"
-"        movl    8(%%esp), %%esi\n"       /* move in back to %esi, toss from */
-"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_check_dist_one:\n"
-"        cmpl    $1, %%ebp\n"            /* if dist 1, is a memset */
-"        jne     .L_check_window\n"
-"        cmpl    %%edi, 20(%%esp)\n"
-"        je      .L_check_window\n"      /* out == beg, if outside window */
-
-"        movl    64(%%esp), %%ecx\n"      /* ecx = len */
-"        movb    -1(%%edi), %%al\n"
-"        movb    %%al, %%ah\n"
-
-"        sarl    %%ecx\n"
-"        jnc     .L_set_two\n"
-"        movb    %%al, (%%edi)\n"
-"        incl    %%edi\n"
-
-".L_set_two:\n"
-"        rep     stosw\n"
-"        movl    32(%%esp), %%ebp\n"      /* ebp = lcode */
-"        jmp     .L_while_test\n"
-
-".align 32,0x90\n"
-".L_test_for_second_level_length:\n"
-"        testb   $64, %%al\n"
-"        jnz     .L_test_for_end_of_block\n" /* if ((op & 64) != 0) */
-
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"         /* eax &= hold */
-"        addl    64(%%esp), %%eax\n"     /* eax += len */
-"        movl    (%%ebp,%%eax,4), %%eax\n" /* eax = lcode[val+(hold&mask[op])]*/
-"        jmp     .L_dolen\n"
-
-".align 32,0x90\n"
-".L_test_for_second_level_dist:\n"
-"        testb   $64, %%al\n"
-"        jnz     .L_invalid_distance_code\n" /* if ((op & 64) != 0) */
-
-"        xorl    %%eax, %%eax\n"
-"        incl    %%eax\n"
-"        shll    %%cl, %%eax\n"
-"        decl    %%eax\n"
-"        andl    %%edx, %%eax\n"         /* eax &= hold */
-"        addl    %%ebp, %%eax\n"         /* eax += dist */
-"        movl    36(%%esp), %%ecx\n"     /* ecx = dcode */
-"        movl    (%%ecx,%%eax,4), %%eax\n" /* eax = dcode[val+(hold&mask[op])]*/
-"        jmp     .L_dodist\n"
-
-".align 32,0x90\n"
-".L_clip_window:\n"
-"        movl    %%eax, %%ecx\n"
-"        movl    48(%%esp), %%eax\n"     /* eax = wsize */
-"        negl    %%ecx\n"                /* nbytes = -nbytes */
-"        movl    28(%%esp), %%esi\n"     /* from = window */
-
-"        cmpl    %%ebp, %%eax\n"
-"        jb      .L_invalid_distance_too_far\n" /* if (dist > wsize) */
-
-"        addl    %%ebp, %%ecx\n"         /* nbytes = dist - nbytes */
-"        cmpl    $0, 52(%%esp)\n"
-"        jne     .L_wrap_around_window\n" /* if (write != 0) */
-
-"        subl    %%ecx, %%eax\n"
-"        addl    %%eax, %%esi\n"         /* from += wsize - nbytes */
-
-"        movl    64(%%esp), %%eax\n"     /* eax = len */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movl    %%edi, %%esi\n"
-"        subl    %%ebp, %%esi\n"         /* from = out - dist */
-"        jmp     .L_do_copy\n"
-
-".align 32,0x90\n"
-".L_wrap_around_window:\n"
-"        movl    52(%%esp), %%eax\n"     /* eax = write */
-"        cmpl    %%eax, %%ecx\n"
-"        jbe     .L_contiguous_in_window\n" /* if (write >= nbytes) */
-
-"        addl    48(%%esp), %%esi\n"     /* from += wsize */
-"        addl    %%eax, %%esi\n"         /* from += write */
-"        subl    %%ecx, %%esi\n"         /* from -= nbytes */
-"        subl    %%eax, %%ecx\n"         /* nbytes -= write */
-
-"        movl    64(%%esp), %%eax\n"     /* eax = len */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movl    28(%%esp), %%esi\n"     /* from = window */
-"        movl    52(%%esp), %%ecx\n"     /* nbytes = write */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movl    %%edi, %%esi\n"
-"        subl    %%ebp, %%esi\n"         /* from = out - dist */
-"        jmp     .L_do_copy\n"
-
-".align 32,0x90\n"
-".L_contiguous_in_window:\n"
-"        addl    %%eax, %%esi\n"
-"        subl    %%ecx, %%esi\n"         /* from += write - nbytes */
-
-"        movl    64(%%esp), %%eax\n"     /* eax = len */
-"        cmpl    %%ecx, %%eax\n"
-"        jbe     .L_do_copy\n"           /* if (nbytes >= len) */
-
-"        subl    %%ecx, %%eax\n"         /* len -= nbytes */
-"        rep     movsb\n"
-"        movl    %%edi, %%esi\n"
-"        subl    %%ebp, %%esi\n"         /* from = out - dist */
-"        jmp     .L_do_copy\n"           /* if (nbytes >= len) */
-
-".align 32,0x90\n"
-".L_do_copy:\n"
-"        movl    %%eax, %%ecx\n"
-"        rep     movsb\n"
-
-"        movl    8(%%esp), %%esi\n"      /* move in back to %esi, toss from */
-"        movl    32(%%esp), %%ebp\n"     /* ebp = lcode */
-"        jmp     .L_while_test\n"
-
-".L_test_for_end_of_block:\n"
-"        testb   $32, %%al\n"
-"        jz      .L_invalid_literal_length_code\n"
-"        movl    $1, 72(%%esp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_literal_length_code:\n"
-"        movl    $2, 72(%%esp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_distance_code:\n"
-"        movl    $3, 72(%%esp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_invalid_distance_too_far:\n"
-"        movl    8(%%esp), %%esi\n"
-"        movl    $4, 72(%%esp)\n"
-"        jmp     .L_break_loop_with_status\n"
-
-".L_break_loop:\n"
-"        movl    $0, 72(%%esp)\n"
-
-".L_break_loop_with_status:\n"
-/* put in, out, bits, and hold back into ar and pop esp */
-"        movl    %%esi, 8(%%esp)\n"      /* save in */
-"        movl    %%edi, 16(%%esp)\n"     /* save out */
-"        movl    %%ebx, 44(%%esp)\n"     /* save bits */
-"        movl    %%edx, 40(%%esp)\n"     /* save hold */
-"        movl    4(%%esp), %%ebp\n"      /* restore esp, ebp */
-"        movl    (%%esp), %%esp\n"
-          :
-          : "m" (ar)
-          : "memory", "%eax", "%ebx", "%ecx", "%edx", "%esi", "%edi"
-    );
-#elif defined( _MSC_VER ) && ! defined( _M_AMD64 )
-    __asm {
-	lea	eax, ar
-	mov	[eax], esp         /* save esp, ebp */
-	mov	[eax+4], ebp
-	mov	esp, eax
-	mov	esi, [esp+8]       /* esi = in */
-	mov	edi, [esp+16]      /* edi = out */
-	mov	edx, [esp+40]      /* edx = hold */
-	mov	ebx, [esp+44]      /* ebx = bits */
-	mov	ebp, [esp+32]      /* ebp = lcode */
-
-	cld
-	jmp	L_do_loop
-
-ALIGN 4
-L_while_test:
-	cmp	[esp+24], edi
-	jbe	L_break_loop
-	cmp	[esp+12], esi
-	jbe	L_break_loop
-
-L_do_loop:
-	cmp	bl, 15
-	ja	L_get_length_code    /* if (15 < bits) */
-
-	xor	eax, eax
-	lodsw                         /* al = *(ushort *)in++ */
-	mov	cl, bl            /* cl = bits, needs it for shifting */
-	add	bl, 16             /* bits += 16 */
-	shl	eax, cl
-	or	edx, eax        /* hold |= *((ushort *)in)++ << bits */
-
-L_get_length_code:
-	mov	eax, [esp+56]      /* eax = lmask */
-	and	eax, edx          /* eax &= hold */
-	mov	eax, [ebp+eax*4] /* eax = lcode[hold & lmask] */
-
-L_dolen:
-	mov	cl, ah            /* cl = this.bits */
-	sub	bl, ah            /* bits -= this.bits */
-	shr	edx, cl           /* hold >>= this.bits */
-
-	test	al, al
-	jnz	L_test_for_length_base /* if (op != 0) 45.7% */
-
-	shr	eax, 16            /* output this.val char */
-	stosb
-	jmp	L_while_test
-
-ALIGN 4
-L_test_for_length_base:
-	mov	ecx, eax          /* len = this */
-	shr	ecx, 16            /* len = this.val */
-	mov	[esp+64], ecx      /* save len */
-	mov	cl, al
-
-	test	al, 16
-	jz	L_test_for_second_level_length /* if ((op & 16) == 0) 8% */
-	and	cl, 15             /* op &= 15 */
-	jz	L_decode_distance    /* if (!op) */
-	cmp	bl, cl
-	jae	L_add_bits_to_len    /* if (op <= bits) */
-
-	mov	ch, cl            /* stash op in ch, freeing cl */
-	xor	eax, eax
-	lodsw                         /* al = *(ushort *)in++ */
-	mov	cl, bl            /* cl = bits, needs it for shifting */
-	add	bl, 16             /* bits += 16 */
-	shl	eax, cl
-	or	edx, eax         /* hold |= *((ushort *)in)++ << bits */
-	mov	cl, ch            /* move op back to ecx */
-
-L_add_bits_to_len:
-	sub	bl, cl
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx          /* eax &= hold */
-	shr	edx, cl
-	add	[esp+64], eax      /* len += hold & mask[op] */
-
-L_decode_distance:
-	cmp	bl, 15
-	ja	L_get_distance_code  /* if (15 < bits) */
-
-	xor	eax, eax
-	lodsw                         /* al = *(ushort *)in++ */
-	mov	cl, bl            /* cl = bits, needs it for shifting */
-	add	bl, 16             /* bits += 16 */
-	shl	eax, cl
-	or	edx, eax         /* hold |= *((ushort *)in)++ << bits */
-
-L_get_distance_code:
-	mov	eax, [esp+60]      /* eax = dmask */
-	mov	ecx, [esp+36]      /* ecx = dcode */
-	and	eax, edx          /* eax &= hold */
-	mov	eax, [ecx+eax*4]/* eax = dcode[hold & dmask] */
-
-L_dodist:
-	mov	ebp, eax          /* dist = this */
-	shr	ebp, 16            /* dist = this.val */
-	mov	cl, ah
-	sub	bl, ah            /* bits -= this.bits */
-	shr	edx, cl           /* hold >>= this.bits */
-	mov	cl, al            /* cl = this.op */
-
-	test	al, 16             /* if ((op & 16) == 0) */
-	jz	L_test_for_second_level_dist
-	and	cl, 15             /* op &= 15 */
-	jz	L_check_dist_one
-	cmp	bl, cl
-	jae	L_add_bits_to_dist   /* if (op <= bits) 97.6% */
-
-	mov	ch, cl            /* stash op in ch, freeing cl */
-	xor	eax, eax
-	lodsw                         /* al = *(ushort *)in++ */
-	mov	cl, bl            /* cl = bits, needs it for shifting */
-	add	bl, 16             /* bits += 16 */
-	shl	eax, cl
-	or	edx, eax        /* hold |= *((ushort *)in)++ << bits */
-	mov	cl, ch            /* move op back to ecx */
-
-L_add_bits_to_dist:
-	sub	bl, cl
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax                 /* (1 << op) - 1 */
-	and	eax, edx          /* eax &= hold */
-	shr	edx, cl
-	add	ebp, eax          /* dist += hold & ((1 << op) - 1) */
-
-L_check_window:
-	mov	[esp+8], esi       /* save in so from can use it's reg */
-	mov	eax, edi
-	sub	eax, [esp+20]      /* nbytes = out - beg */
-
-	cmp	eax, ebp
-	jb	L_clip_window        /* if (dist > nbytes) 4.2% */
-
-	mov	ecx, [esp+64]      /* ecx = len */
-	mov	esi, edi
-	sub	esi, ebp          /* from = out - dist */
-
-	sar	ecx, 1
-	jnc	L_copy_two
-
-	rep     movsw
-	mov	al, [esi]
-	mov	[edi], al
-	inc	edi
-
-	mov	esi, [esp+8]      /* move in back to %esi, toss from */
-	mov	ebp, [esp+32]     /* ebp = lcode */
-	jmp	L_while_test
-
-L_copy_two:
-	rep     movsw
-	mov	esi, [esp+8]      /* move in back to %esi, toss from */
-	mov	ebp, [esp+32]     /* ebp = lcode */
-	jmp	L_while_test
-
-ALIGN 4
-L_check_dist_one:
-	cmp	ebp, 1            /* if dist 1, is a memset */
-	jne	L_check_window
-	cmp	[esp+20], edi
-	je	L_check_window    /* out == beg, if outside window */
-
-	mov	ecx, [esp+64]     /* ecx = len */
-	mov	al, [edi-1]
-	mov	ah, al
-
-	sar	ecx, 1
-	jnc	L_set_two
-	mov	[edi], al         /* memset out with from[-1] */
-	inc	edi
-
-L_set_two:
-	rep     stosw
-	mov	ebp, [esp+32]     /* ebp = lcode */
-	jmp	L_while_test
-
-ALIGN 4
-L_test_for_second_level_length:
-	test	al, 64
-	jnz	L_test_for_end_of_block /* if ((op & 64) != 0) */
-
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx         /* eax &= hold */
-	add	eax, [esp+64]     /* eax += len */
-	mov	eax, [ebp+eax*4] /* eax = lcode[val+(hold&mask[op])]*/
-	jmp	L_dolen
-
-ALIGN 4
-L_test_for_second_level_dist:
-	test	al, 64
-	jnz	L_invalid_distance_code /* if ((op & 64) != 0) */
-
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx         /* eax &= hold */
-	add	eax, ebp         /* eax += dist */
-	mov	ecx, [esp+36]     /* ecx = dcode */
-	mov	eax, [ecx+eax*4] /* eax = dcode[val+(hold&mask[op])]*/
-	jmp	L_dodist
-
-ALIGN 4
-L_clip_window:
-	mov	ecx, eax
-	mov	eax, [esp+48]     /* eax = wsize */
-	neg	ecx                /* nbytes = -nbytes */
-	mov	esi, [esp+28]     /* from = window */
-
-	cmp	eax, ebp
-	jb	L_invalid_distance_too_far /* if (dist > wsize) */
-
-	add	ecx, ebp         /* nbytes = dist - nbytes */
-	cmp	dword ptr [esp+52], 0
-	jne	L_wrap_around_window /* if (write != 0) */
-
-	sub	eax, ecx
-	add	esi, eax         /* from += wsize - nbytes */
-
-	mov	eax, [esp+64]    /* eax = len */
-	cmp	eax, ecx
-	jbe	L_do_copy          /* if (nbytes >= len) */
-
-	sub	eax, ecx         /* len -= nbytes */
-	rep     movsb
-	mov	esi, edi
-	sub	esi, ebp         /* from = out - dist */
-	jmp	L_do_copy
-
-ALIGN 4
-L_wrap_around_window:
-	mov	eax, [esp+52]    /* eax = write */
-	cmp	ecx, eax
-	jbe	L_contiguous_in_window /* if (write >= nbytes) */
-
-	add	esi, [esp+48]    /* from += wsize */
-	add	esi, eax         /* from += write */
-	sub	esi, ecx         /* from -= nbytes */
-	sub	ecx, eax         /* nbytes -= write */
-
-	mov	eax, [esp+64]    /* eax = len */
-	cmp	eax, ecx
-	jbe	L_do_copy          /* if (nbytes >= len) */
-
-	sub	eax, ecx         /* len -= nbytes */
-	rep     movsb
-	mov	esi, [esp+28]     /* from = window */
-	mov	ecx, [esp+52]     /* nbytes = write */
-	cmp	eax, ecx
-	jbe	L_do_copy          /* if (nbytes >= len) */
-
-	sub	eax, ecx         /* len -= nbytes */
-	rep     movsb
-	mov	esi, edi
-	sub	esi, ebp         /* from = out - dist */
-	jmp	L_do_copy
-
-ALIGN 4
-L_contiguous_in_window:
-	add	esi, eax
-	sub	esi, ecx         /* from += write - nbytes */
-
-	mov	eax, [esp+64]    /* eax = len */
-	cmp	eax, ecx
-	jbe	L_do_copy          /* if (nbytes >= len) */
-
-	sub	eax, ecx         /* len -= nbytes */
-	rep     movsb
-	mov	esi, edi
-	sub	esi, ebp         /* from = out - dist */
-	jmp	L_do_copy
-
-ALIGN 4
-L_do_copy:
-	mov	ecx, eax
-	rep     movsb
-
-	mov	esi, [esp+8]      /* move in back to %esi, toss from */
-	mov	ebp, [esp+32]     /* ebp = lcode */
-	jmp	L_while_test
-
-L_test_for_end_of_block:
-	test	al, 32
-	jz	L_invalid_literal_length_code
-	mov	dword ptr [esp+72], 1
-	jmp	L_break_loop_with_status
-
-L_invalid_literal_length_code:
-	mov	dword ptr [esp+72], 2
-	jmp	L_break_loop_with_status
-
-L_invalid_distance_code:
-	mov	dword ptr [esp+72], 3
-	jmp	L_break_loop_with_status
-
-L_invalid_distance_too_far:
-	mov	esi, [esp+4]
-	mov	dword ptr [esp+72], 4
-	jmp	L_break_loop_with_status
-
-L_break_loop:
-	mov	dword ptr [esp+72], 0
-
-L_break_loop_with_status:
-/* put in, out, bits, and hold back into ar and pop esp */
-	mov	[esp+8], esi     /* save in */
-	mov	[esp+16], edi    /* save out */
-	mov	[esp+44], ebx    /* save bits */
-	mov	[esp+40], edx    /* save hold */
-	mov	ebp, [esp+4]     /* restore esp, ebp */
-	mov	esp, [esp]
-    }
-#else
-#error "x86 architecture not defined"
-#endif
-
-    if (ar.status > 1) {
-        if (ar.status == 2)
-            strm->msg = "invalid literal/length code";
-        else if (ar.status == 3)
-            strm->msg = "invalid distance code";
-        else
-            strm->msg = "invalid distance too far back";
-        state->mode = BAD;
-    }
-    else if ( ar.status == 1 ) {
-        state->mode = TYPE;
-    }
-
-    /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
-    ar.len = ar.bits >> 3;
-    ar.in -= ar.len;
-    ar.bits -= ar.len << 3;
-    ar.hold &= (1U << ar.bits) - 1;
-
-    /* update state and return */
-    strm->next_in = ar.in;
-    strm->next_out = ar.out;
-    strm->avail_in = (unsigned)(ar.in < ar.last ?
-                                PAD_AVAIL_IN + (ar.last - ar.in) :
-                                PAD_AVAIL_IN - (ar.in - ar.last));
-    strm->avail_out = (unsigned)(ar.out < ar.end ?
-                                 PAD_AVAIL_OUT + (ar.end - ar.out) :
-                                 PAD_AVAIL_OUT - (ar.out - ar.end));
-    state->hold = ar.hold;
-    state->bits = ar.bits;
-    return;
-}
-
diff --git a/libs/zlib/contrib/inflate86/inffast.S b/libs/zlib/contrib/inflate86/inffast.S
deleted file mode 100644
index 2245a2905..000000000
--- a/libs/zlib/contrib/inflate86/inffast.S
+++ /dev/null
@@ -1,1368 +0,0 @@
-/*
- * inffast.S is a hand tuned assembler version of:
- *
- * inffast.c -- fast decoding
- * Copyright (C) 1995-2003 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Copyright (C) 2003 Chris Anderson <christop@charm.net>
- * Please use the copyright conditions above.
- *
- * This version (Jan-23-2003) of inflate_fast was coded and tested under
- * GNU/Linux on a pentium 3, using the gcc-3.2 compiler distribution.  On that
- * machine, I found that gzip style archives decompressed about 20% faster than
- * the gcc-3.2 -O3 -fomit-frame-pointer compiled version.  Your results will
- * depend on how large of a buffer is used for z_stream.next_in & next_out
- * (8K-32K worked best for my 256K cpu cache) and how much overhead there is in
- * stream processing I/O and crc32/addler32.  In my case, this routine used
- * 70% of the cpu time and crc32 used 20%.
- *
- * I am confident that this version will work in the general case, but I have
- * not tested a wide variety of datasets or a wide variety of platforms.
- *
- * Jan-24-2003 -- Added -DUSE_MMX define for slightly faster inflating.
- * It should be a runtime flag instead of compile time flag...
- *
- * Jan-26-2003 -- Added runtime check for MMX support with cpuid instruction.
- * With -DUSE_MMX, only MMX code is compiled.  With -DNO_MMX, only non-MMX code
- * is compiled.  Without either option, runtime detection is enabled.  Runtime
- * detection should work on all modern cpus and the recomended algorithm (flip
- * ID bit on eflags and then use the cpuid instruction) is used in many
- * multimedia applications.  Tested under win2k with gcc-2.95 and gas-2.12
- * distributed with cygwin3.  Compiling with gcc-2.95 -c inffast.S -o
- * inffast.obj generates a COFF object which can then be linked with MSVC++
- * compiled code.  Tested under FreeBSD 4.7 with gcc-2.95.
- *
- * Jan-28-2003 -- Tested Athlon XP... MMX mode is slower than no MMX (and
- * slower than compiler generated code).  Adjusted cpuid check to use the MMX
- * code only for Pentiums < P4 until I have more data on the P4.  Speed
- * improvment is only about 15% on the Athlon when compared with code generated
- * with MSVC++.  Not sure yet, but I think the P4 will also be slower using the
- * MMX mode because many of it's x86 ALU instructions execute in .5 cycles and
- * have less latency than MMX ops.  Added code to buffer the last 11 bytes of
- * the input stream since the MMX code grabs bits in chunks of 32, which
- * differs from the inffast.c algorithm.  I don't think there would have been
- * read overruns where a page boundary was crossed (a segfault), but there
- * could have been overruns when next_in ends on unaligned memory (unintialized
- * memory read).
- *
- * Mar-13-2003 -- P4 MMX is slightly slower than P4 NO_MMX.  I created a C
- * version of the non-MMX code so that it doesn't depend on zstrm and zstate
- * structure offsets which are hard coded in this file.  This was last tested
- * with zlib-1.2.0 which is currently in beta testing, newer versions of this
- * and inffas86.c can be found at http://www.eetbeetee.com/zlib/ and
- * http://www.charm.net/~christop/zlib/
- */
-
-
-/*
- * if you have underscore linking problems (_inflate_fast undefined), try
- * using -DGAS_COFF
- */
-#if ! defined( GAS_COFF ) && ! defined( GAS_ELF )
-
-#if defined( WIN32 ) || defined( __CYGWIN__ )
-#define GAS_COFF /* windows object format */
-#else
-#define GAS_ELF
-#endif
-
-#endif /* ! GAS_COFF && ! GAS_ELF */
-
-
-#if defined( GAS_COFF )
-
-/* coff externals have underscores */
-#define inflate_fast _inflate_fast
-#define inflate_fast_use_mmx _inflate_fast_use_mmx
-
-#endif /* GAS_COFF */
-
-
-.file "inffast.S"
-
-.globl inflate_fast
-
-.text
-.align 4,0
-.L_invalid_literal_length_code_msg:
-.string "invalid literal/length code"
-
-.align 4,0
-.L_invalid_distance_code_msg:
-.string "invalid distance code"
-
-.align 4,0
-.L_invalid_distance_too_far_msg:
-.string "invalid distance too far back"
-
-#if ! defined( NO_MMX )
-.align 4,0
-.L_mask: /* mask[N] = ( 1 << N ) - 1 */
-.long 0
-.long 1
-.long 3
-.long 7
-.long 15
-.long 31
-.long 63
-.long 127
-.long 255
-.long 511
-.long 1023
-.long 2047
-.long 4095
-.long 8191
-.long 16383
-.long 32767
-.long 65535
-.long 131071
-.long 262143
-.long 524287
-.long 1048575
-.long 2097151
-.long 4194303
-.long 8388607
-.long 16777215
-.long 33554431
-.long 67108863
-.long 134217727
-.long 268435455
-.long 536870911
-.long 1073741823
-.long 2147483647
-.long 4294967295
-#endif /* NO_MMX */
-
-.text
-
-/*
- * struct z_stream offsets, in zlib.h
- */
-#define next_in_strm   0   /* strm->next_in */
-#define avail_in_strm  4   /* strm->avail_in */
-#define next_out_strm  12  /* strm->next_out */
-#define avail_out_strm 16  /* strm->avail_out */
-#define msg_strm       24  /* strm->msg */
-#define state_strm     28  /* strm->state */
-
-/*
- * struct inflate_state offsets, in inflate.h
- */
-#define mode_state     0   /* state->mode */
-#define wsize_state    32  /* state->wsize */
-#define write_state    40  /* state->write */
-#define window_state   44  /* state->window */
-#define hold_state     48  /* state->hold */
-#define bits_state     52  /* state->bits */
-#define lencode_state  68  /* state->lencode */
-#define distcode_state 72  /* state->distcode */
-#define lenbits_state  76  /* state->lenbits */
-#define distbits_state 80  /* state->distbits */
-
-/*
- * inflate_fast's activation record
- */
-#define local_var_size 64 /* how much local space for vars */
-#define strm_sp        88 /* first arg: z_stream * (local_var_size + 24) */
-#define start_sp       92 /* second arg: unsigned int (local_var_size + 28) */
-
-/*
- * offsets for local vars on stack
- */
-#define out            60  /* unsigned char* */
-#define window         56  /* unsigned char* */
-#define wsize          52  /* unsigned int */
-#define write          48  /* unsigned int */
-#define in             44  /* unsigned char* */
-#define beg            40  /* unsigned char* */
-#define buf            28  /* char[ 12 ] */
-#define len            24  /* unsigned int */
-#define last           20  /* unsigned char* */
-#define end            16  /* unsigned char* */
-#define dcode          12  /* code* */
-#define lcode           8  /* code* */
-#define dmask           4  /* unsigned int */
-#define lmask           0  /* unsigned int */
-
-/*
- * typedef enum inflate_mode consts, in inflate.h
- */
-#define INFLATE_MODE_TYPE 11  /* state->mode flags enum-ed in inflate.h */
-#define INFLATE_MODE_BAD  26
-
-
-#if ! defined( USE_MMX ) && ! defined( NO_MMX )
-
-#define RUN_TIME_MMX
-
-#define CHECK_MMX    1
-#define DO_USE_MMX   2
-#define DONT_USE_MMX 3
-
-.globl inflate_fast_use_mmx
-
-.data
-
-.align 4,0
-inflate_fast_use_mmx: /* integer flag for run time control 1=check,2=mmx,3=no */
-.long CHECK_MMX
-
-#if defined( GAS_ELF )
-/* elf info */
-.type   inflate_fast_use_mmx,@object
-.size   inflate_fast_use_mmx,4
-#endif
-
-#endif /* RUN_TIME_MMX */
-
-#if defined( GAS_COFF )
-/* coff info: scl 2 = extern, type 32 = function */
-.def inflate_fast; .scl 2; .type 32; .endef
-#endif
-
-.text
-
-.align 32,0x90
-inflate_fast:
-        pushl   %edi
-        pushl   %esi
-        pushl   %ebp
-        pushl   %ebx
-        pushf   /* save eflags (strm_sp, state_sp assumes this is 32 bits) */
-        subl    $local_var_size, %esp
-        cld
-
-#define strm_r  %esi
-#define state_r %edi
-
-        movl    strm_sp(%esp), strm_r
-        movl    state_strm(strm_r), state_r
-
-        /* in = strm->next_in;
-         * out = strm->next_out;
-         * last = in + strm->avail_in - 11;
-         * beg = out - (start - strm->avail_out);
-         * end = out + (strm->avail_out - 257);
-         */
-        movl    avail_in_strm(strm_r), %edx
-        movl    next_in_strm(strm_r), %eax
-
-        addl    %eax, %edx      /* avail_in += next_in */
-        subl    $11, %edx       /* avail_in -= 11 */
-
-        movl    %eax, in(%esp)
-        movl    %edx, last(%esp)
-
-        movl    start_sp(%esp), %ebp
-        movl    avail_out_strm(strm_r), %ecx
-        movl    next_out_strm(strm_r), %ebx
-
-        subl    %ecx, %ebp      /* start -= avail_out */
-        negl    %ebp            /* start = -start */
-        addl    %ebx, %ebp      /* start += next_out */
-
-        subl    $257, %ecx      /* avail_out -= 257 */
-        addl    %ebx, %ecx      /* avail_out += out */
-
-        movl    %ebx, out(%esp)
-        movl    %ebp, beg(%esp)
-        movl    %ecx, end(%esp)
-
-        /* wsize = state->wsize;
-         * write = state->write;
-         * window = state->window;
-         * hold = state->hold;
-         * bits = state->bits;
-         * lcode = state->lencode;
-         * dcode = state->distcode;
-         * lmask = ( 1 << state->lenbits ) - 1;
-         * dmask = ( 1 << state->distbits ) - 1;
-         */
-
-        movl    lencode_state(state_r), %eax
-        movl    distcode_state(state_r), %ecx
-
-        movl    %eax, lcode(%esp)
-        movl    %ecx, dcode(%esp)
-
-        movl    $1, %eax
-        movl    lenbits_state(state_r), %ecx
-        shll    %cl, %eax
-        decl    %eax
-        movl    %eax, lmask(%esp)
-
-        movl    $1, %eax
-        movl    distbits_state(state_r), %ecx
-        shll    %cl, %eax
-        decl    %eax
-        movl    %eax, dmask(%esp)
-
-        movl    wsize_state(state_r), %eax
-        movl    write_state(state_r), %ecx
-        movl    window_state(state_r), %edx
-
-        movl    %eax, wsize(%esp)
-        movl    %ecx, write(%esp)
-        movl    %edx, window(%esp)
-
-        movl    hold_state(state_r), %ebp
-        movl    bits_state(state_r), %ebx
-
-#undef strm_r
-#undef state_r
-
-#define in_r       %esi
-#define from_r     %esi
-#define out_r      %edi
-
-        movl    in(%esp), in_r
-        movl    last(%esp), %ecx
-        cmpl    in_r, %ecx
-        ja      .L_align_long           /* if in < last */
-
-        addl    $11, %ecx               /* ecx = &in[ avail_in ] */
-        subl    in_r, %ecx              /* ecx = avail_in */
-        movl    $12, %eax
-        subl    %ecx, %eax              /* eax = 12 - avail_in */
-        leal    buf(%esp), %edi
-        rep     movsb                   /* memcpy( buf, in, avail_in ) */
-        movl    %eax, %ecx
-        xorl    %eax, %eax
-        rep     stosb         /* memset( &buf[ avail_in ], 0, 12 - avail_in ) */
-        leal    buf(%esp), in_r         /* in = buf */
-        movl    in_r, last(%esp)        /* last = in, do just one iteration */
-        jmp     .L_is_aligned
-
-        /* align in_r on long boundary */
-.L_align_long:
-        testl   $3, in_r
-        jz      .L_is_aligned
-        xorl    %eax, %eax
-        movb    (in_r), %al
-        incl    in_r
-        movl    %ebx, %ecx
-        addl    $8, %ebx
-        shll    %cl, %eax
-        orl     %eax, %ebp
-        jmp     .L_align_long
-
-.L_is_aligned:
-        movl    out(%esp), out_r
-
-#if defined( NO_MMX )
-        jmp     .L_do_loop
-#endif
-
-#if defined( USE_MMX )
-        jmp     .L_init_mmx
-#endif
-
-/*** Runtime MMX check ***/
-
-#if defined( RUN_TIME_MMX )
-.L_check_mmx:
-        cmpl    $DO_USE_MMX, inflate_fast_use_mmx
-        je      .L_init_mmx
-        ja      .L_do_loop /* > 2 */
-
-        pushl   %eax
-        pushl   %ebx
-        pushl   %ecx
-        pushl   %edx
-        pushf
-        movl    (%esp), %eax      /* copy eflags to eax */
-        xorl    $0x200000, (%esp) /* try toggling ID bit of eflags (bit 21)
-                                   * to see if cpu supports cpuid...
-                                   * ID bit method not supported by NexGen but
-                                   * bios may load a cpuid instruction and
-                                   * cpuid may be disabled on Cyrix 5-6x86 */
-        popf
-        pushf
-        popl    %edx              /* copy new eflags to edx */
-        xorl    %eax, %edx        /* test if ID bit is flipped */
-        jz      .L_dont_use_mmx   /* not flipped if zero */
-        xorl    %eax, %eax
-        cpuid
-        cmpl    $0x756e6547, %ebx /* check for GenuineIntel in ebx,ecx,edx */
-        jne     .L_dont_use_mmx
-        cmpl    $0x6c65746e, %ecx
-        jne     .L_dont_use_mmx
-        cmpl    $0x49656e69, %edx
-        jne     .L_dont_use_mmx
-        movl    $1, %eax
-        cpuid                     /* get cpu features */
-        shrl    $8, %eax
-        andl    $15, %eax
-        cmpl    $6, %eax          /* check for Pentium family, is 0xf for P4 */
-        jne     .L_dont_use_mmx
-        testl   $0x800000, %edx   /* test if MMX feature is set (bit 23) */
-        jnz     .L_use_mmx
-        jmp     .L_dont_use_mmx
-.L_use_mmx:
-        movl    $DO_USE_MMX, inflate_fast_use_mmx
-        jmp     .L_check_mmx_pop
-.L_dont_use_mmx:
-        movl    $DONT_USE_MMX, inflate_fast_use_mmx
-.L_check_mmx_pop:
-        popl    %edx
-        popl    %ecx
-        popl    %ebx
-        popl    %eax
-        jmp     .L_check_mmx
-#endif
-
-
-/*** Non-MMX code ***/
-
-#if defined ( NO_MMX ) || defined( RUN_TIME_MMX )
-
-#define hold_r     %ebp
-#define bits_r     %bl
-#define bitslong_r %ebx
-
-.align 32,0x90
-.L_while_test:
-        /* while (in < last && out < end)
-         */
-        cmpl    out_r, end(%esp)
-        jbe     .L_break_loop           /* if (out >= end) */
-
-        cmpl    in_r, last(%esp)
-        jbe     .L_break_loop
-
-.L_do_loop:
-        /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out
-         *
-         * do {
-         *   if (bits < 15) {
-         *     hold |= *((unsigned short *)in)++ << bits;
-         *     bits += 16
-         *   }
-         *   this = lcode[hold & lmask]
-         */
-        cmpb    $15, bits_r
-        ja      .L_get_length_code      /* if (15 < bits) */
-
-        xorl    %eax, %eax
-        lodsw                           /* al = *(ushort *)in++ */
-        movb    bits_r, %cl             /* cl = bits, needs it for shifting */
-        addb    $16, bits_r             /* bits += 16 */
-        shll    %cl, %eax
-        orl     %eax, hold_r            /* hold |= *((ushort *)in)++ << bits */
-
-.L_get_length_code:
-        movl    lmask(%esp), %edx       /* edx = lmask */
-        movl    lcode(%esp), %ecx       /* ecx = lcode */
-        andl    hold_r, %edx            /* edx &= hold */
-        movl    (%ecx,%edx,4), %eax     /* eax = lcode[hold & lmask] */
-
-.L_dolen:
-        /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out
-         *
-         * dolen:
-         *    bits -= this.bits;
-         *    hold >>= this.bits
-         */
-        movb    %ah, %cl                /* cl = this.bits */
-        subb    %ah, bits_r             /* bits -= this.bits */
-        shrl    %cl, hold_r             /* hold >>= this.bits */
-
-        /* check if op is a literal
-         * if (op == 0) {
-         *    PUP(out) = this.val;
-         *  }
-         */
-        testb   %al, %al
-        jnz     .L_test_for_length_base /* if (op != 0) 45.7% */
-
-        shrl    $16, %eax               /* output this.val char */
-        stosb
-        jmp     .L_while_test
-
-.L_test_for_length_base:
-        /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out, %edx = len
-         *
-         * else if (op & 16) {
-         *   len = this.val
-         *   op &= 15
-         *   if (op) {
-         *     if (op > bits) {
-         *       hold |= *((unsigned short *)in)++ << bits;
-         *       bits += 16
-         *     }
-         *     len += hold & mask[op];
-         *     bits -= op;
-         *     hold >>= op;
-         *   }
-         */
-#define len_r %edx
-        movl    %eax, len_r             /* len = this */
-        shrl    $16, len_r              /* len = this.val */
-        movb    %al, %cl
-
-        testb   $16, %al
-        jz      .L_test_for_second_level_length /* if ((op & 16) == 0) 8% */
-        andb    $15, %cl                /* op &= 15 */
-        jz      .L_save_len             /* if (!op) */
-        cmpb    %cl, bits_r
-        jae     .L_add_bits_to_len      /* if (op <= bits) */
-
-        movb    %cl, %ch                /* stash op in ch, freeing cl */
-        xorl    %eax, %eax
-        lodsw                           /* al = *(ushort *)in++ */
-        movb    bits_r, %cl             /* cl = bits, needs it for shifting */
-        addb    $16, bits_r             /* bits += 16 */
-        shll    %cl, %eax
-        orl     %eax, hold_r            /* hold |= *((ushort *)in)++ << bits */
-        movb    %ch, %cl                /* move op back to ecx */
-
-.L_add_bits_to_len:
-        movl    $1, %eax
-        shll    %cl, %eax
-        decl    %eax
-        subb    %cl, bits_r
-        andl    hold_r, %eax            /* eax &= hold */
-        shrl    %cl, hold_r
-        addl    %eax, len_r             /* len += hold & mask[op] */
-
-.L_save_len:
-        movl    len_r, len(%esp)        /* save len */
-#undef  len_r
-
-.L_decode_distance:
-        /* regs: %esi = in, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *
-         *   if (bits < 15) {
-         *     hold |= *((unsigned short *)in)++ << bits;
-         *     bits += 16
-         *   }
-         *   this = dcode[hold & dmask];
-         * dodist:
-         *   bits -= this.bits;
-         *   hold >>= this.bits;
-         *   op = this.op;
-         */
-
-        cmpb    $15, bits_r
-        ja      .L_get_distance_code    /* if (15 < bits) */
-
-        xorl    %eax, %eax
-        lodsw                           /* al = *(ushort *)in++ */
-        movb    bits_r, %cl             /* cl = bits, needs it for shifting */
-        addb    $16, bits_r             /* bits += 16 */
-        shll    %cl, %eax
-        orl     %eax, hold_r            /* hold |= *((ushort *)in)++ << bits */
-
-.L_get_distance_code:
-        movl    dmask(%esp), %edx       /* edx = dmask */
-        movl    dcode(%esp), %ecx       /* ecx = dcode */
-        andl    hold_r, %edx            /* edx &= hold */
-        movl    (%ecx,%edx,4), %eax     /* eax = dcode[hold & dmask] */
-
-#define dist_r %edx
-.L_dodist:
-        movl    %eax, dist_r            /* dist = this */
-        shrl    $16, dist_r             /* dist = this.val */
-        movb    %ah, %cl
-        subb    %ah, bits_r             /* bits -= this.bits */
-        shrl    %cl, hold_r             /* hold >>= this.bits */
-
-        /* if (op & 16) {
-         *   dist = this.val
-         *   op &= 15
-         *   if (op > bits) {
-         *     hold |= *((unsigned short *)in)++ << bits;
-         *     bits += 16
-         *   }
-         *   dist += hold & mask[op];
-         *   bits -= op;
-         *   hold >>= op;
-         */
-        movb    %al, %cl                /* cl = this.op */
-
-        testb   $16, %al                /* if ((op & 16) == 0) */
-        jz      .L_test_for_second_level_dist
-        andb    $15, %cl                /* op &= 15 */
-        jz      .L_check_dist_one
-        cmpb    %cl, bits_r
-        jae     .L_add_bits_to_dist     /* if (op <= bits) 97.6% */
-
-        movb    %cl, %ch                /* stash op in ch, freeing cl */
-        xorl    %eax, %eax
-        lodsw                           /* al = *(ushort *)in++ */
-        movb    bits_r, %cl             /* cl = bits, needs it for shifting */
-        addb    $16, bits_r             /* bits += 16 */
-        shll    %cl, %eax
-        orl     %eax, hold_r            /* hold |= *((ushort *)in)++ << bits */
-        movb    %ch, %cl                /* move op back to ecx */
-
-.L_add_bits_to_dist:
-        movl    $1, %eax
-        shll    %cl, %eax
-        decl    %eax                    /* (1 << op) - 1 */
-        subb    %cl, bits_r
-        andl    hold_r, %eax            /* eax &= hold */
-        shrl    %cl, hold_r
-        addl    %eax, dist_r            /* dist += hold & ((1 << op) - 1) */
-        jmp     .L_check_window
-
-.L_check_window:
-        /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *       %ecx = nbytes
-         *
-         * nbytes = out - beg;
-         * if (dist <= nbytes) {
-         *   from = out - dist;
-         *   do {
-         *     PUP(out) = PUP(from);
-         *   } while (--len > 0) {
-         * }
-         */
-
-        movl    in_r, in(%esp)          /* save in so from can use it's reg */
-        movl    out_r, %eax
-        subl    beg(%esp), %eax         /* nbytes = out - beg */
-
-        cmpl    dist_r, %eax
-        jb      .L_clip_window          /* if (dist > nbytes) 4.2% */
-
-        movl    len(%esp), %ecx
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-
-        subl    $3, %ecx
-        movb    (from_r), %al
-        movb    %al, (out_r)
-        movb    1(from_r), %al
-        movb    2(from_r), %dl
-        addl    $3, from_r
-        movb    %al, 1(out_r)
-        movb    %dl, 2(out_r)
-        addl    $3, out_r
-        rep     movsb
-
-        movl    in(%esp), in_r          /* move in back to %esi, toss from */
-        jmp     .L_while_test
-
-.align 16,0x90
-.L_check_dist_one:
-        cmpl    $1, dist_r
-        jne     .L_check_window
-        cmpl    out_r, beg(%esp)
-        je      .L_check_window
-
-        decl    out_r
-        movl    len(%esp), %ecx
-        movb    (out_r), %al
-        subl    $3, %ecx
-
-        movb    %al, 1(out_r)
-        movb    %al, 2(out_r)
-        movb    %al, 3(out_r)
-        addl    $4, out_r
-        rep     stosb
-
-        jmp     .L_while_test
-
-.align 16,0x90
-.L_test_for_second_level_length:
-        /* else if ((op & 64) == 0) {
-         *   this = lcode[this.val + (hold & mask[op])];
-         * }
-         */
-        testb   $64, %al
-        jnz     .L_test_for_end_of_block  /* if ((op & 64) != 0) */
-
-        movl    $1, %eax
-        shll    %cl, %eax
-        decl    %eax
-        andl    hold_r, %eax            /* eax &= hold */
-        addl    %edx, %eax              /* eax += this.val */
-        movl    lcode(%esp), %edx       /* edx = lcode */
-        movl    (%edx,%eax,4), %eax     /* eax = lcode[val + (hold&mask[op])] */
-        jmp     .L_dolen
-
-.align 16,0x90
-.L_test_for_second_level_dist:
-        /* else if ((op & 64) == 0) {
-         *   this = dcode[this.val + (hold & mask[op])];
-         * }
-         */
-        testb   $64, %al
-        jnz     .L_invalid_distance_code  /* if ((op & 64) != 0) */
-
-        movl    $1, %eax
-        shll    %cl, %eax
-        decl    %eax
-        andl    hold_r, %eax            /* eax &= hold */
-        addl    %edx, %eax              /* eax += this.val */
-        movl    dcode(%esp), %edx       /* edx = dcode */
-        movl    (%edx,%eax,4), %eax     /* eax = dcode[val + (hold&mask[op])] */
-        jmp     .L_dodist
-
-.align 16,0x90
-.L_clip_window:
-        /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *       %ecx = nbytes
-         *
-         * else {
-         *   if (dist > wsize) {
-         *     invalid distance
-         *   }
-         *   from = window;
-         *   nbytes = dist - nbytes;
-         *   if (write == 0) {
-         *     from += wsize - nbytes;
-         */
-#define nbytes_r %ecx
-        movl    %eax, nbytes_r
-        movl    wsize(%esp), %eax       /* prepare for dist compare */
-        negl    nbytes_r                /* nbytes = -nbytes */
-        movl    window(%esp), from_r    /* from = window */
-
-        cmpl    dist_r, %eax
-        jb      .L_invalid_distance_too_far /* if (dist > wsize) */
-
-        addl    dist_r, nbytes_r        /* nbytes = dist - nbytes */
-        cmpl    $0, write(%esp)
-        jne     .L_wrap_around_window   /* if (write != 0) */
-
-        subl    nbytes_r, %eax
-        addl    %eax, from_r            /* from += wsize - nbytes */
-
-        /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *       %ecx = nbytes, %eax = len
-         *
-         *     if (nbytes < len) {
-         *       len -= nbytes;
-         *       do {
-         *         PUP(out) = PUP(from);
-         *       } while (--nbytes);
-         *       from = out - dist;
-         *     }
-         *   }
-         */
-#define len_r %eax
-        movl    len(%esp), len_r
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1             /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1
-
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1             /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1
-
-.L_wrap_around_window:
-        /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *       %ecx = nbytes, %eax = write, %eax = len
-         *
-         *   else if (write < nbytes) {
-         *     from += wsize + write - nbytes;
-         *     nbytes -= write;
-         *     if (nbytes < len) {
-         *       len -= nbytes;
-         *       do {
-         *         PUP(out) = PUP(from);
-         *       } while (--nbytes);
-         *       from = window;
-         *       nbytes = write;
-         *       if (nbytes < len) {
-         *         len -= nbytes;
-         *         do {
-         *           PUP(out) = PUP(from);
-         *         } while(--nbytes);
-         *         from = out - dist;
-         *       }
-         *     }
-         *   }
-         */
-#define write_r %eax
-        movl    write(%esp), write_r
-        cmpl    write_r, nbytes_r
-        jbe     .L_contiguous_in_window /* if (write >= nbytes) */
-
-        addl    wsize(%esp), from_r
-        addl    write_r, from_r
-        subl    nbytes_r, from_r        /* from += wsize + write - nbytes */
-        subl    write_r, nbytes_r       /* nbytes -= write */
-#undef write_r
-
-        movl    len(%esp), len_r
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1             /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    window(%esp), from_r    /* from = window */
-        movl    write(%esp), nbytes_r   /* nbytes = write */
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1             /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1
-
-.L_contiguous_in_window:
-        /* regs: %esi = from, %ebp = hold, %bl = bits, %edi = out, %edx = dist
-         *       %ecx = nbytes, %eax = write, %eax = len
-         *
-         *   else {
-         *     from += write - nbytes;
-         *     if (nbytes < len) {
-         *       len -= nbytes;
-         *       do {
-         *         PUP(out) = PUP(from);
-         *       } while (--nbytes);
-         *       from = out - dist;
-         *     }
-         *   }
-         */
-#define write_r %eax
-        addl    write_r, from_r
-        subl    nbytes_r, from_r        /* from += write - nbytes */
-#undef write_r
-
-        movl    len(%esp), len_r
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1             /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-
-.L_do_copy1:
-        /* regs: %esi = from, %esi = in, %ebp = hold, %bl = bits, %edi = out
-         *       %eax = len
-         *
-         *     while (len > 0) {
-         *       PUP(out) = PUP(from);
-         *       len--;
-         *     }
-         *   }
-         * } while (in < last && out < end);
-         */
-#undef nbytes_r
-#define in_r %esi
-        movl    len_r, %ecx
-        rep     movsb
-
-        movl    in(%esp), in_r          /* move in back to %esi, toss from */
-        jmp     .L_while_test
-
-#undef len_r
-#undef dist_r
-
-#endif /* NO_MMX || RUN_TIME_MMX */
-
-
-/*** MMX code ***/
-
-#if defined( USE_MMX ) || defined( RUN_TIME_MMX )
-
-.align 32,0x90
-.L_init_mmx:
-        emms
-
-#undef  bits_r
-#undef  bitslong_r
-#define bitslong_r %ebp
-#define hold_mm    %mm0
-        movd    %ebp, hold_mm
-        movl    %ebx, bitslong_r
-
-#define used_mm   %mm1
-#define dmask2_mm %mm2
-#define lmask2_mm %mm3
-#define lmask_mm  %mm4
-#define dmask_mm  %mm5
-#define tmp_mm    %mm6
-
-        movd    lmask(%esp), lmask_mm
-        movq    lmask_mm, lmask2_mm
-        movd    dmask(%esp), dmask_mm
-        movq    dmask_mm, dmask2_mm
-        pxor    used_mm, used_mm
-        movl    lcode(%esp), %ebx       /* ebx = lcode */
-        jmp     .L_do_loop_mmx
-
-.align 32,0x90
-.L_while_test_mmx:
-        /* while (in < last && out < end)
-         */
-        cmpl    out_r, end(%esp)
-        jbe     .L_break_loop           /* if (out >= end) */
-
-        cmpl    in_r, last(%esp)
-        jbe     .L_break_loop
-
-.L_do_loop_mmx:
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-
-        cmpl    $32, bitslong_r
-        ja      .L_get_length_code_mmx  /* if (32 < bits) */
-
-        movd    bitslong_r, tmp_mm
-        movd    (in_r), %mm7
-        addl    $4, in_r
-        psllq   tmp_mm, %mm7
-        addl    $32, bitslong_r
-        por     %mm7, hold_mm           /* hold_mm |= *((uint *)in)++ << bits */
-
-.L_get_length_code_mmx:
-        pand    hold_mm, lmask_mm
-        movd    lmask_mm, %eax
-        movq    lmask2_mm, lmask_mm
-        movl    (%ebx,%eax,4), %eax     /* eax = lcode[hold & lmask] */
-
-.L_dolen_mmx:
-        movzbl  %ah, %ecx               /* ecx = this.bits */
-        movd    %ecx, used_mm
-        subl    %ecx, bitslong_r        /* bits -= this.bits */
-
-        testb   %al, %al
-        jnz     .L_test_for_length_base_mmx /* if (op != 0) 45.7% */
-
-        shrl    $16, %eax               /* output this.val char */
-        stosb
-        jmp     .L_while_test_mmx
-
-.L_test_for_length_base_mmx:
-#define len_r  %edx
-        movl    %eax, len_r             /* len = this */
-        shrl    $16, len_r              /* len = this.val */
-
-        testb   $16, %al
-        jz      .L_test_for_second_level_length_mmx /* if ((op & 16) == 0) 8% */
-        andl    $15, %eax               /* op &= 15 */
-        jz      .L_decode_distance_mmx  /* if (!op) */
-
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-        movd    %eax, used_mm
-        movd    hold_mm, %ecx
-        subl    %eax, bitslong_r
-        andl    .L_mask(,%eax,4), %ecx
-        addl    %ecx, len_r             /* len += hold & mask[op] */
-
-.L_decode_distance_mmx:
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-
-        cmpl    $32, bitslong_r
-        ja      .L_get_dist_code_mmx    /* if (32 < bits) */
-
-        movd    bitslong_r, tmp_mm
-        movd    (in_r), %mm7
-        addl    $4, in_r
-        psllq   tmp_mm, %mm7
-        addl    $32, bitslong_r
-        por     %mm7, hold_mm           /* hold_mm |= *((uint *)in)++ << bits */
-
-.L_get_dist_code_mmx:
-        movl    dcode(%esp), %ebx       /* ebx = dcode */
-        pand    hold_mm, dmask_mm
-        movd    dmask_mm, %eax
-        movq    dmask2_mm, dmask_mm
-        movl    (%ebx,%eax,4), %eax     /* eax = dcode[hold & lmask] */
-
-.L_dodist_mmx:
-#define dist_r %ebx
-        movzbl  %ah, %ecx               /* ecx = this.bits */
-        movl    %eax, dist_r
-        shrl    $16, dist_r             /* dist  = this.val */
-        subl    %ecx, bitslong_r        /* bits -= this.bits */
-        movd    %ecx, used_mm
-
-        testb   $16, %al                /* if ((op & 16) == 0) */
-        jz      .L_test_for_second_level_dist_mmx
-        andl    $15, %eax               /* op &= 15 */
-        jz      .L_check_dist_one_mmx
-
-.L_add_bits_to_dist_mmx:
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-        movd    %eax, used_mm           /* save bit length of current op */
-        movd    hold_mm, %ecx           /* get the next bits on input stream */
-        subl    %eax, bitslong_r        /* bits -= op bits */
-        andl    .L_mask(,%eax,4), %ecx  /* ecx   = hold & mask[op] */
-        addl    %ecx, dist_r            /* dist += hold & mask[op] */
-
-.L_check_window_mmx:
-        movl    in_r, in(%esp)          /* save in so from can use it's reg */
-        movl    out_r, %eax
-        subl    beg(%esp), %eax         /* nbytes = out - beg */
-
-        cmpl    dist_r, %eax
-        jb      .L_clip_window_mmx      /* if (dist > nbytes) 4.2% */
-
-        movl    len_r, %ecx
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-
-        subl    $3, %ecx
-        movb    (from_r), %al
-        movb    %al, (out_r)
-        movb    1(from_r), %al
-        movb    2(from_r), %dl
-        addl    $3, from_r
-        movb    %al, 1(out_r)
-        movb    %dl, 2(out_r)
-        addl    $3, out_r
-        rep     movsb
-
-        movl    in(%esp), in_r          /* move in back to %esi, toss from */
-        movl    lcode(%esp), %ebx       /* move lcode back to %ebx, toss dist */
-        jmp     .L_while_test_mmx
-
-.align 16,0x90
-.L_check_dist_one_mmx:
-        cmpl    $1, dist_r
-        jne     .L_check_window_mmx
-        cmpl    out_r, beg(%esp)
-        je      .L_check_window_mmx
-
-        decl    out_r
-        movl    len_r, %ecx
-        movb    (out_r), %al
-        subl    $3, %ecx
-
-        movb    %al, 1(out_r)
-        movb    %al, 2(out_r)
-        movb    %al, 3(out_r)
-        addl    $4, out_r
-        rep     stosb
-
-        movl    lcode(%esp), %ebx       /* move lcode back to %ebx, toss dist */
-        jmp     .L_while_test_mmx
-
-.align 16,0x90
-.L_test_for_second_level_length_mmx:
-        testb   $64, %al
-        jnz     .L_test_for_end_of_block  /* if ((op & 64) != 0) */
-
-        andl    $15, %eax
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-        movd    hold_mm, %ecx
-        andl    .L_mask(,%eax,4), %ecx
-        addl    len_r, %ecx
-        movl    (%ebx,%ecx,4), %eax     /* eax = lcode[hold & lmask] */
-        jmp     .L_dolen_mmx
-
-.align 16,0x90
-.L_test_for_second_level_dist_mmx:
-        testb   $64, %al
-        jnz     .L_invalid_distance_code  /* if ((op & 64) != 0) */
-
-        andl    $15, %eax
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-        movd    hold_mm, %ecx
-        andl    .L_mask(,%eax,4), %ecx
-        movl    dcode(%esp), %eax       /* ecx = dcode */
-        addl    dist_r, %ecx
-        movl    (%eax,%ecx,4), %eax     /* eax = lcode[hold & lmask] */
-        jmp     .L_dodist_mmx
-
-.align 16,0x90
-.L_clip_window_mmx:
-#define nbytes_r %ecx
-        movl    %eax, nbytes_r
-        movl    wsize(%esp), %eax       /* prepare for dist compare */
-        negl    nbytes_r                /* nbytes = -nbytes */
-        movl    window(%esp), from_r    /* from = window */
-
-        cmpl    dist_r, %eax
-        jb      .L_invalid_distance_too_far /* if (dist > wsize) */
-
-        addl    dist_r, nbytes_r        /* nbytes = dist - nbytes */
-        cmpl    $0, write(%esp)
-        jne     .L_wrap_around_window_mmx /* if (write != 0) */
-
-        subl    nbytes_r, %eax
-        addl    %eax, from_r            /* from += wsize - nbytes */
-
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1_mmx         /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1_mmx
-
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1_mmx         /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1_mmx
-
-.L_wrap_around_window_mmx:
-#define write_r %eax
-        movl    write(%esp), write_r
-        cmpl    write_r, nbytes_r
-        jbe     .L_contiguous_in_window_mmx /* if (write >= nbytes) */
-
-        addl    wsize(%esp), from_r
-        addl    write_r, from_r
-        subl    nbytes_r, from_r        /* from += wsize + write - nbytes */
-        subl    write_r, nbytes_r       /* nbytes -= write */
-#undef write_r
-
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1_mmx         /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    window(%esp), from_r    /* from = window */
-        movl    write(%esp), nbytes_r   /* nbytes = write */
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1_mmx         /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-        jmp     .L_do_copy1_mmx
-
-.L_contiguous_in_window_mmx:
-#define write_r %eax
-        addl    write_r, from_r
-        subl    nbytes_r, from_r        /* from += write - nbytes */
-#undef write_r
-
-        cmpl    nbytes_r, len_r
-        jbe     .L_do_copy1_mmx         /* if (nbytes >= len) */
-
-        subl    nbytes_r, len_r         /* len -= nbytes */
-        rep     movsb
-        movl    out_r, from_r
-        subl    dist_r, from_r          /* from = out - dist */
-
-.L_do_copy1_mmx:
-#undef nbytes_r
-#define in_r %esi
-        movl    len_r, %ecx
-        rep     movsb
-
-        movl    in(%esp), in_r          /* move in back to %esi, toss from */
-        movl    lcode(%esp), %ebx       /* move lcode back to %ebx, toss dist */
-        jmp     .L_while_test_mmx
-
-#undef hold_r
-#undef bitslong_r
-
-#endif /* USE_MMX || RUN_TIME_MMX */
-
-
-/*** USE_MMX, NO_MMX, and RUNTIME_MMX from here on ***/
-
-.L_invalid_distance_code:
-        /* else {
-         *   strm->msg = "invalid distance code";
-         *   state->mode = BAD;
-         * }
-         */
-        movl    $.L_invalid_distance_code_msg, %ecx
-        movl    $INFLATE_MODE_BAD, %edx
-        jmp     .L_update_stream_state
-
-.L_test_for_end_of_block:
-        /* else if (op & 32) {
-         *   state->mode = TYPE;
-         *   break;
-         * }
-         */
-        testb   $32, %al
-        jz      .L_invalid_literal_length_code  /* if ((op & 32) == 0) */
-
-        movl    $0, %ecx
-        movl    $INFLATE_MODE_TYPE, %edx
-        jmp     .L_update_stream_state
-
-.L_invalid_literal_length_code:
-        /* else {
-         *   strm->msg = "invalid literal/length code";
-         *   state->mode = BAD;
-         * }
-         */
-        movl    $.L_invalid_literal_length_code_msg, %ecx
-        movl    $INFLATE_MODE_BAD, %edx
-        jmp     .L_update_stream_state
-
-.L_invalid_distance_too_far:
-        /* strm->msg = "invalid distance too far back";
-         * state->mode = BAD;
-         */
-        movl    in(%esp), in_r          /* from_r has in's reg, put in back */
-        movl    $.L_invalid_distance_too_far_msg, %ecx
-        movl    $INFLATE_MODE_BAD, %edx
-        jmp     .L_update_stream_state
-
-.L_update_stream_state:
-        /* set strm->msg = %ecx, strm->state->mode = %edx */
-        movl    strm_sp(%esp), %eax
-        testl   %ecx, %ecx              /* if (msg != NULL) */
-        jz      .L_skip_msg
-        movl    %ecx, msg_strm(%eax)    /* strm->msg = msg */
-.L_skip_msg:
-        movl    state_strm(%eax), %eax  /* state = strm->state */
-        movl    %edx, mode_state(%eax)  /* state->mode = edx (BAD | TYPE) */
-        jmp     .L_break_loop
-
-.align 32,0x90
-.L_break_loop:
-
-/*
- * Regs:
- *
- * bits = %ebp when mmx, and in %ebx when non-mmx
- * hold = %hold_mm when mmx, and in %ebp when non-mmx
- * in   = %esi
- * out  = %edi
- */
-
-#if defined( USE_MMX ) || defined( RUN_TIME_MMX )
-
-#if defined( RUN_TIME_MMX )
-
-        cmpl    $DO_USE_MMX, inflate_fast_use_mmx
-        jne     .L_update_next_in
-
-#endif /* RUN_TIME_MMX */
-
-        movl    %ebp, %ebx
-
-.L_update_next_in:
-
-#endif
-
-#define strm_r  %eax
-#define state_r %edx
-
-        /* len = bits >> 3;
-         * in -= len;
-         * bits -= len << 3;
-         * hold &= (1U << bits) - 1;
-         * state->hold = hold;
-         * state->bits = bits;
-         * strm->next_in = in;
-         * strm->next_out = out;
-         */
-        movl    strm_sp(%esp), strm_r
-        movl    %ebx, %ecx
-        movl    state_strm(strm_r), state_r
-        shrl    $3, %ecx
-        subl    %ecx, in_r
-        shll    $3, %ecx
-        subl    %ecx, %ebx
-        movl    out_r, next_out_strm(strm_r)
-        movl    %ebx, bits_state(state_r)
-        movl    %ebx, %ecx
-
-        leal    buf(%esp), %ebx
-        cmpl    %ebx, last(%esp)
-        jne     .L_buf_not_used         /* if buf != last */
-
-        subl    %ebx, in_r              /* in -= buf */
-        movl    next_in_strm(strm_r), %ebx
-        movl    %ebx, last(%esp)        /* last = strm->next_in */
-        addl    %ebx, in_r              /* in += strm->next_in */
-        movl    avail_in_strm(strm_r), %ebx
-        subl    $11, %ebx
-        addl    %ebx, last(%esp)    /* last = &strm->next_in[ avail_in - 11 ] */
-
-.L_buf_not_used:
-        movl    in_r, next_in_strm(strm_r)
-
-        movl    $1, %ebx
-        shll    %cl, %ebx
-        decl    %ebx
-
-#if defined( USE_MMX ) || defined( RUN_TIME_MMX )
-
-#if defined( RUN_TIME_MMX )
-
-        cmpl    $DO_USE_MMX, inflate_fast_use_mmx
-        jne     .L_update_hold
-
-#endif /* RUN_TIME_MMX */
-
-        psrlq   used_mm, hold_mm        /* hold_mm >>= last bit length */
-        movd    hold_mm, %ebp
-
-        emms
-
-.L_update_hold:
-
-#endif /* USE_MMX || RUN_TIME_MMX */
-
-        andl    %ebx, %ebp
-        movl    %ebp, hold_state(state_r)
-
-#define last_r %ebx
-
-        /* strm->avail_in = in < last ? 11 + (last - in) : 11 - (in - last) */
-        movl    last(%esp), last_r
-        cmpl    in_r, last_r
-        jbe     .L_last_is_smaller     /* if (in >= last) */
-
-        subl    in_r, last_r           /* last -= in */
-        addl    $11, last_r            /* last += 11 */
-        movl    last_r, avail_in_strm(strm_r)
-        jmp     .L_fixup_out
-.L_last_is_smaller:
-        subl    last_r, in_r           /* in -= last */
-        negl    in_r                   /* in = -in */
-        addl    $11, in_r              /* in += 11 */
-        movl    in_r, avail_in_strm(strm_r)
-
-#undef last_r
-#define end_r %ebx
-
-.L_fixup_out:
-        /* strm->avail_out = out < end ? 257 + (end - out) : 257 - (out - end)*/
-        movl    end(%esp), end_r
-        cmpl    out_r, end_r
-        jbe     .L_end_is_smaller      /* if (out >= end) */
-
-        subl    out_r, end_r           /* end -= out */
-        addl    $257, end_r            /* end += 257 */
-        movl    end_r, avail_out_strm(strm_r)
-        jmp     .L_done
-.L_end_is_smaller:
-        subl    end_r, out_r           /* out -= end */
-        negl    out_r                  /* out = -out */
-        addl    $257, out_r            /* out += 257 */
-        movl    out_r, avail_out_strm(strm_r)
-
-#undef end_r
-#undef strm_r
-#undef state_r
-
-.L_done:
-        addl    $local_var_size, %esp
-        popf
-        popl    %ebx
-        popl    %ebp
-        popl    %esi
-        popl    %edi
-        ret
-
-#if defined( GAS_ELF )
-/* elf info */
-.type inflate_fast,@function
-.size inflate_fast,.-inflate_fast
-#endif
diff --git a/libs/zlib/contrib/iostream3/zfstream.h b/libs/zlib/contrib/iostream3/zfstream.h
index 8574479ae..3dabc0f97 100644
--- a/libs/zlib/contrib/iostream3/zfstream.h
+++ b/libs/zlib/contrib/iostream3/zfstream.h
@@ -413,7 +413,7 @@ template<typename T1, typename T2>
   class gzomanip2
   {
   public:
-    // Allows insertor to peek at internals
+    // Allows inserter to peek at internals
     template <typename Ta, typename Tb>
       friend gzofstream&
       operator<<(gzofstream&,
@@ -452,7 +452,7 @@ template<typename T1, typename T2>
   : func(f), val1(v1), val2(v2)
   { }
 
-// Insertor applies underlying manipulator function to stream
+// Inserter applies underlying manipulator function to stream
 template<typename T1, typename T2>
   inline gzofstream&
   operator<<(gzofstream& s, const gzomanip2<T1,T2>& m)
diff --git a/libs/zlib/contrib/masmx64/bld_ml64.bat b/libs/zlib/contrib/masmx64/bld_ml64.bat
deleted file mode 100644
index 8f9343d0a..000000000
--- a/libs/zlib/contrib/masmx64/bld_ml64.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-ml64.exe /Flinffasx64 /c /Zi inffasx64.asm
-ml64.exe /Flgvmat64   /c /Zi gvmat64.asm
diff --git a/libs/zlib/contrib/masmx64/gvmat64.asm b/libs/zlib/contrib/masmx64/gvmat64.asm
deleted file mode 100644
index c1817f1be..000000000
--- a/libs/zlib/contrib/masmx64/gvmat64.asm
+++ /dev/null
@@ -1,553 +0,0 @@
-;uInt longest_match_x64(
-;    deflate_state *s,
-;    IPos cur_match);                             /* current match */
-
-; gvmat64.asm -- Asm portion of the optimized longest_match for 32 bits x86_64
-;  (AMD64 on Athlon 64, Opteron, Phenom
-;     and Intel EM64T on Pentium 4 with EM64T, Pentium D, Core 2 Duo, Core I5/I7)
-; Copyright (C) 1995-2010 Jean-loup Gailly, Brian Raiter and Gilles Vollant.
-;
-; File written by Gilles Vollant, by converting to assembly the longest_match
-;  from Jean-loup Gailly in deflate.c of zLib and infoZip zip.
-;
-;  and by taking inspiration on asm686 with masm, optimised assembly code
-;        from Brian Raiter, written 1998
-;
-;  This software is provided 'as-is', without any express or implied
-;  warranty.  In no event will the authors be held liable for any damages
-;  arising from the use of this software.
-;
-;  Permission is granted to anyone to use this software for any purpose,
-;  including commercial applications, and to alter it and redistribute it
-;  freely, subject to the following restrictions:
-;
-;  1. The origin of this software must not be misrepresented; you must not
-;     claim that you wrote the original software. If you use this software
-;     in a product, an acknowledgment in the product documentation would be
-;     appreciated but is not required.
-;  2. Altered source versions must be plainly marked as such, and must not be
-;     misrepresented as being the original software
-;  3. This notice may not be removed or altered from any source distribution.
-;
-;
-;
-;         http://www.zlib.net
-;         http://www.winimage.com/zLibDll
-;         http://www.muppetlabs.com/~breadbox/software/assembly.html
-;
-; to compile this file for infozip Zip, I use option:
-;   ml64.exe /Flgvmat64 /c /Zi /DINFOZIP gvmat64.asm
-;
-; to compile this file for zLib, I use option:
-;   ml64.exe /Flgvmat64 /c /Zi gvmat64.asm
-; Be carrefull to adapt zlib1222add below to your version of zLib
-;   (if you use a version of zLib before 1.0.4 or after 1.2.2.2, change
-;    value of zlib1222add later)
-;
-; This file compile with Microsoft Macro Assembler (x64) for AMD64
-;
-;   ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK
-;
-;   (you can get Windows WDK with ml64 for AMD64 from
-;      http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price)
-;
-
-
-;uInt longest_match(s, cur_match)
-;    deflate_state *s;
-;    IPos cur_match;                             /* current match */
-.code
-longest_match PROC
-
-
-;LocalVarsSize   equ 88
- LocalVarsSize   equ 72
-
-; register used : rax,rbx,rcx,rdx,rsi,rdi,r8,r9,r10,r11,r12
-; free register :  r14,r15
-; register can be saved : rsp
-
- chainlenwmask   equ  rsp + 8 - LocalVarsSize    ; high word: current chain len
-                                                 ; low word: s->wmask
-;window          equ  rsp + xx - LocalVarsSize   ; local copy of s->window ; stored in r10
-;windowbestlen   equ  rsp + xx - LocalVarsSize   ; s->window + bestlen , use r10+r11
-;scanstart       equ  rsp + xx - LocalVarsSize   ; first two bytes of string ; stored in r12w
-;scanend         equ  rsp + xx - LocalVarsSize   ; last two bytes of string use ebx
-;scanalign       equ  rsp + xx - LocalVarsSize   ; dword-misalignment of string r13
-;bestlen         equ  rsp + xx - LocalVarsSize   ; size of best match so far -> r11d
-;scan            equ  rsp + xx - LocalVarsSize   ; ptr to string wanting match -> r9
-IFDEF INFOZIP
-ELSE
- nicematch       equ  (rsp + 16 - LocalVarsSize) ; a good enough match size
-ENDIF
-
-save_rdi        equ  rsp + 24 - LocalVarsSize
-save_rsi        equ  rsp + 32 - LocalVarsSize
-save_rbx        equ  rsp + 40 - LocalVarsSize
-save_rbp        equ  rsp + 48 - LocalVarsSize
-save_r12        equ  rsp + 56 - LocalVarsSize
-save_r13        equ  rsp + 64 - LocalVarsSize
-;save_r14        equ  rsp + 72 - LocalVarsSize
-;save_r15        equ  rsp + 80 - LocalVarsSize
-
-
-; summary of register usage
-; scanend     ebx
-; scanendw    bx
-; chainlenwmask   edx
-; curmatch    rsi
-; curmatchd   esi
-; windowbestlen   r8
-; scanalign   r9
-; scanalignd  r9d
-; window      r10
-; bestlen     r11
-; bestlend    r11d
-; scanstart   r12d
-; scanstartw  r12w
-; scan        r13
-; nicematch   r14d
-; limit       r15
-; limitd      r15d
-; prev        rcx
-
-;  all the +4 offsets are due to the addition of pending_buf_size (in zlib
-;  in the deflate_state structure since the asm code was first written
-;  (if you compile with zlib 1.0.4 or older, remove the +4).
-;  Note : these value are good with a 8 bytes boundary pack structure
-
-
-    MAX_MATCH           equ     258
-    MIN_MATCH           equ     3
-    MIN_LOOKAHEAD       equ     (MAX_MATCH+MIN_MATCH+1)
-
-
-;;; Offsets for fields in the deflate_state structure. These numbers
-;;; are calculated from the definition of deflate_state, with the
-;;; assumption that the compiler will dword-align the fields. (Thus,
-;;; changing the definition of deflate_state could easily cause this
-;;; program to crash horribly, without so much as a warning at
-;;; compile time. Sigh.)
-
-;  all the +zlib1222add offsets are due to the addition of fields
-;  in zlib in the deflate_state structure since the asm code was first written
-;  (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)").
-;  (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0").
-;  if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8").
-
-
-IFDEF INFOZIP
-
-_DATA   SEGMENT
-COMM    window_size:DWORD
-; WMask ; 7fff
-COMM    window:BYTE:010040H
-COMM    prev:WORD:08000H
-; MatchLen : unused
-; PrevMatch : unused
-COMM    strstart:DWORD
-COMM    match_start:DWORD
-; Lookahead : ignore
-COMM    prev_length:DWORD ; PrevLen
-COMM    max_chain_length:DWORD
-COMM    good_match:DWORD
-COMM    nice_match:DWORD
-prev_ad equ OFFSET prev
-window_ad equ OFFSET window
-nicematch equ nice_match
-_DATA ENDS
-WMask equ 07fffh
-
-ELSE
-
-  IFNDEF zlib1222add
-    zlib1222add equ 8
-  ENDIF
-dsWSize         equ 56+zlib1222add+(zlib1222add/2)
-dsWMask         equ 64+zlib1222add+(zlib1222add/2)
-dsWindow        equ 72+zlib1222add
-dsPrev          equ 88+zlib1222add
-dsMatchLen      equ 128+zlib1222add
-dsPrevMatch     equ 132+zlib1222add
-dsStrStart      equ 140+zlib1222add
-dsMatchStart    equ 144+zlib1222add
-dsLookahead     equ 148+zlib1222add
-dsPrevLen       equ 152+zlib1222add
-dsMaxChainLen   equ 156+zlib1222add
-dsGoodMatch     equ 172+zlib1222add
-dsNiceMatch     equ 176+zlib1222add
-
-window_size     equ [ rcx + dsWSize]
-WMask           equ [ rcx + dsWMask]
-window_ad       equ [ rcx + dsWindow]
-prev_ad         equ [ rcx + dsPrev]
-strstart        equ [ rcx + dsStrStart]
-match_start     equ [ rcx + dsMatchStart]
-Lookahead       equ [ rcx + dsLookahead] ; 0ffffffffh on infozip
-prev_length     equ [ rcx + dsPrevLen]
-max_chain_length equ [ rcx + dsMaxChainLen]
-good_match      equ [ rcx + dsGoodMatch]
-nice_match      equ [ rcx + dsNiceMatch]
-ENDIF
-
-; parameter 1 in r8(deflate state s), param 2 in rdx (cur match)
-
-; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and
-; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp
-;
-; All registers must be preserved across the call, except for
-;   rax, rcx, rdx, r8, r9, r10, and r11, which are scratch.
-
-
-
-;;; Save registers that the compiler may be using, and adjust esp to
-;;; make room for our stack frame.
-
-
-;;; Retrieve the function arguments. r8d will hold cur_match
-;;; throughout the entire function. edx will hold the pointer to the
-;;; deflate_state structure during the function's setup (before
-;;; entering the main loop.
-
-; parameter 1 in rcx (deflate_state* s), param 2 in edx -> r8 (cur match)
-
-; this clear high 32 bits of r8, which can be garbage in both r8 and rdx
-
-        mov [save_rdi],rdi
-        mov [save_rsi],rsi
-        mov [save_rbx],rbx
-        mov [save_rbp],rbp
-IFDEF INFOZIP
-        mov r8d,ecx
-ELSE
-        mov r8d,edx
-ENDIF
-        mov [save_r12],r12
-        mov [save_r13],r13
-;        mov [save_r14],r14
-;        mov [save_r15],r15
-
-
-;;; uInt wmask = s->w_mask;
-;;; unsigned chain_length = s->max_chain_length;
-;;; if (s->prev_length >= s->good_match) {
-;;;     chain_length >>= 2;
-;;; }
-
-        mov edi, prev_length
-        mov esi, good_match
-        mov eax, WMask
-        mov ebx, max_chain_length
-        cmp edi, esi
-        jl  LastMatchGood
-        shr ebx, 2
-LastMatchGood:
-
-;;; chainlen is decremented once beforehand so that the function can
-;;; use the sign flag instead of the zero flag for the exit test.
-;;; It is then shifted into the high word, to make room for the wmask
-;;; value, which it will always accompany.
-
-        dec ebx
-        shl ebx, 16
-        or  ebx, eax
-
-;;; on zlib only
-;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
-
-IFDEF INFOZIP
-        mov [chainlenwmask], ebx
-; on infozip nice_match = [nice_match]
-ELSE
-        mov eax, nice_match
-        mov [chainlenwmask], ebx
-        mov r10d, Lookahead
-        cmp r10d, eax
-        cmovnl r10d, eax
-        mov [nicematch],r10d
-ENDIF
-
-;;; register Bytef *scan = s->window + s->strstart;
-        mov r10, window_ad
-        mov ebp, strstart
-        lea r13, [r10 + rbp]
-
-;;; Determine how many bytes the scan ptr is off from being
-;;; dword-aligned.
-
-         mov r9,r13
-         neg r13
-         and r13,3
-
-;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
-;;;     s->strstart - (IPos)MAX_DIST(s) : NIL;
-IFDEF INFOZIP
-        mov eax,07efah ; MAX_DIST = (WSIZE-MIN_LOOKAHEAD) (0x8000-(3+8+1))
-ELSE
-        mov eax, window_size
-        sub eax, MIN_LOOKAHEAD
-ENDIF
-        xor edi,edi
-        sub ebp, eax
-
-        mov r11d, prev_length
-
-        cmovng ebp,edi
-
-;;; int best_len = s->prev_length;
-
-
-;;; Store the sum of s->window + best_len in esi locally, and in esi.
-
-       lea  rsi,[r10+r11]
-
-;;; register ush scan_start = *(ushf*)scan;
-;;; register ush scan_end   = *(ushf*)(scan+best_len-1);
-;;; Posf *prev = s->prev;
-
-        movzx r12d,word ptr [r9]
-        movzx ebx, word ptr [r9 + r11 - 1]
-
-        mov rdi, prev_ad
-
-;;; Jump into the main loop.
-
-        mov edx, [chainlenwmask]
-
-        cmp bx,word ptr [rsi + r8 - 1]
-        jz  LookupLoopIsZero
-
-LookupLoop1:
-        and r8d, edx
-
-        movzx   r8d, word ptr [rdi + r8*2]
-        cmp r8d, ebp
-        jbe LeaveNow
-        sub edx, 00010000h
-        js  LeaveNow
-
-LoopEntry1:
-        cmp bx,word ptr [rsi + r8 - 1]
-        jz  LookupLoopIsZero
-
-LookupLoop2:
-        and r8d, edx
-
-        movzx   r8d, word ptr [rdi + r8*2]
-        cmp r8d, ebp
-        jbe LeaveNow
-        sub edx, 00010000h
-        js  LeaveNow
-
-LoopEntry2:
-        cmp bx,word ptr [rsi + r8 - 1]
-        jz  LookupLoopIsZero
-
-LookupLoop4:
-        and r8d, edx
-
-        movzx   r8d, word ptr [rdi + r8*2]
-        cmp r8d, ebp
-        jbe LeaveNow
-        sub edx, 00010000h
-        js  LeaveNow
-
-LoopEntry4:
-
-        cmp bx,word ptr [rsi + r8 - 1]
-        jnz LookupLoop1
-        jmp LookupLoopIsZero
-
-
-;;; do {
-;;;     match = s->window + cur_match;
-;;;     if (*(ushf*)(match+best_len-1) != scan_end ||
-;;;         *(ushf*)match != scan_start) continue;
-;;;     [...]
-;;; } while ((cur_match = prev[cur_match & wmask]) > limit
-;;;          && --chain_length != 0);
-;;;
-;;; Here is the inner loop of the function. The function will spend the
-;;; majority of its time in this loop, and majority of that time will
-;;; be spent in the first ten instructions.
-;;;
-;;; Within this loop:
-;;; ebx = scanend
-;;; r8d = curmatch
-;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
-;;; esi = windowbestlen - i.e., (window + bestlen)
-;;; edi = prev
-;;; ebp = limit
-
-LookupLoop:
-        and r8d, edx
-
-        movzx   r8d, word ptr [rdi + r8*2]
-        cmp r8d, ebp
-        jbe LeaveNow
-        sub edx, 00010000h
-        js  LeaveNow
-
-LoopEntry:
-
-        cmp bx,word ptr [rsi + r8 - 1]
-        jnz LookupLoop1
-LookupLoopIsZero:
-        cmp     r12w, word ptr [r10 + r8]
-        jnz LookupLoop1
-
-
-;;; Store the current value of chainlen.
-        mov [chainlenwmask], edx
-
-;;; Point edi to the string under scrutiny, and esi to the string we
-;;; are hoping to match it up with. In actuality, esi and edi are
-;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is
-;;; initialized to -(MAX_MATCH_8 - scanalign).
-
-        lea rsi,[r8+r10]
-        mov rdx, 0fffffffffffffef8h; -(MAX_MATCH_8)
-        lea rsi, [rsi + r13 + 0108h] ;MAX_MATCH_8]
-        lea rdi, [r9 + r13 + 0108h] ;MAX_MATCH_8]
-
-        prefetcht1 [rsi+rdx]
-        prefetcht1 [rdi+rdx]
-
-
-;;; Test the strings for equality, 8 bytes at a time. At the end,
-;;; adjust rdx so that it is offset to the exact byte that mismatched.
-;;;
-;;; We already know at this point that the first three bytes of the
-;;; strings match each other, and they can be safely passed over before
-;;; starting the compare loop. So what this code does is skip over 0-3
-;;; bytes, as much as necessary in order to dword-align the edi
-;;; pointer. (rsi will still be misaligned three times out of four.)
-;;;
-;;; It should be confessed that this loop usually does not represent
-;;; much of the total running time. Replacing it with a more
-;;; straightforward "rep cmpsb" would not drastically degrade
-;;; performance.
-
-
-LoopCmps:
-        mov rax, [rsi + rdx]
-        xor rax, [rdi + rdx]
-        jnz LeaveLoopCmps
-
-        mov rax, [rsi + rdx + 8]
-        xor rax, [rdi + rdx + 8]
-        jnz LeaveLoopCmps8
-
-
-        mov rax, [rsi + rdx + 8+8]
-        xor rax, [rdi + rdx + 8+8]
-        jnz LeaveLoopCmps16
-
-        add rdx,8+8+8
-
-        jnz short LoopCmps
-        jmp short LenMaximum
-LeaveLoopCmps16: add rdx,8
-LeaveLoopCmps8: add rdx,8
-LeaveLoopCmps:
-
-        test    eax, 0000FFFFh
-        jnz LenLower
-
-        test eax,0ffffffffh
-
-        jnz LenLower32
-
-        add rdx,4
-        shr rax,32
-        or ax,ax
-        jnz LenLower
-
-LenLower32:
-        shr eax,16
-        add rdx,2
-LenLower:   sub al, 1
-        adc rdx, 0
-;;; Calculate the length of the match. If it is longer than MAX_MATCH,
-;;; then automatically accept it as the best possible match and leave.
-
-        lea rax, [rdi + rdx]
-        sub rax, r9
-        cmp eax, MAX_MATCH
-        jge LenMaximum
-
-;;; If the length of the match is not longer than the best match we
-;;; have so far, then forget it and return to the lookup loop.
-;///////////////////////////////////
-
-        cmp eax, r11d
-        jg  LongerMatch
-
-        lea rsi,[r10+r11]
-
-        mov rdi, prev_ad
-        mov edx, [chainlenwmask]
-        jmp LookupLoop
-
-;;;         s->match_start = cur_match;
-;;;         best_len = len;
-;;;         if (len >= nice_match) break;
-;;;         scan_end = *(ushf*)(scan+best_len-1);
-
-LongerMatch:
-        mov r11d, eax
-        mov match_start, r8d
-        cmp eax, [nicematch]
-        jge LeaveNow
-
-        lea rsi,[r10+rax]
-
-        movzx   ebx, word ptr [r9 + rax - 1]
-        mov rdi, prev_ad
-        mov edx, [chainlenwmask]
-        jmp LookupLoop
-
-;;; Accept the current string, with the maximum possible length.
-
-LenMaximum:
-        mov r11d,MAX_MATCH
-        mov match_start, r8d
-
-;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
-;;; return s->lookahead;
-
-LeaveNow:
-IFDEF INFOZIP
-        mov eax,r11d
-ELSE
-        mov eax, Lookahead
-        cmp r11d, eax
-        cmovng eax, r11d
-ENDIF
-
-;;; Restore the stack and return from whence we came.
-
-
-        mov rsi,[save_rsi]
-        mov rdi,[save_rdi]
-        mov rbx,[save_rbx]
-        mov rbp,[save_rbp]
-        mov r12,[save_r12]
-        mov r13,[save_r13]
-;        mov r14,[save_r14]
-;        mov r15,[save_r15]
-
-
-        ret 0
-; please don't remove this string !
-; Your can freely use gvmat64 in any free or commercial app
-; but it is far better don't remove the string in the binary!
-    db     0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998, converted to amd 64 by Gilles Vollant 2005",0dh,0ah,0
-longest_match   ENDP
-
-match_init PROC
-  ret 0
-match_init ENDP
-
-
-END
diff --git a/libs/zlib/contrib/masmx64/inffas8664.c b/libs/zlib/contrib/masmx64/inffas8664.c
deleted file mode 100644
index aa861a333..000000000
--- a/libs/zlib/contrib/masmx64/inffas8664.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/* inffas8664.c is a hand tuned assembler version of inffast.c - fast decoding
- * version for AMD64 on Windows using Microsoft C compiler
- *
- * Copyright (C) 1995-2003 Mark Adler
- * For conditions of distribution and use, see copyright notice in zlib.h
- *
- * Copyright (C) 2003 Chris Anderson <christop@charm.net>
- * Please use the copyright conditions above.
- *
- * 2005 - Adaptation to Microsoft C Compiler for AMD64 by Gilles Vollant
- *
- * inffas8664.c call function inffas8664fnc in inffasx64.asm
- *  inffasx64.asm is automatically convert from AMD64 portion of inffas86.c
- *
- * Dec-29-2003 -- I added AMD64 inflate asm support.  This version is also
- * slightly quicker on x86 systems because, instead of using rep movsb to copy
- * data, it uses rep movsw, which moves data in 2-byte chunks instead of single
- * bytes.  I've tested the AMD64 code on a Fedora Core 1 + the x86_64 updates
- * from http://fedora.linux.duke.edu/fc1_x86_64
- * which is running on an Athlon 64 3000+ / Gigabyte GA-K8VT800M system with
- * 1GB ram.  The 64-bit version is about 4% faster than the 32-bit version,
- * when decompressing mozilla-source-1.3.tar.gz.
- *
- * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
- * the gcc -S output of zlib-1.2.0/inffast.c.  Zlib-1.2.0 is in beta release at
- * the moment.  I have successfully compiled and tested this code with gcc2.96,
- * gcc3.2, icc5.0, msvc6.0.  It is very close to the speed of inffast.S
- * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
- * enabled.  I will attempt to merge the MMX code into this version.  Newer
- * versions of this and inffast.S can be found at
- * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
- *
- */
-
-#include <stdio.h>
-#include "zutil.h"
-#include "inftrees.h"
-#include "inflate.h"
-#include "inffast.h"
-
-/* Mark Adler's comments from inffast.c: */
-
-/*
-   Decode literal, length, and distance codes and write out the resulting
-   literal and match bytes until either not enough input or output is
-   available, an end-of-block is encountered, or a data error is encountered.
-   When large enough input and output buffers are supplied to inflate(), for
-   example, a 16K input buffer and a 64K output buffer, more than 95% of the
-   inflate execution time is spent in this routine.
-
-   Entry assumptions:
-
-        state->mode == LEN
-        strm->avail_in >= 6
-        strm->avail_out >= 258
-        start >= strm->avail_out
-        state->bits < 8
-
-   On return, state->mode is one of:
-
-        LEN -- ran out of enough output space or enough available input
-        TYPE -- reached end of block code, inflate() to interpret next block
-        BAD -- error in block data
-
-   Notes:
-
-    - The maximum input bits used by a length/distance pair is 15 bits for the
-      length code, 5 bits for the length extra, 15 bits for the distance code,
-      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
-      Therefore if strm->avail_in >= 6, then there is enough input to avoid
-      checking for available input while decoding.
-
-    - The maximum bytes that a single length/distance pair can output is 258
-      bytes, which is the maximum length that can be coded.  inflate_fast()
-      requires strm->avail_out >= 258 for each loop to avoid checking for
-      output space.
- */
-
-
-
-    typedef struct inffast_ar {
-/* 64   32                               x86  x86_64 */
-/* ar offset                              register */
-/*  0    0 */ void *esp;                /* esp save */
-/*  8    4 */ void *ebp;                /* ebp save */
-/* 16    8 */ unsigned char FAR *in;    /* esi rsi  local strm->next_in */
-/* 24   12 */ unsigned char FAR *last;  /*     r9   while in < last */
-/* 32   16 */ unsigned char FAR *out;   /* edi rdi  local strm->next_out */
-/* 40   20 */ unsigned char FAR *beg;   /*          inflate()'s init next_out */
-/* 48   24 */ unsigned char FAR *end;   /*     r10  while out < end */
-/* 56   28 */ unsigned char FAR *window;/*          size of window, wsize!=0 */
-/* 64   32 */ code const FAR *lcode;    /* ebp rbp  local strm->lencode */
-/* 72   36 */ code const FAR *dcode;    /*     r11  local strm->distcode */
-/* 80   40 */ size_t /*unsigned long */hold;       /* edx rdx  local strm->hold */
-/* 88   44 */ unsigned bits;            /* ebx rbx  local strm->bits */
-/* 92   48 */ unsigned wsize;           /*          window size */
-/* 96   52 */ unsigned write;           /*          window write index */
-/*100   56 */ unsigned lmask;           /*     r12  mask for lcode */
-/*104   60 */ unsigned dmask;           /*     r13  mask for dcode */
-/*108   64 */ unsigned len;             /*     r14  match length */
-/*112   68 */ unsigned dist;            /*     r15  match distance */
-/*116   72 */ unsigned status;          /*          set when state chng*/
-    } type_ar;
-#ifdef ASMINF
-
-void inflate_fast(strm, start)
-z_streamp strm;
-unsigned start;         /* inflate()'s starting value for strm->avail_out */
-{
-    struct inflate_state FAR *state;
-    type_ar ar;
-    void inffas8664fnc(struct inffast_ar * par);
-
-
-
-#if (defined( __GNUC__ ) && defined( __amd64__ ) && ! defined( __i386 )) || (defined(_MSC_VER) && defined(_M_AMD64))
-#define PAD_AVAIL_IN 6
-#define PAD_AVAIL_OUT 258
-#else
-#define PAD_AVAIL_IN 5
-#define PAD_AVAIL_OUT 257
-#endif
-
-    /* copy state to local variables */
-    state = (struct inflate_state FAR *)strm->state;
-
-    ar.in = strm->next_in;
-    ar.last = ar.in + (strm->avail_in - PAD_AVAIL_IN);
-    ar.out = strm->next_out;
-    ar.beg = ar.out - (start - strm->avail_out);
-    ar.end = ar.out + (strm->avail_out - PAD_AVAIL_OUT);
-    ar.wsize = state->wsize;
-    ar.write = state->wnext;
-    ar.window = state->window;
-    ar.hold = state->hold;
-    ar.bits = state->bits;
-    ar.lcode = state->lencode;
-    ar.dcode = state->distcode;
-    ar.lmask = (1U << state->lenbits) - 1;
-    ar.dmask = (1U << state->distbits) - 1;
-
-    /* decode literals and length/distances until end-of-block or not enough
-       input data or output space */
-
-    /* align in on 1/2 hold size boundary */
-    while (((size_t)(void *)ar.in & (sizeof(ar.hold) / 2 - 1)) != 0) {
-        ar.hold += (unsigned long)*ar.in++ << ar.bits;
-        ar.bits += 8;
-    }
-
-    inffas8664fnc(&ar);
-
-    if (ar.status > 1) {
-        if (ar.status == 2)
-            strm->msg = "invalid literal/length code";
-        else if (ar.status == 3)
-            strm->msg = "invalid distance code";
-        else
-            strm->msg = "invalid distance too far back";
-        state->mode = BAD;
-    }
-    else if ( ar.status == 1 ) {
-        state->mode = TYPE;
-    }
-
-    /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
-    ar.len = ar.bits >> 3;
-    ar.in -= ar.len;
-    ar.bits -= ar.len << 3;
-    ar.hold &= (1U << ar.bits) - 1;
-
-    /* update state and return */
-    strm->next_in = ar.in;
-    strm->next_out = ar.out;
-    strm->avail_in = (unsigned)(ar.in < ar.last ?
-                                PAD_AVAIL_IN + (ar.last - ar.in) :
-                                PAD_AVAIL_IN - (ar.in - ar.last));
-    strm->avail_out = (unsigned)(ar.out < ar.end ?
-                                 PAD_AVAIL_OUT + (ar.end - ar.out) :
-                                 PAD_AVAIL_OUT - (ar.out - ar.end));
-    state->hold = (unsigned long)ar.hold;
-    state->bits = ar.bits;
-    return;
-}
-
-#endif
diff --git a/libs/zlib/contrib/masmx64/inffasx64.asm b/libs/zlib/contrib/masmx64/inffasx64.asm
deleted file mode 100644
index 41ec82392..000000000
--- a/libs/zlib/contrib/masmx64/inffasx64.asm
+++ /dev/null
@@ -1,396 +0,0 @@
-; inffasx64.asm is a hand tuned assembler version of inffast.c - fast decoding
-; version for AMD64 on Windows using Microsoft C compiler
-;
-; inffasx64.asm is automatically convert from AMD64 portion of inffas86.c
-; inffasx64.asm is called by inffas8664.c, which contain more info.
-
-
-; to compile this file, I use option
-;   ml64.exe /Flinffasx64 /c /Zi inffasx64.asm
-;   with Microsoft Macro Assembler (x64) for AMD64
-;
-
-; This file compile with Microsoft Macro Assembler (x64) for AMD64
-;
-;   ml64.exe is given with Visual Studio 2005/2008/2010 and Windows WDK
-;
-;   (you can get Windows WDK with ml64 for AMD64 from
-;      http://www.microsoft.com/whdc/Devtools/wdk/default.mspx for low price)
-;
-
-
-.code
-inffas8664fnc PROC
-
-; see http://weblogs.asp.net/oldnewthing/archive/2004/01/14/58579.aspx and
-; http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/64bitAMD_8e951dd2-ee77-4728-8702-55ce4b5dd24a.xml.asp
-;
-; All registers must be preserved across the call, except for
-;   rax, rcx, rdx, r8, r-9, r10, and r11, which are scratch.
-
-
-	mov [rsp-8],rsi
-	mov [rsp-16],rdi
-	mov [rsp-24],r12
-	mov [rsp-32],r13
-	mov [rsp-40],r14
-	mov [rsp-48],r15
-	mov [rsp-56],rbx
-
-	mov rax,rcx
-
-	mov	[rax+8], rbp       ; /* save regs rbp and rsp */
-	mov	[rax], rsp
-
-	mov	rsp, rax          ; /* make rsp point to &ar */
-
-	mov	rsi, [rsp+16]      ; /* rsi  = in */
-	mov	rdi, [rsp+32]      ; /* rdi  = out */
-	mov	r9, [rsp+24]       ; /* r9   = last */
-	mov	r10, [rsp+48]      ; /* r10  = end */
-	mov	rbp, [rsp+64]      ; /* rbp  = lcode */
-	mov	r11, [rsp+72]      ; /* r11  = dcode */
-	mov	rdx, [rsp+80]      ; /* rdx  = hold */
-	mov	ebx, [rsp+88]      ; /* ebx  = bits */
-	mov	r12d, [rsp+100]    ; /* r12d = lmask */
-	mov	r13d, [rsp+104]    ; /* r13d = dmask */
-                                          ; /* r14d = len */
-                                          ; /* r15d = dist */
-
-
-	cld
-	cmp	r10, rdi
-	je	L_one_time           ; /* if only one decode left */
-	cmp	r9, rsi
-
-    jne L_do_loop
-
-
-L_one_time:
-	mov	r8, r12           ; /* r8 = lmask */
-	cmp	bl, 32
-	ja	L_get_length_code_one_time
-
-	lodsd                         ; /* eax = *(uint *)in++ */
-	mov	cl, bl            ; /* cl = bits, needs it for shifting */
-	add	bl, 32             ; /* bits += 32 */
-	shl	rax, cl
-	or	rdx, rax          ; /* hold |= *((uint *)in)++ << bits */
-	jmp	L_get_length_code_one_time
-
-ALIGN 4
-L_while_test:
-	cmp	r10, rdi
-	jbe	L_break_loop
-	cmp	r9, rsi
-	jbe	L_break_loop
-
-L_do_loop:
-	mov	r8, r12           ; /* r8 = lmask */
-	cmp	bl, 32
-	ja	L_get_length_code    ; /* if (32 < bits) */
-
-	lodsd                         ; /* eax = *(uint *)in++ */
-	mov	cl, bl            ; /* cl = bits, needs it for shifting */
-	add	bl, 32             ; /* bits += 32 */
-	shl	rax, cl
-	or	rdx, rax          ; /* hold |= *((uint *)in)++ << bits */
-
-L_get_length_code:
-	and	r8, rdx            ; /* r8 &= hold */
-	mov	eax, [rbp+r8*4]  ; /* eax = lcode[hold & lmask] */
-
-	mov	cl, ah            ; /* cl = this.bits */
-	sub	bl, ah            ; /* bits -= this.bits */
-	shr	rdx, cl           ; /* hold >>= this.bits */
-
-	test	al, al
-	jnz	L_test_for_length_base ; /* if (op != 0) 45.7% */
-
-	mov	r8, r12            ; /* r8 = lmask */
-	shr	eax, 16            ; /* output this.val char */
-	stosb
-
-L_get_length_code_one_time:
-	and	r8, rdx            ; /* r8 &= hold */
-	mov	eax, [rbp+r8*4] ; /* eax = lcode[hold & lmask] */
-
-L_dolen:
-	mov	cl, ah            ; /* cl = this.bits */
-	sub	bl, ah            ; /* bits -= this.bits */
-	shr	rdx, cl           ; /* hold >>= this.bits */
-
-	test	al, al
-	jnz	L_test_for_length_base ; /* if (op != 0) 45.7% */
-
-	shr	eax, 16            ; /* output this.val char */
-	stosb
-	jmp	L_while_test
-
-ALIGN 4
-L_test_for_length_base:
-	mov	r14d, eax         ; /* len = this */
-	shr	r14d, 16           ; /* len = this.val */
-	mov	cl, al
-
-	test	al, 16
-	jz	L_test_for_second_level_length ; /* if ((op & 16) == 0) 8% */
-	and	cl, 15             ; /* op &= 15 */
-	jz	L_decode_distance    ; /* if (!op) */
-
-L_add_bits_to_len:
-	sub	bl, cl
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx          ; /* eax &= hold */
-	shr	rdx, cl
-	add	r14d, eax         ; /* len += hold & mask[op] */
-
-L_decode_distance:
-	mov	r8, r13           ; /* r8 = dmask */
-	cmp	bl, 32
-	ja	L_get_distance_code  ; /* if (32 < bits) */
-
-	lodsd                         ; /* eax = *(uint *)in++ */
-	mov	cl, bl            ; /* cl = bits, needs it for shifting */
-	add	bl, 32             ; /* bits += 32 */
-	shl	rax, cl
-	or	rdx, rax          ; /* hold |= *((uint *)in)++ << bits */
-
-L_get_distance_code:
-	and	r8, rdx           ; /* r8 &= hold */
-	mov	eax, [r11+r8*4] ; /* eax = dcode[hold & dmask] */
-
-L_dodist:
-	mov	r15d, eax         ; /* dist = this */
-	shr	r15d, 16           ; /* dist = this.val */
-	mov	cl, ah
-	sub	bl, ah            ; /* bits -= this.bits */
-	shr	rdx, cl           ; /* hold >>= this.bits */
-	mov	cl, al            ; /* cl = this.op */
-
-	test	al, 16             ; /* if ((op & 16) == 0) */
-	jz	L_test_for_second_level_dist
-	and	cl, 15             ; /* op &= 15 */
-	jz	L_check_dist_one
-
-L_add_bits_to_dist:
-	sub	bl, cl
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax                 ; /* (1 << op) - 1 */
-	and	eax, edx          ; /* eax &= hold */
-	shr	rdx, cl
-	add	r15d, eax         ; /* dist += hold & ((1 << op) - 1) */
-
-L_check_window:
-	mov	r8, rsi           ; /* save in so from can use it's reg */
-	mov	rax, rdi
-	sub	rax, [rsp+40]      ; /* nbytes = out - beg */
-
-	cmp	eax, r15d
-	jb	L_clip_window        ; /* if (dist > nbytes) 4.2% */
-
-	mov	ecx, r14d         ; /* ecx = len */
-	mov	rsi, rdi
-	sub	rsi, r15          ; /* from = out - dist */
-
-	sar	ecx, 1
-	jnc	L_copy_two           ; /* if len % 2 == 0 */
-
-	rep     movsw
-	mov	al, [rsi]
-	mov	[rdi], al
-	inc	rdi
-
-	mov	rsi, r8           ; /* move in back to %rsi, toss from */
-	jmp	L_while_test
-
-L_copy_two:
-	rep     movsw
-	mov	rsi, r8           ; /* move in back to %rsi, toss from */
-	jmp	L_while_test
-
-ALIGN 4
-L_check_dist_one:
-	cmp	r15d, 1            ; /* if dist 1, is a memset */
-	jne	L_check_window
-	cmp	[rsp+40], rdi      ; /* if out == beg, outside window */
-	je	L_check_window
-
-	mov	ecx, r14d         ; /* ecx = len */
-	mov	al, [rdi-1]
-	mov	ah, al
-
-	sar	ecx, 1
-	jnc	L_set_two
-	mov	[rdi], al
-	inc	rdi
-
-L_set_two:
-	rep     stosw
-	jmp	L_while_test
-
-ALIGN 4
-L_test_for_second_level_length:
-	test	al, 64
-	jnz	L_test_for_end_of_block ; /* if ((op & 64) != 0) */
-
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx         ; /* eax &= hold */
-	add	eax, r14d        ; /* eax += len */
-	mov	eax, [rbp+rax*4] ; /* eax = lcode[val+(hold&mask[op])]*/
-	jmp	L_dolen
-
-ALIGN 4
-L_test_for_second_level_dist:
-	test	al, 64
-	jnz	L_invalid_distance_code ; /* if ((op & 64) != 0) */
-
-	xor	eax, eax
-	inc	eax
-	shl	eax, cl
-	dec	eax
-	and	eax, edx         ; /* eax &= hold */
-	add	eax, r15d        ; /* eax += dist */
-	mov	eax, [r11+rax*4] ; /* eax = dcode[val+(hold&mask[op])]*/
-	jmp	L_dodist
-
-ALIGN 4
-L_clip_window:
-	mov	ecx, eax         ; /* ecx = nbytes */
-	mov	eax, [rsp+92]     ; /* eax = wsize, prepare for dist cmp */
-	neg	ecx                ; /* nbytes = -nbytes */
-
-	cmp	eax, r15d
-	jb	L_invalid_distance_too_far ; /* if (dist > wsize) */
-
-	add	ecx, r15d         ; /* nbytes = dist - nbytes */
-	cmp	dword ptr [rsp+96], 0
-	jne	L_wrap_around_window ; /* if (write != 0) */
-
-	mov	rsi, [rsp+56]     ; /* from  = window */
-	sub	eax, ecx         ; /* eax  -= nbytes */
-	add	rsi, rax         ; /* from += wsize - nbytes */
-
-	mov	eax, r14d        ; /* eax = len */
-	cmp	r14d, ecx
-	jbe	L_do_copy           ; /* if (nbytes >= len) */
-
-	sub	eax, ecx         ; /* eax -= nbytes */
-	rep     movsb
-	mov	rsi, rdi
-	sub	rsi, r15         ; /* from = &out[ -dist ] */
-	jmp	L_do_copy
-
-ALIGN 4
-L_wrap_around_window:
-	mov	eax, [rsp+96]     ; /* eax = write */
-	cmp	ecx, eax
-	jbe	L_contiguous_in_window ; /* if (write >= nbytes) */
-
-	mov	esi, [rsp+92]     ; /* from  = wsize */
-	add	rsi, [rsp+56]     ; /* from += window */
-	add	rsi, rax         ; /* from += write */
-	sub	rsi, rcx         ; /* from -= nbytes */
-	sub	ecx, eax         ; /* nbytes -= write */
-
-	mov	eax, r14d        ; /* eax = len */
-	cmp	eax, ecx
-	jbe	L_do_copy           ; /* if (nbytes >= len) */
-
-	sub	eax, ecx         ; /* len -= nbytes */
-	rep     movsb
-	mov	rsi, [rsp+56]     ; /* from = window */
-	mov	ecx, [rsp+96]     ; /* nbytes = write */
-	cmp	eax, ecx
-	jbe	L_do_copy           ; /* if (nbytes >= len) */
-
-	sub	eax, ecx         ; /* len -= nbytes */
-	rep     movsb
-	mov	rsi, rdi
-	sub	rsi, r15         ; /* from = out - dist */
-	jmp	L_do_copy
-
-ALIGN 4
-L_contiguous_in_window:
-	mov	rsi, [rsp+56]     ; /* rsi = window */
-	add	rsi, rax
-	sub	rsi, rcx         ; /* from += write - nbytes */
-
-	mov	eax, r14d        ; /* eax = len */
-	cmp	eax, ecx
-	jbe	L_do_copy           ; /* if (nbytes >= len) */
-
-	sub	eax, ecx         ; /* len -= nbytes */
-	rep     movsb
-	mov	rsi, rdi
-	sub	rsi, r15         ; /* from = out - dist */
-	jmp	L_do_copy           ; /* if (nbytes >= len) */
-
-ALIGN 4
-L_do_copy:
-	mov	ecx, eax         ; /* ecx = len */
-	rep     movsb
-
-	mov	rsi, r8          ; /* move in back to %esi, toss from */
-	jmp	L_while_test
-
-L_test_for_end_of_block:
-	test	al, 32
-	jz	L_invalid_literal_length_code
-	mov	dword ptr [rsp+116], 1
-	jmp	L_break_loop_with_status
-
-L_invalid_literal_length_code:
-	mov	dword ptr [rsp+116], 2
-	jmp	L_break_loop_with_status
-
-L_invalid_distance_code:
-	mov	dword ptr [rsp+116], 3
-	jmp	L_break_loop_with_status
-
-L_invalid_distance_too_far:
-	mov	dword ptr [rsp+116], 4
-	jmp	L_break_loop_with_status
-
-L_break_loop:
-	mov	dword ptr [rsp+116], 0
-
-L_break_loop_with_status:
-; /* put in, out, bits, and hold back into ar and pop esp */
-	mov	[rsp+16], rsi     ; /* in */
-	mov	[rsp+32], rdi     ; /* out */
-	mov	[rsp+88], ebx     ; /* bits */
-	mov	[rsp+80], rdx     ; /* hold */
-
-	mov	rax, [rsp]       ; /* restore rbp and rsp */
-	mov	rbp, [rsp+8]
-	mov	rsp, rax
-
-
-
-	mov rsi,[rsp-8]
-	mov rdi,[rsp-16]
-	mov r12,[rsp-24]
-	mov r13,[rsp-32]
-	mov r14,[rsp-40]
-	mov r15,[rsp-48]
-	mov rbx,[rsp-56]
-
-    ret 0
-;          :
-;          : "m" (ar)
-;          : "memory", "%rax", "%rbx", "%rcx", "%rdx", "%rsi", "%rdi",
-;            "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"
-;    );
-
-inffas8664fnc 	ENDP
-;_TEXT	ENDS
-END
diff --git a/libs/zlib/contrib/masmx64/readme.txt b/libs/zlib/contrib/masmx64/readme.txt
deleted file mode 100644
index 652571c7a..000000000
--- a/libs/zlib/contrib/masmx64/readme.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-Summary
--------
-This directory contains ASM implementations of the functions
-longest_match() and inflate_fast(), for 64 bits x86 (both AMD64 and Intel EM64t),
-for use with Microsoft Macro Assembler (x64) for AMD64 and Microsoft C++ 64 bits.
-
-gvmat64.asm is written by Gilles Vollant (2005), by using Brian Raiter 686/32 bits
-   assembly optimized version from Jean-loup Gailly original longest_match function
-
-inffasx64.asm and inffas8664.c were written by Chris Anderson, by optimizing
-   original function from Mark Adler
-
-Use instructions
-----------------
-Assemble the .asm files using MASM and put the object files into the zlib source
-directory.  You can also get object files here:
-
-     http://www.winimage.com/zLibDll/zlib124_masm_obj.zip
-
-define ASMV and ASMINF in your project. Include inffas8664.c in your source tree,
-and inffasx64.obj and gvmat64.obj as object to link.
-
-
-Build instructions
-------------------
-run bld_64.bat with Microsoft Macro Assembler (x64) for AMD64 (ml64.exe)
-
-ml64.exe is given with Visual Studio 2005, Windows 2003 server DDK
-
-You can get Windows 2003 server DDK with ml64 and cl for AMD64 from
-  http://www.microsoft.com/whdc/devtools/ddk/default.mspx for low price)
diff --git a/libs/zlib/contrib/masmx86/bld_ml32.bat b/libs/zlib/contrib/masmx86/bld_ml32.bat
deleted file mode 100644
index e1b86bf68..000000000
--- a/libs/zlib/contrib/masmx86/bld_ml32.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-ml /coff /Zi /c /Flmatch686.lst match686.asm
-ml /coff /Zi /c /Flinffas32.lst inffas32.asm
diff --git a/libs/zlib/contrib/masmx86/inffas32.asm b/libs/zlib/contrib/masmx86/inffas32.asm
deleted file mode 100644
index cb37a81e4..000000000
--- a/libs/zlib/contrib/masmx86/inffas32.asm
+++ /dev/null
@@ -1,1080 +0,0 @@
-;/* inffas32.asm is a hand tuned assembler version of inffast.c -- fast decoding
-; *
-; * inffas32.asm is derivated from inffas86.c, with translation of assembly code
-; *
-; * Copyright (C) 1995-2003 Mark Adler
-; * For conditions of distribution and use, see copyright notice in zlib.h
-; *
-; * Copyright (C) 2003 Chris Anderson <christop@charm.net>
-; * Please use the copyright conditions above.
-; *
-; * Mar-13-2003 -- Most of this is derived from inffast.S which is derived from
-; * the gcc -S output of zlib-1.2.0/inffast.c.  Zlib-1.2.0 is in beta release at
-; * the moment.  I have successfully compiled and tested this code with gcc2.96,
-; * gcc3.2, icc5.0, msvc6.0.  It is very close to the speed of inffast.S
-; * compiled with gcc -DNO_MMX, but inffast.S is still faster on the P3 with MMX
-; * enabled.  I will attempt to merge the MMX code into this version.  Newer
-; * versions of this and inffast.S can be found at
-; * http://www.eetbeetee.com/zlib/ and http://www.charm.net/~christop/zlib/
-; *
-; * 2005 : modification by Gilles Vollant
-; */
-; For Visual C++ 4.x and higher and ML 6.x and higher
-;   ml.exe is in directory \MASM611C of Win95 DDK
-;   ml.exe is also distributed in http://www.masm32.com/masmdl.htm
-;    and in VC++2003 toolkit at http://msdn.microsoft.com/visualc/vctoolkit2003/
-;
-;
-;   compile with command line option
-;   ml  /coff /Zi /c /Flinffas32.lst inffas32.asm
-
-;   if you define NO_GZIP (see inflate.h), compile with
-;   ml  /coff /Zi /c /Flinffas32.lst /DNO_GUNZIP inffas32.asm
-
-
-; zlib122sup is 0 fort zlib 1.2.2.1 and lower
-; zlib122sup is 8 fort zlib 1.2.2.2 and more (with addition of dmax and head
-;        in inflate_state in inflate.h)
-zlib1222sup      equ    8
-
-
-IFDEF GUNZIP
-  INFLATE_MODE_TYPE    equ 11
-  INFLATE_MODE_BAD     equ 26
-ELSE
-  IFNDEF NO_GUNZIP
-    INFLATE_MODE_TYPE    equ 11
-    INFLATE_MODE_BAD     equ 26
-  ELSE
-    INFLATE_MODE_TYPE    equ 3
-    INFLATE_MODE_BAD     equ 17
-  ENDIF
-ENDIF
-
-
-; 75 "inffast.S"
-;FILE "inffast.S"
-
-;;;GLOBAL _inflate_fast
-
-;;;SECTION .text
-
-
-
-	.586p
-	.mmx
-
-	name	inflate_fast_x86
-	.MODEL	FLAT
-
-_DATA			segment
-inflate_fast_use_mmx:
-	dd	1
-
-
-_TEXT			segment
-
-
-
-ALIGN 4
-	db	'Fast decoding Code from Chris Anderson'
-	db	0
-
-ALIGN 4
-invalid_literal_length_code_msg:
-	db	'invalid literal/length code'
-	db	0
-
-ALIGN 4
-invalid_distance_code_msg:
-	db	'invalid distance code'
-	db	0
-
-ALIGN 4
-invalid_distance_too_far_msg:
-	db	'invalid distance too far back'
-	db	0
-
-
-ALIGN 4
-inflate_fast_mask:
-dd	0
-dd	1
-dd	3
-dd	7
-dd	15
-dd	31
-dd	63
-dd	127
-dd	255
-dd	511
-dd	1023
-dd	2047
-dd	4095
-dd	8191
-dd	16383
-dd	32767
-dd	65535
-dd	131071
-dd	262143
-dd	524287
-dd	1048575
-dd	2097151
-dd	4194303
-dd	8388607
-dd	16777215
-dd	33554431
-dd	67108863
-dd	134217727
-dd	268435455
-dd	536870911
-dd	1073741823
-dd	2147483647
-dd	4294967295
-
-
-mode_state	 equ	0	;/* state->mode	*/
-wsize_state	 equ	(32+zlib1222sup)	;/* state->wsize */
-write_state	 equ	(36+4+zlib1222sup)	;/* state->write */
-window_state	 equ	(40+4+zlib1222sup)	;/* state->window */
-hold_state	 equ	(44+4+zlib1222sup)	;/* state->hold	*/
-bits_state	 equ	(48+4+zlib1222sup)	;/* state->bits	*/
-lencode_state	 equ	(64+4+zlib1222sup)	;/* state->lencode */
-distcode_state	 equ	(68+4+zlib1222sup)	;/* state->distcode */
-lenbits_state	 equ	(72+4+zlib1222sup)	;/* state->lenbits */
-distbits_state	 equ	(76+4+zlib1222sup)	;/* state->distbits */
-
-
-;;SECTION .text
-; 205 "inffast.S"
-;GLOBAL	inflate_fast_use_mmx
-
-;SECTION .data
-
-
-; GLOBAL inflate_fast_use_mmx:object
-;.size inflate_fast_use_mmx, 4
-; 226 "inffast.S"
-;SECTION .text
-
-ALIGN 4
-_inflate_fast proc near
-.FPO (16, 4, 0, 0, 1, 0)
-	push  edi
-	push  esi
-	push  ebp
-	push  ebx
-	pushfd
-	sub  esp,64
-	cld
-
-
-
-
-	mov  esi, [esp+88]
-	mov  edi, [esi+28]
-
-
-
-
-
-
-
-	mov  edx, [esi+4]
-	mov  eax, [esi+0]
-
-	add  edx,eax
-	sub  edx,11
-
-	mov  [esp+44],eax
-	mov  [esp+20],edx
-
-	mov  ebp, [esp+92]
-	mov  ecx, [esi+16]
-	mov  ebx, [esi+12]
-
-	sub  ebp,ecx
-	neg  ebp
-	add  ebp,ebx
-
-	sub  ecx,257
-	add  ecx,ebx
-
-	mov  [esp+60],ebx
-	mov  [esp+40],ebp
-	mov  [esp+16],ecx
-; 285 "inffast.S"
-	mov  eax, [edi+lencode_state]
-	mov  ecx, [edi+distcode_state]
-
-	mov  [esp+8],eax
-	mov  [esp+12],ecx
-
-	mov  eax,1
-	mov  ecx, [edi+lenbits_state]
-	shl  eax,cl
-	dec  eax
-	mov  [esp+0],eax
-
-	mov  eax,1
-	mov  ecx, [edi+distbits_state]
-	shl  eax,cl
-	dec  eax
-	mov  [esp+4],eax
-
-	mov  eax, [edi+wsize_state]
-	mov  ecx, [edi+write_state]
-	mov  edx, [edi+window_state]
-
-	mov  [esp+52],eax
-	mov  [esp+48],ecx
-	mov  [esp+56],edx
-
-	mov  ebp, [edi+hold_state]
-	mov  ebx, [edi+bits_state]
-; 321 "inffast.S"
-	mov  esi, [esp+44]
-	mov  ecx, [esp+20]
-	cmp  ecx,esi
-	ja   L_align_long
-
-	add  ecx,11
-	sub  ecx,esi
-	mov  eax,12
-	sub  eax,ecx
-	lea  edi, [esp+28]
-	rep movsb
-	mov  ecx,eax
-	xor  eax,eax
-	rep stosb
-	lea  esi, [esp+28]
-	mov  [esp+20],esi
-	jmp  L_is_aligned
-
-
-L_align_long:
-	test  esi,3
-	jz   L_is_aligned
-	xor  eax,eax
-	mov  al, [esi]
-	inc  esi
-	mov  ecx,ebx
-	add  ebx,8
-	shl  eax,cl
-	or  ebp,eax
-	jmp L_align_long
-
-L_is_aligned:
-	mov  edi, [esp+60]
-; 366 "inffast.S"
-L_check_mmx:
-	cmp  dword ptr [inflate_fast_use_mmx],2
-	je   L_init_mmx
-	ja   L_do_loop
-
-	push  eax
-	push  ebx
-	push  ecx
-	push  edx
-	pushfd
-	mov  eax, [esp]
-	xor  dword ptr [esp],0200000h
-
-
-
-
-	popfd
-	pushfd
-	pop  edx
-	xor  edx,eax
-	jz   L_dont_use_mmx
-	xor  eax,eax
-	cpuid
-	cmp  ebx,0756e6547h
-	jne  L_dont_use_mmx
-	cmp  ecx,06c65746eh
-	jne  L_dont_use_mmx
-	cmp  edx,049656e69h
-	jne  L_dont_use_mmx
-	mov  eax,1
-	cpuid
-	shr  eax,8
-	and  eax,15
-	cmp  eax,6
-	jne  L_dont_use_mmx
-	test  edx,0800000h
-	jnz  L_use_mmx
-	jmp  L_dont_use_mmx
-L_use_mmx:
-	mov  dword ptr [inflate_fast_use_mmx],2
-	jmp  L_check_mmx_pop
-L_dont_use_mmx:
-	mov  dword ptr [inflate_fast_use_mmx],3
-L_check_mmx_pop:
-	pop  edx
-	pop  ecx
-	pop  ebx
-	pop  eax
-	jmp  L_check_mmx
-; 426 "inffast.S"
-ALIGN 4
-L_do_loop:
-; 437 "inffast.S"
-	cmp  bl,15
-	ja   L_get_length_code
-
-	xor  eax,eax
-	lodsw
-	mov  cl,bl
-	add  bl,16
-	shl  eax,cl
-	or  ebp,eax
-
-L_get_length_code:
-	mov  edx, [esp+0]
-	mov  ecx, [esp+8]
-	and  edx,ebp
-	mov  eax, [ecx+edx*4]
-
-L_dolen:
-
-
-
-
-
-
-	mov  cl,ah
-	sub  bl,ah
-	shr  ebp,cl
-
-
-
-
-
-
-	test  al,al
-	jnz   L_test_for_length_base
-
-	shr  eax,16
-	stosb
-
-L_while_test:
-
-
-	cmp  [esp+16],edi
-	jbe  L_break_loop
-
-	cmp  [esp+20],esi
-	ja   L_do_loop
-	jmp  L_break_loop
-
-L_test_for_length_base:
-; 502 "inffast.S"
-	mov  edx,eax
-	shr  edx,16
-	mov  cl,al
-
-	test  al,16
-	jz   L_test_for_second_level_length
-	and  cl,15
-	jz   L_save_len
-	cmp  bl,cl
-	jae  L_add_bits_to_len
-
-	mov  ch,cl
-	xor  eax,eax
-	lodsw
-	mov  cl,bl
-	add  bl,16
-	shl  eax,cl
-	or  ebp,eax
-	mov  cl,ch
-
-L_add_bits_to_len:
-	mov  eax,1
-	shl  eax,cl
-	dec  eax
-	sub  bl,cl
-	and  eax,ebp
-	shr  ebp,cl
-	add  edx,eax
-
-L_save_len:
-	mov  [esp+24],edx
-
-
-L_decode_distance:
-; 549 "inffast.S"
-	cmp  bl,15
-	ja   L_get_distance_code
-
-	xor  eax,eax
-	lodsw
-	mov  cl,bl
-	add  bl,16
-	shl  eax,cl
-	or  ebp,eax
-
-L_get_distance_code:
-	mov  edx, [esp+4]
-	mov  ecx, [esp+12]
-	and  edx,ebp
-	mov  eax, [ecx+edx*4]
-
-
-L_dodist:
-	mov  edx,eax
-	shr  edx,16
-	mov  cl,ah
-	sub  bl,ah
-	shr  ebp,cl
-; 584 "inffast.S"
-	mov  cl,al
-
-	test  al,16
-	jz  L_test_for_second_level_dist
-	and  cl,15
-	jz  L_check_dist_one
-	cmp  bl,cl
-	jae  L_add_bits_to_dist
-
-	mov  ch,cl
-	xor  eax,eax
-	lodsw
-	mov  cl,bl
-	add  bl,16
-	shl  eax,cl
-	or  ebp,eax
-	mov  cl,ch
-
-L_add_bits_to_dist:
-	mov  eax,1
-	shl  eax,cl
-	dec  eax
-	sub  bl,cl
-	and  eax,ebp
-	shr  ebp,cl
-	add  edx,eax
-	jmp  L_check_window
-
-L_check_window:
-; 625 "inffast.S"
-	mov  [esp+44],esi
-	mov  eax,edi
-	sub  eax, [esp+40]
-
-	cmp  eax,edx
-	jb   L_clip_window
-
-	mov  ecx, [esp+24]
-	mov  esi,edi
-	sub  esi,edx
-
-	sub  ecx,3
-	mov  al, [esi]
-	mov  [edi],al
-	mov  al, [esi+1]
-	mov  dl, [esi+2]
-	add  esi,3
-	mov  [edi+1],al
-	mov  [edi+2],dl
-	add  edi,3
-	rep movsb
-
-	mov  esi, [esp+44]
-	jmp  L_while_test
-
-ALIGN 4
-L_check_dist_one:
-	cmp  edx,1
-	jne  L_check_window
-	cmp  [esp+40],edi
-	je  L_check_window
-
-	dec  edi
-	mov  ecx, [esp+24]
-	mov  al, [edi]
-	sub  ecx,3
-
-	mov  [edi+1],al
-	mov  [edi+2],al
-	mov  [edi+3],al
-	add  edi,4
-	rep stosb
-
-	jmp  L_while_test
-
-ALIGN 4
-L_test_for_second_level_length:
-
-
-
-
-	test  al,64
-	jnz   L_test_for_end_of_block
-
-	mov  eax,1
-	shl  eax,cl
-	dec  eax
-	and  eax,ebp
-	add  eax,edx
-	mov  edx, [esp+8]
-	mov  eax, [edx+eax*4]
-	jmp  L_dolen
-
-ALIGN 4
-L_test_for_second_level_dist:
-
-
-
-
-	test  al,64
-	jnz   L_invalid_distance_code
-
-	mov  eax,1
-	shl  eax,cl
-	dec  eax
-	and  eax,ebp
-	add  eax,edx
-	mov  edx, [esp+12]
-	mov  eax, [edx+eax*4]
-	jmp  L_dodist
-
-ALIGN 4
-L_clip_window:
-; 721 "inffast.S"
-	mov  ecx,eax
-	mov  eax, [esp+52]
-	neg  ecx
-	mov  esi, [esp+56]
-
-	cmp  eax,edx
-	jb   L_invalid_distance_too_far
-
-	add  ecx,edx
-	cmp  dword ptr [esp+48],0
-	jne  L_wrap_around_window
-
-	sub  eax,ecx
-	add  esi,eax
-; 749 "inffast.S"
-	mov  eax, [esp+24]
-	cmp  eax,ecx
-	jbe  L_do_copy1
-
-	sub  eax,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,edx
-	jmp  L_do_copy1
-
-	cmp  eax,ecx
-	jbe  L_do_copy1
-
-	sub  eax,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,edx
-	jmp  L_do_copy1
-
-L_wrap_around_window:
-; 793 "inffast.S"
-	mov  eax, [esp+48]
-	cmp  ecx,eax
-	jbe  L_contiguous_in_window
-
-	add  esi, [esp+52]
-	add  esi,eax
-	sub  esi,ecx
-	sub  ecx,eax
-
-
-	mov  eax, [esp+24]
-	cmp  eax,ecx
-	jbe  L_do_copy1
-
-	sub  eax,ecx
-	rep movsb
-	mov  esi, [esp+56]
-	mov  ecx, [esp+48]
-	cmp  eax,ecx
-	jbe  L_do_copy1
-
-	sub  eax,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,edx
-	jmp  L_do_copy1
-
-L_contiguous_in_window:
-; 836 "inffast.S"
-	add  esi,eax
-	sub  esi,ecx
-
-
-	mov  eax, [esp+24]
-	cmp  eax,ecx
-	jbe  L_do_copy1
-
-	sub  eax,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,edx
-
-L_do_copy1:
-; 862 "inffast.S"
-	mov  ecx,eax
-	rep movsb
-
-	mov  esi, [esp+44]
-	jmp  L_while_test
-; 878 "inffast.S"
-ALIGN 4
-L_init_mmx:
-	emms
-
-
-
-
-
-	movd mm0,ebp
-	mov  ebp,ebx
-; 896 "inffast.S"
-	movd mm4,dword ptr [esp+0]
-	movq mm3,mm4
-	movd mm5,dword ptr [esp+4]
-	movq mm2,mm5
-	pxor mm1,mm1
-	mov  ebx, [esp+8]
-	jmp  L_do_loop_mmx
-
-ALIGN 4
-L_do_loop_mmx:
-	psrlq mm0,mm1
-
-	cmp  ebp,32
-	ja  L_get_length_code_mmx
-
-	movd mm6,ebp
-	movd mm7,dword ptr [esi]
-	add  esi,4
-	psllq mm7,mm6
-	add  ebp,32
-	por mm0,mm7
-
-L_get_length_code_mmx:
-	pand mm4,mm0
-	movd eax,mm4
-	movq mm4,mm3
-	mov  eax, [ebx+eax*4]
-
-L_dolen_mmx:
-	movzx  ecx,ah
-	movd mm1,ecx
-	sub  ebp,ecx
-
-	test  al,al
-	jnz L_test_for_length_base_mmx
-
-	shr  eax,16
-	stosb
-
-L_while_test_mmx:
-
-
-	cmp  [esp+16],edi
-	jbe L_break_loop
-
-	cmp  [esp+20],esi
-	ja L_do_loop_mmx
-	jmp L_break_loop
-
-L_test_for_length_base_mmx:
-
-	mov  edx,eax
-	shr  edx,16
-
-	test  al,16
-	jz  L_test_for_second_level_length_mmx
-	and  eax,15
-	jz L_decode_distance_mmx
-
-	psrlq mm0,mm1
-	movd mm1,eax
-	movd ecx,mm0
-	sub  ebp,eax
-	and  ecx, [inflate_fast_mask+eax*4]
-	add  edx,ecx
-
-L_decode_distance_mmx:
-	psrlq mm0,mm1
-
-	cmp  ebp,32
-	ja L_get_dist_code_mmx
-
-	movd mm6,ebp
-	movd mm7,dword ptr [esi]
-	add  esi,4
-	psllq mm7,mm6
-	add  ebp,32
-	por mm0,mm7
-
-L_get_dist_code_mmx:
-	mov  ebx, [esp+12]
-	pand mm5,mm0
-	movd eax,mm5
-	movq mm5,mm2
-	mov  eax, [ebx+eax*4]
-
-L_dodist_mmx:
-
-	movzx  ecx,ah
-	mov  ebx,eax
-	shr  ebx,16
-	sub  ebp,ecx
-	movd mm1,ecx
-
-	test  al,16
-	jz L_test_for_second_level_dist_mmx
-	and  eax,15
-	jz L_check_dist_one_mmx
-
-L_add_bits_to_dist_mmx:
-	psrlq mm0,mm1
-	movd mm1,eax
-	movd ecx,mm0
-	sub  ebp,eax
-	and  ecx, [inflate_fast_mask+eax*4]
-	add  ebx,ecx
-
-L_check_window_mmx:
-	mov  [esp+44],esi
-	mov  eax,edi
-	sub  eax, [esp+40]
-
-	cmp  eax,ebx
-	jb L_clip_window_mmx
-
-	mov  ecx,edx
-	mov  esi,edi
-	sub  esi,ebx
-
-	sub  ecx,3
-	mov  al, [esi]
-	mov  [edi],al
-	mov  al, [esi+1]
-	mov  dl, [esi+2]
-	add  esi,3
-	mov  [edi+1],al
-	mov  [edi+2],dl
-	add  edi,3
-	rep movsb
-
-	mov  esi, [esp+44]
-	mov  ebx, [esp+8]
-	jmp  L_while_test_mmx
-
-ALIGN 4
-L_check_dist_one_mmx:
-	cmp  ebx,1
-	jne  L_check_window_mmx
-	cmp  [esp+40],edi
-	je   L_check_window_mmx
-
-	dec  edi
-	mov  ecx,edx
-	mov  al, [edi]
-	sub  ecx,3
-
-	mov  [edi+1],al
-	mov  [edi+2],al
-	mov  [edi+3],al
-	add  edi,4
-	rep stosb
-
-	mov  ebx, [esp+8]
-	jmp  L_while_test_mmx
-
-ALIGN 4
-L_test_for_second_level_length_mmx:
-	test  al,64
-	jnz L_test_for_end_of_block
-
-	and  eax,15
-	psrlq mm0,mm1
-	movd ecx,mm0
-	and  ecx, [inflate_fast_mask+eax*4]
-	add  ecx,edx
-	mov  eax, [ebx+ecx*4]
-	jmp L_dolen_mmx
-
-ALIGN 4
-L_test_for_second_level_dist_mmx:
-	test  al,64
-	jnz L_invalid_distance_code
-
-	and  eax,15
-	psrlq mm0,mm1
-	movd ecx,mm0
-	and  ecx, [inflate_fast_mask+eax*4]
-	mov  eax, [esp+12]
-	add  ecx,ebx
-	mov  eax, [eax+ecx*4]
-	jmp  L_dodist_mmx
-
-ALIGN 4
-L_clip_window_mmx:
-
-	mov  ecx,eax
-	mov  eax, [esp+52]
-	neg  ecx
-	mov  esi, [esp+56]
-
-	cmp  eax,ebx
-	jb  L_invalid_distance_too_far
-
-	add  ecx,ebx
-	cmp  dword ptr [esp+48],0
-	jne  L_wrap_around_window_mmx
-
-	sub  eax,ecx
-	add  esi,eax
-
-	cmp  edx,ecx
-	jbe  L_do_copy1_mmx
-
-	sub  edx,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,ebx
-	jmp  L_do_copy1_mmx
-
-	cmp  edx,ecx
-	jbe  L_do_copy1_mmx
-
-	sub  edx,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,ebx
-	jmp  L_do_copy1_mmx
-
-L_wrap_around_window_mmx:
-
-	mov  eax, [esp+48]
-	cmp  ecx,eax
-	jbe  L_contiguous_in_window_mmx
-
-	add  esi, [esp+52]
-	add  esi,eax
-	sub  esi,ecx
-	sub  ecx,eax
-
-
-	cmp  edx,ecx
-	jbe  L_do_copy1_mmx
-
-	sub  edx,ecx
-	rep movsb
-	mov  esi, [esp+56]
-	mov  ecx, [esp+48]
-	cmp  edx,ecx
-	jbe  L_do_copy1_mmx
-
-	sub  edx,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,ebx
-	jmp  L_do_copy1_mmx
-
-L_contiguous_in_window_mmx:
-
-	add  esi,eax
-	sub  esi,ecx
-
-
-	cmp  edx,ecx
-	jbe  L_do_copy1_mmx
-
-	sub  edx,ecx
-	rep movsb
-	mov  esi,edi
-	sub  esi,ebx
-
-L_do_copy1_mmx:
-
-
-	mov  ecx,edx
-	rep movsb
-
-	mov  esi, [esp+44]
-	mov  ebx, [esp+8]
-	jmp  L_while_test_mmx
-; 1174 "inffast.S"
-L_invalid_distance_code:
-
-
-
-
-
-	mov  ecx, invalid_distance_code_msg
-	mov  edx,INFLATE_MODE_BAD
-	jmp  L_update_stream_state
-
-L_test_for_end_of_block:
-
-
-
-
-
-	test  al,32
-	jz  L_invalid_literal_length_code
-
-	mov  ecx,0
-	mov  edx,INFLATE_MODE_TYPE
-	jmp  L_update_stream_state
-
-L_invalid_literal_length_code:
-
-
-
-
-
-	mov  ecx, invalid_literal_length_code_msg
-	mov  edx,INFLATE_MODE_BAD
-	jmp  L_update_stream_state
-
-L_invalid_distance_too_far:
-
-
-
-	mov  esi, [esp+44]
-	mov  ecx, invalid_distance_too_far_msg
-	mov  edx,INFLATE_MODE_BAD
-	jmp  L_update_stream_state
-
-L_update_stream_state:
-
-	mov  eax, [esp+88]
-	test  ecx,ecx
-	jz  L_skip_msg
-	mov  [eax+24],ecx
-L_skip_msg:
-	mov  eax, [eax+28]
-	mov  [eax+mode_state],edx
-	jmp  L_break_loop
-
-ALIGN 4
-L_break_loop:
-; 1243 "inffast.S"
-	cmp  dword ptr [inflate_fast_use_mmx],2
-	jne  L_update_next_in
-
-
-
-	mov  ebx,ebp
-
-L_update_next_in:
-; 1266 "inffast.S"
-	mov  eax, [esp+88]
-	mov  ecx,ebx
-	mov  edx, [eax+28]
-	shr  ecx,3
-	sub  esi,ecx
-	shl  ecx,3
-	sub  ebx,ecx
-	mov  [eax+12],edi
-	mov  [edx+bits_state],ebx
-	mov  ecx,ebx
-
-	lea  ebx, [esp+28]
-	cmp  [esp+20],ebx
-	jne  L_buf_not_used
-
-	sub  esi,ebx
-	mov  ebx, [eax+0]
-	mov  [esp+20],ebx
-	add  esi,ebx
-	mov  ebx, [eax+4]
-	sub  ebx,11
-	add  [esp+20],ebx
-
-L_buf_not_used:
-	mov  [eax+0],esi
-
-	mov  ebx,1
-	shl  ebx,cl
-	dec  ebx
-
-
-
-
-
-	cmp  dword ptr [inflate_fast_use_mmx],2
-	jne  L_update_hold
-
-
-
-	psrlq mm0,mm1
-	movd ebp,mm0
-
-	emms
-
-L_update_hold:
-
-
-
-	and  ebp,ebx
-	mov  [edx+hold_state],ebp
-
-
-
-
-	mov  ebx, [esp+20]
-	cmp  ebx,esi
-	jbe  L_last_is_smaller
-
-	sub  ebx,esi
-	add  ebx,11
-	mov  [eax+4],ebx
-	jmp  L_fixup_out
-L_last_is_smaller:
-	sub  esi,ebx
-	neg  esi
-	add  esi,11
-	mov  [eax+4],esi
-
-
-
-
-L_fixup_out:
-
-	mov  ebx, [esp+16]
-	cmp  ebx,edi
-	jbe  L_end_is_smaller
-
-	sub  ebx,edi
-	add  ebx,257
-	mov  [eax+16],ebx
-	jmp  L_done
-L_end_is_smaller:
-	sub  edi,ebx
-	neg  edi
-	add  edi,257
-	mov  [eax+16],edi
-
-
-
-
-
-L_done:
-	add  esp,64
-	popfd
-	pop  ebx
-	pop  ebp
-	pop  esi
-	pop  edi
-	ret
-_inflate_fast endp
-
-_TEXT	ends
-end
diff --git a/libs/zlib/contrib/masmx86/match686.asm b/libs/zlib/contrib/masmx86/match686.asm
deleted file mode 100644
index 69e0eed01..000000000
--- a/libs/zlib/contrib/masmx86/match686.asm
+++ /dev/null
@@ -1,479 +0,0 @@
-; match686.asm -- Asm portion of the optimized longest_match for 32 bits x86
-; Copyright (C) 1995-1996 Jean-loup Gailly, Brian Raiter and Gilles Vollant.
-; File written by Gilles Vollant, by converting match686.S from Brian Raiter
-; for MASM. This is as assembly version of longest_match
-;  from Jean-loup Gailly in deflate.c
-;
-;         http://www.zlib.net
-;         http://www.winimage.com/zLibDll
-;         http://www.muppetlabs.com/~breadbox/software/assembly.html
-;
-; For Visual C++ 4.x and higher and ML 6.x and higher
-;   ml.exe is distributed in
-;  http://www.microsoft.com/downloads/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64
-;
-; this file contain two implementation of longest_match
-;
-;  this longest_match was written by Brian raiter (1998), optimized for Pentium Pro
-;   (and the faster known version of match_init on modern Core 2 Duo and AMD Phenom)
-;
-;  for using an assembly version of longest_match, you need define ASMV in project
-;
-;    compile the asm file running
-;           ml /coff /Zi /c /Flmatch686.lst match686.asm
-;    and do not include match686.obj in your project
-;
-; note: contrib of zLib 1.2.3 and earlier contained both a deprecated version for
-;  Pentium (prior Pentium Pro) and this version for Pentium Pro and modern processor
-;  with autoselect (with cpu detection code)
-;  if you want support the old pentium optimization, you can still use these version
-;
-; this file is not optimized for old pentium, but it compatible with all x86 32 bits
-; processor (starting 80386)
-;
-;
-; see below : zlib1222add must be adjuster if you use a zlib version < 1.2.2.2
-
-;uInt longest_match(s, cur_match)
-;    deflate_state *s;
-;    IPos cur_match;                             /* current match */
-
-    NbStack         equ     76
-    cur_match       equ     dword ptr[esp+NbStack-0]
-    str_s           equ     dword ptr[esp+NbStack-4]
-; 5 dword on top (ret,ebp,esi,edi,ebx)
-    adrret          equ     dword ptr[esp+NbStack-8]
-    pushebp         equ     dword ptr[esp+NbStack-12]
-    pushedi         equ     dword ptr[esp+NbStack-16]
-    pushesi         equ     dword ptr[esp+NbStack-20]
-    pushebx         equ     dword ptr[esp+NbStack-24]
-
-    chain_length    equ     dword ptr [esp+NbStack-28]
-    limit           equ     dword ptr [esp+NbStack-32]
-    best_len        equ     dword ptr [esp+NbStack-36]
-    window          equ     dword ptr [esp+NbStack-40]
-    prev            equ     dword ptr [esp+NbStack-44]
-    scan_start      equ      word ptr [esp+NbStack-48]
-    wmask           equ     dword ptr [esp+NbStack-52]
-    match_start_ptr equ     dword ptr [esp+NbStack-56]
-    nice_match      equ     dword ptr [esp+NbStack-60]
-    scan            equ     dword ptr [esp+NbStack-64]
-
-    windowlen       equ     dword ptr [esp+NbStack-68]
-    match_start     equ     dword ptr [esp+NbStack-72]
-    strend          equ     dword ptr [esp+NbStack-76]
-    NbStackAdd      equ     (NbStack-24)
-
-    .386p
-
-    name    gvmatch
-    .MODEL  FLAT
-
-
-
-;  all the +zlib1222add offsets are due to the addition of fields
-;  in zlib in the deflate_state structure since the asm code was first written
-;  (if you compile with zlib 1.0.4 or older, use "zlib1222add equ (-4)").
-;  (if you compile with zlib between 1.0.5 and 1.2.2.1, use "zlib1222add equ 0").
-;  if you compile with zlib 1.2.2.2 or later , use "zlib1222add equ 8").
-
-    zlib1222add         equ     8
-
-;  Note : these value are good with a 8 bytes boundary pack structure
-    dep_chain_length    equ     74h+zlib1222add
-    dep_window          equ     30h+zlib1222add
-    dep_strstart        equ     64h+zlib1222add
-    dep_prev_length     equ     70h+zlib1222add
-    dep_nice_match      equ     88h+zlib1222add
-    dep_w_size          equ     24h+zlib1222add
-    dep_prev            equ     38h+zlib1222add
-    dep_w_mask          equ     2ch+zlib1222add
-    dep_good_match      equ     84h+zlib1222add
-    dep_match_start     equ     68h+zlib1222add
-    dep_lookahead       equ     6ch+zlib1222add
-
-
-_TEXT                   segment
-
-IFDEF NOUNDERLINE
-            public  longest_match
-            public  match_init
-ELSE
-            public  _longest_match
-            public  _match_init
-ENDIF
-
-    MAX_MATCH           equ     258
-    MIN_MATCH           equ     3
-    MIN_LOOKAHEAD       equ     (MAX_MATCH+MIN_MATCH+1)
-
-
-
-MAX_MATCH       equ     258
-MIN_MATCH       equ     3
-MIN_LOOKAHEAD   equ     (MAX_MATCH + MIN_MATCH + 1)
-MAX_MATCH_8_     equ     ((MAX_MATCH + 7) AND 0FFF0h)
-
-
-;;; stack frame offsets
-
-chainlenwmask   equ  esp + 0    ; high word: current chain len
-                    ; low word: s->wmask
-window      equ  esp + 4    ; local copy of s->window
-windowbestlen   equ  esp + 8    ; s->window + bestlen
-scanstart   equ  esp + 16   ; first two bytes of string
-scanend     equ  esp + 12   ; last two bytes of string
-scanalign   equ  esp + 20   ; dword-misalignment of string
-nicematch   equ  esp + 24   ; a good enough match size
-bestlen     equ  esp + 28   ; size of best match so far
-scan        equ  esp + 32   ; ptr to string wanting match
-
-LocalVarsSize   equ 36
-;   saved ebx   byte esp + 36
-;   saved edi   byte esp + 40
-;   saved esi   byte esp + 44
-;   saved ebp   byte esp + 48
-;   return address  byte esp + 52
-deflatestate    equ  esp + 56   ; the function arguments
-curmatch    equ  esp + 60
-
-;;; Offsets for fields in the deflate_state structure. These numbers
-;;; are calculated from the definition of deflate_state, with the
-;;; assumption that the compiler will dword-align the fields. (Thus,
-;;; changing the definition of deflate_state could easily cause this
-;;; program to crash horribly, without so much as a warning at
-;;; compile time. Sigh.)
-
-dsWSize     equ 36+zlib1222add
-dsWMask     equ 44+zlib1222add
-dsWindow    equ 48+zlib1222add
-dsPrev      equ 56+zlib1222add
-dsMatchLen  equ 88+zlib1222add
-dsPrevMatch equ 92+zlib1222add
-dsStrStart  equ 100+zlib1222add
-dsMatchStart    equ 104+zlib1222add
-dsLookahead equ 108+zlib1222add
-dsPrevLen   equ 112+zlib1222add
-dsMaxChainLen   equ 116+zlib1222add
-dsGoodMatch equ 132+zlib1222add
-dsNiceMatch equ 136+zlib1222add
-
-
-;;; match686.asm -- Pentium-Pro-optimized version of longest_match()
-;;; Written for zlib 1.1.2
-;;; Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com>
-;;; You can look at http://www.muppetlabs.com/~breadbox/software/assembly.html
-;;;
-;;
-;;  This software is provided 'as-is', without any express or implied
-;;  warranty.  In no event will the authors be held liable for any damages
-;;  arising from the use of this software.
-;;
-;;  Permission is granted to anyone to use this software for any purpose,
-;;  including commercial applications, and to alter it and redistribute it
-;;  freely, subject to the following restrictions:
-;;
-;;  1. The origin of this software must not be misrepresented; you must not
-;;     claim that you wrote the original software. If you use this software
-;;     in a product, an acknowledgment in the product documentation would be
-;;     appreciated but is not required.
-;;  2. Altered source versions must be plainly marked as such, and must not be
-;;     misrepresented as being the original software
-;;  3. This notice may not be removed or altered from any source distribution.
-;;
-
-;GLOBAL _longest_match, _match_init
-
-
-;SECTION    .text
-
-;;; uInt longest_match(deflate_state *deflatestate, IPos curmatch)
-
-;_longest_match:
-    IFDEF NOUNDERLINE
-    longest_match       proc near
-    ELSE
-    _longest_match      proc near
-    ENDIF
-.FPO (9, 4, 0, 0, 1, 0)
-
-;;; Save registers that the compiler may be using, and adjust esp to
-;;; make room for our stack frame.
-
-        push    ebp
-        push    edi
-        push    esi
-        push    ebx
-        sub esp, LocalVarsSize
-
-;;; Retrieve the function arguments. ecx will hold cur_match
-;;; throughout the entire function. edx will hold the pointer to the
-;;; deflate_state structure during the function's setup (before
-;;; entering the main loop.
-
-        mov edx, [deflatestate]
-        mov ecx, [curmatch]
-
-;;; uInt wmask = s->w_mask;
-;;; unsigned chain_length = s->max_chain_length;
-;;; if (s->prev_length >= s->good_match) {
-;;;     chain_length >>= 2;
-;;; }
-
-        mov eax, [edx + dsPrevLen]
-        mov ebx, [edx + dsGoodMatch]
-        cmp eax, ebx
-        mov eax, [edx + dsWMask]
-        mov ebx, [edx + dsMaxChainLen]
-        jl  LastMatchGood
-        shr ebx, 2
-LastMatchGood:
-
-;;; chainlen is decremented once beforehand so that the function can
-;;; use the sign flag instead of the zero flag for the exit test.
-;;; It is then shifted into the high word, to make room for the wmask
-;;; value, which it will always accompany.
-
-        dec ebx
-        shl ebx, 16
-        or  ebx, eax
-        mov [chainlenwmask], ebx
-
-;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
-
-        mov eax, [edx + dsNiceMatch]
-        mov ebx, [edx + dsLookahead]
-        cmp ebx, eax
-        jl  LookaheadLess
-        mov ebx, eax
-LookaheadLess:  mov [nicematch], ebx
-
-;;; register Bytef *scan = s->window + s->strstart;
-
-        mov esi, [edx + dsWindow]
-        mov [window], esi
-        mov ebp, [edx + dsStrStart]
-        lea edi, [esi + ebp]
-        mov [scan], edi
-
-;;; Determine how many bytes the scan ptr is off from being
-;;; dword-aligned.
-
-        mov eax, edi
-        neg eax
-        and eax, 3
-        mov [scanalign], eax
-
-;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
-;;;     s->strstart - (IPos)MAX_DIST(s) : NIL;
-
-        mov eax, [edx + dsWSize]
-        sub eax, MIN_LOOKAHEAD
-        sub ebp, eax
-        jg  LimitPositive
-        xor ebp, ebp
-LimitPositive:
-
-;;; int best_len = s->prev_length;
-
-        mov eax, [edx + dsPrevLen]
-        mov [bestlen], eax
-
-;;; Store the sum of s->window + best_len in esi locally, and in esi.
-
-        add esi, eax
-        mov [windowbestlen], esi
-
-;;; register ush scan_start = *(ushf*)scan;
-;;; register ush scan_end   = *(ushf*)(scan+best_len-1);
-;;; Posf *prev = s->prev;
-
-        movzx   ebx, word ptr [edi]
-        mov [scanstart], ebx
-        movzx   ebx, word ptr [edi + eax - 1]
-        mov [scanend], ebx
-        mov edi, [edx + dsPrev]
-
-;;; Jump into the main loop.
-
-        mov edx, [chainlenwmask]
-        jmp short LoopEntry
-
-align 4
-
-;;; do {
-;;;     match = s->window + cur_match;
-;;;     if (*(ushf*)(match+best_len-1) != scan_end ||
-;;;         *(ushf*)match != scan_start) continue;
-;;;     [...]
-;;; } while ((cur_match = prev[cur_match & wmask]) > limit
-;;;          && --chain_length != 0);
-;;;
-;;; Here is the inner loop of the function. The function will spend the
-;;; majority of its time in this loop, and majority of that time will
-;;; be spent in the first ten instructions.
-;;;
-;;; Within this loop:
-;;; ebx = scanend
-;;; ecx = curmatch
-;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
-;;; esi = windowbestlen - i.e., (window + bestlen)
-;;; edi = prev
-;;; ebp = limit
-
-LookupLoop:
-        and ecx, edx
-        movzx   ecx, word ptr [edi + ecx*2]
-        cmp ecx, ebp
-        jbe LeaveNow
-        sub edx, 00010000h
-        js  LeaveNow
-LoopEntry:  movzx   eax, word ptr [esi + ecx - 1]
-        cmp eax, ebx
-        jnz LookupLoop
-        mov eax, [window]
-        movzx   eax, word ptr [eax + ecx]
-        cmp eax, [scanstart]
-        jnz LookupLoop
-
-;;; Store the current value of chainlen.
-
-        mov [chainlenwmask], edx
-
-;;; Point edi to the string under scrutiny, and esi to the string we
-;;; are hoping to match it up with. In actuality, esi and edi are
-;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is
-;;; initialized to -(MAX_MATCH_8 - scanalign).
-
-        mov esi, [window]
-        mov edi, [scan]
-        add esi, ecx
-        mov eax, [scanalign]
-        mov edx, 0fffffef8h; -(MAX_MATCH_8)
-        lea edi, [edi + eax + 0108h] ;MAX_MATCH_8]
-        lea esi, [esi + eax + 0108h] ;MAX_MATCH_8]
-
-;;; Test the strings for equality, 8 bytes at a time. At the end,
-;;; adjust edx so that it is offset to the exact byte that mismatched.
-;;;
-;;; We already know at this point that the first three bytes of the
-;;; strings match each other, and they can be safely passed over before
-;;; starting the compare loop. So what this code does is skip over 0-3
-;;; bytes, as much as necessary in order to dword-align the edi
-;;; pointer. (esi will still be misaligned three times out of four.)
-;;;
-;;; It should be confessed that this loop usually does not represent
-;;; much of the total running time. Replacing it with a more
-;;; straightforward "rep cmpsb" would not drastically degrade
-;;; performance.
-
-LoopCmps:
-        mov eax, [esi + edx]
-        xor eax, [edi + edx]
-        jnz LeaveLoopCmps
-        mov eax, [esi + edx + 4]
-        xor eax, [edi + edx + 4]
-        jnz LeaveLoopCmps4
-        add edx, 8
-        jnz LoopCmps
-        jmp short LenMaximum
-LeaveLoopCmps4: add edx, 4
-LeaveLoopCmps:  test    eax, 0000FFFFh
-        jnz LenLower
-        add edx,  2
-        shr eax, 16
-LenLower:   sub al, 1
-        adc edx, 0
-
-;;; Calculate the length of the match. If it is longer than MAX_MATCH,
-;;; then automatically accept it as the best possible match and leave.
-
-        lea eax, [edi + edx]
-        mov edi, [scan]
-        sub eax, edi
-        cmp eax, MAX_MATCH
-        jge LenMaximum
-
-;;; If the length of the match is not longer than the best match we
-;;; have so far, then forget it and return to the lookup loop.
-
-        mov edx, [deflatestate]
-        mov ebx, [bestlen]
-        cmp eax, ebx
-        jg  LongerMatch
-        mov esi, [windowbestlen]
-        mov edi, [edx + dsPrev]
-        mov ebx, [scanend]
-        mov edx, [chainlenwmask]
-        jmp LookupLoop
-
-;;;         s->match_start = cur_match;
-;;;         best_len = len;
-;;;         if (len >= nice_match) break;
-;;;         scan_end = *(ushf*)(scan+best_len-1);
-
-LongerMatch:    mov ebx, [nicematch]
-        mov [bestlen], eax
-        mov [edx + dsMatchStart], ecx
-        cmp eax, ebx
-        jge LeaveNow
-        mov esi, [window]
-        add esi, eax
-        mov [windowbestlen], esi
-        movzx   ebx, word ptr [edi + eax - 1]
-        mov edi, [edx + dsPrev]
-        mov [scanend], ebx
-        mov edx, [chainlenwmask]
-        jmp LookupLoop
-
-;;; Accept the current string, with the maximum possible length.
-
-LenMaximum: mov edx, [deflatestate]
-        mov dword ptr [bestlen], MAX_MATCH
-        mov [edx + dsMatchStart], ecx
-
-;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
-;;; return s->lookahead;
-
-LeaveNow:
-        mov edx, [deflatestate]
-        mov ebx, [bestlen]
-        mov eax, [edx + dsLookahead]
-        cmp ebx, eax
-        jg  LookaheadRet
-        mov eax, ebx
-LookaheadRet:
-
-;;; Restore the stack and return from whence we came.
-
-        add esp, LocalVarsSize
-        pop ebx
-        pop esi
-        pop edi
-        pop ebp
-
-        ret
-; please don't remove this string !
-; Your can freely use match686 in any free or commercial app if you don't remove the string in the binary!
-    db     0dh,0ah,"asm686 with masm, optimised assembly code from Brian Raiter, written 1998",0dh,0ah
-
-
-    IFDEF NOUNDERLINE
-    longest_match       endp
-    ELSE
-    _longest_match      endp
-    ENDIF
-
-    IFDEF NOUNDERLINE
-    match_init      proc near
-                    ret
-    match_init      endp
-    ELSE
-    _match_init     proc near
-                    ret
-    _match_init     endp
-    ENDIF
-
-
-_TEXT   ends
-end
diff --git a/libs/zlib/contrib/masmx86/readme.txt b/libs/zlib/contrib/masmx86/readme.txt
deleted file mode 100644
index 3f8888679..000000000
--- a/libs/zlib/contrib/masmx86/readme.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-
-Summary
--------
-This directory contains ASM implementations of the functions
-longest_match() and inflate_fast().
-
-
-Use instructions
-----------------
-Assemble using MASM, and copy the object files into the zlib source
-directory, then run the appropriate makefile, as suggested below.  You can
-donwload MASM from here:
-
-    http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64
-
-You can also get objects files here:
-
-    http://www.winimage.com/zLibDll/zlib124_masm_obj.zip
-
-Build instructions
-------------------
-* With Microsoft C and MASM:
-nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj"
-
-* With Borland C and TASM:
-make -f win32/Makefile.bor LOCAL_ZLIB="-DASMV -DASMINF" OBJA="match686.obj inffas32.obj" OBJPA="+match686c.obj+match686.obj+inffas32.obj"
-
diff --git a/libs/zlib/contrib/minizip/Makefile b/libs/zlib/contrib/minizip/Makefile
index 84eaad20d..3d927ec14 100644
--- a/libs/zlib/contrib/minizip/Makefile
+++ b/libs/zlib/contrib/minizip/Makefile
@@ -1,5 +1,5 @@
-CC=cc
-CFLAGS=-O -I../..
+CC?=cc
+CFLAGS := $(CFLAGS) -O -I../..
 
 UNZ_OBJS = miniunz.o unzip.o ioapi.o ../../libz.a
 ZIP_OBJS = minizip.o zip.o   ioapi.o ../../libz.a
@@ -16,10 +16,14 @@ minizip:  $(ZIP_OBJS)
 	$(CC) $(CFLAGS) -o $@ $(ZIP_OBJS)
 
 test:	miniunz minizip
-	./minizip test readme.txt
+	@rm -f test.*
+	@echo hello hello hello > test.txt
+	./minizip test test.txt
 	./miniunz -l test.zip
-	mv readme.txt readme.old
+	@mv test.txt test.old
 	./miniunz test.zip
+	@cmp test.txt test.old
+	@rm -f test.*
 
 clean:
-	/bin/rm -f *.o *~ minizip miniunz
+	/bin/rm -f *.o *~ minizip miniunz test.*
diff --git a/libs/zlib/contrib/minizip/MiniZip64_Changes.txt b/libs/zlib/contrib/minizip/MiniZip64_Changes.txt
index 13a1bd91a..375946811 100644
--- a/libs/zlib/contrib/minizip/MiniZip64_Changes.txt
+++ b/libs/zlib/contrib/minizip/MiniZip64_Changes.txt
@@ -1,5 +1,5 @@
 
-MiniZip 1.1 was derrived from MiniZip at version 1.01f
+MiniZip 1.1 was derived from MiniZip at version 1.01f
 
 Change in 1.0 (Okt 2009)
  - **TODO - Add history**
diff --git a/libs/zlib/contrib/minizip/configure.ac b/libs/zlib/contrib/minizip/configure.ac
index 5b1197097..15ec91718 100644
--- a/libs/zlib/contrib/minizip/configure.ac
+++ b/libs/zlib/contrib/minizip/configure.ac
@@ -1,7 +1,7 @@
 #                                               -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
 
-AC_INIT([minizip], [1.2.11], [bugzilla.redhat.com])
+AC_INIT([minizip], [1.3.1], [bugzilla.redhat.com])
 AC_CONFIG_SRCDIR([minizip.c])
 AM_INIT_AUTOMAKE([foreign])
 LT_INIT
diff --git a/libs/zlib/contrib/minizip/crypt.h b/libs/zlib/contrib/minizip/crypt.h
index 1e9e8200b..f4b93b78d 100644
--- a/libs/zlib/contrib/minizip/crypt.h
+++ b/libs/zlib/contrib/minizip/crypt.h
@@ -32,12 +32,12 @@
 /***********************************************************************
  * Return the next byte in the pseudo-random sequence
  */
-static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
-{
+static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab) {
     unsigned temp;  /* POTENTIAL BUG:  temp*(temp^1) may overflow in an
                      * unpredictable manner on 16-bit systems; not a problem
                      * with any known compiler so far, though */
 
+    (void)pcrc_32_tab;
     temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2;
     return (int)(((temp * (temp ^ 1)) >> 8) & 0xff);
 }
@@ -45,8 +45,7 @@ static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
 /***********************************************************************
  * Update the encryption keys with the next byte of plain text
  */
-static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c)
-{
+static int update_keys(unsigned long* pkeys, const z_crc_t* pcrc_32_tab, int c) {
     (*(pkeys+0)) = CRC32((*(pkeys+0)), c);
     (*(pkeys+1)) += (*(pkeys+0)) & 0xff;
     (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1;
@@ -62,8 +61,7 @@ static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c)
  * Initialize the encryption keys and the random header according to
  * the given password.
  */
-static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcrc_32_tab)
-{
+static void init_keys(const char* passwd, unsigned long* pkeys, const z_crc_t* pcrc_32_tab) {
     *(pkeys+0) = 305419896L;
     *(pkeys+1) = 591751049L;
     *(pkeys+2) = 878082192L;
@@ -77,24 +75,23 @@ static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcr
     (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab)))
 
 #define zencode(pkeys,pcrc_32_tab,c,t) \
-    (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c))
+    (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), (Byte)t^(c))
 
 #ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED
 
 #define RAND_HEAD_LEN  12
    /* "last resort" source for second part of crypt seed pattern */
 #  ifndef ZCR_SEED2
-#    define ZCR_SEED2 3141592654UL     /* use PI as default pattern */
+#    define ZCR_SEED2 3141592654UL      /* use PI as default pattern */
 #  endif
 
-static int crypthead(const char* passwd,      /* password string */
-                     unsigned char* buf,      /* where to write header */
-                     int bufSize,
-                     unsigned long* pkeys,
-                     const z_crc_t* pcrc_32_tab,
-                     unsigned long crcForCrypting)
-{
-    int n;                       /* index in random header */
+static unsigned crypthead(const char* passwd,       /* password string */
+                          unsigned char* buf,       /* where to write header */
+                          int bufSize,
+                          unsigned long* pkeys,
+                          const z_crc_t* pcrc_32_tab,
+                          unsigned long crcForCrypting) {
+    unsigned n;                  /* index in random header */
     int t;                       /* temporary */
     int c;                       /* random byte */
     unsigned char header[RAND_HEAD_LEN-2]; /* random header */
diff --git a/libs/zlib/contrib/minizip/ioapi.c b/libs/zlib/contrib/minizip/ioapi.c
index 7f5c191b2..782d32469 100644
--- a/libs/zlib/contrib/minizip/ioapi.c
+++ b/libs/zlib/contrib/minizip/ioapi.c
@@ -14,7 +14,7 @@
         #define _CRT_SECURE_NO_WARNINGS
 #endif
 
-#if defined(__APPLE__) || defined(IOAPI_NO_64)
+#if defined(__APPLE__) || defined(IOAPI_NO_64) || defined(__HAIKU__) || defined(MINIZIP_FOPEN_NO_64)
 // In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
 #define FOPEN_FUNC(filename, mode) fopen(filename, mode)
 #define FTELLO_FUNC(stream) ftello(stream)
@@ -28,8 +28,7 @@
 
 #include "ioapi.h"
 
-voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode)
-{
+voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc, const void*filename, int mode) {
     if (pfilefunc->zfile_func64.zopen64_file != NULL)
         return (*(pfilefunc->zfile_func64.zopen64_file)) (pfilefunc->zfile_func64.opaque,filename,mode);
     else
@@ -38,8 +37,7 @@ voidpf call_zopen64 (const zlib_filefunc64_32_def* pfilefunc,const void*filename
     }
 }
 
-long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin)
-{
+long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin) {
     if (pfilefunc->zfile_func64.zseek64_file != NULL)
         return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin);
     else
@@ -52,13 +50,12 @@ long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZP
     }
 }
 
-ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream)
-{
+ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc, voidpf filestream) {
     if (pfilefunc->zfile_func64.zseek64_file != NULL)
         return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream);
     else
     {
-        uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
+        uLong tell_uLong = (uLong)(*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
         if ((tell_uLong) == MAXU32)
             return (ZPOS64_T)-1;
         else
@@ -66,11 +63,9 @@ ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream
     }
 }
 
-void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32)
-{
+void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32, const zlib_filefunc_def* p_filefunc32) {
     p_filefunc64_32->zfile_func64.zopen64_file = NULL;
     p_filefunc64_32->zopen32_file = p_filefunc32->zopen_file;
-    p_filefunc64_32->zfile_func64.zerror_file = p_filefunc32->zerror_file;
     p_filefunc64_32->zfile_func64.zread_file = p_filefunc32->zread_file;
     p_filefunc64_32->zfile_func64.zwrite_file = p_filefunc32->zwrite_file;
     p_filefunc64_32->zfile_func64.ztell64_file = NULL;
@@ -84,18 +79,10 @@ void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filef
 
 
 
-static voidpf  ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
-static uLong   ZCALLBACK fread_file_func OF((voidpf opaque, voidpf stream, void* buf, uLong size));
-static uLong   ZCALLBACK fwrite_file_func OF((voidpf opaque, voidpf stream, const void* buf,uLong size));
-static ZPOS64_T ZCALLBACK ftell64_file_func OF((voidpf opaque, voidpf stream));
-static long    ZCALLBACK fseek64_file_func OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
-static int     ZCALLBACK fclose_file_func OF((voidpf opaque, voidpf stream));
-static int     ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream));
-
-static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode)
-{
+static voidpf ZCALLBACK fopen_file_func(voidpf opaque, const char* filename, int mode) {
     FILE* file = NULL;
     const char* mode_fopen = NULL;
+    (void)opaque;
     if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
         mode_fopen = "rb";
     else
@@ -110,10 +97,10 @@ static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, in
     return file;
 }
 
-static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode)
-{
+static voidpf ZCALLBACK fopen64_file_func(voidpf opaque, const void* filename, int mode) {
     FILE* file = NULL;
     const char* mode_fopen = NULL;
+    (void)opaque;
     if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
         mode_fopen = "rb";
     else
@@ -129,39 +116,39 @@ static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename,
 }
 
 
-static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size)
-{
+static uLong ZCALLBACK fread_file_func(voidpf opaque, voidpf stream, void* buf, uLong size) {
     uLong ret;
+    (void)opaque;
     ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
     return ret;
 }
 
-static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size)
-{
+static uLong ZCALLBACK fwrite_file_func(voidpf opaque, voidpf stream, const void* buf, uLong size) {
     uLong ret;
+    (void)opaque;
     ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
     return ret;
 }
 
-static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
-{
+static long ZCALLBACK ftell_file_func(voidpf opaque, voidpf stream) {
     long ret;
+    (void)opaque;
     ret = ftell((FILE *)stream);
     return ret;
 }
 
 
-static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
-{
+static ZPOS64_T ZCALLBACK ftell64_file_func(voidpf opaque, voidpf stream) {
     ZPOS64_T ret;
-    ret = FTELLO_FUNC((FILE *)stream);
+    (void)opaque;
+    ret = (ZPOS64_T)FTELLO_FUNC((FILE *)stream);
     return ret;
 }
 
-static long ZCALLBACK fseek_file_func (voidpf  opaque, voidpf stream, uLong offset, int origin)
-{
+static long ZCALLBACK fseek_file_func(voidpf opaque, voidpf stream, uLong offset, int origin) {
     int fseek_origin=0;
     long ret;
+    (void)opaque;
     switch (origin)
     {
     case ZLIB_FILEFUNC_SEEK_CUR :
@@ -176,15 +163,15 @@ static long ZCALLBACK fseek_file_func (voidpf  opaque, voidpf stream, uLong offs
     default: return -1;
     }
     ret = 0;
-    if (fseek((FILE *)stream, offset, fseek_origin) != 0)
+    if (fseek((FILE *)stream, (long)offset, fseek_origin) != 0)
         ret = -1;
     return ret;
 }
 
-static long ZCALLBACK fseek64_file_func (voidpf  opaque, voidpf stream, ZPOS64_T offset, int origin)
-{
+static long ZCALLBACK fseek64_file_func(voidpf opaque, voidpf stream, ZPOS64_T offset, int origin) {
     int fseek_origin=0;
     long ret;
+    (void)opaque;
     switch (origin)
     {
     case ZLIB_FILEFUNC_SEEK_CUR :
@@ -200,30 +187,28 @@ static long ZCALLBACK fseek64_file_func (voidpf  opaque, voidpf stream, ZPOS64_T
     }
     ret = 0;
 
-    if(FSEEKO_FUNC((FILE *)stream, offset, fseek_origin) != 0)
+    if(FSEEKO_FUNC((FILE *)stream, (z_off64_t)offset, fseek_origin) != 0)
                         ret = -1;
 
     return ret;
 }
 
 
-static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
-{
+static int ZCALLBACK fclose_file_func(voidpf opaque, voidpf stream) {
     int ret;
+    (void)opaque;
     ret = fclose((FILE *)stream);
     return ret;
 }
 
-static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream)
-{
+static int ZCALLBACK ferror_file_func(voidpf opaque, voidpf stream) {
     int ret;
+    (void)opaque;
     ret = ferror((FILE *)stream);
     return ret;
 }
 
-void fill_fopen_filefunc (pzlib_filefunc_def)
-  zlib_filefunc_def* pzlib_filefunc_def;
-{
+void fill_fopen_filefunc(zlib_filefunc_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen_file = fopen_file_func;
     pzlib_filefunc_def->zread_file = fread_file_func;
     pzlib_filefunc_def->zwrite_file = fwrite_file_func;
@@ -234,8 +219,7 @@ void fill_fopen_filefunc (pzlib_filefunc_def)
     pzlib_filefunc_def->opaque = NULL;
 }
 
-void fill_fopen64_filefunc (zlib_filefunc64_def*  pzlib_filefunc_def)
-{
+void fill_fopen64_filefunc(zlib_filefunc64_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen64_file = fopen64_file_func;
     pzlib_filefunc_def->zread_file = fread_file_func;
     pzlib_filefunc_def->zwrite_file = fwrite_file_func;
diff --git a/libs/zlib/contrib/minizip/ioapi.h b/libs/zlib/contrib/minizip/ioapi.h
index 8dcbdb06e..a2d2e6e60 100644
--- a/libs/zlib/contrib/minizip/ioapi.h
+++ b/libs/zlib/contrib/minizip/ioapi.h
@@ -50,7 +50,7 @@
 #define ftello64 ftell
 #define fseeko64 fseek
 #else
-#ifdef __FreeBSD__
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__HAIKU__) || defined(MINIZIP_FOPEN_NO_64)
 #define fopen64 fopen
 #define ftello64 ftello
 #define fseeko64 fseeko
@@ -82,7 +82,7 @@
 #include "mz64conf.h"
 #endif
 
-/* a type choosen by DEFINE */
+/* a type chosen by DEFINE */
 #ifdef HAVE_64BIT_INT_CUSTOM
 typedef  64BIT_INT_CUSTOM_TYPE ZPOS64_T;
 #else
@@ -91,8 +91,7 @@ typedef  64BIT_INT_CUSTOM_TYPE ZPOS64_T;
 typedef uint64_t ZPOS64_T;
 #else
 
-/* Maximum unsigned 32-bit value used as placeholder for zip64 */
-#define MAXU32 0xffffffff
+
 
 #if defined(_MSC_VER) || defined(__BORLANDC__)
 typedef unsigned __int64 ZPOS64_T;
@@ -102,7 +101,10 @@ typedef unsigned long long int ZPOS64_T;
 #endif
 #endif
 
-
+/* Maximum unsigned 32-bit value used as placeholder for zip64 */
+#ifndef MAXU32
+#define MAXU32 (0xffffffff)
+#endif
 
 #ifdef __cplusplus
 extern "C" {
@@ -132,17 +134,17 @@ extern "C" {
 
 
 
-typedef voidpf   (ZCALLBACK *open_file_func)      OF((voidpf opaque, const char* filename, int mode));
-typedef uLong    (ZCALLBACK *read_file_func)      OF((voidpf opaque, voidpf stream, void* buf, uLong size));
-typedef uLong    (ZCALLBACK *write_file_func)     OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
-typedef int      (ZCALLBACK *close_file_func)     OF((voidpf opaque, voidpf stream));
-typedef int      (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream));
+typedef voidpf   (ZCALLBACK *open_file_func)      (voidpf opaque, const char* filename, int mode);
+typedef uLong    (ZCALLBACK *read_file_func)      (voidpf opaque, voidpf stream, void* buf, uLong size);
+typedef uLong    (ZCALLBACK *write_file_func)     (voidpf opaque, voidpf stream, const void* buf, uLong size);
+typedef int      (ZCALLBACK *close_file_func)     (voidpf opaque, voidpf stream);
+typedef int      (ZCALLBACK *testerror_file_func) (voidpf opaque, voidpf stream);
 
-typedef long     (ZCALLBACK *tell_file_func)      OF((voidpf opaque, voidpf stream));
-typedef long     (ZCALLBACK *seek_file_func)      OF((voidpf opaque, voidpf stream, uLong offset, int origin));
+typedef long     (ZCALLBACK *tell_file_func)      (voidpf opaque, voidpf stream);
+typedef long     (ZCALLBACK *seek_file_func)      (voidpf opaque, voidpf stream, uLong offset, int origin);
 
 
-/* here is the "old" 32 bits structure structure */
+/* here is the "old" 32 bits structure */
 typedef struct zlib_filefunc_def_s
 {
     open_file_func      zopen_file;
@@ -155,9 +157,9 @@ typedef struct zlib_filefunc_def_s
     voidpf              opaque;
 } zlib_filefunc_def;
 
-typedef ZPOS64_T (ZCALLBACK *tell64_file_func)    OF((voidpf opaque, voidpf stream));
-typedef long     (ZCALLBACK *seek64_file_func)    OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
-typedef voidpf   (ZCALLBACK *open64_file_func)    OF((voidpf opaque, const void* filename, int mode));
+typedef ZPOS64_T (ZCALLBACK *tell64_file_func)    (voidpf opaque, voidpf stream);
+typedef long     (ZCALLBACK *seek64_file_func)    (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin);
+typedef voidpf   (ZCALLBACK *open64_file_func)    (voidpf opaque, const void* filename, int mode);
 
 typedef struct zlib_filefunc64_def_s
 {
@@ -171,8 +173,8 @@ typedef struct zlib_filefunc64_def_s
     voidpf              opaque;
 } zlib_filefunc64_def;
 
-void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def));
-void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));
+void fill_fopen64_filefunc(zlib_filefunc64_def* pzlib_filefunc_def);
+void fill_fopen_filefunc(zlib_filefunc_def* pzlib_filefunc_def);
 
 /* now internal definition, only for zip.c and unzip.h */
 typedef struct zlib_filefunc64_32_def_s
@@ -191,11 +193,11 @@ typedef struct zlib_filefunc64_32_def_s
 #define ZCLOSE64(filefunc,filestream)             ((*((filefunc).zfile_func64.zclose_file))  ((filefunc).zfile_func64.opaque,filestream))
 #define ZERROR64(filefunc,filestream)             ((*((filefunc).zfile_func64.zerror_file))  ((filefunc).zfile_func64.opaque,filestream))
 
-voidpf call_zopen64 OF((const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode));
-long    call_zseek64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin));
-ZPOS64_T call_ztell64 OF((const zlib_filefunc64_32_def* pfilefunc,voidpf filestream));
+voidpf call_zopen64(const zlib_filefunc64_32_def* pfilefunc,const void*filename,int mode);
+long call_zseek64(const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZPOS64_T offset, int origin);
+ZPOS64_T call_ztell64(const zlib_filefunc64_32_def* pfilefunc,voidpf filestream);
 
-void    fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32);
+void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filefunc64_32,const zlib_filefunc_def* p_filefunc32);
 
 #define ZOPEN64(filefunc,filename,mode)         (call_zopen64((&(filefunc)),(filename),(mode)))
 #define ZTELL64(filefunc,filestream)            (call_ztell64((&(filefunc)),(filestream)))
diff --git a/libs/zlib/contrib/minizip/iowin32.c b/libs/zlib/contrib/minizip/iowin32.c
index 274f39eb1..08536e94b 100644
--- a/libs/zlib/contrib/minizip/iowin32.c
+++ b/libs/zlib/contrib/minizip/iowin32.c
@@ -28,19 +28,16 @@
 
 // see Include/shared/winapifamily.h in the Windows Kit
 #if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API)))
+
+#if !defined(WINAPI_FAMILY_ONE_PARTITION)
+#define WINAPI_FAMILY_ONE_PARTITION(PartitionSet, Partition) ((WINAPI_FAMILY & PartitionSet) == Partition)
+#endif
+
 #if WINAPI_FAMILY_ONE_PARTITION(WINAPI_FAMILY, WINAPI_PARTITION_APP)
 #define IOWIN32_USING_WINRT_API 1
 #endif
 #endif
 
-voidpf  ZCALLBACK win32_open_file_func  OF((voidpf opaque, const char* filename, int mode));
-uLong   ZCALLBACK win32_read_file_func  OF((voidpf opaque, voidpf stream, void* buf, uLong size));
-uLong   ZCALLBACK win32_write_file_func OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
-ZPOS64_T ZCALLBACK win32_tell64_file_func  OF((voidpf opaque, voidpf stream));
-long    ZCALLBACK win32_seek64_file_func  OF((voidpf opaque, voidpf stream, ZPOS64_T offset, int origin));
-int     ZCALLBACK win32_close_file_func OF((voidpf opaque, voidpf stream));
-int     ZCALLBACK win32_error_file_func OF((voidpf opaque, voidpf stream));
-
 typedef struct
 {
     HANDLE hf;
@@ -52,8 +49,7 @@ static void win32_translate_open_mode(int mode,
                                       DWORD* lpdwDesiredAccess,
                                       DWORD* lpdwCreationDisposition,
                                       DWORD* lpdwShareMode,
-                                      DWORD* lpdwFlagsAndAttributes)
-{
+                                      DWORD* lpdwFlagsAndAttributes) {
     *lpdwDesiredAccess = *lpdwShareMode = *lpdwFlagsAndAttributes = *lpdwCreationDisposition = 0;
 
     if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
@@ -74,8 +70,7 @@ static void win32_translate_open_mode(int mode,
     }
 }
 
-static voidpf win32_build_iowin(HANDLE hFile)
-{
+static voidpf win32_build_iowin(HANDLE hFile) {
     voidpf ret=NULL;
 
     if ((hFile != NULL) && (hFile != INVALID_HANDLE_VALUE))
@@ -93,8 +88,7 @@ static voidpf win32_build_iowin(HANDLE hFile)
     return ret;
 }
 
-voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int mode)
-{
+voidpf ZCALLBACK win32_open64_file_func(voidpf opaque, const void* filename, int mode) {
     const char* mode_fopen = NULL;
     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
     HANDLE hFile = NULL;
@@ -122,8 +116,7 @@ voidpf ZCALLBACK win32_open64_file_func (voidpf opaque,const void* filename,int
 }
 
 
-voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int mode)
-{
+voidpf ZCALLBACK win32_open64_file_funcA(voidpf opaque, const void* filename, int mode) {
     const char* mode_fopen = NULL;
     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
     HANDLE hFile = NULL;
@@ -146,8 +139,7 @@ voidpf ZCALLBACK win32_open64_file_funcA (voidpf opaque,const void* filename,int
 }
 
 
-voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int mode)
-{
+voidpf ZCALLBACK win32_open64_file_funcW(voidpf opaque, const void* filename, int mode) {
     const char* mode_fopen = NULL;
     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
     HANDLE hFile = NULL;
@@ -166,8 +158,7 @@ voidpf ZCALLBACK win32_open64_file_funcW (voidpf opaque,const void* filename,int
 }
 
 
-voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mode)
-{
+voidpf ZCALLBACK win32_open_file_func(voidpf opaque, const char* filename, int mode) {
     const char* mode_fopen = NULL;
     DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
     HANDLE hFile = NULL;
@@ -195,8 +186,7 @@ voidpf ZCALLBACK win32_open_file_func (voidpf opaque,const char* filename,int mo
 }
 
 
-uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uLong size)
-{
+uLong ZCALLBACK win32_read_file_func(voidpf opaque, voidpf stream, void* buf,uLong size) {
     uLong ret=0;
     HANDLE hFile = NULL;
     if (stream!=NULL)
@@ -217,8 +207,7 @@ uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void* buf,uL
 }
 
 
-uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* buf,uLong size)
-{
+uLong ZCALLBACK win32_write_file_func(voidpf opaque, voidpf stream, const void* buf, uLong size) {
     uLong ret=0;
     HANDLE hFile = NULL;
     if (stream!=NULL)
@@ -238,8 +227,7 @@ uLong ZCALLBACK win32_write_file_func (voidpf opaque,voidpf stream,const void* b
     return ret;
 }
 
-static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos,  DWORD dwMoveMethod)
-{
+static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *newPos, DWORD dwMoveMethod) {
 #ifdef IOWIN32_USING_WINRT_API
     return SetFilePointerEx(hFile, pos, newPos, dwMoveMethod);
 #else
@@ -258,8 +246,7 @@ static BOOL MySetFilePointerEx(HANDLE hFile, LARGE_INTEGER pos, LARGE_INTEGER *n
 #endif
 }
 
-long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
-{
+long ZCALLBACK win32_tell_file_func(voidpf opaque, voidpf stream) {
     long ret=-1;
     HANDLE hFile = NULL;
     if (stream!=NULL)
@@ -281,8 +268,7 @@ long ZCALLBACK win32_tell_file_func (voidpf opaque,voidpf stream)
     return ret;
 }
 
-ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream)
-{
+ZPOS64_T ZCALLBACK win32_tell64_file_func(voidpf opaque, voidpf stream) {
     ZPOS64_T ret= (ZPOS64_T)-1;
     HANDLE hFile = NULL;
     if (stream!=NULL)
@@ -306,8 +292,7 @@ ZPOS64_T ZCALLBACK win32_tell64_file_func (voidpf opaque, voidpf stream)
 }
 
 
-long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,int origin)
-{
+long ZCALLBACK win32_seek_file_func(voidpf opaque, voidpf stream, uLong offset, int origin) {
     DWORD dwMoveMethod=0xFFFFFFFF;
     HANDLE hFile = NULL;
 
@@ -344,8 +329,7 @@ long ZCALLBACK win32_seek_file_func (voidpf opaque,voidpf stream,uLong offset,in
     return ret;
 }
 
-long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T offset,int origin)
-{
+long ZCALLBACK win32_seek64_file_func(voidpf opaque, voidpf stream, ZPOS64_T offset, int origin) {
     DWORD dwMoveMethod=0xFFFFFFFF;
     HANDLE hFile = NULL;
     long ret=-1;
@@ -383,8 +367,7 @@ long ZCALLBACK win32_seek64_file_func (voidpf opaque, voidpf stream,ZPOS64_T off
     return ret;
 }
 
-int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream)
-{
+int ZCALLBACK win32_close_file_func(voidpf opaque, voidpf stream) {
     int ret=-1;
 
     if (stream!=NULL)
@@ -401,8 +384,7 @@ int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream)
     return ret;
 }
 
-int ZCALLBACK win32_error_file_func (voidpf opaque,voidpf stream)
-{
+int ZCALLBACK win32_error_file_func(voidpf opaque, voidpf stream) {
     int ret=-1;
     if (stream!=NULL)
     {
@@ -411,8 +393,7 @@ int ZCALLBACK win32_error_file_func (voidpf opaque,voidpf stream)
     return ret;
 }
 
-void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def)
-{
+void fill_win32_filefunc(zlib_filefunc_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen_file = win32_open_file_func;
     pzlib_filefunc_def->zread_file = win32_read_file_func;
     pzlib_filefunc_def->zwrite_file = win32_write_file_func;
@@ -423,8 +404,7 @@ void fill_win32_filefunc (zlib_filefunc_def* pzlib_filefunc_def)
     pzlib_filefunc_def->opaque = NULL;
 }
 
-void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def)
-{
+void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen64_file = win32_open64_file_func;
     pzlib_filefunc_def->zread_file = win32_read_file_func;
     pzlib_filefunc_def->zwrite_file = win32_write_file_func;
@@ -436,8 +416,7 @@ void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def)
 }
 
 
-void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def)
-{
+void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen64_file = win32_open64_file_funcA;
     pzlib_filefunc_def->zread_file = win32_read_file_func;
     pzlib_filefunc_def->zwrite_file = win32_write_file_func;
@@ -449,8 +428,7 @@ void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def)
 }
 
 
-void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def)
-{
+void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def) {
     pzlib_filefunc_def->zopen64_file = win32_open64_file_funcW;
     pzlib_filefunc_def->zread_file = win32_read_file_func;
     pzlib_filefunc_def->zwrite_file = win32_write_file_func;
diff --git a/libs/zlib/contrib/minizip/iowin32.h b/libs/zlib/contrib/minizip/iowin32.h
index 0ca0969a7..a23a65d43 100644
--- a/libs/zlib/contrib/minizip/iowin32.h
+++ b/libs/zlib/contrib/minizip/iowin32.h
@@ -18,10 +18,10 @@
 extern "C" {
 #endif
 
-void fill_win32_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));
-void fill_win32_filefunc64 OF((zlib_filefunc64_def* pzlib_filefunc_def));
-void fill_win32_filefunc64A OF((zlib_filefunc64_def* pzlib_filefunc_def));
-void fill_win32_filefunc64W OF((zlib_filefunc64_def* pzlib_filefunc_def));
+void fill_win32_filefunc(zlib_filefunc_def* pzlib_filefunc_def);
+void fill_win32_filefunc64(zlib_filefunc64_def* pzlib_filefunc_def);
+void fill_win32_filefunc64A(zlib_filefunc64_def* pzlib_filefunc_def);
+void fill_win32_filefunc64W(zlib_filefunc64_def* pzlib_filefunc_def);
 
 #ifdef __cplusplus
 }
diff --git a/libs/zlib/contrib/minizip/miniunz.c b/libs/zlib/contrib/minizip/miniunz.c
index 3d65401be..d627c4226 100644
--- a/libs/zlib/contrib/minizip/miniunz.c
+++ b/libs/zlib/contrib/minizip/miniunz.c
@@ -27,7 +27,7 @@
         #endif
 #endif
 
-#ifdef __APPLE__
+#if defined(__APPLE__) || defined(__HAIKU__) || defined(MINIZIP_FOPEN_NO_64)
 // In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
 #define FOPEN_FUNC(filename, mode) fopen(filename, mode)
 #define FTELLO_FUNC(stream) ftello(stream)
@@ -45,6 +45,7 @@
 #include <time.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <sys/stat.h>
 
 #ifdef _WIN32
 # include <direct.h>
@@ -78,13 +79,9 @@
 
 /* change_file_date : change the date/time of a file
     filename : the filename of the file where date/time must be modified
-    dosdate : the new date at the MSDos format (4 bytes)
+    dosdate : the new date at the MSDOS format (4 bytes)
     tmu_date : the SAME new date at the tm_unz format */
-void change_file_date(filename,dosdate,tmu_date)
-    const char *filename;
-    uLong dosdate;
-    tm_unz tmu_date;
-{
+static void change_file_date(const char *filename, uLong dosdate, tm_unz tmu_date) {
 #ifdef _WIN32
   HANDLE hFile;
   FILETIME ftm,ftLocal,ftCreate,ftLastAcc,ftLastWrite;
@@ -97,7 +94,8 @@ void change_file_date(filename,dosdate,tmu_date)
   SetFileTime(hFile,&ftm,&ftLastAcc,&ftm);
   CloseHandle(hFile);
 #else
-#ifdef unix || __APPLE__
+#if defined(unix) || defined(__APPLE__)
+  (void)dosdate;
   struct utimbuf ut;
   struct tm newdate;
   newdate.tm_sec = tmu_date.tm_sec;
@@ -113,6 +111,10 @@ void change_file_date(filename,dosdate,tmu_date)
 
   ut.actime=ut.modtime=mktime(&newdate);
   utime(filename,&ut);
+#else
+  (void)filename;
+  (void)dosdate;
+  (void)tmu_date;
 #endif
 #endif
 }
@@ -121,9 +123,7 @@ void change_file_date(filename,dosdate,tmu_date)
 /* mymkdir and change_file_date are not 100 % portable
    As I don't know well Unix, I wait feedback for the unix portion */
 
-int mymkdir(dirname)
-    const char* dirname;
-{
+static int mymkdir(const char* dirname) {
     int ret=0;
 #ifdef _WIN32
     ret = _mkdir(dirname);
@@ -131,18 +131,18 @@ int mymkdir(dirname)
     ret = mkdir (dirname,0775);
 #elif __APPLE__
     ret = mkdir (dirname,0775);
+#else
+    (void)dirname;
 #endif
     return ret;
 }
 
-int makedir (newdir)
-    char *newdir;
-{
+static int makedir(const char *newdir) {
   char *buffer ;
   char *p;
-  int  len = (int)strlen(newdir);
+  size_t len = strlen(newdir);
 
-  if (len <= 0)
+  if (len == 0)
     return 0;
 
   buffer = (char*)malloc(len+1);
@@ -185,14 +185,12 @@ int makedir (newdir)
   return 1;
 }
 
-void do_banner()
-{
-    printf("MiniUnz 1.01b, demo of zLib + Unz package written by Gilles Vollant\n");
+static void do_banner(void) {
+    printf("MiniUnz 1.1, demo of zLib + Unz package written by Gilles Vollant\n");
     printf("more info at http://www.winimage.com/zLibDll/unzip.html\n\n");
 }
 
-void do_help()
-{
+static void do_help(void) {
     printf("Usage : miniunz [-e] [-x] [-v] [-l] [-o] [-p password] file.zip [file_to_extr.] [-d extractdir]\n\n" \
            "  -e  Extract without pathname (junk paths)\n" \
            "  -x  Extract with pathname\n" \
@@ -200,11 +198,10 @@ void do_help()
            "  -l  list files\n" \
            "  -d  directory to extract into\n" \
            "  -o  overwrite files without prompting\n" \
-           "  -p  extract crypted file using password\n\n");
+           "  -p  extract encrypted file using password\n\n");
 }
 
-void Display64BitsSize(ZPOS64_T n, int size_char)
-{
+static void Display64BitsSize(ZPOS64_T n, int size_char) {
   /* to avoid compatibility problem , we do here the conversion */
   char number[21];
   int offset=19;
@@ -231,9 +228,7 @@ void Display64BitsSize(ZPOS64_T n, int size_char)
   printf("%s",&number[pos_string]);
 }
 
-int do_list(uf)
-    unzFile uf;
-{
+static int do_list(unzFile uf) {
     uLong i;
     unz_global_info64 gi;
     int err;
@@ -248,7 +243,7 @@ int do_list(uf)
         char filename_inzip[256];
         unz_file_info64 file_info;
         uLong ratio=0;
-        const char *string_method;
+        const char *string_method = "";
         char charCrypt=' ';
         err = unzGetCurrentFileInfo64(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0);
         if (err!=UNZ_OK)
@@ -259,7 +254,7 @@ int do_list(uf)
         if (file_info.uncompressed_size>0)
             ratio = (uLong)((file_info.compressed_size*100)/file_info.uncompressed_size);
 
-        /* display a '*' if the file is crypted */
+        /* display a '*' if the file is encrypted */
         if ((file_info.flag & 1) != 0)
             charCrypt='*';
 
@@ -309,12 +304,7 @@ int do_list(uf)
 }
 
 
-int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
-    unzFile uf;
-    const int* popt_extract_without_path;
-    int* popt_overwrite;
-    const char* password;
-{
+static int do_extract_currentfile(unzFile uf, const int* popt_extract_without_path, int* popt_overwrite, const char* password) {
     char filename_inzip[256];
     char* filename_withoutpath;
     char* p;
@@ -324,7 +314,6 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
     uInt size_buf;
 
     unz_file_info64 file_info;
-    uLong ratio=0;
     err = unzGetCurrentFileInfo64(uf,&file_info,filename_inzip,sizeof(filename_inzip),NULL,0,NULL,0);
 
     if (err!=UNZ_OK)
@@ -367,6 +356,20 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
         else
             write_filename = filename_withoutpath;
 
+        if (write_filename[0]!='\0')
+        {
+            const char* relative_check = write_filename;
+            while (relative_check[1]!='\0')
+            {
+                if (relative_check[0]=='.' && relative_check[1]=='.')
+                    write_filename = relative_check;
+                relative_check++;
+            }
+        }
+
+        while (write_filename[0]=='/' || write_filename[0]=='.')
+            write_filename++;
+
         err = unzOpenCurrentFilePassword(uf,password);
         if (err!=UNZ_OK)
         {
@@ -439,7 +442,7 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
                     break;
                 }
                 if (err>0)
-                    if (fwrite(buf,err,1,fout)!=1)
+                    if (fwrite(buf,(unsigned)err,1,fout)!=1)
                     {
                         printf("error in writing extracted file\n");
                         err=UNZ_ERRNO;
@@ -472,16 +475,10 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
 }
 
 
-int do_extract(uf,opt_extract_without_path,opt_overwrite,password)
-    unzFile uf;
-    int opt_extract_without_path;
-    int opt_overwrite;
-    const char* password;
-{
+static int do_extract(unzFile uf, int opt_extract_without_path, int opt_overwrite, const char* password) {
     uLong i;
     unz_global_info64 gi;
     int err;
-    FILE* fout=NULL;
 
     err = unzGetGlobalInfo64(uf,&gi);
     if (err!=UNZ_OK)
@@ -508,14 +505,7 @@ int do_extract(uf,opt_extract_without_path,opt_overwrite,password)
     return 0;
 }
 
-int do_extract_onefile(uf,filename,opt_extract_without_path,opt_overwrite,password)
-    unzFile uf;
-    const char* filename;
-    int opt_extract_without_path;
-    int opt_overwrite;
-    const char* password;
-{
-    int err = UNZ_OK;
+static int do_extract_onefile(unzFile uf, const char* filename, int opt_extract_without_path, int opt_overwrite, const char* password) {
     if (unzLocateFile(uf,filename,CASESENSITIVITY)!=UNZ_OK)
     {
         printf("file %s not found in the zipfile\n",filename);
@@ -531,10 +521,7 @@ int do_extract_onefile(uf,filename,opt_extract_without_path,opt_overwrite,passwo
 }
 
 
-int main(argc,argv)
-    int argc;
-    char *argv[];
-{
+int main(int argc, char *argv[]) {
     const char *zipfilename=NULL;
     const char *filename_to_extract=NULL;
     const char *password=NULL;
@@ -565,7 +552,7 @@ int main(argc,argv)
 
                 while ((*p)!='\0')
                 {
-                    char c=*(p++);;
+                    char c=*(p++);
                     if ((c=='l') || (c=='L'))
                         opt_do_list = 1;
                     if ((c=='v') || (c=='V'))
@@ -607,7 +594,7 @@ int main(argc,argv)
 #        endif
 
         strncpy(filename_try, zipfilename,MAXFILENAME-1);
-        /* strncpy doesnt append the trailing NULL, of the string is too long. */
+        /* strncpy doesn't append the trailing NULL, of the string is too long. */
         filename_try[ MAXFILENAME ] = '\0';
 
 #        ifdef USEWIN32IOAPI
diff --git a/libs/zlib/contrib/minizip/minizip.c b/libs/zlib/contrib/minizip/minizip.c
index 4288962ec..26ee8d029 100644
--- a/libs/zlib/contrib/minizip/minizip.c
+++ b/libs/zlib/contrib/minizip/minizip.c
@@ -28,7 +28,7 @@
         #endif
 #endif
 
-#ifdef __APPLE__
+#if defined(__APPLE__) || defined(__HAIKU__) || defined(MINIZIP_FOPEN_NO_64)
 // In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
 #define FOPEN_FUNC(filename, mode) fopen(filename, mode)
 #define FTELLO_FUNC(stream) ftello(stream)
@@ -71,11 +71,9 @@
 #define MAXFILENAME (256)
 
 #ifdef _WIN32
-uLong filetime(f, tmzip, dt)
-    char *f;                /* name of file to get info on */
-    tm_zip *tmzip;             /* return value: access, modific. and creation times */
-    uLong *dt;             /* dostime */
-{
+/* f: name of file to get info on, tmzip: return value: access,
+   modification and creation times, dt: dostime */
+static int filetime(const char *f, tm_zip *tmzip, uLong *dt) {
   int ret = 0;
   {
       FILETIME ftLocal;
@@ -94,12 +92,11 @@ uLong filetime(f, tmzip, dt)
   return ret;
 }
 #else
-#ifdef unix || __APPLE__
-uLong filetime(f, tmzip, dt)
-    char *f;               /* name of file to get info on */
-    tm_zip *tmzip;         /* return value: access, modific. and creation times */
-    uLong *dt;             /* dostime */
-{
+#if defined(unix) || defined(__APPLE__)
+/* f: name of file to get info on, tmzip: return value: access,
+   modification and creation times, dt: dostime */
+static int filetime(const char *f, tm_zip *tmzip, uLong *dt) {
+  (void)dt;
   int ret=0;
   struct stat s;        /* results of stat() */
   struct tm* filedate;
@@ -108,12 +105,12 @@ uLong filetime(f, tmzip, dt)
   if (strcmp(f,"-")!=0)
   {
     char name[MAXFILENAME+1];
-    int len = strlen(f);
+    size_t len = strlen(f);
     if (len > MAXFILENAME)
       len = MAXFILENAME;
 
     strncpy(name, f,MAXFILENAME-1);
-    /* strncpy doesnt append the trailing NULL, of the string is too long. */
+    /* strncpy doesn't append the trailing NULL, of the string is too long. */
     name[ MAXFILENAME ] = '\0';
 
     if (name[len - 1] == '/')
@@ -137,11 +134,12 @@ uLong filetime(f, tmzip, dt)
   return ret;
 }
 #else
-uLong filetime(f, tmzip, dt)
-    char *f;                /* name of file to get info on */
-    tm_zip *tmzip;             /* return value: access, modific. and creation times */
-    uLong *dt;             /* dostime */
-{
+/* f: name of file to get info on, tmzip: return value: access,
+   modification and creation times, dt: dostime */
+static int filetime(const char *f, tm_zip *tmzip, uLong *dt) {
+    (void)f;
+    (void)tmzip;
+    (void)dt;
     return 0;
 }
 #endif
@@ -150,9 +148,7 @@ uLong filetime(f, tmzip, dt)
 
 
 
-int check_exist_file(filename)
-    const char* filename;
-{
+static int check_exist_file(const char* filename) {
     FILE* ftestexist;
     int ret = 1;
     ftestexist = FOPEN_FUNC(filename,"rb");
@@ -163,14 +159,12 @@ int check_exist_file(filename)
     return ret;
 }
 
-void do_banner()
-{
+static void do_banner(void) {
     printf("MiniZip 1.1, demo of zLib + MiniZip64 package, written by Gilles Vollant\n");
     printf("more info on MiniZip at http://www.winimage.com/zLibDll/minizip.html\n\n");
 }
 
-void do_help()
-{
+static void do_help(void) {
     printf("Usage : minizip [-o] [-a] [-0 to -9] [-p password] [-j] file.zip [files_to_add]\n\n" \
            "  -o  Overwrite existing file.zip\n" \
            "  -a  Append to existing file.zip\n" \
@@ -182,14 +176,13 @@ void do_help()
 
 /* calculate the CRC32 of a file,
    because to encrypt a file, we need known the CRC32 of the file before */
-int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigned long* result_crc)
-{
+static int getFileCrc(const char* filenameinzip, void* buf, unsigned long size_buf, unsigned long* result_crc) {
    unsigned long calculate_crc=0;
    int err=ZIP_OK;
    FILE * fin = FOPEN_FUNC(filenameinzip,"rb");
 
    unsigned long size_read = 0;
-   unsigned long total_read = 0;
+   /* unsigned long total_read = 0; */
    if (fin==NULL)
    {
        err = ZIP_ERRNO;
@@ -199,7 +192,7 @@ int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigne
         do
         {
             err = ZIP_OK;
-            size_read = (int)fread(buf,1,size_buf,fin);
+            size_read = fread(buf,1,size_buf,fin);
             if (size_read < size_buf)
                 if (feof(fin)==0)
             {
@@ -208,8 +201,8 @@ int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigne
             }
 
             if (size_read>0)
-                calculate_crc = crc32(calculate_crc,buf,size_read);
-            total_read += size_read;
+                calculate_crc = crc32_z(calculate_crc,buf,size_read);
+            /* total_read += size_read; */
 
         } while ((err == ZIP_OK) && (size_read>0));
 
@@ -221,18 +214,17 @@ int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigne
     return err;
 }
 
-int isLargeFile(const char* filename)
-{
+static int isLargeFile(const char* filename) {
   int largeFile = 0;
   ZPOS64_T pos = 0;
   FILE* pFile = FOPEN_FUNC(filename, "rb");
 
   if(pFile != NULL)
   {
-    int n = FSEEKO_FUNC(pFile, 0, SEEK_END);
-    pos = FTELLO_FUNC(pFile);
+    FSEEKO_FUNC(pFile, 0, SEEK_END);
+    pos = (ZPOS64_T)FTELLO_FUNC(pFile);
 
-                printf("File : %s is %lld bytes\n", filename, pos);
+                printf("File : %s is %llu bytes\n", filename, pos);
 
     if(pos >= 0xffffffff)
      largeFile = 1;
@@ -243,10 +235,7 @@ int isLargeFile(const char* filename)
  return largeFile;
 }
 
-int main(argc,argv)
-    int argc;
-    char *argv[];
-{
+int main(int argc, char *argv[]) {
     int i;
     int opt_overwrite=0;
     int opt_compress_level=Z_DEFAULT_COMPRESSION;
@@ -255,7 +244,7 @@ int main(argc,argv)
     char filename_try[MAXFILENAME+16];
     int zipok;
     int err=0;
-    int size_buf=0;
+    size_t size_buf=0;
     void* buf=NULL;
     const char* password=NULL;
 
@@ -276,7 +265,7 @@ int main(argc,argv)
 
                 while ((*p)!='\0')
                 {
-                    char c=*(p++);;
+                    char c=*(p++);
                     if ((c=='o') || (c=='O'))
                         opt_overwrite = 1;
                     if ((c=='a') || (c=='A'))
@@ -322,7 +311,7 @@ int main(argc,argv)
 
         zipok = 1 ;
         strncpy(filename_try, argv[zipfilenamearg],MAXFILENAME-1);
-        /* strncpy doesnt append the trailing NULL, of the string is too long. */
+        /* strncpy doesn't append the trailing NULL, of the string is too long. */
         filename_try[ MAXFILENAME ] = '\0';
 
         len=(int)strlen(filename_try);
@@ -392,11 +381,11 @@ int main(argc,argv)
                   ((argv[i][1]=='o') || (argv[i][1]=='O') ||
                    (argv[i][1]=='a') || (argv[i][1]=='A') ||
                    (argv[i][1]=='p') || (argv[i][1]=='P') ||
-                   ((argv[i][1]>='0') || (argv[i][1]<='9'))) &&
+                   ((argv[i][1]>='0') && (argv[i][1]<='9'))) &&
                   (strlen(argv[i]) == 2)))
             {
-                FILE * fin;
-                int size_read;
+                FILE * fin = NULL;
+                size_t size_read;
                 const char* filenameinzip = argv[i];
                 const char *savefilenameinzip;
                 zip_fileinfo zi;
@@ -472,7 +461,7 @@ int main(argc,argv)
                     do
                     {
                         err = ZIP_OK;
-                        size_read = (int)fread(buf,1,size_buf,fin);
+                        size_read = fread(buf,1,size_buf,fin);
                         if (size_read < size_buf)
                             if (feof(fin)==0)
                         {
@@ -482,7 +471,7 @@ int main(argc,argv)
 
                         if (size_read>0)
                         {
-                            err = zipWriteInFileInZip (zf,buf,size_read);
+                            err = zipWriteInFileInZip (zf,buf,(unsigned)size_read);
                             if (err<0)
                             {
                                 printf("error in writing %s in the zipfile\n",
diff --git a/libs/zlib/contrib/minizip/mztools.c b/libs/zlib/contrib/minizip/mztools.c
index 96891c2e0..c8d237561 100644
--- a/libs/zlib/contrib/minizip/mztools.c
+++ b/libs/zlib/contrib/minizip/mztools.c
@@ -27,13 +27,7 @@
   WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \
 } while(0)
 
-extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered)
-const char* file;
-const char* fileOut;
-const char* fileOutTmp;
-uLong* nRecovered;
-uLong* bytesRecovered;
-{
+extern int ZEXPORT unzRepair(const char* file, const char* fileOut, const char* fileOutTmp, uLong* nRecovered, uLong* bytesRecovered) {
   int err = Z_OK;
   FILE* fpZip = fopen(file, "rb");
   FILE* fpOut = fopen(fileOut, "wb");
diff --git a/libs/zlib/contrib/minizip/unzip.c b/libs/zlib/contrib/minizip/unzip.c
index bcfb9416e..ea05b7d62 100644
--- a/libs/zlib/contrib/minizip/unzip.c
+++ b/libs/zlib/contrib/minizip/unzip.c
@@ -49,12 +49,12 @@
         Copyright (C) 2007-2008 Even Rouault
 
 
-        Oct-2009 - Mathias Svensson - Removed cpl_* from symbol names (Even Rouault added them but since this is now moved to a new project (minizip64) I renamed them again).
+  Oct-2009 - Mathias Svensson - Removed cpl_* from symbol names (Even Rouault added them but since this is now moved to a new project (minizip64) I renamed them again).
   Oct-2009 - Mathias Svensson - Fixed problem if uncompressed size was > 4G and compressed size was <4G
                                 should only read the compressed/uncompressed size from the Zip64 format if
                                 the size from normal header was 0xFFFFFFFF
-  Oct-2009 - Mathias Svensson - Applied some bug fixes from paches recived from Gilles Vollant
-        Oct-2009 - Mathias Svensson - Applied support to unzip files with compression mathod BZIP2 (bzip2 lib is required)
+  Oct-2009 - Mathias Svensson - Applied some bug fixes from patches received from Gilles Vollant
+  Oct-2009 - Mathias Svensson - Applied support to unzip files with compression method BZIP2 (bzip2 lib is required)
                                 Patch created by Daniel Borca
 
   Jan-2010 - back to unzip and minizip 1.0 name scheme, with compatibility layer
@@ -77,8 +77,6 @@
 
 #ifdef STDC
 #  include <stddef.h>
-#  include <string.h>
-#  include <stdlib.h>
 #endif
 #ifdef NO_ERRNO_H
     extern int errno;
@@ -111,9 +109,6 @@
 #ifndef ALLOC
 # define ALLOC(size) (malloc(size))
 #endif
-#ifndef TRYFREE
-# define TRYFREE(p) {if (p) free(p);}
-#endif
 
 #define SIZECENTRALDIRITEM (0x2e)
 #define SIZEZIPLOCALHEADER (0x1e)
@@ -122,7 +117,7 @@
 const char unz_copyright[] =
    " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll";
 
-/* unz_file_info_interntal contain internal info about a file in zipfile*/
+/* unz_file_info64_internal contain internal info about a file in zipfile*/
 typedef struct unz_file_info64_internal_s
 {
     ZPOS64_T offset_curfile;/* relative offset of local header 8 bytes */
@@ -153,7 +148,7 @@ typedef struct
     ZPOS64_T rest_read_compressed; /* number of byte to be decompressed */
     ZPOS64_T rest_read_uncompressed;/*number of byte to be obtained after decomp*/
     zlib_filefunc64_32_def z_filefunc;
-    voidpf filestream;        /* io structore of the zipfile */
+    voidpf filestream;        /* io structure of the zipfile */
     uLong compression_method;   /* compression method (0==store) */
     ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
     int   raw;
@@ -166,7 +161,7 @@ typedef struct
 {
     zlib_filefunc64_32_def z_filefunc;
     int is64bitOpenFunction;
-    voidpf filestream;        /* io structore of the zipfile */
+    voidpf filestream;        /* io structure of the zipfile */
     unz_global_info64 gi;       /* public global information */
     ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
     ZPOS64_T num_file;             /* number of the current file in the zipfile*/
@@ -197,29 +192,24 @@ typedef struct
 #include "crypt.h"
 #endif
 
+
 /* ===========================================================================
-     Read a byte from a gz_stream; update next_in and avail_in. Return EOF
-   for end of file.
-   IN assertion: the stream s has been successfully opened for reading.
+   Reads a long in LSB order from the given gz_stream. Sets
 */
 
-
-local int unz64local_getByte OF((
-    const zlib_filefunc64_32_def* pzlib_filefunc_def,
-    voidpf filestream,
-    int *pi));
-
-local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi)
-{
-    unsigned char c;
-    int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,&c,1);
-    if (err==1)
+local int unz64local_getShort(const zlib_filefunc64_32_def* pzlib_filefunc_def,
+                              voidpf filestream,
+                              uLong *pX) {
+    unsigned char c[2];
+    int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,c,2);
+    if (err==2)
     {
-        *pi = (int)c;
+        *pX = c[0] | ((uLong)c[1] << 8);
         return UNZ_OK;
     }
     else
     {
+        *pX = 0;
         if (ZERROR64(*pzlib_filefunc_def,filestream))
             return UNZ_ERRNO;
         else
@@ -227,127 +217,50 @@ local int unz64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, v
     }
 }
 
-
-/* ===========================================================================
-   Reads a long in LSB order from the given gz_stream. Sets
-*/
-local int unz64local_getShort OF((
-    const zlib_filefunc64_32_def* pzlib_filefunc_def,
-    voidpf filestream,
-    uLong *pX));
-
-local int unz64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def,
+local int unz64local_getLong(const zlib_filefunc64_32_def* pzlib_filefunc_def,
                              voidpf filestream,
-                             uLong *pX)
-{
-    uLong x ;
-    int i = 0;
-    int err;
-
-    err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x = (uLong)i;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((uLong)i)<<8;
-
-    if (err==UNZ_OK)
-        *pX = x;
-    else
-        *pX = 0;
-    return err;
-}
-
-local int unz64local_getLong OF((
-    const zlib_filefunc64_32_def* pzlib_filefunc_def,
-    voidpf filestream,
-    uLong *pX));
-
-local int unz64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def,
-                            voidpf filestream,
-                            uLong *pX)
-{
-    uLong x ;
-    int i = 0;
-    int err;
-
-    err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x = (uLong)i;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((uLong)i)<<8;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((uLong)i)<<16;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x += ((uLong)i)<<24;
-
-    if (err==UNZ_OK)
-        *pX = x;
+                             uLong *pX) {
+    unsigned char c[4];
+    int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,c,4);
+    if (err==4)
+    {
+        *pX = c[0] | ((uLong)c[1] << 8) | ((uLong)c[2] << 16) | ((uLong)c[3] << 24);
+        return UNZ_OK;
+    }
     else
+    {
         *pX = 0;
-    return err;
+        if (ZERROR64(*pzlib_filefunc_def,filestream))
+            return UNZ_ERRNO;
+        else
+            return UNZ_EOF;
+    }
 }
 
-local int unz64local_getLong64 OF((
-    const zlib_filefunc64_32_def* pzlib_filefunc_def,
-    voidpf filestream,
-    ZPOS64_T *pX));
-
-
-local int unz64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def,
-                            voidpf filestream,
-                            ZPOS64_T *pX)
-{
-    ZPOS64_T x ;
-    int i = 0;
-    int err;
-
-    err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x = (ZPOS64_T)i;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<8;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<16;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<24;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<32;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<40;
 
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<48;
-
-    if (err==UNZ_OK)
-        err = unz64local_getByte(pzlib_filefunc_def,filestream,&i);
-    x |= ((ZPOS64_T)i)<<56;
-
-    if (err==UNZ_OK)
-        *pX = x;
+local int unz64local_getLong64(const zlib_filefunc64_32_def* pzlib_filefunc_def,
+                               voidpf filestream,
+                               ZPOS64_T *pX) {
+    unsigned char c[8];
+    int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,c,8);
+    if (err==8)
+    {
+        *pX = c[0] | ((ZPOS64_T)c[1] << 8) | ((ZPOS64_T)c[2] << 16) | ((ZPOS64_T)c[3] << 24)
+            | ((ZPOS64_T)c[4] << 32) | ((ZPOS64_T)c[5] << 40) | ((ZPOS64_T)c[6] << 48) | ((ZPOS64_T)c[7] << 56);
+        return UNZ_OK;
+    }
     else
+    {
         *pX = 0;
-    return err;
+        if (ZERROR64(*pzlib_filefunc_def,filestream))
+            return UNZ_ERRNO;
+        else
+            return UNZ_EOF;
+    }
 }
 
 /* My own strcmpi / strcasecmp */
-local int strcmpcasenosensitive_internal (const char* fileName1, const char* fileName2)
-{
+local int strcmpcasenosensitive_internal(const char* fileName1, const char* fileName2) {
     for (;;)
     {
         char c1=*(fileName1++);
@@ -379,19 +292,17 @@ local int strcmpcasenosensitive_internal (const char* fileName1, const char* fil
 #endif
 
 /*
-   Compare two filename (fileName1,fileName2).
-   If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
-   If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
+   Compare two filenames (fileName1,fileName2).
+   If iCaseSensitivity = 1, comparison is case sensitive (like strcmp)
+   If iCaseSensitivity = 2, comparison is not case sensitive (like strcmpi
                                                                 or strcasecmp)
-   If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
+   If iCaseSensitivity = 0, case sensitivity is default of your operating system
         (like 1 on Unix, 2 on Windows)
 
 */
 extern int ZEXPORT unzStringFileNameCompare (const char*  fileName1,
-                                                 const char*  fileName2,
-                                                 int iCaseSensitivity)
-
-{
+                                             const char*  fileName2,
+                                             int iCaseSensitivity) {
     if (iCaseSensitivity==0)
         iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE;
 
@@ -405,21 +316,23 @@ extern int ZEXPORT unzStringFileNameCompare (const char*  fileName1,
 #define BUFREADCOMMENT (0x400)
 #endif
 
+#ifndef CENTRALDIRINVALID
+#define CENTRALDIRINVALID ((ZPOS64_T)(-1))
+#endif
+
 /*
   Locate the Central directory of a zipfile (at the end, just before
     the global comment)
 */
-local ZPOS64_T unz64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream));
-local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)
-{
+local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) {
     unsigned char* buf;
     ZPOS64_T uSizeFile;
     ZPOS64_T uBackRead;
     ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */
-    ZPOS64_T uPosFound=0;
+    ZPOS64_T uPosFound=CENTRALDIRINVALID;
 
     if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0)
-        return 0;
+        return CENTRALDIRINVALID;
 
 
     uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream);
@@ -429,7 +342,7 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
 
     buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4);
     if (buf==NULL)
-        return 0;
+        return CENTRALDIRINVALID;
 
     uBackRead = 4;
     while (uBackRead<uMaxBack)
@@ -455,14 +368,14 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
             if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
                 ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06))
             {
-                uPosFound = uReadPos+i;
+                uPosFound = uReadPos+(unsigned)i;
                 break;
             }
 
-        if (uPosFound!=0)
+        if (uPosFound!=CENTRALDIRINVALID)
             break;
     }
-    TRYFREE(buf);
+    free(buf);
     return uPosFound;
 }
 
@@ -471,23 +384,18 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
   Locate the Central directory 64 of a zipfile (at the end, just before
     the global comment)
 */
-local ZPOS64_T unz64local_SearchCentralDir64 OF((
-    const zlib_filefunc64_32_def* pzlib_filefunc_def,
-    voidpf filestream));
-
 local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def,
-                                      voidpf filestream)
-{
+                                             voidpf filestream) {
     unsigned char* buf;
     ZPOS64_T uSizeFile;
     ZPOS64_T uBackRead;
     ZPOS64_T uMaxBack=0xffff; /* maximum size of global comment */
-    ZPOS64_T uPosFound=0;
+    ZPOS64_T uPosFound=CENTRALDIRINVALID;
     uLong uL;
                 ZPOS64_T relativeOffset;
 
     if (ZSEEK64(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0)
-        return 0;
+        return CENTRALDIRINVALID;
 
 
     uSizeFile = ZTELL64(*pzlib_filefunc_def,filestream);
@@ -497,7 +405,7 @@ local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
 
     buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4);
     if (buf==NULL)
-        return 0;
+        return CENTRALDIRINVALID;
 
     uBackRead = 4;
     while (uBackRead<uMaxBack)
@@ -523,51 +431,51 @@ local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
             if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
                 ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07))
             {
-                uPosFound = uReadPos+i;
+                uPosFound = uReadPos+(unsigned)i;
                 break;
             }
 
-        if (uPosFound!=0)
+        if (uPosFound!=CENTRALDIRINVALID)
             break;
     }
-    TRYFREE(buf);
-    if (uPosFound == 0)
-        return 0;
+    free(buf);
+    if (uPosFound == CENTRALDIRINVALID)
+        return CENTRALDIRINVALID;
 
     /* Zip64 end of central directory locator */
     if (ZSEEK64(*pzlib_filefunc_def,filestream, uPosFound,ZLIB_FILEFUNC_SEEK_SET)!=0)
-        return 0;
+        return CENTRALDIRINVALID;
 
     /* the signature, already checked */
     if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK)
-        return 0;
+        return CENTRALDIRINVALID;
 
-    /* number of the disk with the start of the zip64 end of  central directory */
+    /* number of the disk with the start of the zip64 end of central directory */
     if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK)
-        return 0;
+        return CENTRALDIRINVALID;
     if (uL != 0)
-        return 0;
+        return CENTRALDIRINVALID;
 
     /* relative offset of the zip64 end of central directory record */
     if (unz64local_getLong64(pzlib_filefunc_def,filestream,&relativeOffset)!=UNZ_OK)
-        return 0;
+        return CENTRALDIRINVALID;
 
     /* total number of disks */
     if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK)
-        return 0;
+        return CENTRALDIRINVALID;
     if (uL != 1)
-        return 0;
+        return CENTRALDIRINVALID;
 
     /* Goto end of central directory record */
     if (ZSEEK64(*pzlib_filefunc_def,filestream, relativeOffset,ZLIB_FILEFUNC_SEEK_SET)!=0)
-        return 0;
+        return CENTRALDIRINVALID;
 
      /* the signature */
     if (unz64local_getLong(pzlib_filefunc_def,filestream,&uL)!=UNZ_OK)
-        return 0;
+        return CENTRALDIRINVALID;
 
     if (uL != 0x06064b50)
-        return 0;
+        return CENTRALDIRINVALID;
 
     return relativeOffset;
 }
@@ -581,19 +489,18 @@ local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
      Else, the return value is a unzFile Handle, usable with other function
        of this unzip package.
 */
-local unzFile unzOpenInternal (const void *path,
-                               zlib_filefunc64_32_def* pzlib_filefunc64_32_def,
-                               int is64bitOpenFunction)
-{
+local unzFile unzOpenInternal(const void *path,
+                              zlib_filefunc64_32_def* pzlib_filefunc64_32_def,
+                              int is64bitOpenFunction) {
     unz64_s us;
     unz64_s *s;
     ZPOS64_T central_pos;
     uLong   uL;
 
-    uLong number_disk;          /* number of the current dist, used for
-                                   spaning ZIP, unsupported, always 0*/
-    uLong number_disk_with_CD;  /* number the the disk with central dir, used
-                                   for spaning ZIP, unsupported, always 0*/
+    uLong number_disk;          /* number of the current disk, used for
+                                   spanning ZIP, unsupported, always 0*/
+    uLong number_disk_with_CD;  /* number the disk with central dir, used
+                                   for spanning ZIP, unsupported, always 0*/
     ZPOS64_T number_entry_CD;      /* total number of entries in
                                    the central dir
                                    (same than number_entry on nospan) */
@@ -621,7 +528,7 @@ local unzFile unzOpenInternal (const void *path,
         return NULL;
 
     central_pos = unz64local_SearchCentralDir64(&us.z_filefunc,us.filestream);
-    if (central_pos)
+    if (central_pos!=CENTRALDIRINVALID)
     {
         uLong uS;
         ZPOS64_T uL64;
@@ -683,7 +590,7 @@ local unzFile unzOpenInternal (const void *path,
     else
     {
         central_pos = unz64local_SearchCentralDir(&us.z_filefunc,us.filestream);
-        if (central_pos==0)
+        if (central_pos==CENTRALDIRINVALID)
             err=UNZ_ERRNO;
 
         us.isZip64 = 0;
@@ -762,9 +669,8 @@ local unzFile unzOpenInternal (const void *path,
 }
 
 
-extern unzFile ZEXPORT unzOpen2 (const char *path,
-                                        zlib_filefunc_def* pzlib_filefunc32_def)
-{
+extern unzFile ZEXPORT unzOpen2(const char *path,
+                                zlib_filefunc_def* pzlib_filefunc32_def) {
     if (pzlib_filefunc32_def != NULL)
     {
         zlib_filefunc64_32_def zlib_filefunc64_32_def_fill;
@@ -775,9 +681,8 @@ extern unzFile ZEXPORT unzOpen2 (const char *path,
         return unzOpenInternal(path, NULL, 0);
 }
 
-extern unzFile ZEXPORT unzOpen2_64 (const void *path,
-                                     zlib_filefunc64_def* pzlib_filefunc_def)
-{
+extern unzFile ZEXPORT unzOpen2_64(const void *path,
+                                   zlib_filefunc64_def* pzlib_filefunc_def) {
     if (pzlib_filefunc_def != NULL)
     {
         zlib_filefunc64_32_def zlib_filefunc64_32_def_fill;
@@ -790,13 +695,11 @@ extern unzFile ZEXPORT unzOpen2_64 (const void *path,
         return unzOpenInternal(path, NULL, 1);
 }
 
-extern unzFile ZEXPORT unzOpen (const char *path)
-{
+extern unzFile ZEXPORT unzOpen(const char *path) {
     return unzOpenInternal(path, NULL, 0);
 }
 
-extern unzFile ZEXPORT unzOpen64 (const void *path)
-{
+extern unzFile ZEXPORT unzOpen64(const void *path) {
     return unzOpenInternal(path, NULL, 1);
 }
 
@@ -805,8 +708,7 @@ extern unzFile ZEXPORT unzOpen64 (const void *path)
   If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
     these files MUST be closed with unzCloseCurrentFile before call unzClose.
   return UNZ_OK if there is no problem. */
-extern int ZEXPORT unzClose (unzFile file)
-{
+extern int ZEXPORT unzClose(unzFile file) {
     unz64_s* s;
     if (file==NULL)
         return UNZ_PARAMERROR;
@@ -816,7 +718,7 @@ extern int ZEXPORT unzClose (unzFile file)
         unzCloseCurrentFile(file);
 
     ZCLOSE64(s->z_filefunc, s->filestream);
-    TRYFREE(s);
+    free(s);
     return UNZ_OK;
 }
 
@@ -825,8 +727,7 @@ extern int ZEXPORT unzClose (unzFile file)
   Write info about the ZipFile in the *pglobal_info structure.
   No preparation of the structure is needed
   return UNZ_OK if there is no problem. */
-extern int ZEXPORT unzGetGlobalInfo64 (unzFile file, unz_global_info64* pglobal_info)
-{
+extern int ZEXPORT unzGetGlobalInfo64(unzFile file, unz_global_info64* pglobal_info) {
     unz64_s* s;
     if (file==NULL)
         return UNZ_PARAMERROR;
@@ -835,8 +736,7 @@ extern int ZEXPORT unzGetGlobalInfo64 (unzFile file, unz_global_info64* pglobal_
     return UNZ_OK;
 }
 
-extern int ZEXPORT unzGetGlobalInfo (unzFile file, unz_global_info* pglobal_info32)
-{
+extern int ZEXPORT unzGetGlobalInfo(unzFile file, unz_global_info* pglobal_info32) {
     unz64_s* s;
     if (file==NULL)
         return UNZ_PARAMERROR;
@@ -847,46 +747,33 @@ extern int ZEXPORT unzGetGlobalInfo (unzFile file, unz_global_info* pglobal_info
     return UNZ_OK;
 }
 /*
-   Translate date/time from Dos format to tm_unz (readable more easilty)
+   Translate date/time from Dos format to tm_unz (readable more easily)
 */
-local void unz64local_DosDateToTmuDate (ZPOS64_T ulDosDate, tm_unz* ptm)
-{
+local void unz64local_DosDateToTmuDate(ZPOS64_T ulDosDate, tm_unz* ptm) {
     ZPOS64_T uDate;
     uDate = (ZPOS64_T)(ulDosDate>>16);
-    ptm->tm_mday = (uInt)(uDate&0x1f) ;
-    ptm->tm_mon =  (uInt)((((uDate)&0x1E0)/0x20)-1) ;
-    ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ;
+    ptm->tm_mday = (int)(uDate&0x1f) ;
+    ptm->tm_mon =  (int)((((uDate)&0x1E0)/0x20)-1) ;
+    ptm->tm_year = (int)(((uDate&0x0FE00)/0x0200)+1980) ;
 
-    ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800);
-    ptm->tm_min =  (uInt) ((ulDosDate&0x7E0)/0x20) ;
-    ptm->tm_sec =  (uInt) (2*(ulDosDate&0x1f)) ;
+    ptm->tm_hour = (int) ((ulDosDate &0xF800)/0x800);
+    ptm->tm_min =  (int) ((ulDosDate&0x7E0)/0x20) ;
+    ptm->tm_sec =  (int) (2*(ulDosDate&0x1f)) ;
 }
 
 /*
   Get Info about the current file in the zipfile, with internal only info
 */
-local int unz64local_GetCurrentFileInfoInternal OF((unzFile file,
-                                                  unz_file_info64 *pfile_info,
-                                                  unz_file_info64_internal
-                                                  *pfile_info_internal,
-                                                  char *szFileName,
-                                                  uLong fileNameBufferSize,
-                                                  void *extraField,
-                                                  uLong extraFieldBufferSize,
-                                                  char *szComment,
-                                                  uLong commentBufferSize));
-
-local int unz64local_GetCurrentFileInfoInternal (unzFile file,
-                                                  unz_file_info64 *pfile_info,
-                                                  unz_file_info64_internal
-                                                  *pfile_info_internal,
-                                                  char *szFileName,
-                                                  uLong fileNameBufferSize,
-                                                  void *extraField,
-                                                  uLong extraFieldBufferSize,
-                                                  char *szComment,
-                                                  uLong commentBufferSize)
-{
+local int unz64local_GetCurrentFileInfoInternal(unzFile file,
+                                                unz_file_info64 *pfile_info,
+                                                unz_file_info64_internal
+                                                *pfile_info_internal,
+                                                char *szFileName,
+                                                uLong fileNameBufferSize,
+                                                void *extraField,
+                                                uLong extraFieldBufferSize,
+                                                char *szComment,
+                                                uLong commentBufferSize) {
     unz64_s* s;
     unz_file_info64 file_info;
     unz_file_info64_internal file_info_internal;
@@ -993,7 +880,7 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
 
         if (lSeek!=0)
         {
-            if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+            if (ZSEEK64(s->z_filefunc, s->filestream,(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
                 lSeek=0;
             else
                 err=UNZ_ERRNO;
@@ -1018,7 +905,7 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
 
         if (lSeek!=0)
         {
-            if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+            if (ZSEEK64(s->z_filefunc, s->filestream,(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
                 lSeek=0;
             else
                 err=UNZ_ERRNO;
@@ -1038,33 +925,31 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
             /* ZIP64 extra fields */
             if (headerId == 0x0001)
             {
-                                                        uLong uL;
-
-                                                                if(file_info.uncompressed_size == MAXU32)
-                                                                {
-                                                                        if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK)
-                                                                                        err=UNZ_ERRNO;
-                                                                }
-
-                                                                if(file_info.compressed_size == MAXU32)
-                                                                {
-                                                                        if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK)
-                                                                                  err=UNZ_ERRNO;
-                                                                }
-
-                                                                if(file_info_internal.offset_curfile == MAXU32)
-                                                                {
-                                                                        /* Relative Header offset */
-                                                                        if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK)
-                                                                                err=UNZ_ERRNO;
-                                                                }
-
-                                                                if(file_info.disk_num_start == MAXU32)
-                                                                {
-                                                                        /* Disk Start Number */
-                                                                        if (unz64local_getLong(&s->z_filefunc, s->filestream,&uL) != UNZ_OK)
-                                                                                err=UNZ_ERRNO;
-                                                                }
+                if(file_info.uncompressed_size == MAXU32)
+                {
+                    if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK)
+                        err=UNZ_ERRNO;
+                }
+
+                if(file_info.compressed_size == MAXU32)
+                {
+                    if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK)
+                        err=UNZ_ERRNO;
+                }
+
+                if(file_info_internal.offset_curfile == MAXU32)
+                {
+                    /* Relative Header offset */
+                    if (unz64local_getLong64(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK)
+                        err=UNZ_ERRNO;
+                }
+
+                if(file_info.disk_num_start == 0xffff)
+                {
+                    /* Disk Start Number */
+                    if (unz64local_getLong(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK)
+                        err=UNZ_ERRNO;
+                }
 
             }
             else
@@ -1090,7 +975,7 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
 
         if (lSeek!=0)
         {
-            if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+            if (ZSEEK64(s->z_filefunc, s->filestream,(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
                 lSeek=0;
             else
                 err=UNZ_ERRNO;
@@ -1121,24 +1006,22 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
   No preparation of the structure is needed
   return UNZ_OK if there is no problem.
 */
-extern int ZEXPORT unzGetCurrentFileInfo64 (unzFile file,
-                                          unz_file_info64 * pfile_info,
-                                          char * szFileName, uLong fileNameBufferSize,
-                                          void *extraField, uLong extraFieldBufferSize,
-                                          char* szComment,  uLong commentBufferSize)
-{
+extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file,
+                                           unz_file_info64 * pfile_info,
+                                           char * szFileName, uLong fileNameBufferSize,
+                                           void *extraField, uLong extraFieldBufferSize,
+                                           char* szComment,  uLong commentBufferSize) {
     return unz64local_GetCurrentFileInfoInternal(file,pfile_info,NULL,
-                                                szFileName,fileNameBufferSize,
-                                                extraField,extraFieldBufferSize,
-                                                szComment,commentBufferSize);
+                                                 szFileName,fileNameBufferSize,
+                                                 extraField,extraFieldBufferSize,
+                                                 szComment,commentBufferSize);
 }
 
-extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
-                                          unz_file_info * pfile_info,
-                                          char * szFileName, uLong fileNameBufferSize,
-                                          void *extraField, uLong extraFieldBufferSize,
-                                          char* szComment,  uLong commentBufferSize)
-{
+extern int ZEXPORT unzGetCurrentFileInfo(unzFile file,
+                                         unz_file_info * pfile_info,
+                                         char * szFileName, uLong fileNameBufferSize,
+                                         void *extraField, uLong extraFieldBufferSize,
+                                         char* szComment,  uLong commentBufferSize) {
     int err;
     unz_file_info64 file_info64;
     err = unz64local_GetCurrentFileInfoInternal(file,&file_info64,NULL,
@@ -1162,7 +1045,7 @@ extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
         pfile_info->internal_fa = file_info64.internal_fa;
         pfile_info->external_fa = file_info64.external_fa;
 
-        pfile_info->tmu_date = file_info64.tmu_date,
+        pfile_info->tmu_date = file_info64.tmu_date;
 
 
         pfile_info->compressed_size = (uLong)file_info64.compressed_size;
@@ -1175,8 +1058,7 @@ extern int ZEXPORT unzGetCurrentFileInfo (unzFile file,
   Set the current file of the zipfile to the first file.
   return UNZ_OK if there is no problem
 */
-extern int ZEXPORT unzGoToFirstFile (unzFile file)
-{
+extern int ZEXPORT unzGoToFirstFile(unzFile file) {
     int err=UNZ_OK;
     unz64_s* s;
     if (file==NULL)
@@ -1196,8 +1078,7 @@ extern int ZEXPORT unzGoToFirstFile (unzFile file)
   return UNZ_OK if there is no problem
   return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
 */
-extern int ZEXPORT unzGoToNextFile (unzFile  file)
-{
+extern int ZEXPORT unzGoToNextFile(unzFile file) {
     unz64_s* s;
     int err;
 
@@ -1229,8 +1110,7 @@ extern int ZEXPORT unzGoToNextFile (unzFile  file)
   UNZ_OK if the file is found. It becomes the current file.
   UNZ_END_OF_LIST_OF_FILE if the file is not found
 */
-extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCaseSensitivity)
-{
+extern int ZEXPORT unzLocateFile(unzFile file, const char *szFileName, int iCaseSensitivity) {
     unz64_s* s;
     int err;
 
@@ -1305,8 +1185,7 @@ typedef struct unz_file_pos_s
 } unz_file_pos;
 */
 
-extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos*  file_pos)
-{
+extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos* file_pos) {
     unz64_s* s;
 
     if (file==NULL || file_pos==NULL)
@@ -1321,10 +1200,7 @@ extern int ZEXPORT unzGetFilePos64(unzFile file, unz64_file_pos*  file_pos)
     return UNZ_OK;
 }
 
-extern int ZEXPORT unzGetFilePos(
-    unzFile file,
-    unz_file_pos* file_pos)
-{
+extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos* file_pos) {
     unz64_file_pos file_pos64;
     int err = unzGetFilePos64(file,&file_pos64);
     if (err==UNZ_OK)
@@ -1335,8 +1211,7 @@ extern int ZEXPORT unzGetFilePos(
     return err;
 }
 
-extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos)
-{
+extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos) {
     unz64_s* s;
     int err;
 
@@ -1357,10 +1232,7 @@ extern int ZEXPORT unzGoToFilePos64(unzFile file, const unz64_file_pos* file_pos
     return err;
 }
 
-extern int ZEXPORT unzGoToFilePos(
-    unzFile file,
-    unz_file_pos* file_pos)
-{
+extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos* file_pos) {
     unz64_file_pos file_pos64;
     if (file_pos == NULL)
         return UNZ_PARAMERROR;
@@ -1382,10 +1254,9 @@ extern int ZEXPORT unzGoToFilePos(
   store in *piSizeVar the size of extra info in local header
         (filename and size of extra field data)
 */
-local int unz64local_CheckCurrentFileCoherencyHeader (unz64_s* s, uInt* piSizeVar,
-                                                    ZPOS64_T * poffset_local_extrafield,
-                                                    uInt  * psize_local_extrafield)
-{
+local int unz64local_CheckCurrentFileCoherencyHeader(unz64_s* s, uInt* piSizeVar,
+                                                     ZPOS64_T * poffset_local_extrafield,
+                                                     uInt  * psize_local_extrafield) {
     uLong uMagic,uData,uFlags;
     uLong size_filename;
     uLong size_extra_field;
@@ -1469,9 +1340,8 @@ local int unz64local_CheckCurrentFileCoherencyHeader (unz64_s* s, uInt* piSizeVa
   Open for reading data the current file in the zipfile.
   If there is no error and the file is opened, the return value is UNZ_OK.
 */
-extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
-                                            int* level, int raw, const char* password)
-{
+extern int ZEXPORT unzOpenCurrentFile3(unzFile file, int* method,
+                                       int* level, int raw, const char* password) {
     int err=UNZ_OK;
     uInt iSizeVar;
     unz64_s* s;
@@ -1509,7 +1379,7 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
 
     if (pfile_in_zip_read_info->read_buffer==NULL)
     {
-        TRYFREE(pfile_in_zip_read_info);
+        free(pfile_in_zip_read_info);
         return UNZ_INTERNALERROR;
     }
 
@@ -1566,7 +1436,8 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
         pfile_in_zip_read_info->stream_initialised=Z_BZIP2ED;
       else
       {
-        TRYFREE(pfile_in_zip_read_info);
+        free(pfile_in_zip_read_info->read_buffer);
+        free(pfile_in_zip_read_info);
         return err;
       }
 #else
@@ -1586,7 +1457,8 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
         pfile_in_zip_read_info->stream_initialised=Z_DEFLATED;
       else
       {
-        TRYFREE(pfile_in_zip_read_info);
+        free(pfile_in_zip_read_info->read_buffer);
+        free(pfile_in_zip_read_info);
         return err;
       }
         /* windowBits is passed < 0 to tell that there is no zlib header.
@@ -1638,25 +1510,21 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
     return UNZ_OK;
 }
 
-extern int ZEXPORT unzOpenCurrentFile (unzFile file)
-{
+extern int ZEXPORT unzOpenCurrentFile(unzFile file) {
     return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
 }
 
-extern int ZEXPORT unzOpenCurrentFilePassword (unzFile file, const char*  password)
-{
+extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file, const char* password) {
     return unzOpenCurrentFile3(file, NULL, NULL, 0, password);
 }
 
-extern int ZEXPORT unzOpenCurrentFile2 (unzFile file, int* method, int* level, int raw)
-{
+extern int ZEXPORT unzOpenCurrentFile2(unzFile file, int* method, int* level, int raw) {
     return unzOpenCurrentFile3(file, method, level, raw, NULL);
 }
 
 /** Addition for GDAL : START */
 
-extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64( unzFile file)
-{
+extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64(unzFile file) {
     unz64_s* s;
     file_in_zip64_read_info_s* pfile_in_zip_read_info;
     s=(unz64_s*)file;
@@ -1676,13 +1544,12 @@ extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64( unzFile file)
   buf contain buffer where data must be copied
   len the size of buf.
 
-  return the number of byte copied if somes bytes are copied
+  return the number of byte copied if some bytes are copied
   return 0 if the end of file was reached
   return <0 with error code if there is an error
     (UNZ_ERRNO for IO error, or zLib error for uncompress error)
 */
-extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
-{
+extern int ZEXPORT unzReadCurrentFile(unzFile file, voidp buf, unsigned len) {
     int err=UNZ_OK;
     uInt iRead = 0;
     unz64_s* s;
@@ -1767,7 +1634,7 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
 
             if ((pfile_in_zip_read_info->stream.avail_in == 0) &&
                 (pfile_in_zip_read_info->rest_read_compressed == 0))
-                return (iRead==0) ? UNZ_EOF : iRead;
+                return (iRead==0) ? UNZ_EOF : (int)iRead;
 
             if (pfile_in_zip_read_info->stream.avail_out <
                             pfile_in_zip_read_info->stream.avail_in)
@@ -1857,6 +1724,9 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
               err = Z_DATA_ERROR;
 
             uTotalOutAfter = pfile_in_zip_read_info->stream.total_out;
+            /* Detect overflow, because z_stream.total_out is uLong (32 bits) */
+            if (uTotalOutAfter<uTotalOutBefore)
+                uTotalOutAfter += 1LL << 32; /* Add maximum value of uLong + 1 */
             uOutThis = uTotalOutAfter-uTotalOutBefore;
 
             pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis;
@@ -1871,14 +1741,14 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
             iRead += (uInt)(uTotalOutAfter - uTotalOutBefore);
 
             if (err==Z_STREAM_END)
-                return (iRead==0) ? UNZ_EOF : iRead;
+                return (iRead==0) ? UNZ_EOF : (int)iRead;
             if (err!=Z_OK)
                 break;
         }
     }
 
     if (err==Z_OK)
-        return iRead;
+        return (int)iRead;
     return err;
 }
 
@@ -1886,8 +1756,7 @@ extern int ZEXPORT unzReadCurrentFile  (unzFile file, voidp buf, unsigned len)
 /*
   Give the current position in uncompressed data
 */
-extern z_off_t ZEXPORT unztell (unzFile file)
-{
+extern z_off_t ZEXPORT unztell(unzFile file) {
     unz64_s* s;
     file_in_zip64_read_info_s* pfile_in_zip_read_info;
     if (file==NULL)
@@ -1901,8 +1770,7 @@ extern z_off_t ZEXPORT unztell (unzFile file)
     return (z_off_t)pfile_in_zip_read_info->stream.total_out;
 }
 
-extern ZPOS64_T ZEXPORT unztell64 (unzFile file)
-{
+extern ZPOS64_T ZEXPORT unztell64(unzFile file) {
 
     unz64_s* s;
     file_in_zip64_read_info_s* pfile_in_zip_read_info;
@@ -1921,8 +1789,7 @@ extern ZPOS64_T ZEXPORT unztell64 (unzFile file)
 /*
   return 1 if the end of file was reached, 0 elsewhere
 */
-extern int ZEXPORT unzeof (unzFile file)
-{
+extern int ZEXPORT unzeof(unzFile file) {
     unz64_s* s;
     file_in_zip64_read_info_s* pfile_in_zip_read_info;
     if (file==NULL)
@@ -1953,8 +1820,7 @@ more info in the local-header version than in the central-header)
   the return value is the number of bytes copied in buf, or (if <0)
     the error code
 */
-extern int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf, unsigned len)
-{
+extern int ZEXPORT unzGetLocalExtrafield(unzFile file, voidp buf, unsigned len) {
     unz64_s* s;
     file_in_zip64_read_info_s* pfile_in_zip_read_info;
     uInt read_now;
@@ -2001,8 +1867,7 @@ extern int ZEXPORT unzGetLocalExtrafield (unzFile file, voidp buf, unsigned len)
   Close the file in zip opened with unzOpenCurrentFile
   Return UNZ_CRCERROR if all the file was read but the CRC is not good
 */
-extern int ZEXPORT unzCloseCurrentFile (unzFile file)
-{
+extern int ZEXPORT unzCloseCurrentFile(unzFile file) {
     int err=UNZ_OK;
 
     unz64_s* s;
@@ -2024,7 +1889,7 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
     }
 
 
-    TRYFREE(pfile_in_zip_read_info->read_buffer);
+    free(pfile_in_zip_read_info->read_buffer);
     pfile_in_zip_read_info->read_buffer = NULL;
     if (pfile_in_zip_read_info->stream_initialised == Z_DEFLATED)
         inflateEnd(&pfile_in_zip_read_info->stream);
@@ -2035,7 +1900,7 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
 
 
     pfile_in_zip_read_info->stream_initialised = 0;
-    TRYFREE(pfile_in_zip_read_info);
+    free(pfile_in_zip_read_info);
 
     s->pfile_in_zip_read=NULL;
 
@@ -2048,8 +1913,7 @@ extern int ZEXPORT unzCloseCurrentFile (unzFile file)
   uSizeBuf is the size of the szComment buffer.
   return the number of byte copied or an error code <0
 */
-extern int ZEXPORT unzGetGlobalComment (unzFile file, char * szComment, uLong uSizeBuf)
-{
+extern int ZEXPORT unzGetGlobalComment(unzFile file, char * szComment, uLong uSizeBuf) {
     unz64_s* s;
     uLong uReadThis ;
     if (file==NULL)
@@ -2076,8 +1940,7 @@ extern int ZEXPORT unzGetGlobalComment (unzFile file, char * szComment, uLong uS
 }
 
 /* Additions by RX '2004 */
-extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file)
-{
+extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file) {
     unz64_s* s;
 
     if (file==NULL)
@@ -2091,8 +1954,7 @@ extern ZPOS64_T ZEXPORT unzGetOffset64(unzFile file)
     return s->pos_in_central_dir;
 }
 
-extern uLong ZEXPORT unzGetOffset (unzFile file)
-{
+extern uLong ZEXPORT unzGetOffset(unzFile file) {
     ZPOS64_T offset64;
 
     if (file==NULL)
@@ -2101,8 +1963,7 @@ extern uLong ZEXPORT unzGetOffset (unzFile file)
     return (uLong)offset64;
 }
 
-extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos)
-{
+extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos) {
     unz64_s* s;
     int err;
 
@@ -2119,7 +1980,6 @@ extern int ZEXPORT unzSetOffset64(unzFile file, ZPOS64_T pos)
     return err;
 }
 
-extern int ZEXPORT unzSetOffset (unzFile file, uLong pos)
-{
+extern int ZEXPORT unzSetOffset (unzFile file, uLong pos) {
     return unzSetOffset64(file,pos);
 }
diff --git a/libs/zlib/contrib/minizip/unzip.h b/libs/zlib/contrib/minizip/unzip.h
index 2104e3915..5cfc9c627 100644
--- a/libs/zlib/contrib/minizip/unzip.h
+++ b/libs/zlib/contrib/minizip/unzip.h
@@ -83,12 +83,12 @@ typedef voidp unzFile;
 /* tm_unz contain date/time info */
 typedef struct tm_unz_s
 {
-    uInt tm_sec;            /* seconds after the minute - [0,59] */
-    uInt tm_min;            /* minutes after the hour - [0,59] */
-    uInt tm_hour;           /* hours since midnight - [0,23] */
-    uInt tm_mday;           /* day of the month - [1,31] */
-    uInt tm_mon;            /* months since January - [0,11] */
-    uInt tm_year;           /* years - [1980..2044] */
+    int tm_sec;             /* seconds after the minute - [0,59] */
+    int tm_min;             /* minutes after the hour - [0,59] */
+    int tm_hour;            /* hours since midnight - [0,23] */
+    int tm_mday;            /* day of the month - [1,31] */
+    int tm_mon;             /* months since January - [0,11] */
+    int tm_year;            /* years - [1980..2044] */
 } tm_unz;
 
 /* unz_global_info structure contain global data about the ZIPfile
@@ -150,21 +150,21 @@ typedef struct unz_file_info_s
     tm_unz tmu_date;
 } unz_file_info;
 
-extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1,
-                                                 const char* fileName2,
-                                                 int iCaseSensitivity));
+extern int ZEXPORT unzStringFileNameCompare(const char* fileName1,
+                                            const char* fileName2,
+                                            int iCaseSensitivity);
 /*
-   Compare two filename (fileName1,fileName2).
-   If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
-   If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
+   Compare two filenames (fileName1,fileName2).
+   If iCaseSensitivity = 1, comparison is case sensitive (like strcmp)
+   If iCaseSensitivity = 2, comparison is not case sensitive (like strcmpi
                                 or strcasecmp)
-   If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
+   If iCaseSensitivity = 0, case sensitivity is default of your operating system
     (like 1 on Unix, 2 on Windows)
 */
 
 
-extern unzFile ZEXPORT unzOpen OF((const char *path));
-extern unzFile ZEXPORT unzOpen64 OF((const void *path));
+extern unzFile ZEXPORT unzOpen(const char *path);
+extern unzFile ZEXPORT unzOpen64(const void *path);
 /*
   Open a Zip file. path contain the full pathname (by example,
      on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer
@@ -181,41 +181,41 @@ extern unzFile ZEXPORT unzOpen64 OF((const void *path));
 */
 
 
-extern unzFile ZEXPORT unzOpen2 OF((const char *path,
-                                    zlib_filefunc_def* pzlib_filefunc_def));
+extern unzFile ZEXPORT unzOpen2(const char *path,
+                                zlib_filefunc_def* pzlib_filefunc_def);
 /*
    Open a Zip file, like unzOpen, but provide a set of file low level API
       for read/write the zip file (see ioapi.h)
 */
 
-extern unzFile ZEXPORT unzOpen2_64 OF((const void *path,
-                                    zlib_filefunc64_def* pzlib_filefunc_def));
+extern unzFile ZEXPORT unzOpen2_64(const void *path,
+                                   zlib_filefunc64_def* pzlib_filefunc_def);
 /*
    Open a Zip file, like unz64Open, but provide a set of file low level API
       for read/write the zip file (see ioapi.h)
 */
 
-extern int ZEXPORT unzClose OF((unzFile file));
+extern int ZEXPORT unzClose(unzFile file);
 /*
   Close a ZipFile opened with unzOpen.
   If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
     these files MUST be closed with unzCloseCurrentFile before call unzClose.
   return UNZ_OK if there is no problem. */
 
-extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
-                                        unz_global_info *pglobal_info));
+extern int ZEXPORT unzGetGlobalInfo(unzFile file,
+                                    unz_global_info *pglobal_info);
 
-extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file,
-                                        unz_global_info64 *pglobal_info));
+extern int ZEXPORT unzGetGlobalInfo64(unzFile file,
+                                      unz_global_info64 *pglobal_info);
 /*
   Write info about the ZipFile in the *pglobal_info structure.
   No preparation of the structure is needed
   return UNZ_OK if there is no problem. */
 
 
-extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
-                                           char *szComment,
-                                           uLong uSizeBuf));
+extern int ZEXPORT unzGetGlobalComment(unzFile file,
+                                       char *szComment,
+                                       uLong uSizeBuf);
 /*
   Get the global comment string of the ZipFile, in the szComment buffer.
   uSizeBuf is the size of the szComment buffer.
@@ -226,22 +226,22 @@ extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
 /***************************************************************************/
 /* Unzip package allow you browse the directory of the zipfile */
 
-extern int ZEXPORT unzGoToFirstFile OF((unzFile file));
+extern int ZEXPORT unzGoToFirstFile(unzFile file);
 /*
   Set the current file of the zipfile to the first file.
   return UNZ_OK if there is no problem
 */
 
-extern int ZEXPORT unzGoToNextFile OF((unzFile file));
+extern int ZEXPORT unzGoToNextFile(unzFile file);
 /*
   Set the current file of the zipfile to the next file.
   return UNZ_OK if there is no problem
   return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
 */
 
-extern int ZEXPORT unzLocateFile OF((unzFile file,
-                     const char *szFileName,
-                     int iCaseSensitivity));
+extern int ZEXPORT unzLocateFile(unzFile file,
+                                 const char *szFileName,
+                                 int iCaseSensitivity);
 /*
   Try locate the file szFileName in the zipfile.
   For the iCaseSensitivity signification, see unzStringFileNameCompare
@@ -285,28 +285,28 @@ extern int ZEXPORT unzGoToFilePos64(
 
 /* ****************************************** */
 
-extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file,
-                         unz_file_info64 *pfile_info,
-                         char *szFileName,
-                         uLong fileNameBufferSize,
-                         void *extraField,
-                         uLong extraFieldBufferSize,
-                         char *szComment,
-                         uLong commentBufferSize));
-
-extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
-                         unz_file_info *pfile_info,
-                         char *szFileName,
-                         uLong fileNameBufferSize,
-                         void *extraField,
-                         uLong extraFieldBufferSize,
-                         char *szComment,
-                         uLong commentBufferSize));
+extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file,
+                                           unz_file_info64 *pfile_info,
+                                           char *szFileName,
+                                           uLong fileNameBufferSize,
+                                           void *extraField,
+                                           uLong extraFieldBufferSize,
+                                           char *szComment,
+                                           uLong commentBufferSize);
+
+extern int ZEXPORT unzGetCurrentFileInfo(unzFile file,
+                                         unz_file_info *pfile_info,
+                                         char *szFileName,
+                                         uLong fileNameBufferSize,
+                                         void *extraField,
+                                         uLong extraFieldBufferSize,
+                                         char *szComment,
+                                         uLong commentBufferSize);
 /*
   Get Info about the current file
-  if pfile_info!=NULL, the *pfile_info structure will contain somes info about
+  if pfile_info!=NULL, the *pfile_info structure will contain some info about
         the current file
-  if szFileName!=NULL, the filemane string will be copied in szFileName
+  if szFileName!=NULL, the filename string will be copied in szFileName
             (fileNameBufferSize is the size of the buffer)
   if extraField!=NULL, the extra field information will be copied in extraField
             (extraFieldBufferSize is the size of the buffer).
@@ -318,7 +318,7 @@ extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
 
 /** Addition for GDAL : START */
 
-extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file));
+extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64(unzFile file);
 
 /** Addition for GDAL : END */
 
@@ -328,24 +328,24 @@ extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file));
    from it, and close it (you can close it before reading all the file)
    */
 
-extern int ZEXPORT unzOpenCurrentFile OF((unzFile file));
+extern int ZEXPORT unzOpenCurrentFile(unzFile file);
 /*
   Open for reading data the current file in the zipfile.
   If there is no error, the return value is UNZ_OK.
 */
 
-extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file,
-                                                  const char* password));
+extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file,
+                                              const char* password);
 /*
   Open for reading data the current file in the zipfile.
   password is a crypting password
   If there is no error, the return value is UNZ_OK.
 */
 
-extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file,
-                                           int* method,
-                                           int* level,
-                                           int raw));
+extern int ZEXPORT unzOpenCurrentFile2(unzFile file,
+                                       int* method,
+                                       int* level,
+                                       int raw);
 /*
   Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
     if raw==1
@@ -355,11 +355,11 @@ extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file,
          but you CANNOT set method parameter as NULL
 */
 
-extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
-                                           int* method,
-                                           int* level,
-                                           int raw,
-                                           const char* password));
+extern int ZEXPORT unzOpenCurrentFile3(unzFile file,
+                                       int* method,
+                                       int* level,
+                                       int raw,
+                                       const char* password);
 /*
   Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
     if raw==1
@@ -370,41 +370,41 @@ extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
 */
 
 
-extern int ZEXPORT unzCloseCurrentFile OF((unzFile file));
+extern int ZEXPORT unzCloseCurrentFile(unzFile file);
 /*
   Close the file in zip opened with unzOpenCurrentFile
   Return UNZ_CRCERROR if all the file was read but the CRC is not good
 */
 
-extern int ZEXPORT unzReadCurrentFile OF((unzFile file,
-                      voidp buf,
-                      unsigned len));
+extern int ZEXPORT unzReadCurrentFile(unzFile file,
+                                      voidp buf,
+                                      unsigned len);
 /*
   Read bytes from the current file (opened by unzOpenCurrentFile)
   buf contain buffer where data must be copied
   len the size of buf.
 
-  return the number of byte copied if somes bytes are copied
+  return the number of byte copied if some bytes are copied
   return 0 if the end of file was reached
   return <0 with error code if there is an error
     (UNZ_ERRNO for IO error, or zLib error for uncompress error)
 */
 
-extern z_off_t ZEXPORT unztell OF((unzFile file));
+extern z_off_t ZEXPORT unztell(unzFile file);
 
-extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file));
+extern ZPOS64_T ZEXPORT unztell64(unzFile file);
 /*
   Give the current position in uncompressed data
 */
 
-extern int ZEXPORT unzeof OF((unzFile file));
+extern int ZEXPORT unzeof(unzFile file);
 /*
   return 1 if the end of file was reached, 0 elsewhere
 */
 
-extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file,
-                                             voidp buf,
-                                             unsigned len));
+extern int ZEXPORT unzGetLocalExtrafield(unzFile file,
+                                         voidp buf,
+                                         unsigned len);
 /*
   Read extra field from the current file (opened by unzOpenCurrentFile)
   This is the local-header version of the extra field (sometimes, there is
diff --git a/libs/zlib/contrib/minizip/zip.c b/libs/zlib/contrib/minizip/zip.c
index 44e88a9cb..60bdffac3 100644
--- a/libs/zlib/contrib/minizip/zip.c
+++ b/libs/zlib/contrib/minizip/zip.c
@@ -14,7 +14,7 @@
    Oct-2009 - Mathias Svensson - Added Zip64 Support when creating new file archives
    Oct-2009 - Mathias Svensson - Did some code cleanup and refactoring to get better overview of some functions.
    Oct-2009 - Mathias Svensson - Added zipRemoveExtraInfoBlock to strip extra field data from its ZIP64 data
-                                 It is used when recreting zip archive with RAW when deleting items from a zip.
+                                 It is used when recreating zip archive with RAW when deleting items from a zip.
                                  ZIP64 data is automatically added to items that needs it, and existing ZIP64 data need to be removed.
    Oct-2009 - Mathias Svensson - Added support for BZIP2 as compression mode (bzip2 lib is required)
    Jan-2010 - back to unzip and minizip 1.0 name scheme, with compatibility layer
@@ -25,14 +25,13 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdint.h>
 #include <time.h>
 #include "zlib.h"
 #include "zip.h"
 
 #ifdef STDC
 #  include <stddef.h>
-#  include <string.h>
-#  include <stdlib.h>
 #endif
 #ifdef NO_ERRNO_H
     extern int errno;
@@ -47,7 +46,7 @@
 /* compile with -Dlocal if your debugger can't find static symbols */
 
 #ifndef VERSIONMADEBY
-# define VERSIONMADEBY   (0x0) /* platform depedent */
+# define VERSIONMADEBY   (0x0) /* platform dependent */
 #endif
 
 #ifndef Z_BUFSIZE
@@ -61,9 +60,6 @@
 #ifndef ALLOC
 # define ALLOC(size) (malloc(size))
 #endif
-#ifndef TRYFREE
-# define TRYFREE(p) {if (p) free(p);}
-#endif
 
 /*
 #define SIZECENTRALDIRITEM (0x2e)
@@ -138,37 +134,37 @@ typedef struct
     uInt pos_in_buffered_data;  /* last written byte in buffered_data */
 
     ZPOS64_T pos_local_header;     /* offset of the local header of the file
-                                     currenty writing */
+                                     currently writing */
     char* central_header;       /* central header data for the current file */
     uLong size_centralExtra;
     uLong size_centralheader;   /* size of the central header for cur file */
     uLong size_centralExtraFree; /* Extra bytes allocated to the centralheader but that are not used */
     uLong flag;                 /* flag of the file currently writing */
 
-    int  method;                /* compression method of file currenty wr.*/
+    int  method;                /* compression method of file currently wr.*/
     int  raw;                   /* 1 for directly writing raw data */
     Byte buffered_data[Z_BUFSIZE];/* buffer contain compressed data to be writ*/
     uLong dosDate;
     uLong crc32;
     int  encrypt;
-    int  zip64;               /* Add ZIP64 extened information in the extra field */
+    int  zip64;               /* Add ZIP64 extended information in the extra field */
     ZPOS64_T pos_zip64extrainfo;
     ZPOS64_T totalCompressedData;
     ZPOS64_T totalUncompressedData;
 #ifndef NOCRYPT
     unsigned long keys[3];     /* keys defining the pseudo-random sequence */
     const z_crc_t* pcrc_32_tab;
-    int crypt_header_size;
+    unsigned crypt_header_size;
 #endif
 } curfile64_info;
 
 typedef struct
 {
     zlib_filefunc64_32_def z_filefunc;
-    voidpf filestream;        /* io structore of the zipfile */
+    voidpf filestream;        /* io structure of the zipfile */
     linkedlist_data central_dir;/* datablock with central dir in construction*/
     int  in_opened_file_inzip;  /* 1 if a file in the zip is currently writ.*/
-    curfile64_info ci;            /* info on the file curretly writing */
+    curfile64_info ci;            /* info on the file currently writing */
 
     ZPOS64_T begin_pos;            /* position of the beginning of the zipfile */
     ZPOS64_T add_position_when_writing_offset;
@@ -186,8 +182,7 @@ typedef struct
 #include "crypt.h"
 #endif
 
-local linkedlist_datablock_internal* allocate_new_datablock()
-{
+local linkedlist_datablock_internal* allocate_new_datablock(void) {
     linkedlist_datablock_internal* ldi;
     ldi = (linkedlist_datablock_internal*)
                  ALLOC(sizeof(linkedlist_datablock_internal));
@@ -200,30 +195,26 @@ local linkedlist_datablock_internal* allocate_new_datablock()
     return ldi;
 }
 
-local void free_datablock(linkedlist_datablock_internal* ldi)
-{
+local void free_datablock(linkedlist_datablock_internal* ldi) {
     while (ldi!=NULL)
     {
         linkedlist_datablock_internal* ldinext = ldi->next_datablock;
-        TRYFREE(ldi);
+        free(ldi);
         ldi = ldinext;
     }
 }
 
-local void init_linkedlist(linkedlist_data* ll)
-{
+local void init_linkedlist(linkedlist_data* ll) {
     ll->first_block = ll->last_block = NULL;
 }
 
-local void free_linkedlist(linkedlist_data* ll)
-{
+local void free_linkedlist(linkedlist_data* ll) {
     free_datablock(ll->first_block);
     ll->first_block = ll->last_block = NULL;
 }
 
 
-local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len)
-{
+local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len) {
     linkedlist_datablock_internal* ldi;
     const unsigned char* from_copy;
 
@@ -238,7 +229,7 @@ local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len)
     }
 
     ldi = ll->last_block;
-    from_copy = (unsigned char*)buf;
+    from_copy = (const unsigned char*)buf;
 
     while (len>0)
     {
@@ -283,9 +274,7 @@ local int add_data_in_datablock(linkedlist_data* ll, const void* buf, uLong len)
    nbByte == 1, 2 ,4 or 8 (byte, short or long, ZPOS64_T)
 */
 
-local int zip64local_putValue OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte));
-local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte)
-{
+local int zip64local_putValue(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T x, int nbByte) {
     unsigned char buf[8];
     int n;
     for (n = 0; n < nbByte; n++)
@@ -301,15 +290,13 @@ local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def,
         }
       }
 
-    if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte)
+    if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,(uLong)nbByte)!=(uLong)nbByte)
         return ZIP_ERRNO;
     else
         return ZIP_OK;
 }
 
-local void zip64local_putValue_inmemory OF((void* dest, ZPOS64_T x, int nbByte));
-local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte)
-{
+local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte) {
     unsigned char* buf=(unsigned char*)dest;
     int n;
     for (n = 0; n < nbByte; n++) {
@@ -329,25 +316,21 @@ local void zip64local_putValue_inmemory (void* dest, ZPOS64_T x, int nbByte)
 /****************************************************************************/
 
 
-local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm)
-{
+local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm) {
     uLong year = (uLong)ptm->tm_year;
     if (year>=1980)
         year-=1980;
     else if (year>=80)
         year-=80;
     return
-      (uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) |
-        ((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour));
+      (uLong) (((uLong)(ptm->tm_mday) + (32 * (uLong)(ptm->tm_mon+1)) + (512 * year)) << 16) |
+        (((uLong)ptm->tm_sec/2) + (32 * (uLong)ptm->tm_min) + (2048 * (uLong)ptm->tm_hour));
 }
 
 
 /****************************************************************************/
 
-local int zip64local_getByte OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int *pi));
-
-local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,voidpf filestream,int* pi)
-{
+local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, int* pi) {
     unsigned char c;
     int err = (int)ZREAD64(*pzlib_filefunc_def,filestream,&c,1);
     if (err==1)
@@ -368,10 +351,7 @@ local int zip64local_getByte(const zlib_filefunc64_32_def* pzlib_filefunc_def,vo
 /* ===========================================================================
    Reads a long in LSB order from the given gz_stream. Sets
 */
-local int zip64local_getShort OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX));
-
-local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX)
-{
+local int zip64local_getShort(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) {
     uLong x ;
     int i = 0;
     int err;
@@ -390,10 +370,7 @@ local int zip64local_getShort (const zlib_filefunc64_32_def* pzlib_filefunc_def,
     return err;
 }
 
-local int zip64local_getLong OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong *pX));
-
-local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX)
-{
+local int zip64local_getLong(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, uLong* pX) {
     uLong x ;
     int i = 0;
     int err;
@@ -420,11 +397,8 @@ local int zip64local_getLong (const zlib_filefunc64_32_def* pzlib_filefunc_def,
     return err;
 }
 
-local int zip64local_getLong64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX));
 
-
-local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX)
-{
+local int zip64local_getLong64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream, ZPOS64_T *pX) {
   ZPOS64_T x;
   int i = 0;
   int err;
@@ -475,10 +449,7 @@ local int zip64local_getLong64 (const zlib_filefunc64_32_def* pzlib_filefunc_def
   Locate the Central directory of a zipfile (at the end, just before
     the global comment)
 */
-local ZPOS64_T zip64local_SearchCentralDir OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream));
-
-local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)
-{
+local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) {
   unsigned char* buf;
   ZPOS64_T uSizeFile;
   ZPOS64_T uBackRead;
@@ -522,14 +493,14 @@ local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
       if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
         ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06))
       {
-        uPosFound = uReadPos+i;
+        uPosFound = uReadPos+(unsigned)i;
         break;
       }
 
-      if (uPosFound!=0)
-        break;
+    if (uPosFound!=0)
+      break;
   }
-  TRYFREE(buf);
+  free(buf);
   return uPosFound;
 }
 
@@ -537,10 +508,7 @@ local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
 Locate the End of Zip64 Central directory locator and from there find the CD of a zipfile (at the end, just before
 the global comment)
 */
-local ZPOS64_T zip64local_SearchCentralDir64 OF((const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream));
-
-local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream)
-{
+local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib_filefunc_def, voidpf filestream) {
   unsigned char* buf;
   ZPOS64_T uSizeFile;
   ZPOS64_T uBackRead;
@@ -586,7 +554,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
       // Signature "0x07064b50" Zip64 end of central directory locater
       if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07))
       {
-        uPosFound = uReadPos+i;
+        uPosFound = uReadPos+(unsigned)i;
         break;
       }
     }
@@ -595,7 +563,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
         break;
   }
 
-  TRYFREE(buf);
+  free(buf);
   if (uPosFound == 0)
     return 0;
 
@@ -607,7 +575,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
   if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK)
     return 0;
 
-  /* number of the disk with the start of the zip64 end of  central directory */
+  /* number of the disk with the start of the zip64 end of central directory */
   if (zip64local_getLong(pzlib_filefunc_def,filestream,&uL)!=ZIP_OK)
     return 0;
   if (uL != 0)
@@ -637,8 +605,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
   return relativeOffset;
 }
 
-int LoadCentralDirectoryRecord(zip64_internal* pziinit)
-{
+local int LoadCentralDirectoryRecord(zip64_internal* pziinit) {
   int err=ZIP_OK;
   ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
 
@@ -647,10 +614,10 @@ int LoadCentralDirectoryRecord(zip64_internal* pziinit)
   ZPOS64_T central_pos;
   uLong uL;
 
-  uLong number_disk;          /* number of the current dist, used for
-                              spaning ZIP, unsupported, always 0*/
-  uLong number_disk_with_CD;  /* number the the disk with central dir, used
-                              for spaning ZIP, unsupported, always 0*/
+  uLong number_disk;          /* number of the current disk, used for
+                              spanning ZIP, unsupported, always 0*/
+  uLong number_disk_with_CD;  /* number of the disk with central dir, used
+                              for spanning ZIP, unsupported, always 0*/
   ZPOS64_T number_entry;
   ZPOS64_T number_entry_CD;      /* total number of entries in
                                 the central dir
@@ -830,7 +797,7 @@ int LoadCentralDirectoryRecord(zip64_internal* pziinit)
 
       size_central_dir_to_read-=read_this;
     }
-    TRYFREE(buf_read);
+    free(buf_read);
   }
   pziinit->begin_pos = byte_before_the_zipfile;
   pziinit->number_entry = number_entry_CD;
@@ -846,8 +813,7 @@ int LoadCentralDirectoryRecord(zip64_internal* pziinit)
 
 
 /************************************************************/
-extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_32_def* pzlib_filefunc64_32_def)
-{
+extern zipFile ZEXPORT zipOpen3(const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_32_def* pzlib_filefunc64_32_def) {
     zip64_internal ziinit;
     zip64_internal* zi;
     int err=ZIP_OK;
@@ -905,9 +871,9 @@ extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* gl
     if (err != ZIP_OK)
     {
 #    ifndef NO_ADDFILEINEXISTINGZIP
-        TRYFREE(ziinit.globalcomment);
+        free(ziinit.globalcomment);
 #    endif /* !NO_ADDFILEINEXISTINGZIP*/
-        TRYFREE(zi);
+        free(zi);
         return NULL;
     }
     else
@@ -917,8 +883,7 @@ extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* gl
     }
 }
 
-extern zipFile ZEXPORT zipOpen2 (const char *pathname, int append, zipcharpc* globalcomment, zlib_filefunc_def* pzlib_filefunc32_def)
-{
+extern zipFile ZEXPORT zipOpen2(const char *pathname, int append, zipcharpc* globalcomment, zlib_filefunc_def* pzlib_filefunc32_def) {
     if (pzlib_filefunc32_def != NULL)
     {
         zlib_filefunc64_32_def zlib_filefunc64_32_def_fill;
@@ -929,8 +894,7 @@ extern zipFile ZEXPORT zipOpen2 (const char *pathname, int append, zipcharpc* gl
         return zipOpen3(pathname, append, globalcomment, NULL);
 }
 
-extern zipFile ZEXPORT zipOpen2_64 (const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_def* pzlib_filefunc_def)
-{
+extern zipFile ZEXPORT zipOpen2_64(const void *pathname, int append, zipcharpc* globalcomment, zlib_filefunc64_def* pzlib_filefunc_def) {
     if (pzlib_filefunc_def != NULL)
     {
         zlib_filefunc64_32_def zlib_filefunc64_32_def_fill;
@@ -945,18 +909,15 @@ extern zipFile ZEXPORT zipOpen2_64 (const void *pathname, int append, zipcharpc*
 
 
 
-extern zipFile ZEXPORT zipOpen (const char* pathname, int append)
-{
+extern zipFile ZEXPORT zipOpen(const char* pathname, int append) {
     return zipOpen3((const void*)pathname,append,NULL,NULL);
 }
 
-extern zipFile ZEXPORT zipOpen64 (const void* pathname, int append)
-{
+extern zipFile ZEXPORT zipOpen64(const void* pathname, int append) {
     return zipOpen3(pathname,append,NULL,NULL);
 }
 
-int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local)
-{
+local int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local) {
   /* write the local header */
   int err;
   uInt size_filename = (uInt)strlen(filename);
@@ -1034,8 +995,8 @@ int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_ex
       // Remember position of Zip64 extended info for the local file header. (needed when we update size after done with file)
       zi->ci.pos_zip64extrainfo = ZTELL64(zi->z_filefunc,zi->filestream);
 
-      err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)HeaderID,2);
-      err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)DataSize,2);
+      err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)HeaderID,2);
+      err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)DataSize,2);
 
       err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)UncompressedSize,8);
       err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)CompressedSize,8);
@@ -1052,14 +1013,13 @@ int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_ex
  It is not done here because then we need to realloc a new buffer since parameters are 'const' and I want to minimize
  unnecessary allocations.
  */
-extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                         const void* extrafield_local, uInt size_extrafield_local,
-                                         const void* extrafield_global, uInt size_extrafield_global,
-                                         const char* comment, int method, int level, int raw,
-                                         int windowBits,int memLevel, int strategy,
-                                         const char* password, uLong crcForCrypting,
-                                         uLong versionMadeBy, uLong flagBase, int zip64)
-{
+extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char* filename, const zip_fileinfo* zipfi,
+                                           const void* extrafield_local, uInt size_extrafield_local,
+                                           const void* extrafield_global, uInt size_extrafield_global,
+                                           const char* comment, int method, int level, int raw,
+                                           int windowBits,int memLevel, int strategy,
+                                           const char* password, uLong crcForCrypting,
+                                           uLong versionMadeBy, uLong flagBase, int zip64) {
     zip64_internal* zi;
     uInt size_filename;
     uInt size_comment;
@@ -1083,6 +1043,17 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
       return ZIP_PARAMERROR;
 #endif
 
+    // The filename and comment length must fit in 16 bits.
+    if ((filename!=NULL) && (strlen(filename)>0xffff))
+        return ZIP_PARAMERROR;
+    if ((comment!=NULL) && (strlen(comment)>0xffff))
+        return ZIP_PARAMERROR;
+    // The extra field length must fit in 16 bits. If the member also requires
+    // a Zip64 extra block, that will also need to fit within that 16-bit
+    // length, but that will be checked for later.
+    if ((size_extrafield_local>0xffff) || (size_extrafield_global>0xffff))
+        return ZIP_PARAMERROR;
+
     zi = (zip64_internal*)file;
 
     if (zi->in_opened_file_inzip == 1)
@@ -1262,35 +1233,33 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
     return err;
 }
 
-extern int ZEXPORT zipOpenNewFileInZip4 (zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                         const void* extrafield_local, uInt size_extrafield_local,
-                                         const void* extrafield_global, uInt size_extrafield_global,
-                                         const char* comment, int method, int level, int raw,
-                                         int windowBits,int memLevel, int strategy,
-                                         const char* password, uLong crcForCrypting,
-                                         uLong versionMadeBy, uLong flagBase)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, raw,
-                                 windowBits, memLevel, strategy,
-                                 password, crcForCrypting, versionMadeBy, flagBase, 0);
+extern int ZEXPORT zipOpenNewFileInZip4(zipFile file, const char* filename, const zip_fileinfo* zipfi,
+                                        const void* extrafield_local, uInt size_extrafield_local,
+                                        const void* extrafield_global, uInt size_extrafield_global,
+                                        const char* comment, int method, int level, int raw,
+                                        int windowBits,int memLevel, int strategy,
+                                        const char* password, uLong crcForCrypting,
+                                        uLong versionMadeBy, uLong flagBase) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, raw,
+                                   windowBits, memLevel, strategy,
+                                   password, crcForCrypting, versionMadeBy, flagBase, 0);
 }
 
-extern int ZEXPORT zipOpenNewFileInZip3 (zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                         const void* extrafield_local, uInt size_extrafield_local,
-                                         const void* extrafield_global, uInt size_extrafield_global,
-                                         const char* comment, int method, int level, int raw,
-                                         int windowBits,int memLevel, int strategy,
-                                         const char* password, uLong crcForCrypting)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, raw,
-                                 windowBits, memLevel, strategy,
-                                 password, crcForCrypting, VERSIONMADEBY, 0, 0);
+extern int ZEXPORT zipOpenNewFileInZip3(zipFile file, const char* filename, const zip_fileinfo* zipfi,
+                                        const void* extrafield_local, uInt size_extrafield_local,
+                                        const void* extrafield_global, uInt size_extrafield_global,
+                                        const char* comment, int method, int level, int raw,
+                                        int windowBits,int memLevel, int strategy,
+                                        const char* password, uLong crcForCrypting) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, raw,
+                                   windowBits, memLevel, strategy,
+                                   password, crcForCrypting, VERSIONMADEBY, 0, 0);
 }
 
 extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char* filename, const zip_fileinfo* zipfi,
@@ -1298,70 +1267,64 @@ extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file, const char* filename, c
                                          const void* extrafield_global, uInt size_extrafield_global,
                                          const char* comment, int method, int level, int raw,
                                          int windowBits,int memLevel, int strategy,
-                                         const char* password, uLong crcForCrypting, int zip64)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, raw,
-                                 windowBits, memLevel, strategy,
-                                 password, crcForCrypting, VERSIONMADEBY, 0, zip64);
+                                         const char* password, uLong crcForCrypting, int zip64) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, raw,
+                                   windowBits, memLevel, strategy,
+                                   password, crcForCrypting, VERSIONMADEBY, 0, zip64);
 }
 
 extern int ZEXPORT zipOpenNewFileInZip2(zipFile file, const char* filename, const zip_fileinfo* zipfi,
                                         const void* extrafield_local, uInt size_extrafield_local,
                                         const void* extrafield_global, uInt size_extrafield_global,
-                                        const char* comment, int method, int level, int raw)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, raw,
-                                 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
-                                 NULL, 0, VERSIONMADEBY, 0, 0);
+                                        const char* comment, int method, int level, int raw) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, raw,
+                                   -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
+                                   NULL, 0, VERSIONMADEBY, 0, 0);
 }
 
 extern int ZEXPORT zipOpenNewFileInZip2_64(zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                        const void* extrafield_local, uInt size_extrafield_local,
-                                        const void* extrafield_global, uInt size_extrafield_global,
-                                        const char* comment, int method, int level, int raw, int zip64)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, raw,
-                                 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
-                                 NULL, 0, VERSIONMADEBY, 0, zip64);
+                                           const void* extrafield_local, uInt size_extrafield_local,
+                                           const void* extrafield_global, uInt size_extrafield_global,
+                                           const char* comment, int method, int level, int raw, int zip64) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, raw,
+                                   -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
+                                   NULL, 0, VERSIONMADEBY, 0, zip64);
 }
 
-extern int ZEXPORT zipOpenNewFileInZip64 (zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                        const void* extrafield_local, uInt size_extrafield_local,
-                                        const void*extrafield_global, uInt size_extrafield_global,
-                                        const char* comment, int method, int level, int zip64)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, 0,
-                                 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
-                                 NULL, 0, VERSIONMADEBY, 0, zip64);
+extern int ZEXPORT zipOpenNewFileInZip64(zipFile file, const char* filename, const zip_fileinfo* zipfi,
+                                         const void* extrafield_local, uInt size_extrafield_local,
+                                         const void*extrafield_global, uInt size_extrafield_global,
+                                         const char* comment, int method, int level, int zip64) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, 0,
+                                   -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
+                                   NULL, 0, VERSIONMADEBY, 0, zip64);
 }
 
-extern int ZEXPORT zipOpenNewFileInZip (zipFile file, const char* filename, const zip_fileinfo* zipfi,
-                                        const void* extrafield_local, uInt size_extrafield_local,
-                                        const void*extrafield_global, uInt size_extrafield_global,
-                                        const char* comment, int method, int level)
-{
-    return zipOpenNewFileInZip4_64 (file, filename, zipfi,
-                                 extrafield_local, size_extrafield_local,
-                                 extrafield_global, size_extrafield_global,
-                                 comment, method, level, 0,
-                                 -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
-                                 NULL, 0, VERSIONMADEBY, 0, 0);
+extern int ZEXPORT zipOpenNewFileInZip(zipFile file, const char* filename, const zip_fileinfo* zipfi,
+                                       const void* extrafield_local, uInt size_extrafield_local,
+                                       const void*extrafield_global, uInt size_extrafield_global,
+                                       const char* comment, int method, int level) {
+    return zipOpenNewFileInZip4_64(file, filename, zipfi,
+                                   extrafield_local, size_extrafield_local,
+                                   extrafield_global, size_extrafield_global,
+                                   comment, method, level, 0,
+                                   -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
+                                   NULL, 0, VERSIONMADEBY, 0, 0);
 }
 
-local int zip64FlushWriteBuffer(zip64_internal* zi)
-{
+local int zip64FlushWriteBuffer(zip64_internal* zi) {
     int err=ZIP_OK;
 
     if (zi->ci.encrypt != 0)
@@ -1399,8 +1362,7 @@ local int zip64FlushWriteBuffer(zip64_internal* zi)
     return err;
 }
 
-extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned int len)
-{
+extern int ZEXPORT zipWriteInFileInZip(zipFile file, const void* buf, unsigned int len) {
     zip64_internal* zi;
     int err=ZIP_OK;
 
@@ -1450,7 +1412,7 @@ extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned in
     else
 #endif
     {
-      zi->ci.stream.next_in = (Bytef*)buf;
+      zi->ci.stream.next_in = (Bytef*)(uintptr_t)buf;
       zi->ci.stream.avail_in = len;
 
       while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0))
@@ -1471,11 +1433,6 @@ extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned in
           {
               uLong uTotalOutBefore = zi->ci.stream.total_out;
               err=deflate(&zi->ci.stream,  Z_NO_FLUSH);
-              if(uTotalOutBefore > zi->ci.stream.total_out)
-              {
-                int bBreak = 0;
-                bBreak++;
-              }
 
               zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ;
           }
@@ -1506,17 +1463,15 @@ extern int ZEXPORT zipWriteInFileInZip (zipFile file,const void* buf,unsigned in
     return err;
 }
 
-extern int ZEXPORT zipCloseFileInZipRaw (zipFile file, uLong uncompressed_size, uLong crc32)
-{
+extern int ZEXPORT zipCloseFileInZipRaw(zipFile file, uLong uncompressed_size, uLong crc32) {
     return zipCloseFileInZipRaw64 (file, uncompressed_size, crc32);
 }
 
-extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_size, uLong crc32)
-{
+extern int ZEXPORT zipCloseFileInZipRaw64(zipFile file, ZPOS64_T uncompressed_size, uLong crc32) {
     zip64_internal* zi;
     ZPOS64_T compressed_size;
     uLong invalidValue = 0xffffffff;
-    short datasize = 0;
+    unsigned datasize = 0;
     int err=ZIP_OK;
 
     if (file == NULL)
@@ -1653,7 +1608,7 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
 
       if((uLong)(datasize + 4) > zi->ci.size_centralExtraFree)
       {
-        // we can not write more data to the buffer that we have room for.
+        // we cannot write more data to the buffer that we have room for.
         return ZIP_BADZIPFILE;
       }
 
@@ -1747,13 +1702,11 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
     return err;
 }
 
-extern int ZEXPORT zipCloseFileInZip (zipFile file)
-{
+extern int ZEXPORT zipCloseFileInZip(zipFile file) {
     return zipCloseFileInZipRaw (file,0,0);
 }
 
-int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip)
-{
+local int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip) {
   int err = ZIP_OK;
   ZPOS64_T pos = zip64eocd_pos_inzip - zi->add_position_when_writing_offset;
 
@@ -1774,8 +1727,7 @@ int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eo
     return err;
 }
 
-int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
-{
+local int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip) {
   int err = ZIP_OK;
 
   uLong Zip64DataSize = 44;
@@ -1813,8 +1765,8 @@ int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centra
   }
   return err;
 }
-int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
-{
+
+local int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip) {
   int err = ZIP_OK;
 
   /*signature*/
@@ -1861,8 +1813,7 @@ int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir,
    return err;
 }
 
-int Write_GlobalComment(zip64_internal* zi, const char* global_comment)
-{
+local int Write_GlobalComment(zip64_internal* zi, const char* global_comment) {
   int err = ZIP_OK;
   uInt size_global_comment = 0;
 
@@ -1879,8 +1830,7 @@ int Write_GlobalComment(zip64_internal* zi, const char* global_comment)
   return err;
 }
 
-extern int ZEXPORT zipClose (zipFile file, const char* global_comment)
-{
+extern int ZEXPORT zipClose(zipFile file, const char* global_comment) {
     zip64_internal* zi;
     int err = 0;
     uLong size_centraldir = 0;
@@ -1922,7 +1872,7 @@ extern int ZEXPORT zipClose (zipFile file, const char* global_comment)
     free_linkedlist(&(zi->central_dir));
 
     pos = centraldir_pos_inzip - zi->add_position_when_writing_offset;
-    if(pos >= 0xffffffff || zi->number_entry > 0xFFFF)
+    if(pos >= 0xffffffff || zi->number_entry >= 0xFFFF)
     {
       ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream);
       Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip);
@@ -1941,15 +1891,14 @@ extern int ZEXPORT zipClose (zipFile file, const char* global_comment)
             err = ZIP_ERRNO;
 
 #ifndef NO_ADDFILEINEXISTINGZIP
-    TRYFREE(zi->globalcomment);
+    free(zi->globalcomment);
 #endif
-    TRYFREE(zi);
+    free(zi);
 
     return err;
 }
 
-extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHeader)
-{
+extern int ZEXPORT zipRemoveExtraInfoBlock(char* pData, int* dataLen, short sHeader) {
   char* p = pData;
   int size = 0;
   char* pNewHeader;
@@ -1959,10 +1908,10 @@ extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHe
 
   int retVal = ZIP_OK;
 
-  if(pData == NULL || *dataLen < 4)
+  if(pData == NULL || dataLen == NULL || *dataLen < 4)
     return ZIP_PARAMERROR;
 
-  pNewHeader = (char*)ALLOC(*dataLen);
+  pNewHeader = (char*)ALLOC((unsigned)*dataLen);
   pTmp = pNewHeader;
 
   while(p < (pData + *dataLen))
@@ -2001,7 +1950,7 @@ extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHe
   else
     retVal = ZIP_ERRNO;
 
-  TRYFREE(pNewHeader);
+  free(pNewHeader);
 
   return retVal;
 }
diff --git a/libs/zlib/contrib/minizip/zip.h b/libs/zlib/contrib/minizip/zip.h
index 8aaebb623..3e230d340 100644
--- a/libs/zlib/contrib/minizip/zip.h
+++ b/libs/zlib/contrib/minizip/zip.h
@@ -88,12 +88,12 @@ typedef voidp zipFile;
 /* tm_zip contain date/time info */
 typedef struct tm_zip_s
 {
-    uInt tm_sec;            /* seconds after the minute - [0,59] */
-    uInt tm_min;            /* minutes after the hour - [0,59] */
-    uInt tm_hour;           /* hours since midnight - [0,23] */
-    uInt tm_mday;           /* day of the month - [1,31] */
-    uInt tm_mon;            /* months since January - [0,11] */
-    uInt tm_year;           /* years - [1980..2044] */
+    int tm_sec;             /* seconds after the minute - [0,59] */
+    int tm_min;             /* minutes after the hour - [0,59] */
+    int tm_hour;            /* hours since midnight - [0,23] */
+    int tm_mday;            /* day of the month - [1,31] */
+    int tm_mon;             /* months since January - [0,11] */
+    int tm_year;            /* years - [1980..2044] */
 } tm_zip;
 
 typedef struct
@@ -113,8 +113,8 @@ typedef const char* zipcharpc;
 #define APPEND_STATUS_CREATEAFTER   (1)
 #define APPEND_STATUS_ADDINZIP      (2)
 
-extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append));
-extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append));
+extern zipFile ZEXPORT zipOpen(const char *pathname, int append);
+extern zipFile ZEXPORT zipOpen64(const void *pathname, int append);
 /*
   Create a zipfile.
      pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on
@@ -131,50 +131,55 @@ extern zipFile ZEXPORT zipOpen64 OF((const void *pathname, int append));
 
 /* Note : there is no delete function into a zipfile.
    If you want delete file into a zipfile, you must open a zipfile, and create another
-   Of couse, you can use RAW reading and writing to copy the file you did not want delte
+   Of course, you can use RAW reading and writing to copy the file you did not want delete
 */
 
-extern zipFile ZEXPORT zipOpen2 OF((const char *pathname,
-                                   int append,
-                                   zipcharpc* globalcomment,
-                                   zlib_filefunc_def* pzlib_filefunc_def));
+extern zipFile ZEXPORT zipOpen2(const char *pathname,
+                                int append,
+                                zipcharpc* globalcomment,
+                                zlib_filefunc_def* pzlib_filefunc_def);
 
-extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname,
+extern zipFile ZEXPORT zipOpen2_64(const void *pathname,
                                    int append,
                                    zipcharpc* globalcomment,
-                                   zlib_filefunc64_def* pzlib_filefunc_def));
-
-extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file,
-                       const char* filename,
-                       const zip_fileinfo* zipfi,
-                       const void* extrafield_local,
-                       uInt size_extrafield_local,
-                       const void* extrafield_global,
-                       uInt size_extrafield_global,
-                       const char* comment,
-                       int method,
-                       int level));
-
-extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file,
-                       const char* filename,
-                       const zip_fileinfo* zipfi,
-                       const void* extrafield_local,
-                       uInt size_extrafield_local,
-                       const void* extrafield_global,
-                       uInt size_extrafield_global,
-                       const char* comment,
-                       int method,
-                       int level,
-                       int zip64));
+                                   zlib_filefunc64_def* pzlib_filefunc_def);
+
+extern zipFile ZEXPORT zipOpen3(const void *pathname,
+                                int append,
+                                zipcharpc* globalcomment,
+                                zlib_filefunc64_32_def* pzlib_filefunc64_32_def);
+
+extern int ZEXPORT zipOpenNewFileInZip(zipFile file,
+                                       const char* filename,
+                                       const zip_fileinfo* zipfi,
+                                       const void* extrafield_local,
+                                       uInt size_extrafield_local,
+                                       const void* extrafield_global,
+                                       uInt size_extrafield_global,
+                                       const char* comment,
+                                       int method,
+                                       int level);
+
+extern int ZEXPORT zipOpenNewFileInZip64(zipFile file,
+                                         const char* filename,
+                                         const zip_fileinfo* zipfi,
+                                         const void* extrafield_local,
+                                         uInt size_extrafield_local,
+                                         const void* extrafield_global,
+                                         uInt size_extrafield_global,
+                                         const char* comment,
+                                         int method,
+                                         int level,
+                                         int zip64);
 
 /*
   Open a file in the ZIP for writing.
   filename : the filename in zip (if NULL, '-' without quote will be used
   *zipfi contain supplemental information
   if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local
-    contains the extrafield data the the local header
+    contains the extrafield data for the local header
   if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global
-    contains the extrafield data the the local header
+    contains the extrafield data for the global header
   if comment != NULL, comment contain the comment string
   method contain the compression method (0 for store, Z_DEFLATED for deflate)
   level contain the level of compression (can be Z_DEFAULT_COMPRESSION)
@@ -184,70 +189,69 @@ extern int ZEXPORT zipOpenNewFileInZip64 OF((zipFile file,
 */
 
 
-extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw));
-
-
-extern int ZEXPORT zipOpenNewFileInZip2_64 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw,
-                                            int zip64));
+extern int ZEXPORT zipOpenNewFileInZip2(zipFile file,
+                                        const char* filename,
+                                        const zip_fileinfo* zipfi,
+                                        const void* extrafield_local,
+                                        uInt size_extrafield_local,
+                                        const void* extrafield_global,
+                                        uInt size_extrafield_global,
+                                        const char* comment,
+                                        int method,
+                                        int level,
+                                        int raw);
+
+
+extern int ZEXPORT zipOpenNewFileInZip2_64(zipFile file,
+                                           const char* filename,
+                                           const zip_fileinfo* zipfi,
+                                           const void* extrafield_local,
+                                           uInt size_extrafield_local,
+                                           const void* extrafield_global,
+                                           uInt size_extrafield_global,
+                                           const char* comment,
+                                           int method,
+                                           int level,
+                                           int raw,
+                                           int zip64);
 /*
   Same than zipOpenNewFileInZip, except if raw=1, we write raw file
  */
 
-extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw,
-                                            int windowBits,
-                                            int memLevel,
-                                            int strategy,
-                                            const char* password,
-                                            uLong crcForCrypting));
-
-extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw,
-                                            int windowBits,
-                                            int memLevel,
-                                            int strategy,
-                                            const char* password,
-                                            uLong crcForCrypting,
-                                            int zip64
-                                            ));
+extern int ZEXPORT zipOpenNewFileInZip3(zipFile file,
+                                        const char* filename,
+                                        const zip_fileinfo* zipfi,
+                                        const void* extrafield_local,
+                                        uInt size_extrafield_local,
+                                        const void* extrafield_global,
+                                        uInt size_extrafield_global,
+                                        const char* comment,
+                                        int method,
+                                        int level,
+                                        int raw,
+                                        int windowBits,
+                                        int memLevel,
+                                        int strategy,
+                                        const char* password,
+                                        uLong crcForCrypting);
+
+extern int ZEXPORT zipOpenNewFileInZip3_64(zipFile file,
+                                           const char* filename,
+                                           const zip_fileinfo* zipfi,
+                                           const void* extrafield_local,
+                                           uInt size_extrafield_local,
+                                           const void* extrafield_global,
+                                           uInt size_extrafield_global,
+                                           const char* comment,
+                                           int method,
+                                           int level,
+                                           int raw,
+                                           int windowBits,
+                                           int memLevel,
+                                           int strategy,
+                                           const char* password,
+                                           uLong crcForCrypting,
+                                           int zip64);
 
 /*
   Same than zipOpenNewFileInZip2, except
@@ -256,47 +260,45 @@ extern int ZEXPORT zipOpenNewFileInZip3_64 OF((zipFile file,
     crcForCrypting : crc of file to compress (needed for crypting)
  */
 
-extern int ZEXPORT zipOpenNewFileInZip4 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw,
-                                            int windowBits,
-                                            int memLevel,
-                                            int strategy,
-                                            const char* password,
-                                            uLong crcForCrypting,
-                                            uLong versionMadeBy,
-                                            uLong flagBase
-                                            ));
-
-
-extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file,
-                                            const char* filename,
-                                            const zip_fileinfo* zipfi,
-                                            const void* extrafield_local,
-                                            uInt size_extrafield_local,
-                                            const void* extrafield_global,
-                                            uInt size_extrafield_global,
-                                            const char* comment,
-                                            int method,
-                                            int level,
-                                            int raw,
-                                            int windowBits,
-                                            int memLevel,
-                                            int strategy,
-                                            const char* password,
-                                            uLong crcForCrypting,
-                                            uLong versionMadeBy,
-                                            uLong flagBase,
-                                            int zip64
-                                            ));
+extern int ZEXPORT zipOpenNewFileInZip4(zipFile file,
+                                        const char* filename,
+                                        const zip_fileinfo* zipfi,
+                                        const void* extrafield_local,
+                                        uInt size_extrafield_local,
+                                        const void* extrafield_global,
+                                        uInt size_extrafield_global,
+                                        const char* comment,
+                                        int method,
+                                        int level,
+                                        int raw,
+                                        int windowBits,
+                                        int memLevel,
+                                        int strategy,
+                                        const char* password,
+                                        uLong crcForCrypting,
+                                        uLong versionMadeBy,
+                                        uLong flagBase);
+
+
+extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file,
+                                           const char* filename,
+                                           const zip_fileinfo* zipfi,
+                                           const void* extrafield_local,
+                                           uInt size_extrafield_local,
+                                           const void* extrafield_global,
+                                           uInt size_extrafield_global,
+                                           const char* comment,
+                                           int method,
+                                           int level,
+                                           int raw,
+                                           int windowBits,
+                                           int memLevel,
+                                           int strategy,
+                                           const char* password,
+                                           uLong crcForCrypting,
+                                           uLong versionMadeBy,
+                                           uLong flagBase,
+                                           int zip64);
 /*
   Same than zipOpenNewFileInZip4, except
     versionMadeBy : value for Version made by field
@@ -304,25 +306,25 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 OF((zipFile file,
  */
 
 
-extern int ZEXPORT zipWriteInFileInZip OF((zipFile file,
-                       const void* buf,
-                       unsigned len));
+extern int ZEXPORT zipWriteInFileInZip(zipFile file,
+                                       const void* buf,
+                                       unsigned len);
 /*
   Write data in the zipfile
 */
 
-extern int ZEXPORT zipCloseFileInZip OF((zipFile file));
+extern int ZEXPORT zipCloseFileInZip(zipFile file);
 /*
   Close the current file in the zipfile
 */
 
-extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file,
-                                            uLong uncompressed_size,
-                                            uLong crc32));
+extern int ZEXPORT zipCloseFileInZipRaw(zipFile file,
+                                        uLong uncompressed_size,
+                                        uLong crc32);
 
-extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file,
-                                            ZPOS64_T uncompressed_size,
-                                            uLong crc32));
+extern int ZEXPORT zipCloseFileInZipRaw64(zipFile file,
+                                          ZPOS64_T uncompressed_size,
+                                          uLong crc32);
 
 /*
   Close the current file in the zipfile, for file opened with
@@ -330,14 +332,14 @@ extern int ZEXPORT zipCloseFileInZipRaw64 OF((zipFile file,
   uncompressed_size and crc32 are value for the uncompressed size
 */
 
-extern int ZEXPORT zipClose OF((zipFile file,
-                const char* global_comment));
+extern int ZEXPORT zipClose(zipFile file,
+                            const char* global_comment);
 /*
   Close the zipfile
 */
 
 
-extern int ZEXPORT zipRemoveExtraInfoBlock OF((char* pData, int* dataLen, short sHeader));
+extern int ZEXPORT zipRemoveExtraInfoBlock(char* pData, int* dataLen, short sHeader);
 /*
   zipRemoveExtraInfoBlock -  Added by Mathias Svensson
 
diff --git a/libs/zlib/contrib/nuget/nuget.csproj b/libs/zlib/contrib/nuget/nuget.csproj
new file mode 100644
index 000000000..68627f034
--- /dev/null
+++ b/libs/zlib/contrib/nuget/nuget.csproj
@@ -0,0 +1,43 @@
+<Project Sdk="Microsoft.Build.NoTargets/3.5.6">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <PackageId>madler.zlib.redist</PackageId>
+    <PackageId Condition="$([MSBuild]::IsOSPlatform('Windows'))">$(PackageId).win</PackageId>
+    <PackageId Condition="$([MSBuild]::IsOSPlatform('Linux'))">$(PackageId).linux</PackageId>
+    <PackageId Condition="$([MSBuild]::IsOSPlatform('OSX'))">$(PackageId).osx</PackageId>
+    <Copyright>(C) 1995-2024 Jean-loup Gailly and Mark Adler</Copyright>
+    <version>1.3.1</version>
+    <PackageDescription>NuGet Package for consuming native builds of zlib into .NET without complexity.</PackageDescription>
+    <!--
+        Warns about not having any lib or ref assemblies (.NET Assemblies) in those directories.
+        Native only packages that is to be consumed in .NET should not require these.
+    -->
+    <NoWarn>NU5128</NoWarn>
+    <PackageOutputPath>$(MSBuildProjectDirectory)</PackageOutputPath>
+    <Authors>Jean-loup Gailly and Mark Adler</Authors>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <None Include="../../LICENSE" Pack="true" PackagePath="" />
+    <!-- Package up Windows builds. -->
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/x86/ZlibDll$(Configuration)/zlibwapi.dll" Pack="true" PackagePath="runtimes/win-x86/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/x64/ZlibDll$(Configuration)/zlibwapi.dll" Pack="true" PackagePath="runtimes/win-x64/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/arm/ZlibDll$(Configuration)/zlibwapi.dll" Pack="true" PackagePath="runtimes/win-arm/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/arm64/ZlibDll$(Configuration)/zlibwapi.dll" Pack="true" PackagePath="runtimes/win-arm64/native" />
+    <!-- Include debug symbols as well as we never know if they might actually be needed in the future. -->
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/x86/ZlibDll$(Configuration)/zlibwapi.pdb" Pack="true" PackagePath="runtimes/win-x86/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/x64/ZlibDll$(Configuration)/zlibwapi.pdb" Pack="true" PackagePath="runtimes/win-x64/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/arm/ZlibDll$(Configuration)/zlibwapi.pdb" Pack="true" PackagePath="runtimes/win-arm/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Windows'))" Include="../vstudio/vc17/arm64/ZlibDll$(Configuration)/zlibwapi.pdb" Pack="true" PackagePath="runtimes/win-arm64/native" />
+    <!-- Package up Linux builds. -->
+    <None Condition="$([MSBuild]::IsOSPlatform('Linux'))" Include="./linux-x86/libz.so" Pack="true" PackagePath="runtimes/linux-x86/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Linux'))" Include="./linux-x64/libz.so" Pack="true" PackagePath="runtimes/linux-x64/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Linux'))" Include="./linux-arm/libz.so" Pack="true" PackagePath="runtimes/linux-arm/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('Linux'))" Include="./linux-arm64/libz.so" Pack="true" PackagePath="runtimes/linux-arm64/native" />
+    <!-- Package up MacOS builds. -->
+    <None Condition="$([MSBuild]::IsOSPlatform('OSX'))" Include="./osx-x64/libz.dylib" Pack="true" PackagePath="runtimes/osx-x64/native" />
+    <None Condition="$([MSBuild]::IsOSPlatform('OSX'))" Include="./osx-arm64/libz.dylib" Pack="true" PackagePath="runtimes/osx-arm64/native" />
+  </ItemGroup>
+
+</Project>
diff --git a/libs/zlib/contrib/nuget/nuget.sln b/libs/zlib/contrib/nuget/nuget.sln
new file mode 100644
index 000000000..46ee8deab
--- /dev/null
+++ b/libs/zlib/contrib/nuget/nuget.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nuget", "nuget.csproj", "{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B1BD3984-EF8F-4E9D-9A94-EB784E5EB1E8}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+EndGlobal
diff --git a/libs/zlib/contrib/pascal/zlibpas.pas b/libs/zlib/contrib/pascal/zlibpas.pas
index a0dff11b5..0cf0e7b82 100644
--- a/libs/zlib/contrib/pascal/zlibpas.pas
+++ b/libs/zlib/contrib/pascal/zlibpas.pas
@@ -10,7 +10,7 @@ unit zlibpas;
 interface
 
 const
-  ZLIB_VERSION = '1.2.11';
+  ZLIB_VERSION = '1.3.1';
   ZLIB_VERNUM  = $12a0;
 
 type
diff --git a/libs/zlib/contrib/puff/README b/libs/zlib/contrib/puff/README
index bbc4cb595..d8192c787 100644
--- a/libs/zlib/contrib/puff/README
+++ b/libs/zlib/contrib/puff/README
@@ -38,7 +38,7 @@ Then you can call puff() to decompress a deflate stream that is in memory in
 its entirety at source, to a sufficiently sized block of memory for the
 decompressed data at dest.  puff() is the only external symbol in puff.c  The
 only C library functions that puff.c needs are setjmp() and longjmp(), which
-are used to simplify error checking in the code to improve readabilty.  puff.c
+are used to simplify error checking in the code to improve readability.  puff.c
 does no memory allocation, and uses less than 2K bytes off of the stack.
 
 If destlen is not enough space for the uncompressed data, then inflate will
diff --git a/libs/zlib/contrib/puff/puff.c b/libs/zlib/contrib/puff/puff.c
index c6c90d714..d759825ab 100644
--- a/libs/zlib/contrib/puff/puff.c
+++ b/libs/zlib/contrib/puff/puff.c
@@ -43,7 +43,7 @@
  *                      - Use pointers instead of long to specify source and
  *                        destination sizes to avoid arbitrary 4 GB limits
  * 1.2  17 Mar 2002     - Add faster version of decode(), doubles speed (!),
- *                        but leave simple version for readabilty
+ *                        but leave simple version for readability
  *                      - Make sure invalid distances detected if pointers
  *                        are 16 bits
  *                      - Fix fixed codes table error
@@ -593,10 +593,10 @@ local int fixed(struct state *s)
  *   provided for each of the literal/length symbols, and for each of the
  *   distance symbols.
  *
- * - If a symbol is not used in the block, this is represented by a zero as
- *   as the code length.  This does not mean a zero-length code, but rather
- *   that no code should be created for this symbol.  There is no way in the
- *   deflate format to represent a zero-length code.
+ * - If a symbol is not used in the block, this is represented by a zero as the
+ *   code length.  This does not mean a zero-length code, but rather that no
+ *   code should be created for this symbol.  There is no way in the deflate
+ *   format to represent a zero-length code.
  *
  * - The maximum number of bits in a code is 15, so the possible lengths for
  *   any code are 1..15.
@@ -624,7 +624,7 @@ local int fixed(struct state *s)
  *   are themselves compressed using Huffman codes and run-length encoding.  In
  *   the list of code lengths, a 0 symbol means no code, a 1..15 symbol means
  *   that length, and the symbols 16, 17, and 18 are run-length instructions.
- *   Each of 16, 17, and 18 are follwed by extra bits to define the length of
+ *   Each of 16, 17, and 18 are followed by extra bits to define the length of
  *   the run.  16 copies the last length 3 to 6 times.  17 represents 3 to 10
  *   zero lengths, and 18 represents 11 to 138 zero lengths.  Unused symbols
  *   are common, hence the special coding for zero lengths.
diff --git a/libs/zlib/contrib/puff/pufftest.c b/libs/zlib/contrib/puff/pufftest.c
index 776481488..5f72ecc82 100644
--- a/libs/zlib/contrib/puff/pufftest.c
+++ b/libs/zlib/contrib/puff/pufftest.c
@@ -143,7 +143,7 @@ int main(int argc, char **argv)
                                      len - sourcelen);
     }
 
-    /* if requested, inflate again and write decompressd data to stdout */
+    /* if requested, inflate again and write decompressed data to stdout */
     if (put && ret == 0) {
         if (fail)
             destlen >>= 1;
diff --git a/libs/zlib/contrib/testzlib/testzlib.c b/libs/zlib/contrib/testzlib/testzlib.c
index 8626c92ad..c4b0148a2 100644
--- a/libs/zlib/contrib/testzlib/testzlib.c
+++ b/libs/zlib/contrib/testzlib/testzlib.c
@@ -169,7 +169,7 @@ int main(int argc, char *argv[])
         printf("error reading %s\n",argv[1]);
         return 1;
     }
-    else printf("file %s read, %u bytes\n",argv[1],lFileSize);
+    else printf("file %s read, %ld bytes\n",argv[1],lFileSize);
 
     if (argc>=3)
         BlockSizeCompress=atol(argv[2]);
diff --git a/libs/zlib/contrib/untgz/untgz.c b/libs/zlib/contrib/untgz/untgz.c
index 2c391e598..78579211f 100644
--- a/libs/zlib/contrib/untgz/untgz.c
+++ b/libs/zlib/contrib/untgz/untgz.c
@@ -4,6 +4,22 @@
  * written by Pedro A. Aranda Gutierrez <paag@tid.es>
  * adaptation to Unix by Jean-loup Gailly <jloup@gzip.org>
  * various fixes by Cosmin Truta <cosmint@cs.ubbcluj.ro>
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
  */
 
 #include <stdio.h>
@@ -14,15 +30,10 @@
 
 #include "zlib.h"
 
-#ifdef unix
-#  include <unistd.h>
-#else
+#ifdef _WIN32
 #  include <direct.h>
 #  include <io.h>
-#endif
-
-#ifdef WIN32
-#include <windows.h>
+#  include <windows.h>
 #  ifndef F_OK
 #    define F_OK  0
 #  endif
@@ -33,6 +44,8 @@
 #    define strdup(str)         _strdup(str)
 #  endif
 #else
+#  include <sys/stat.h>
+#  include <unistd.h>
 #  include <utime.h>
 #endif
 
@@ -102,28 +115,14 @@ struct attr_item
 
 enum { TGZ_EXTRACT, TGZ_LIST, TGZ_INVALID };
 
-char *TGZfname          OF((const char *));
-void TGZnotfound        OF((const char *));
-
-int getoct              OF((char *, int));
-char *strtime           OF((time_t *));
-int setfiletime         OF((char *, time_t));
-void push_attr          OF((struct attr_item **, char *, int, time_t));
-void restore_attr       OF((struct attr_item **));
-
-int ExprMatch           OF((char *, char *));
-
-int makedir             OF((char *));
-int matchname           OF((int, int, char **, char *));
-
-void error              OF((const char *));
-int tar                 OF((gzFile, int, int, int, char **));
-
-void help               OF((int));
-int main                OF((int, char **));
-
 char *prog;
 
+void error(const char *msg)
+{
+  fprintf(stderr, "%s: %s\n", prog, msg);
+  exit(1);
+}
+
 const char *TGZsuffix[] = { "\0", ".tar", ".tar.gz", ".taz", ".tgz", NULL };
 
 /* return the file name of the TGZ archive */
@@ -205,7 +204,7 @@ char *strtime (time_t *t)
 
 int setfiletime (char *fname,time_t ftime)
 {
-#ifdef WIN32
+#ifdef _WIN32
   static int isWinNT = -1;
   SYSTEMTIME st;
   FILETIME locft, modft;
@@ -590,12 +589,6 @@ void help(int exitval)
   exit(exitval);
 }
 
-void error(const char *msg)
-{
-  fprintf(stderr, "%s: %s\n", prog, msg);
-  exit(1);
-}
-
 
 /* ============================================================ */
 
@@ -608,7 +601,7 @@ int main(int argc,char **argv)
     int         action = TGZ_EXTRACT;
     int         arg = 1;
     char        *TGZfile;
-    gzFile      *f;
+    gzFile      f;
 
     prog = strrchr(argv[0],'\\');
     if (prog == NULL)
diff --git a/libs/zlib/contrib/vstudio/readme.txt b/libs/zlib/contrib/vstudio/readme.txt
index 48cccc0d2..061bbc0e2 100644
--- a/libs/zlib/contrib/vstudio/readme.txt
+++ b/libs/zlib/contrib/vstudio/readme.txt
@@ -1,4 +1,4 @@
-Building instructions for the DLL versions of Zlib 1.2.11
+Building instructions for the DLL versions of Zlib 1.3.1
 ========================================================
 
 This directory contains projects that build zlib and minizip using
@@ -17,9 +17,6 @@ More information can be found at this site.
 Build instructions for Visual Studio 2008 (32 bits or 64 bits)
 --------------------------------------------------------------
 - Decompress current zlib, including all contrib/* files
-- Compile assembly code (with Visual Studio Command Prompt) by running:
-   bld_ml64.bat (in contrib\masmx64)
-   bld_ml32.bat (in contrib\masmx86)
 - Open contrib\vstudio\vc9\zlibvc.sln with Microsoft Visual C++ 2008
 - Or run: vcbuild /rebuild contrib\vstudio\vc9\zlibvc.sln "Release|Win32"
 
@@ -43,6 +40,12 @@ Build instructions for Visual Studio 2015 (32 bits or 64 bits)
 - Decompress current zlib, including all contrib/* files
 - Open contrib\vstudio\vc14\zlibvc.sln with Microsoft Visual C++ 2015
 
+Build instructions for Visual Studio 2022 (64 bits)
+--------------------------------------------------------------
+- Decompress current zlib, including all contrib/* files
+- Open contrib\vstudio\vc143\zlibvc.sln with Microsoft Visual C++ 2022
+
+
 
 Important
 ---------
@@ -74,5 +77,5 @@ Additional notes
 Gilles Vollant
 info@winimage.com
 
-Visual Studio 2013 and 2015 Projects from Sean Hunt
+Visual Studio 2013, 2015, and 2022 Projects from Sean Hunt
 seandhunt_7@yahoo.com
diff --git a/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters
index 0b2a3de2d..e53556a63 100644
--- a/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters
@@ -3,7 +3,7 @@
   <ItemGroup>
     <Filter Include="Source Files">
       <UniqueIdentifier>{048af943-022b-4db6-beeb-a54c34774ee2}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat</Extensions>
     </Filter>
     <Filter Include="Header Files">
       <UniqueIdentifier>{c1d600d2-888f-4aea-b73e-8b0dd9befa0c}</UniqueIdentifier>
diff --git a/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user
deleted file mode 100644
index 695b5c78b..000000000
--- a/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters
index dd73cd313..bd18d715e 100644
--- a/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters
@@ -3,7 +3,7 @@
   <ItemGroup>
     <Filter Include="Source Files">
       <UniqueIdentifier>{c0419b40-bf50-40da-b153-ff74215b79de}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat</Extensions>
     </Filter>
     <Filter Include="Header Files">
       <UniqueIdentifier>{bb87b070-735b-478e-92ce-7383abb2f36c}</UniqueIdentifier>
diff --git a/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.user
deleted file mode 100644
index 695b5c78b..000000000
--- a/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj b/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj
index 9088d176f..0e668f764 100644
--- a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj
@@ -181,7 +181,7 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -194,7 +194,7 @@
       <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
@@ -241,7 +241,7 @@
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
       <OmitFramePointers>true</OmitFramePointers>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -254,7 +254,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Console</SubSystem>
@@ -269,14 +269,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
@@ -352,14 +352,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
@@ -398,14 +398,6 @@
     <ClCompile Include="..\..\..\crc32.c" />
     <ClCompile Include="..\..\..\deflate.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters
index 249daa89c..3cf52ee3e 100644
--- a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters
@@ -3,7 +3,7 @@
   <ItemGroup>
     <Filter Include="Source Files">
       <UniqueIdentifier>{c1f6a2e3-5da5-4955-8653-310d3efe05a9}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat</Extensions>
     </Filter>
     <Filter Include="Header Files">
       <UniqueIdentifier>{c2aaffdc-2c95-4d6f-8466-4bec5890af2c}</UniqueIdentifier>
@@ -30,9 +30,6 @@
     <ClCompile Include="..\..\..\infback.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c">
       <Filter>Source Files</Filter>
     </ClCompile>
diff --git a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user
deleted file mode 100644
index 695b5c78b..000000000
--- a/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters
index 53a8693bb..aeb550e9c 100644
--- a/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters
@@ -3,7 +3,7 @@
   <ItemGroup>
     <Filter Include="Source Files">
       <UniqueIdentifier>{fa61a89f-93fc-4c89-b29e-36224b7592f4}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm</Extensions>
+      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat</Extensions>
     </Filter>
     <Filter Include="Header Files">
       <UniqueIdentifier>{d4b85da0-2ba2-4934-b57f-e2584e3848ee}</UniqueIdentifier>
diff --git a/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user
deleted file mode 100644
index 695b5c78b..000000000
--- a/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc10/zlib.rc b/libs/zlib/contrib/vstudio/vc10/zlib.rc
index c4e4b016e..a55f341c7 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc10/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1, 2, 11, 0
-  PRODUCTVERSION 1, 2, 11, 0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
 
     BEGIN
       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
-      VALUE "FileVersion",	"1.2.11\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
       VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj b/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj
index b9f2bbe5f..c7ed09e51 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj
@@ -160,7 +160,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -182,16 +182,12 @@
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -210,19 +206,15 @@ bld_ml32.bat</Command>
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -252,7 +244,7 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -274,10 +266,6 @@ bld_ml32.bat</Command>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
     <Midl>
@@ -285,7 +273,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -314,8 +302,8 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -334,14 +322,10 @@ bld_ml64.bat</Command>
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
     <Midl>
@@ -349,7 +333,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -379,7 +363,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -409,7 +393,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -443,14 +427,6 @@ bld_ml64.bat</Command>
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters
index c8c7f7ea3..ba7e23d32 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters
@@ -33,9 +33,6 @@
     <ClCompile Include="..\..\..\infback.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c">
       <Filter>Source Files</Filter>
     </ClCompile>
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user
deleted file mode 100644
index 695b5c78b..000000000
--- a/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibvc.def b/libs/zlib/contrib/vstudio/vc10/zlibvc.def
index f876c3bca..53947cc31 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc10/zlibvc.def
@@ -1,7 +1,7 @@
 LIBRARY
 ; zlib data compression and ZIP file I/O library
 
-VERSION		1.2
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -151,3 +151,8 @@ EXPORTS
         deflateGetDictionary                    @173
         adler32_z                               @174
         crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj b/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj
index 6ff9ddb07..19dfc35bf 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj
@@ -197,8 +197,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -219,7 +219,7 @@
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -229,10 +229,6 @@
       <DataExecutionPrevention>
       </DataExecutionPrevention>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <Midl>
@@ -244,7 +240,7 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -288,8 +284,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -312,7 +308,7 @@ bld_ml32.bat</Command>
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -322,10 +318,6 @@ bld_ml32.bat</Command>
       <DataExecutionPrevention>
       </DataExecutionPrevention>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Midl>
@@ -337,8 +329,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -358,7 +350,7 @@ bld_ml32.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
@@ -366,10 +358,6 @@ bld_ml32.bat</Command>
       <SubSystem>Windows</SubSystem>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
     <Midl>
@@ -381,7 +369,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -424,7 +412,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -465,7 +453,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -510,8 +498,8 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -533,7 +521,7 @@ bld_ml64.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -541,10 +529,6 @@ bld_ml64.bat</Command>
       <SubSystem>Windows</SubSystem>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
     <Midl>
@@ -556,7 +540,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -601,14 +585,6 @@ bld_ml64.bat</Command>
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters b/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters
index 180b71cd6..67c444ab9 100644
--- a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters
+++ b/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters
@@ -42,9 +42,6 @@
     <ClCompile Include="..\..\..\infback.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c">
       <Filter>Source Files</Filter>
     </ClCompile>
diff --git a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user b/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user
deleted file mode 100644
index 695b5c78b..000000000
--- a/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc11/testzlib.vcxproj b/libs/zlib/contrib/vstudio/vc11/testzlib.vcxproj
index 6d5595401..c6198c1fd 100644
--- a/libs/zlib/contrib/vstudio/vc11/testzlib.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc11/testzlib.vcxproj
@@ -187,7 +187,7 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -200,7 +200,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
@@ -247,7 +247,7 @@
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
       <OmitFramePointers>true</OmitFramePointers>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -260,7 +260,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Console</SubSystem>
@@ -275,14 +275,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
@@ -358,14 +358,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
@@ -404,14 +404,6 @@
     <ClCompile Include="..\..\..\crc32.c" />
     <ClCompile Include="..\..\..\deflate.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc11/zlib.rc b/libs/zlib/contrib/vstudio/vc11/zlib.rc
index c4e4b016e..a55f341c7 100644
--- a/libs/zlib/contrib/vstudio/vc11/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc11/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1, 2, 11, 0
-  PRODUCTVERSION 1, 2, 11, 0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
 
     BEGIN
       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
-      VALUE "FileVersion",	"1.2.11\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
       VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc11/zlibstat.vcxproj b/libs/zlib/contrib/vstudio/vc11/zlibstat.vcxproj
index 806b76a88..86fb1c8bf 100644
--- a/libs/zlib/contrib/vstudio/vc11/zlibstat.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc11/zlibstat.vcxproj
@@ -167,7 +167,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -193,8 +193,8 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -213,7 +213,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -221,7 +221,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -251,7 +251,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -280,7 +280,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -309,8 +309,8 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -329,7 +329,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -340,7 +340,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -370,7 +370,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -400,7 +400,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -434,14 +434,6 @@
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc11/zlibvc.def b/libs/zlib/contrib/vstudio/vc11/zlibvc.def
index f876c3bca..53947cc31 100644
--- a/libs/zlib/contrib/vstudio/vc11/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc11/zlibvc.def
@@ -1,7 +1,7 @@
 LIBRARY
 ; zlib data compression and ZIP file I/O library
 
-VERSION		1.2
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -151,3 +151,8 @@ EXPORTS
         deflateGetDictionary                    @173
         adler32_z                               @174
         crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc11/zlibvc.vcxproj b/libs/zlib/contrib/vstudio/vc11/zlibvc.vcxproj
index c65b95fdb..fc8cd9c17 100644
--- a/libs/zlib/contrib/vstudio/vc11/zlibvc.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc11/zlibvc.vcxproj
@@ -204,8 +204,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -226,7 +226,7 @@
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -240,10 +240,6 @@
       </DataExecutionPrevention>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <Midl>
@@ -255,7 +251,7 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -303,8 +299,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -327,7 +323,7 @@ bld_ml32.bat</Command>
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -341,10 +337,6 @@ bld_ml32.bat</Command>
       </DataExecutionPrevention>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Midl>
@@ -356,8 +348,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -377,7 +369,7 @@ bld_ml32.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -389,10 +381,6 @@ bld_ml32.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\contrib\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
     <Midl>
@@ -404,7 +392,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -447,7 +435,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -492,7 +480,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -537,8 +525,8 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -560,7 +548,7 @@ bld_ml64.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -572,10 +560,6 @@ bld_ml64.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
     <Midl>
@@ -587,7 +571,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -632,14 +616,6 @@ bld_ml64.bat</Command>
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc12/testzlib.vcxproj b/libs/zlib/contrib/vstudio/vc12/testzlib.vcxproj
index 64b2cbe34..41303c0af 100644
--- a/libs/zlib/contrib/vstudio/vc12/testzlib.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc12/testzlib.vcxproj
@@ -190,7 +190,7 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -203,7 +203,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
@@ -250,7 +250,7 @@
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
       <OmitFramePointers>true</OmitFramePointers>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -263,7 +263,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Console</SubSystem>
@@ -279,14 +279,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
@@ -362,14 +362,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
@@ -408,14 +408,6 @@
     <ClCompile Include="..\..\..\crc32.c" />
     <ClCompile Include="..\..\..\deflate.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc12/zlib.rc b/libs/zlib/contrib/vstudio/vc12/zlib.rc
index c4e4b016e..a55f341c7 100644
--- a/libs/zlib/contrib/vstudio/vc12/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc12/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1, 2, 11, 0
-  PRODUCTVERSION 1, 2, 11, 0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
 
     BEGIN
       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
-      VALUE "FileVersion",	"1.2.11\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
       VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc12/zlibstat.vcxproj b/libs/zlib/contrib/vstudio/vc12/zlibstat.vcxproj
index 3fdee7c50..6629d8e2a 100644
--- a/libs/zlib/contrib/vstudio/vc12/zlibstat.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc12/zlibstat.vcxproj
@@ -170,7 +170,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -196,8 +196,8 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -216,7 +216,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -224,7 +224,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -254,7 +254,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -283,7 +283,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -312,8 +312,8 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -332,7 +332,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -343,7 +343,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -373,7 +373,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -403,7 +403,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -437,14 +437,6 @@
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc12/zlibvc.def b/libs/zlib/contrib/vstudio/vc12/zlibvc.def
index f876c3bca..53947cc31 100644
--- a/libs/zlib/contrib/vstudio/vc12/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc12/zlibvc.def
@@ -1,7 +1,7 @@
 LIBRARY
 ; zlib data compression and ZIP file I/O library
 
-VERSION		1.2
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -151,3 +151,8 @@ EXPORTS
         deflateGetDictionary                    @173
         adler32_z                               @174
         crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc12/zlibvc.vcxproj b/libs/zlib/contrib/vstudio/vc12/zlibvc.vcxproj
index ab2b6c360..4e0de691e 100644
--- a/libs/zlib/contrib/vstudio/vc12/zlibvc.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc12/zlibvc.vcxproj
@@ -207,8 +207,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -229,7 +229,7 @@
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -243,10 +243,6 @@
       </DataExecutionPrevention>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <Midl>
@@ -258,7 +254,7 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -306,8 +302,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -330,7 +326,7 @@ bld_ml32.bat</Command>
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -345,10 +341,6 @@ bld_ml32.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Midl>
@@ -360,8 +352,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -381,7 +373,7 @@ bld_ml32.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -393,10 +385,6 @@ bld_ml32.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\contrib\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
     <Midl>
@@ -408,7 +396,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -451,7 +439,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -496,7 +484,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -541,8 +529,8 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -564,7 +552,7 @@ bld_ml64.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -576,10 +564,6 @@ bld_ml64.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
     <Midl>
@@ -591,7 +575,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -636,14 +620,6 @@ bld_ml64.bat</Command>
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc14/testzlib.vcxproj b/libs/zlib/contrib/vstudio/vc14/testzlib.vcxproj
index 2c371252a..545204954 100644
--- a/libs/zlib/contrib/vstudio/vc14/testzlib.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc14/testzlib.vcxproj
@@ -190,7 +190,7 @@
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -203,7 +203,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
@@ -250,7 +250,7 @@
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
       <OmitFramePointers>true</OmitFramePointers>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -263,7 +263,7 @@
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)testzlib.exe</OutputFile>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <SubSystem>Console</SubSystem>
@@ -279,14 +279,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
@@ -362,14 +362,14 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <ClCompile>
       <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <BasicRuntimeChecks>Default</BasicRuntimeChecks>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
     </ClCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
@@ -408,14 +408,6 @@
     <ClCompile Include="..\..\..\crc32.c" />
     <ClCompile Include="..\..\..\deflate.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc14/zlib.rc b/libs/zlib/contrib/vstudio/vc14/zlib.rc
index c4e4b016e..a55f341c7 100644
--- a/libs/zlib/contrib/vstudio/vc14/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc14/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1, 2, 11, 0
-  PRODUCTVERSION 1, 2, 11, 0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
 
     BEGIN
       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
-      VALUE "FileVersion",	"1.2.11\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
       VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc14/zlibstat.vcxproj b/libs/zlib/contrib/vstudio/vc14/zlibstat.vcxproj
index 3e4b98639..85c1e8958 100644
--- a/libs/zlib/contrib/vstudio/vc14/zlibstat.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc14/zlibstat.vcxproj
@@ -170,7 +170,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -196,8 +196,8 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -216,7 +216,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -224,7 +224,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -254,7 +254,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -283,7 +283,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -312,8 +312,8 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -332,7 +332,7 @@
     </ResourceCompile>
     <Lib>
       <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
     </Lib>
@@ -343,7 +343,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -373,7 +373,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -403,7 +403,7 @@
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -437,14 +437,6 @@
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc14/zlibvc.def b/libs/zlib/contrib/vstudio/vc14/zlibvc.def
index f876c3bca..53947cc31 100644
--- a/libs/zlib/contrib/vstudio/vc14/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc14/zlibvc.def
@@ -1,7 +1,7 @@
 LIBRARY
 ; zlib data compression and ZIP file I/O library
 
-VERSION		1.2
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -151,3 +151,8 @@ EXPORTS
         deflateGetDictionary                    @173
         adler32_z                               @174
         crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc14/zlibvc.vcxproj b/libs/zlib/contrib/vstudio/vc14/zlibvc.vcxproj
index f8f673cb0..424ff55b7 100644
--- a/libs/zlib/contrib/vstudio/vc14/zlibvc.vcxproj
+++ b/libs/zlib/contrib/vstudio/vc14/zlibvc.vcxproj
@@ -207,8 +207,8 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -229,7 +229,7 @@
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -243,10 +243,6 @@
       </DataExecutionPrevention>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
     <Midl>
@@ -258,7 +254,7 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -306,8 +302,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -330,7 +326,7 @@ bld_ml32.bat</Command>
     </ResourceCompile>
     <Link>
       <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalDependencies>..\..\masmx86\match686.obj;..\..\masmx86\inffas32.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -345,10 +341,6 @@ bld_ml32.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx86
-bld_ml32.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Midl>
@@ -360,8 +352,8 @@ bld_ml32.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
@@ -381,7 +373,7 @@ bld_ml32.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
@@ -393,10 +385,6 @@ bld_ml32.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\contrib\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">
     <Midl>
@@ -408,7 +396,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -451,7 +439,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -496,7 +484,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -541,8 +529,8 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
       </ExceptionHandling>
@@ -564,7 +552,7 @@ bld_ml64.bat</Command>
       <Culture>0x040c</Culture>
     </ResourceCompile>
     <Link>
-      <AdditionalDependencies>..\..\masmx64\gvmat64.obj;..\..\masmx64\inffasx64.obj;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
       <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
@@ -576,10 +564,6 @@ bld_ml64.bat</Command>
       <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
       <TargetMachine>MachineX64</TargetMachine>
     </Link>
-    <PreBuildEvent>
-      <Command>cd ..\..\masmx64
-bld_ml64.bat</Command>
-    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">
     <Midl>
@@ -591,7 +575,7 @@ bld_ml64.bat</Command>
     </Midl>
     <ClCompile>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..;..\..\masmx86;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <ExceptionHandling>
@@ -636,14 +620,6 @@ bld_ml64.bat</Command>
     <ClCompile Include="..\..\..\gzread.c" />
     <ClCompile Include="..\..\..\gzwrite.c" />
     <ClCompile Include="..\..\..\infback.c" />
-    <ClCompile Include="..\..\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Itanium'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="..\..\..\inffast.c" />
     <ClCompile Include="..\..\..\inflate.c" />
     <ClCompile Include="..\..\..\inftrees.c" />
diff --git a/libs/zlib/contrib/vstudio/vc17/miniunz.vcxproj b/libs/zlib/contrib/vstudio/vc17/miniunz.vcxproj
new file mode 100644
index 000000000..68ef16588
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/miniunz.vcxproj
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</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="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</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>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C52F9E7B-498A-42BE-8DB4-85A15694382A}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|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)'=='Debug|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)'=='Release|ARM64'" 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|ARM'" 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)'=='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)'=='Debug|ARM64'" 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)'=='Debug|ARM'" 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>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniUnzip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniUnzip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</GenerateManifest>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir>arm64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir>arm64\MiniUnzip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir>arm\MiniUnzip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\MiniUnzip$(Configuration)\</OutDir>
+    <IntDir>arm\MiniUnzip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)miniunz.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)miniunz.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\minizip\miniunz.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="zlibvc.vcxproj">
+      <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc17/minizip.vcxproj b/libs/zlib/contrib/vstudio/vc17/minizip.vcxproj
new file mode 100644
index 000000000..dd3c52e70
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/minizip.vcxproj
@@ -0,0 +1,405 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</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="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</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>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|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)'=='Debug|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)'=='Release|ARM64'" 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|ARM'" 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)'=='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)'=='Debug|ARM64'" 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)'=='Debug|ARM'" 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>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniZip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\MiniZip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniZip$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\MiniZip$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\MiniZip$(Configuration)\</OutDir>
+    <IntDir>arm64\MiniZip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\MiniZip$(Configuration)\</OutDir>
+    <IntDir>arm64\MiniZip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\MiniZip$(Configuration)\</OutDir>
+    <IntDir>arm\MiniZip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\MiniZip$(Configuration)\</OutDir>
+    <IntDir>arm\MiniZip$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)minizip.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)minizip.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\minizip\minizip.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="zlibvc.vcxproj">
+      <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc17/testzlib.vcxproj b/libs/zlib/contrib/vstudio/vc17/testzlib.vcxproj
new file mode 100644
index 000000000..4cc99b3ff
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/testzlib.vcxproj
@@ -0,0 +1,473 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</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="ReleaseWithoutAsm|ARM">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|ARM64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|Win32">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|x64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</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>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}</ProjectGuid>
+    <RootNamespace>testzlib</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|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)'=='ReleaseWithoutAsm|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)'=='Debug|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)'=='Release|ARM64'" 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|ARM'" 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)'=='ReleaseWithoutAsm|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)'=='ReleaseWithoutAsm|ARM64'" 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)'=='ReleaseWithoutAsm|ARM'" 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)'=='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)'=='Debug|ARM64'" 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)'=='Debug|ARM'" 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>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlib$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlib$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlib$(Configuration)\Tmp\</IntDir>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</GenerateManifest>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm64\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm64\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <OutDir>arm64\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm64\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <OutDir>arm\TestZlib$(Configuration)\</OutDir>
+    <IntDir>arm\TestZlib$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerOutput>AssemblyAndSourceCode</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlib.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\adler32.c" />
+    <ClCompile Include="..\..\..\compress.c" />
+    <ClCompile Include="..\..\..\crc32.c" />
+    <ClCompile Include="..\..\..\deflate.c" />
+    <ClCompile Include="..\..\..\infback.c" />
+    <ClCompile Include="..\..\..\inffast.c" />
+    <ClCompile Include="..\..\..\inflate.c" />
+    <ClCompile Include="..\..\..\inftrees.c" />
+    <ClCompile Include="..\..\testzlib\testzlib.c" />
+    <ClCompile Include="..\..\..\trees.c" />
+    <ClCompile Include="..\..\..\uncompr.c" />
+    <ClCompile Include="..\..\..\zutil.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj b/libs/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj
new file mode 100644
index 000000000..73bba55da
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</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="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</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>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C52F9E7B-498A-42BE-8DB4-85A15694366A}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|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)'=='Debug|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)'=='Release|ARM64'" 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|ARM'" 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)'=='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)'=='Debug|ARM64'" 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)'=='Debug|ARM'" 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>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\TestZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\TestZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</GenerateManifest>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm64\TestZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm\TestZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\TestZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm\TestZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x86\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllDebug\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)testzlib.pdb</ProgramDatabaseFile>
+      <SubSystem>Console</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <OmitFramePointers>true</OmitFramePointers>
+      <AdditionalIncludeDirectories>..\..\..;..\..\minizip;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>x64\ZlibDllRelease\zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)testzlibdll.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\testzlib\testzlib.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="zlibvc.vcxproj">
+      <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc8/zlib.rc b/libs/zlib/contrib/vstudio/vc17/zlib.rc
similarity index 68%
rename from libs/zlib/contrib/vstudio/vc8/zlib.rc
rename to libs/zlib/contrib/vstudio/vc17/zlib.rc
index 58f756722..a55f341c7 100644
--- a/libs/zlib/contrib/vstudio/vc8/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc17/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1,2,3,0
-  PRODUCTVERSION 1,2,3,0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -16,13 +16,13 @@ BEGIN
     //language ID = U.S. English, char set = Windows, Multilingual
 
     BEGIN
-      VALUE "FileDescription", "zlib data compression library\0"
-      VALUE "FileVersion",	"1.2.3.0\0"
+      VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
-      VALUE "OriginalFilename",	"zlib.dll\0"
+      VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2003 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc17/zlibstat.vcxproj b/libs/zlib/contrib/vstudio/vc17/zlibstat.vcxproj
new file mode 100644
index 000000000..b946ac2a9
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/zlibstat.vcxproj
@@ -0,0 +1,602 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</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="ReleaseWithoutAsm|ARM">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|ARM64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|Win32">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|x64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</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>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}</ProjectGuid>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|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|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)'=='Debug|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)'=='ReleaseWithoutAsm|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)'=='ReleaseWithoutAsm|ARM64'" 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)'=='ReleaseWithoutAsm|ARM'" 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)'=='Release|ARM64'" 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|ARM'" 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)'=='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)'=='Debug|ARM64'" 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)'=='Debug|ARM'" 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>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibStat$(Configuration)\Tmp\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <OutDir>arm64\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <OutDir>arm\ZlibStat$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibStat$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:X86 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <Midl />
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <Midl />
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <Midl />
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:AMD64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <Midl />
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM64 /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <Midl />
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibstat.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Lib>
+      <AdditionalOptions>/MACHINE:ARM /NODEFAULTLIB %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibstat.lib</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\adler32.c" />
+    <ClCompile Include="..\..\..\compress.c" />
+    <ClCompile Include="..\..\..\crc32.c" />
+    <ClCompile Include="..\..\..\deflate.c" />
+    <ClCompile Include="..\..\..\gzclose.c" />
+    <ClCompile Include="..\..\..\gzlib.c" />
+    <ClCompile Include="..\..\..\gzread.c" />
+    <ClCompile Include="..\..\..\gzwrite.c" />
+    <ClCompile Include="..\..\..\infback.c" />
+    <ClCompile Include="..\..\..\inffast.c" />
+    <ClCompile Include="..\..\..\inflate.c" />
+    <ClCompile Include="..\..\..\inftrees.c" />
+    <ClCompile Include="..\..\minizip\ioapi.c" />
+    <ClCompile Include="..\..\..\trees.c" />
+    <ClCompile Include="..\..\..\uncompr.c" />
+    <ClCompile Include="..\..\minizip\unzip.c" />
+    <ClCompile Include="..\..\minizip\zip.c" />
+    <ClCompile Include="..\..\..\zutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="zlib.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="zlibvc.def" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc8/zlibvc.def b/libs/zlib/contrib/vstudio/vc17/zlibvc.def
similarity index 60%
rename from libs/zlib/contrib/vstudio/vc8/zlibvc.def
rename to libs/zlib/contrib/vstudio/vc17/zlibvc.def
index 74dfdb8af..53947cc31 100644
--- a/libs/zlib/contrib/vstudio/vc8/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc17/zlibvc.def
@@ -1,7 +1,7 @@
+LIBRARY
+; zlib data compression and ZIP file I/O library
 
-VERSION		1.23
-
-HEAPSIZE	1048576,8192
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -55,6 +55,7 @@ EXPORTS
         gzungetc                                 @49
         zlibCompileFlags                         @50
         deflatePrime                             @51
+        deflatePending                           @52
 
         unzOpen                                  @61
         unzClose                                 @62
@@ -90,3 +91,68 @@ EXPORTS
         unzGoToFilePos                           @101
 
         fill_win32_filefunc                      @110
+
+; zlibwapi v1.2.4 added:
+        fill_win32_filefunc64                   @111
+        fill_win32_filefunc64A                  @112
+        fill_win32_filefunc64W                  @113
+
+        unzOpen64                               @120
+        unzOpen2_64                             @121
+        unzGetGlobalInfo64                      @122
+        unzGetCurrentFileInfo64                 @124
+        unzGetCurrentFileZStreamPos64           @125
+        unztell64                               @126
+        unzGetFilePos64                         @127
+        unzGoToFilePos64                        @128
+
+        zipOpen64                               @130
+        zipOpen2_64                             @131
+        zipOpenNewFileInZip64                   @132
+        zipOpenNewFileInZip2_64                 @133
+        zipOpenNewFileInZip3_64                 @134
+        zipOpenNewFileInZip4_64                 @135
+        zipCloseFileInZipRaw64                  @136
+
+; zlib1 v1.2.4 added:
+        adler32_combine                         @140
+        crc32_combine                           @142
+        deflateSetHeader                        @144
+        deflateTune                             @145
+        gzbuffer                                @146
+        gzclose_r                               @147
+        gzclose_w                               @148
+        gzdirect                                @149
+        gzoffset                                @150
+        inflateGetHeader                        @156
+        inflateMark                             @157
+        inflatePrime                            @158
+        inflateReset2                           @159
+        inflateUndermine                        @160
+
+; zlib1 v1.2.6 added:
+        gzgetc_                                 @161
+        inflateResetKeep                        @163
+        deflateResetKeep                        @164
+
+; zlib1 v1.2.7 added:
+        gzopen_w                                @165
+
+; zlib1 v1.2.8 added:
+        inflateGetDictionary                    @166
+        gzvprintf                               @167
+
+; zlib1 v1.2.9 added:
+        inflateCodesUsed                        @168
+        inflateValidate                         @169
+        uncompress2                             @170
+        gzfread                                 @171
+        gzfwrite                                @172
+        deflateGetDictionary                    @173
+        adler32_z                               @174
+        crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc17/zlibvc.sln b/libs/zlib/contrib/vstudio/vc17/zlibvc.sln
new file mode 100644
index 000000000..67896b747
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/zlibvc.sln
@@ -0,0 +1,179 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.4.33015.44
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcxproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlib", "testzlib.vcxproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlibdll", "testzlibdll.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694366A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcxproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcxproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|ARM = Debug|ARM
+		Debug|ARM64 = Debug|ARM64
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|ARM = Release|ARM
+		Release|ARM64 = Release|ARM64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+		ReleaseWithoutAsm|ARM = ReleaseWithoutAsm|ARM
+		ReleaseWithoutAsm|ARM64 = ReleaseWithoutAsm|ARM64
+		ReleaseWithoutAsm|Win32 = ReleaseWithoutAsm|Win32
+		ReleaseWithoutAsm|x64 = ReleaseWithoutAsm|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM.ActiveCfg = Debug|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM.Build.0 = Debug|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|ARM64.Build.0 = Debug|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.ActiveCfg = Debug|x64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.Build.0 = Debug|x64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM.ActiveCfg = Release|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM.Build.0 = Release|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM64.ActiveCfg = Release|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|ARM64.Build.0 = Release|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = Release|x64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = Release|x64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
+		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM.ActiveCfg = Debug|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM.Build.0 = Debug|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|ARM64.Build.0 = Debug|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.Build.0 = Debug|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.ActiveCfg = Debug|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.Build.0 = Debug|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM.ActiveCfg = Release|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM.Build.0 = Release|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM64.ActiveCfg = Release|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|ARM64.Build.0 = Release|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.ActiveCfg = Release|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.Build.0 = Release|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.ActiveCfg = Release|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.Build.0 = Release|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
+		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.ActiveCfg = Debug|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.Build.0 = Debug|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.Build.0 = Debug|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.ActiveCfg = Release|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.Build.0 = Release|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.ActiveCfg = Release|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.Build.0 = Release|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.ActiveCfg = ReleaseWithoutAsm|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.Build.0 = ReleaseWithoutAsm|ARM
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.ActiveCfg = ReleaseWithoutAsm|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.Build.0 = ReleaseWithoutAsm|ARM64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
+		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM.ActiveCfg = Debug|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM.Build.0 = Debug|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|ARM64.Build.0 = Debug|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.Build.0 = Debug|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.ActiveCfg = Debug|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.Build.0 = Debug|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM.ActiveCfg = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM.Build.0 = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM64.ActiveCfg = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|ARM64.Build.0 = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.ActiveCfg = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.Build.0 = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.ActiveCfg = Release|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.ActiveCfg = Debug|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM.Build.0 = Debug|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|ARM64.Build.0 = Debug|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.ActiveCfg = Release|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM.Build.0 = Release|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.ActiveCfg = Release|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|ARM64.Build.0 = Release|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
+		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM.ActiveCfg = Debug|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM.Build.0 = Debug|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM64.ActiveCfg = Debug|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|ARM64.Build.0 = Debug|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.Build.0 = Debug|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.ActiveCfg = Debug|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.Build.0 = Debug|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM.ActiveCfg = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM.Build.0 = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM64.ActiveCfg = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|ARM64.Build.0 = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.ActiveCfg = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.Build.0 = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.ActiveCfg = Release|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM.ActiveCfg = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM.Build.0 = Release|ARM
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM64.ActiveCfg = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|ARM64.Build.0 = Release|ARM64
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Win32
+		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {EAA58685-56D9-43F2-8703-FD2CB020745E}
+	EndGlobalSection
+EndGlobal
diff --git a/libs/zlib/contrib/vstudio/vc17/zlibvc.vcxproj b/libs/zlib/contrib/vstudio/vc17/zlibvc.vcxproj
new file mode 100644
index 000000000..10a7a901e
--- /dev/null
+++ b/libs/zlib/contrib/vstudio/vc17/zlibvc.vcxproj
@@ -0,0 +1,875 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|ARM">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|ARM64">
+      <Configuration>Debug</Configuration>
+      <Platform>ARM64</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="ReleaseWithoutAsm|ARM">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|ARM64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|Win32">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="ReleaseWithoutAsm|x64">
+      <Configuration>ReleaseWithoutAsm</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</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>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8FD826F8-3739-44E6-8CC8-997122E53B8D}</ProjectGuid>
+    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <PlatformToolset>v143</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|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)'=='ReleaseWithoutAsm|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)'=='Debug|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)'=='Release|ARM64'" 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|ARM'" 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)'=='ReleaseWithoutAsm|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)'=='ReleaseWithoutAsm|ARM64'" 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)'=='ReleaseWithoutAsm|ARM'" 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)'=='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)'=='Debug|ARM64'" 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)'=='Debug|ARM'" 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>
+    <_ProjectFileVersion>10.0.30128.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">x86\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">false</GenerateManifest>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">x64\ZlibDll$(Configuration)\Tmp\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</LinkIncremental>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</LinkIncremental>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</GenerateManifest>
+    <GenerateManifest Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</GenerateManifest>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">zlibwapi</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">zlibwapi</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <OutDir>arm64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <OutDir>arm\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <OutDir>arm64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <OutDir>arm64\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm64\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <OutDir>arm\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <OutDir>arm\ZlibDll$(Configuration)\</OutDir>
+    <IntDir>arm\ZlibDll$(Configuration)\Tmp\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>Win32</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+      <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+    <Midl>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseWithoutAsm|ARM'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TargetEnvironment>X64</TargetEnvironment>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+    <Midl>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MkTypLibCompatible>true</MkTypLibCompatible>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TypeLibraryName>$(OutDir)zlibvc.tlb</TypeLibraryName>
+    </Midl>
+    <ClCompile>
+      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+      <AdditionalIncludeDirectories>..\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <StringPooling>true</StringPooling>
+      <ExceptionHandling>
+      </ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeaderOutputFile>$(IntDir)zlibvc.pch</PrecompiledHeaderOutputFile>
+      <AssemblerOutput>All</AssemblerOutput>
+      <AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
+      <BrowseInformation>
+      </BrowseInformation>
+      <WarningLevel>Level3</WarningLevel>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </ClCompile>
+    <ResourceCompile>
+      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <Culture>0x040c</Culture>
+    </ResourceCompile>
+    <Link>
+      <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(OutDir)zlibwapi.dll</OutputFile>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+      <ModuleDefinitionFile>.\zlibvc.def</ModuleDefinitionFile>
+      <ProgramDatabaseFile>$(OutDir)zlibwapi.pdb</ProgramDatabaseFile>
+      <GenerateMapFile>true</GenerateMapFile>
+      <MapFileName>$(OutDir)zlibwapi.map</MapFileName>
+      <SubSystem>Windows</SubSystem>
+      <ImportLibrary>$(OutDir)zlibwapi.lib</ImportLibrary>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\adler32.c" />
+    <ClCompile Include="..\..\..\compress.c" />
+    <ClCompile Include="..\..\..\crc32.c" />
+    <ClCompile Include="..\..\..\deflate.c" />
+    <ClCompile Include="..\..\..\gzclose.c" />
+    <ClCompile Include="..\..\..\gzlib.c" />
+    <ClCompile Include="..\..\..\gzread.c" />
+    <ClCompile Include="..\..\..\gzwrite.c" />
+    <ClCompile Include="..\..\..\infback.c" />
+    <ClCompile Include="..\..\..\inffast.c" />
+    <ClCompile Include="..\..\..\inflate.c" />
+    <ClCompile Include="..\..\..\inftrees.c" />
+    <ClCompile Include="..\..\minizip\ioapi.c" />
+    <ClCompile Include="..\..\minizip\iowin32.c" />
+    <ClCompile Include="..\..\..\trees.c" />
+    <ClCompile Include="..\..\..\uncompr.c" />
+    <ClCompile Include="..\..\minizip\unzip.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <ClCompile Include="..\..\minizip\zip.c">
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">ZLIB_INTERNAL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <ClCompile Include="..\..\..\zutil.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="zlib.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="zlibvc.def" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\deflate.h" />
+    <ClInclude Include="..\..\..\infblock.h" />
+    <ClInclude Include="..\..\..\infcodes.h" />
+    <ClInclude Include="..\..\..\inffast.h" />
+    <ClInclude Include="..\..\..\inftrees.h" />
+    <ClInclude Include="..\..\..\infutil.h" />
+    <ClInclude Include="..\..\..\zconf.h" />
+    <ClInclude Include="..\..\..\zlib.h" />
+    <ClInclude Include="..\..\..\zutil.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
diff --git a/libs/zlib/contrib/vstudio/vc7/miniunz.vcproj b/libs/zlib/contrib/vstudio/vc7/miniunz.vcproj
deleted file mode 100644
index ad5117c84..000000000
--- a/libs/zlib/contrib/vstudio/vc7/miniunz.vcproj
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="miniunz"
-	ProjectGUID="{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug"
-			IntermediateDirectory="Debug"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="5"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/miniunz.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="TRUE"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="TRUE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
-			<File
-				RelativePath="..\..\minizip\miniunz.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
-		</Filter>
-		<File
-			RelativePath="ReleaseDll\zlibwapi.lib">
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc7/minizip.vcproj b/libs/zlib/contrib/vstudio/vc7/minizip.vcproj
deleted file mode 100644
index fb5b6320d..000000000
--- a/libs/zlib/contrib/vstudio/vc7/minizip.vcproj
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="minizip"
-	ProjectGUID="{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug"
-			IntermediateDirectory="Debug"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="5"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/minizip.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="TRUE"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="TRUE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
-			<File
-				RelativePath="..\..\minizip\minizip.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
-		</Filter>
-		<File
-			RelativePath="ReleaseDll\zlibwapi.lib">
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc7/testzlib.vcproj b/libs/zlib/contrib/vstudio/vc7/testzlib.vcproj
deleted file mode 100644
index 97bc3e8c8..000000000
--- a/libs/zlib/contrib/vstudio/vc7/testzlib.vcproj
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="testZlibDll"
-	ProjectGUID="{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}"
-	Keyword="Win32Proj">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="Debug"
-			IntermediateDirectory="Debug"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="TRUE"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="5"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="Release"
-			IntermediateDirectory="Release"
-			ConfigurationType="1"
-			CharacterSet="2">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="TRUE"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="TRUE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="TRUE"
-				DebugInformationFormat="3"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="TRUE"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
-			<File
-				RelativePath="..\..\testzlib\testzlib.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc">
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
-		</Filter>
-		<File
-			RelativePath="ReleaseDll\zlibwapi.lib">
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc7/zlib.rc b/libs/zlib/contrib/vstudio/vc7/zlib.rc
deleted file mode 100644
index 58f756722..000000000
--- a/libs/zlib/contrib/vstudio/vc7/zlib.rc
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <windows.h>
-
-#define IDR_VERSION1  1
-IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1,2,3,0
-  PRODUCTVERSION 1,2,3,0
-  FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
-  FILEFLAGS	0
-  FILEOS	VOS_DOS_WINDOWS32
-  FILETYPE	VFT_DLL
-  FILESUBTYPE	0	// not used
-BEGIN
-  BLOCK "StringFileInfo"
-  BEGIN
-    BLOCK "040904E4"
-    //language ID = U.S. English, char set = Windows, Multilingual
-
-    BEGIN
-      VALUE "FileDescription", "zlib data compression library\0"
-      VALUE "FileVersion",	"1.2.3.0\0"
-      VALUE "InternalName",	"zlib\0"
-      VALUE "OriginalFilename",	"zlib.dll\0"
-      VALUE "ProductName",	"ZLib.DLL\0"
-      VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2003 Jean-loup Gailly & Mark Adler\0"
-    END
-  END
-  BLOCK "VarFileInfo"
-  BEGIN
-    VALUE "Translation", 0x0409, 1252
-  END
-END
diff --git a/libs/zlib/contrib/vstudio/vc7/zlibstat.vcproj b/libs/zlib/contrib/vstudio/vc7/zlibstat.vcproj
deleted file mode 100644
index 766d7a4d6..000000000
--- a/libs/zlib/contrib/vstudio/vc7/zlibstat.vcproj
+++ /dev/null
@@ -1,246 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="zlibstat"
-	SccProjectName=""
-	SccLocalPath="">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory=".\zlibstatDebug"
-			IntermediateDirectory=".\zlibstatDebug"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="5"
-				PrecompiledHeaderFile=".\zlibstatDebug/zlibstat.pch"
-				AssemblerListingLocation=".\zlibstatDebug/"
-				ObjectFile=".\zlibstatDebug/"
-				ProgramDataBaseFileName=".\zlibstatDebug/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				DebugInformationFormat="1"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/NODEFAULTLIB "
-				OutputFile=".\zlibstatDebug\zlibstat.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseAxp|Win32"
-			OutputDirectory=".\zlibsta0"
-			IntermediateDirectory=".\zlibsta0"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibsta0/zlibstat.pch"
-				AssemblerListingLocation=".\zlibsta0/"
-				ObjectFile=".\zlibsta0/"
-				ProgramDataBaseFileName=".\zlibsta0/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/NODEFAULTLIB "
-				OutputFile=".\zlibsta0\zlibstat.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\zlibstat"
-			IntermediateDirectory=".\zlibstat"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;ASMV;ASMINF"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibstat/zlibstat.pch"
-				AssemblerListingLocation=".\zlibstat/"
-				ObjectFile=".\zlibstat/"
-				ProgramDataBaseFileName=".\zlibstat/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj /NODEFAULTLIB "
-				OutputFile=".\zlibstat\zlibstat.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Win32"
-			OutputDirectory="zlibstatWithoutAsm"
-			IntermediateDirectory="zlibstatWithoutAsm"
-			ConfigurationType="4"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="4"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibstat/zlibstat.pch"
-				AssemblerListingLocation=".\zlibstatWithoutAsm/"
-				ObjectFile=".\zlibstatWithoutAsm/"
-				ProgramDataBaseFileName=".\zlibstatWithoutAsm/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions=" /NODEFAULTLIB "
-				OutputFile=".\zlibstatWithoutAsm\zlibstat.lib"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCMIDLTool"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="">
-			<File
-				RelativePath="..\..\..\adler32.c">
-			</File>
-			<File
-				RelativePath="..\..\..\compress.c">
-			</File>
-			<File
-				RelativePath="..\..\..\crc32.c">
-			</File>
-			<File
-				RelativePath="..\..\..\deflate.c">
-			</File>
-			<File
-				RelativePath="..\..\masmx86\gvmat32c.c">
-			</File>
-			<File
-				RelativePath="..\..\..\gzio.c">
-			</File>
-			<File
-				RelativePath="..\..\..\infback.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inflate.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\ioapi.c">
-			</File>
-			<File
-				RelativePath="..\..\..\trees.c">
-			</File>
-			<File
-				RelativePath="..\..\..\uncompr.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\unzip.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\zip.c">
-			</File>
-			<File
-				RelativePath=".\zlib.rc">
-			</File>
-			<File
-				RelativePath=".\zlibvc.def">
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.c">
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc7/zlibvc.def b/libs/zlib/contrib/vstudio/vc7/zlibvc.def
deleted file mode 100644
index 74dfdb8af..000000000
--- a/libs/zlib/contrib/vstudio/vc7/zlibvc.def
+++ /dev/null
@@ -1,92 +0,0 @@
-
-VERSION		1.23
-
-HEAPSIZE	1048576,8192
-
-EXPORTS
-        adler32                                  @1
-        compress                                 @2
-        crc32                                    @3
-        deflate                                  @4
-        deflateCopy                              @5
-        deflateEnd                               @6
-        deflateInit2_                            @7
-        deflateInit_                             @8
-        deflateParams                            @9
-        deflateReset                             @10
-        deflateSetDictionary                     @11
-        gzclose                                  @12
-        gzdopen                                  @13
-        gzerror                                  @14
-        gzflush                                  @15
-        gzopen                                   @16
-        gzread                                   @17
-        gzwrite                                  @18
-        inflate                                  @19
-        inflateEnd                               @20
-        inflateInit2_                            @21
-        inflateInit_                             @22
-        inflateReset                             @23
-        inflateSetDictionary                     @24
-        inflateSync                              @25
-        uncompress                               @26
-        zlibVersion                              @27
-        gzprintf                                 @28
-        gzputc                                   @29
-        gzgetc                                   @30
-        gzseek                                   @31
-        gzrewind                                 @32
-        gztell                                   @33
-        gzeof                                    @34
-        gzsetparams                              @35
-        zError                                   @36
-        inflateSyncPoint                         @37
-        get_crc_table                            @38
-        compress2                                @39
-        gzputs                                   @40
-        gzgets                                   @41
-        inflateCopy                              @42
-        inflateBackInit_                         @43
-        inflateBack                              @44
-        inflateBackEnd                           @45
-        compressBound                            @46
-        deflateBound                             @47
-        gzclearerr                               @48
-        gzungetc                                 @49
-        zlibCompileFlags                         @50
-        deflatePrime                             @51
-
-        unzOpen                                  @61
-        unzClose                                 @62
-        unzGetGlobalInfo                         @63
-        unzGetCurrentFileInfo                    @64
-        unzGoToFirstFile                         @65
-        unzGoToNextFile                          @66
-        unzOpenCurrentFile                       @67
-        unzReadCurrentFile                       @68
-        unzOpenCurrentFile3                      @69
-        unztell                                  @70
-        unzeof                                   @71
-        unzCloseCurrentFile                      @72
-        unzGetGlobalComment                      @73
-        unzStringFileNameCompare                 @74
-        unzLocateFile                            @75
-        unzGetLocalExtrafield                    @76
-        unzOpen2                                 @77
-        unzOpenCurrentFile2                      @78
-        unzOpenCurrentFilePassword               @79
-
-        zipOpen                                  @80
-        zipOpenNewFileInZip                      @81
-        zipWriteInFileInZip                      @82
-        zipCloseFileInZip                        @83
-        zipClose                                 @84
-        zipOpenNewFileInZip2                     @86
-        zipCloseFileInZipRaw                     @87
-        zipOpen2                                 @88
-        zipOpenNewFileInZip3                     @89
-
-        unzGetFilePos                            @100
-        unzGoToFilePos                           @101
-
-        fill_win32_filefunc                      @110
diff --git a/libs/zlib/contrib/vstudio/vc7/zlibvc.sln b/libs/zlib/contrib/vstudio/vc7/zlibvc.sln
deleted file mode 100644
index 927b42b7b..000000000
--- a/libs/zlib/contrib/vstudio/vc7/zlibvc.sln
+++ /dev/null
@@ -1,78 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 7.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testZlibDll", "testzlib.vcproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}"
-EndProject
-Global
-	GlobalSection(SolutionConfiguration) = preSolution
-		ConfigName.0 = Debug
-		ConfigName.1 = Release
-		ConfigName.2 = ReleaseAxp
-		ConfigName.3 = ReleaseWithoutAsm
-		ConfigName.4 = ReleaseWithoutCrtdll
-	EndGlobalSection
-	GlobalSection(ProjectDependencies) = postSolution
-	EndGlobalSection
-	GlobalSection(ProjectConfiguration) = postSolution
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug.ActiveCfg = Debug|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug.Build.0 = Debug|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release.ActiveCfg = Release|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release.Build.0 = Release|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseAxp.ActiveCfg = ReleaseAxp|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseAxp.Build.0 = ReleaseAxp|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm.ActiveCfg = ReleaseWithoutAsm|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm.Build.0 = ReleaseWithoutAsm|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutCrtdll.ActiveCfg = ReleaseAxp|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutCrtdll.Build.0 = ReleaseAxp|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug.ActiveCfg = Debug|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug.Build.0 = Debug|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release.ActiveCfg = Release|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release.Build.0 = Release|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseAxp.ActiveCfg = ReleaseAxp|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseAxp.Build.0 = ReleaseAxp|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm.ActiveCfg = ReleaseWithoutAsm|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm.Build.0 = ReleaseWithoutAsm|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutCrtdll.ActiveCfg = ReleaseWithoutCrtdll|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutCrtdll.Build.0 = ReleaseWithoutCrtdll|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug.ActiveCfg = Debug|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug.Build.0 = Debug|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release.ActiveCfg = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release.Build.0 = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseAxp.ActiveCfg = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseAxp.Build.0 = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm.ActiveCfg = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm.Build.0 = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutCrtdll.ActiveCfg = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutCrtdll.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug.ActiveCfg = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug.Build.0 = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseAxp.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseAxp.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutCrtdll.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutCrtdll.Build.0 = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.Debug.ActiveCfg = Debug|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.Debug.Build.0 = Debug|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.Release.ActiveCfg = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.Release.Build.0 = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseAxp.ActiveCfg = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseAxp.Build.0 = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseWithoutAsm.ActiveCfg = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseWithoutAsm.Build.0 = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseWithoutCrtdll.ActiveCfg = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654C}.ReleaseWithoutCrtdll.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-	EndGlobalSection
-	GlobalSection(ExtensibilityAddIns) = postSolution
-	EndGlobalSection
-EndGlobal
diff --git a/libs/zlib/contrib/vstudio/vc7/zlibvc.vcproj b/libs/zlib/contrib/vstudio/vc7/zlibvc.vcproj
deleted file mode 100644
index 8533b4947..000000000
--- a/libs/zlib/contrib/vstudio/vc7/zlibvc.vcproj
+++ /dev/null
@@ -1,445 +0,0 @@
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="7.00"
-	Name="zlibvc"
-	SccProjectName=""
-	SccLocalPath="">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory=".\DebugDll"
-			IntermediateDirectory=".\DebugDll"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE">
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,ZLIB_WINAPI,ASMV,ASMINF"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="1"
-				PrecompiledHeaderFile=".\DebugDll/zlibvc.pch"
-				AssemblerListingLocation=".\DebugDll/"
-				ObjectFile=".\DebugDll/"
-				ProgramDataBaseFileName=".\DebugDll/"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"
-				DebugInformationFormat="4"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
-				OutputFile=".\DebugDll\zlibwapi.dll"
-				LinkIncremental="2"
-				SuppressStartupBanner="TRUE"
-				ModuleDefinitionFile=".\zlibvc.def"
-				GenerateDebugInformation="TRUE"
-				ProgramDatabaseFile=".\DebugDll/zlibwapi.pdb"
-				SubSystem="2"
-				ImportLibrary=".\DebugDll/zlibwapi.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\DebugDll/zlibvc.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Win32"
-			OutputDirectory=".\zlibDllWithoutAsm"
-			IntermediateDirectory=".\zlibDllWithoutAsm"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			WholeProgramOptimization="TRUE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,ZLIB_WINAPI"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibDllWithoutAsm/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation=".\zlibDllWithoutAsm/"
-				ObjectFile=".\zlibDllWithoutAsm/"
-				ProgramDataBaseFileName=".\zlibDllWithoutAsm/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="crtdll.lib"
-				OutputFile=".\zlibDllWithoutAsm\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				IgnoreAllDefaultLibraries="TRUE"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile=".\zlibDllWithoutAsm/zlibwapi.pdb"
-				GenerateMapFile="TRUE"
-				MapFileName=".\zlibDllWithoutAsm/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary=".\zlibDllWithoutAsm/zlibwapi.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\zlibDllWithoutAsm/zlibvc.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutCrtdll|Win32"
-			OutputDirectory=".\zlibDllWithoutCrtDll"
-			IntermediateDirectory=".\zlibDllWithoutCrtDll"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			WholeProgramOptimization="TRUE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,ZLIB_WINAPI,ASMV,ASMINF"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibDllWithoutCrtDll/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation=".\zlibDllWithoutCrtDll/"
-				ObjectFile=".\zlibDllWithoutCrtDll/"
-				ProgramDataBaseFileName=".\zlibDllWithoutCrtDll/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj "
-				OutputFile=".\zlibDllWithoutCrtDll\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				IgnoreAllDefaultLibraries="FALSE"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile=".\zlibDllWithoutCrtDll/zlibwapi.pdb"
-				GenerateMapFile="TRUE"
-				MapFileName=".\zlibDllWithoutCrtDll/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary=".\zlibDllWithoutCrtDll/zlibwapi.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\zlibDllWithoutCrtDll/zlibvc.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseAxp|Win32"
-			OutputDirectory=".\zlibvc__"
-			IntermediateDirectory=".\zlibvc__"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			WholeProgramOptimization="TRUE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,ZLIB_WINAPI"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\zlibvc__/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation=".\zlibvc__/"
-				ObjectFile=".\zlibvc__/"
-				ProgramDataBaseFileName=".\zlibvc__/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="crtdll.lib"
-				OutputFile="zlibvc__\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				IgnoreAllDefaultLibraries="TRUE"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile=".\zlibvc__/zlibwapi.pdb"
-				GenerateMapFile="TRUE"
-				MapFileName=".\zlibvc__/zlibwapi.map"
-				SubSystem="2"
-				ImportLibrary=".\zlibvc__/zlibwapi.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\zlibvc__/zlibvc.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory=".\ReleaseDll"
-			IntermediateDirectory=".\ReleaseDll"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="FALSE"
-			WholeProgramOptimization="TRUE">
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,ZLIB_WINAPI,ASMV,ASMINF"
-				StringPooling="TRUE"
-				ExceptionHandling="FALSE"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="TRUE"
-				PrecompiledHeaderFile=".\ReleaseDll/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation=".\ReleaseDll/"
-				ObjectFile=".\ReleaseDll/"
-				ProgramDataBaseFileName=".\ReleaseDll/"
-				BrowseInformation="1"
-				WarningLevel="3"
-				SuppressStartupBanner="TRUE"/>
-			<Tool
-				Name="VCCustomBuildTool"/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj crtdll.lib"
-				OutputFile=".\ReleaseDll\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="TRUE"
-				IgnoreAllDefaultLibraries="TRUE"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile=".\ReleaseDll/zlibwapi.pdb"
-				GenerateMapFile="TRUE"
-				MapFileName=".\ReleaseDll/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary=".\ReleaseDll/zlibwapi.lib"/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="TRUE"
-				SuppressStartupBanner="TRUE"
-				TargetEnvironment="1"
-				TypeLibraryName=".\Release/zlibvc.tlb"/>
-			<Tool
-				Name="VCPostBuildEventTool"/>
-			<Tool
-				Name="VCPreBuildEventTool"/>
-			<Tool
-				Name="VCPreLinkEventTool"/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"/>
-			<Tool
-				Name="VCWebDeploymentTool"/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90">
-			<File
-				RelativePath="..\..\..\adler32.c">
-			</File>
-			<File
-				RelativePath="..\..\..\compress.c">
-			</File>
-			<File
-				RelativePath="..\..\..\crc32.c">
-			</File>
-			<File
-				RelativePath="..\..\..\deflate.c">
-			</File>
-			<File
-				RelativePath="..\..\masmx86\gvmat32c.c">
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="TRUE">
-					<Tool
-						Name="VCCLCompilerTool"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\gzio.c">
-			</File>
-			<File
-				RelativePath="..\..\..\infback.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inflate.c">
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\ioapi.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\iowin32.c">
-			</File>
-			<File
-				RelativePath="..\..\..\trees.c">
-			</File>
-			<File
-				RelativePath="..\..\..\uncompr.c">
-			</File>
-			<File
-				RelativePath="..\..\minizip\unzip.c">
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\minizip\zip.c">
-				<FileConfiguration
-					Name="Release|Win32">
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\zlib.rc">
-			</File>
-			<File
-				RelativePath=".\zlibvc.def">
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.c">
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;fi;fd">
-			<File
-				RelativePath="..\..\..\deflate.h">
-			</File>
-			<File
-				RelativePath="..\..\..\infblock.h">
-			</File>
-			<File
-				RelativePath="..\..\..\infcodes.h">
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.h">
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.h">
-			</File>
-			<File
-				RelativePath="..\..\..\infutil.h">
-			</File>
-			<File
-				RelativePath="..\..\..\zconf.h">
-			</File>
-			<File
-				RelativePath="..\..\..\zlib.h">
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.h">
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/miniunz.vcproj b/libs/zlib/contrib/vstudio/vc8/miniunz.vcproj
deleted file mode 100644
index 4af53e8a3..000000000
--- a/libs/zlib/contrib/vstudio/vc8/miniunz.vcproj
+++ /dev/null
@@ -1,566 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="miniunz"
-	ProjectGUID="{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="x86\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/miniunz.pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="x64\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/miniunz.pdb"
-				SubSystem="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="ia64\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/miniunz.pdb"
-				SubSystem="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="x86\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="x64\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\MiniUnzip$(ConfigurationName)"
-			IntermediateDirectory="ia64\MiniUnzip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/miniunz.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
-			>
-			<File
-				RelativePath="..\..\minizip\miniunz.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/minizip.vcproj b/libs/zlib/contrib/vstudio/vc8/minizip.vcproj
deleted file mode 100644
index 85f64c4d2..000000000
--- a/libs/zlib/contrib/vstudio/vc8/minizip.vcproj
+++ /dev/null
@@ -1,563 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="minizip"
-	ProjectGUID="{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\MiniZip$(ConfigurationName)"
-			IntermediateDirectory="x86\MiniZip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/minizip.pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\$(ConfigurationName)"
-			IntermediateDirectory="x64\$(ConfigurationName)"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/minizip.pdb"
-				SubSystem="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\$(ConfigurationName)"
-			IntermediateDirectory="ia64\$(ConfigurationName)"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/minizip.pdb"
-				SubSystem="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\MiniZip$(ConfigurationName)"
-			IntermediateDirectory="x86\MiniZip$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\$(ConfigurationName)"
-			IntermediateDirectory="x64\$(ConfigurationName)"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\$(ConfigurationName)"
-			IntermediateDirectory="ia64\$(ConfigurationName)"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/minizip.exe"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
-			>
-			<File
-				RelativePath="..\..\minizip\minizip.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/testzlib.vcproj b/libs/zlib/contrib/vstudio/vc8/testzlib.vcproj
deleted file mode 100644
index 68c353991..000000000
--- a/libs/zlib/contrib/vstudio/vc8/testzlib.vcproj
+++ /dev/null
@@ -1,948 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="testzlib"
-	ProjectGUID="{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}"
-	RootNamespace="testzlib"
-	Keyword="Win32Proj"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerOutput="4"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				AssemblerListingLocation="$(IntDir)\"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj"
-				GenerateManifest="false"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerOutput="4"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Win32"
-			OutputDirectory="x86\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|x64"
-			OutputDirectory="x64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				AssemblerListingLocation="$(IntDir)\"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies=""
-				GenerateManifest="false"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Itanium"
-			OutputDirectory="ia64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x86\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="x64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				AssemblerListingLocation="$(IntDir)\"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj"
-				GenerateManifest="false"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\TestZlib$(ConfigurationName)"
-			IntermediateDirectory="ia64\TestZlib$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
-			>
-			<File
-				RelativePath="..\..\..\adler32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\compress.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\crc32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\deflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx86\gvmat32c.c"
-				>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Win64 (AMD64)"
-					ExcludedFromBuild="TRUE"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win64 (AMD64)"
-					ExcludedFromBuild="TRUE"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseAsm|Win64 (AMD64)"
-					ExcludedFromBuild="TRUE"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\infback.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\testzlib\testzlib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\trees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\uncompr.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/testzlibdll.vcproj b/libs/zlib/contrib/vstudio/vc8/testzlibdll.vcproj
deleted file mode 100644
index f38ab5e08..000000000
--- a/libs/zlib/contrib/vstudio/vc8/testzlibdll.vcproj
+++ /dev/null
@@ -1,567 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="TestZlibDll"
-	ProjectGUID="{C52F9E7B-498A-42BE-8DB4-85A15694366A}"
-	Keyword="Win32Proj"
-	SignManifests="true"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x86\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x64\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="ia64\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;_DEBUG;_CONSOLE;WIN64"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllDebug\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="2"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/testzlib.pdb"
-				SubSystem="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x86\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x86\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x64\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="x64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\TestZlibDll$(ConfigurationName)"
-			IntermediateDirectory="ia64\TestZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="1"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				OmitFramePointers="true"
-				AdditionalIncludeDirectories="..\..\..;..\..\minizip"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;NDEBUG;_CONSOLE;WIN64"
-				StringPooling="true"
-				BasicRuntimeChecks="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				AssemblerListingLocation="$(IntDir)\"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="ia64\ZlibDllRelease\zlibwapi.lib"
-				OutputFile="$(OutDir)/testzlib.exe"
-				LinkIncremental="1"
-				GenerateManifest="false"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				OptimizeForWindows98="1"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
-			>
-			<File
-				RelativePath="..\..\testzlib\testzlib.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/zlibstat.vcproj b/libs/zlib/contrib/vstudio/vc8/zlibstat.vcproj
deleted file mode 100644
index fb97037ac..000000000
--- a/libs/zlib/contrib/vstudio/vc8/zlibstat.vcproj
+++ /dev/null
@@ -1,870 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="zlibstat"
-	ProjectGUID="{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				ExceptionHandling="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				ExceptionHandling="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				ExceptionHandling="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ASMV;ASMINF"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj "
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;ASMV;ASMINF;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Win32"
-			OutputDirectory="x86\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="0"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|x64"
-			OutputDirectory="x64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Itanium"
-			OutputDirectory="ia64\ZlibStat$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibStat$(ConfigurationName)\Tmp"
-			ConfigurationType="4"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="2"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibstat.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				AdditionalOptions="/MACHINE:IA64 /NODEFAULTLIB"
-				OutputFile="$(OutDir)\zlibstat.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			>
-			<File
-				RelativePath="..\..\..\adler32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\compress.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\crc32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\deflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx86\gvmat32c.c"
-				>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\gzio.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\infback.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\ioapi.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\trees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\uncompr.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\unzip.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\zip.c"
-				>
-			</File>
-			<File
-				RelativePath=".\zlib.rc"
-				>
-			</File>
-			<File
-				RelativePath=".\zlibvc.def"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.c"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc8/zlibvc.sln b/libs/zlib/contrib/vstudio/vc8/zlibvc.sln
deleted file mode 100644
index a815a5549..000000000
--- a/libs/zlib/contrib/vstudio/vc8/zlibvc.sln
+++ /dev/null
@@ -1,144 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testzlib", "testzlib.vcproj", "{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestZlibDll", "testzlibdll.vcproj", "{C52F9E7B-498A-42BE-8DB4-85A15694366A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D} = {8FD826F8-3739-44E6-8CC8-997122E53B8D}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
-	ProjectSection(ProjectDependencies) = postProject
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D} = {8FD826F8-3739-44E6-8CC8-997122E53B8D}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D} = {8FD826F8-3739-44E6-8CC8-997122E53B8D}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Itanium = Debug|Itanium
-		Debug|Win32 = Debug|Win32
-		Debug|x64 = Debug|x64
-		Release|Itanium = Release|Itanium
-		Release|Win32 = Release|Win32
-		Release|x64 = Release|x64
-		ReleaseWithoutAsm|Itanium = ReleaseWithoutAsm|Itanium
-		ReleaseWithoutAsm|Win32 = ReleaseWithoutAsm|Win32
-		ReleaseWithoutAsm|x64 = ReleaseWithoutAsm|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Itanium.Build.0 = Debug|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.ActiveCfg = Debug|x64
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|x64.Build.0 = Debug|x64
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.ActiveCfg = Release|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Itanium.Build.0 = Release|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.Build.0 = Release|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.ActiveCfg = ReleaseWithoutAsm|x64
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|x64.Build.0 = ReleaseWithoutAsm|x64
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
-		{8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Itanium.Build.0 = Debug|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.ActiveCfg = Debug|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|Win32.Build.0 = Debug|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.ActiveCfg = Debug|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug|x64.Build.0 = Debug|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Itanium.ActiveCfg = Release|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Itanium.Build.0 = Release|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.ActiveCfg = Release|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|Win32.Build.0 = Release|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.ActiveCfg = Release|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release|x64.Build.0 = Release|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
-		{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.Build.0 = Release|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = ReleaseWithoutAsm|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = ReleaseWithoutAsm|Itanium
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = ReleaseWithoutAsm|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.Build.0 = ReleaseWithoutAsm|Win32
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = ReleaseWithoutAsm|x64
-		{AA6666AA-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.Build.0 = ReleaseWithoutAsm|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Itanium.Build.0 = Debug|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|Win32.Build.0 = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.ActiveCfg = Debug|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Debug|x64.Build.0 = Debug|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Itanium.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Itanium.Build.0 = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|Win32.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.ActiveCfg = Release|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.Release|x64.Build.0 = Release|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694366A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Itanium.Build.0 = Debug|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|Win32.Build.0 = Debug|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.ActiveCfg = Debug|x64
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug|x64.Build.0 = Debug|x64
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.ActiveCfg = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Itanium.Build.0 = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.ActiveCfg = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|Win32.Build.0 = Release|Win32
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.ActiveCfg = Release|x64
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release|x64.Build.0 = Release|x64
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
-		{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.ActiveCfg = Debug|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Itanium.Build.0 = Debug|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|Win32.Build.0 = Debug|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.ActiveCfg = Debug|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug|x64.Build.0 = Debug|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Itanium.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Itanium.Build.0 = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.ActiveCfg = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|Win32.Build.0 = Release|Win32
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.ActiveCfg = Release|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release|x64.Build.0 = Release|x64
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Itanium.Build.0 = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|Win32.ActiveCfg = Release|Itanium
-		{C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm|x64.ActiveCfg = Release|Itanium
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/libs/zlib/contrib/vstudio/vc8/zlibvc.vcproj b/libs/zlib/contrib/vstudio/vc8/zlibvc.vcproj
deleted file mode 100644
index e717011df..000000000
--- a/libs/zlib/contrib/vstudio/vc8/zlibvc.vcproj
+++ /dev/null
@@ -1,1219 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="8,00"
-	Name="zlibvc"
-	ProjectGUID="{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-		<Platform
-			Name="Itanium"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="x86\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="1"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,_CRT_SECURE_NO_DEPRECATE,ZLIB_WINAPI,ASMV,ASMINF"
-				ExceptionHandling="0"
-				RuntimeLibrary="1"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="2"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="x64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="3"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,_CRT_SECURE_NO_DEPRECATE,ZLIB_WINAPI,ASMV,ASMINF;WIN64"
-				ExceptionHandling="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="2"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|Itanium"
-			OutputDirectory="ia64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="_DEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="2"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;WIN64"
-				ExceptionHandling="0"
-				RuntimeLibrary="3"
-				BufferSecurityCheck="false"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="2"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				GenerateDebugInformation="true"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Win32"
-			OutputDirectory="x86\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="1"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,_CRT_SECURE_NO_DEPRECATE,ZLIB_WINAPI"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|x64"
-			OutputDirectory="x64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="3"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,_CRT_SECURE_NO_DEPRECATE,ZLIB_WINAPI;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="ReleaseWithoutAsm|Itanium"
-			OutputDirectory="ia64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="2"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32,_CRT_SECURE_NO_DEPRECATE,ZLIB_WINAPI;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="x86\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x86\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="1"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;ASMV;ASMINF"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\gvmat32.obj ..\..\masmx86\inffas32.obj "
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="x64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="x64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="3"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;ASMV;ASMINF;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="17"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Itanium"
-			OutputDirectory="ia64\ZlibDll$(ConfigurationName)"
-			IntermediateDirectory="ia64\ZlibDll$(ConfigurationName)\Tmp"
-			ConfigurationType="2"
-			InheritedPropertySheets="UpgradeFromVC70.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				PreprocessorDefinitions="NDEBUG"
-				MkTypLibCompatible="true"
-				SuppressStartupBanner="true"
-				TargetEnvironment="2"
-				TypeLibraryName="$(OutDir)/zlibvc.tlb"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;ZLIB_WINAPI;WIN64"
-				StringPooling="true"
-				ExceptionHandling="0"
-				RuntimeLibrary="2"
-				BufferSecurityCheck="false"
-				EnableFunctionLevelLinking="true"
-				PrecompiledHeaderFile="$(IntDir)/zlibvc.pch"
-				AssemblerOutput="2"
-				AssemblerListingLocation="$(IntDir)\"
-				ObjectFile="$(IntDir)\"
-				ProgramDataBaseFileName="$(OutDir)\"
-				BrowseInformation="0"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1036"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				OutputFile="$(OutDir)\zlibwapi.dll"
-				LinkIncremental="1"
-				SuppressStartupBanner="true"
-				GenerateManifest="false"
-				IgnoreAllDefaultLibraries="false"
-				ModuleDefinitionFile=".\zlibvc.def"
-				ProgramDatabaseFile="$(OutDir)/zlibwapi.pdb"
-				GenerateMapFile="true"
-				MapFileName="$(OutDir)/zlibwapi.map"
-				SubSystem="2"
-				OptimizeForWindows98="1"
-				ImportLibrary="$(OutDir)/zlibwapi.lib"
-				TargetMachine="5"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
-			>
-			<File
-				RelativePath="..\..\..\adler32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\compress.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\crc32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\deflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx86\gvmat32c.c"
-				>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\gzio.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\infback.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inflate.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\ioapi.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\iowin32.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\trees.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\uncompr.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\minizip\unzip.c"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\minizip\zip.c"
-				>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						AdditionalIncludeDirectories=""
-						PreprocessorDefinitions="ZLIB_INTERNAL"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\zlib.rc"
-				>
-			</File>
-			<File
-				RelativePath=".\zlibvc.def"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;fi;fd"
-			>
-			<File
-				RelativePath="..\..\..\deflate.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\infblock.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\infcodes.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inffast.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\inftrees.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\infutil.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zconf.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zlib.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\..\zutil.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/contrib/vstudio/vc9/miniunz.vcproj b/libs/zlib/contrib/vstudio/vc9/miniunz.vcproj
index 7da32b91e..cc3d13a10 100644
--- a/libs/zlib/contrib/vstudio/vc9/miniunz.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/miniunz.vcproj
@@ -542,7 +542,7 @@
 	<Files>
 		<Filter
 			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat"
 			>
 			<File
 				RelativePath="..\..\minizip\miniunz.c"
diff --git a/libs/zlib/contrib/vstudio/vc9/minizip.vcproj b/libs/zlib/contrib/vstudio/vc9/minizip.vcproj
index e57e07d90..fecd9dd07 100644
--- a/libs/zlib/contrib/vstudio/vc9/minizip.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/minizip.vcproj
@@ -539,7 +539,7 @@
 	<Files>
 		<Filter
 			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat"
 			>
 			<File
 				RelativePath="..\..\minizip\minizip.c"
diff --git a/libs/zlib/contrib/vstudio/vc9/testzlib.vcproj b/libs/zlib/contrib/vstudio/vc9/testzlib.vcproj
index 9cb0bf877..ff69640e3 100644
--- a/libs/zlib/contrib/vstudio/vc9/testzlib.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/testzlib.vcproj
@@ -48,7 +48,7 @@
 				Name="VCCLCompilerTool"
 				Optimization="0"
 				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
+				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="0"
 				RuntimeLibrary="1"
@@ -71,7 +71,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj"
 				OutputFile="$(OutDir)/testzlib.exe"
 				LinkIncremental="2"
 				GenerateManifest="false"
@@ -128,7 +127,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
+				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_DEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				BasicRuntimeChecks="0"
 				RuntimeLibrary="3"
 				BufferSecurityCheck="false"
@@ -145,7 +144,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj"
 				GenerateManifest="false"
 			/>
 			<Tool
@@ -517,7 +515,7 @@
 				InlineFunctionExpansion="1"
 				OmitFramePointers="true"
 				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
+				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				StringPooling="true"
 				BasicRuntimeChecks="0"
 				RuntimeLibrary="0"
@@ -540,7 +538,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj"
 				OutputFile="$(OutDir)/testzlib.exe"
 				LinkIncremental="1"
 				GenerateManifest="false"
@@ -600,7 +597,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				AdditionalIncludeDirectories="..\..\.."
-				PreprocessorDefinitions="ASMV;ASMINF;WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
+				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;NDEBUG;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				BasicRuntimeChecks="0"
 				RuntimeLibrary="0"
 				BufferSecurityCheck="false"
@@ -617,7 +614,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj"
 				GenerateManifest="false"
 			/>
 			<Tool
@@ -733,7 +729,7 @@
 	<Files>
 		<Filter
 			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat"
 			>
 			<File
 				RelativePath="..\..\..\adler32.c"
@@ -755,58 +751,6 @@
 				RelativePath="..\..\..\infback.c"
 				>
 			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
 			<File
 				RelativePath="..\..\..\inffast.c"
 				>
diff --git a/libs/zlib/contrib/vstudio/vc9/testzlibdll.vcproj b/libs/zlib/contrib/vstudio/vc9/testzlibdll.vcproj
index b1ddde05f..6448b497c 100644
--- a/libs/zlib/contrib/vstudio/vc9/testzlibdll.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/testzlibdll.vcproj
@@ -542,7 +542,7 @@
 	<Files>
 		<Filter
 			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat"
 			>
 			<File
 				RelativePath="..\..\testzlib\testzlib.c"
diff --git a/libs/zlib/contrib/vstudio/vc9/zlib.rc b/libs/zlib/contrib/vstudio/vc9/zlib.rc
index c4e4b016e..a55f341c7 100644
--- a/libs/zlib/contrib/vstudio/vc9/zlib.rc
+++ b/libs/zlib/contrib/vstudio/vc9/zlib.rc
@@ -2,8 +2,8 @@
 
 #define IDR_VERSION1  1
 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE
-  FILEVERSION	 1, 2, 11, 0
-  PRODUCTVERSION 1, 2, 11, 0
+  FILEVERSION	 1, 3, 1, 0
+  PRODUCTVERSION 1, 3, 1, 0
   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK
   FILEFLAGS	0
   FILEOS	VOS_DOS_WINDOWS32
@@ -17,12 +17,12 @@ BEGIN
 
     BEGIN
       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"
-      VALUE "FileVersion",	"1.2.11\0"
+      VALUE "FileVersion",	"1.3.1\0"
       VALUE "InternalName",	"zlib\0"
       VALUE "OriginalFilename",	"zlibwapi.dll\0"
       VALUE "ProductName",	"ZLib.DLL\0"
       VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
-      VALUE "LegalCopyright", "(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright", "(C) 1995-2024 Jean-loup Gailly & Mark Adler\0"
     END
   END
   BLOCK "VarFileInfo"
diff --git a/libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj b/libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj
index 61c76c7c5..1bf15635a 100644
--- a/libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj
@@ -47,7 +47,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				ExceptionHandling="0"
 				RuntimeLibrary="1"
@@ -121,7 +121,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				ExceptionHandling="0"
 				RuntimeLibrary="3"
@@ -195,7 +195,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				ExceptionHandling="0"
 				RuntimeLibrary="3"
@@ -268,8 +268,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				StringPooling="true"
 				ExceptionHandling="0"
 				RuntimeLibrary="0"
@@ -295,7 +295,6 @@
 			<Tool
 				Name="VCLibrarianTool"
 				AdditionalOptions="/MACHINE:X86 /NODEFAULTLIB"
-				AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj "
 				OutputFile="$(OutDir)\zlibstat.lib"
 				SuppressStartupBanner="true"
 			/>
@@ -343,8 +342,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ASMV;ASMINF;WIN64"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
 				RuntimeLibrary="2"
@@ -370,7 +369,6 @@
 			<Tool
 				Name="VCLibrarianTool"
 				AdditionalOptions="/MACHINE:AMD64 /NODEFAULTLIB"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
 				OutputFile="$(OutDir)\zlibstat.lib"
 				SuppressStartupBanner="true"
 			/>
@@ -418,7 +416,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -491,7 +489,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -565,7 +563,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -639,7 +637,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -732,58 +730,6 @@
 				RelativePath="..\..\..\infback.c"
 				>
 			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
 			<File
 				RelativePath="..\..\..\inffast.c"
 				>
diff --git a/libs/zlib/contrib/vstudio/vc9/zlibvc.def b/libs/zlib/contrib/vstudio/vc9/zlibvc.def
index f876c3bca..53947cc31 100644
--- a/libs/zlib/contrib/vstudio/vc9/zlibvc.def
+++ b/libs/zlib/contrib/vstudio/vc9/zlibvc.def
@@ -1,7 +1,7 @@
 LIBRARY
 ; zlib data compression and ZIP file I/O library
 
-VERSION		1.2
+VERSION		1.3.1
 
 EXPORTS
         adler32                                  @1
@@ -151,3 +151,8 @@ EXPORTS
         deflateGetDictionary                    @173
         adler32_z                               @174
         crc32_z                                 @175
+
+; zlib1 v1.2.12 added:
+		crc32_combine_gen						@176
+		crc32_combine_gen64						@177
+		crc32_combine_op						@178
diff --git a/libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj b/libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj
index c9a89471e..f11dd1fbf 100644
--- a/libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj
+++ b/libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj
@@ -53,8 +53,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI"
 				ExceptionHandling="0"
 				RuntimeLibrary="1"
 				BufferSecurityCheck="false"
@@ -81,7 +81,6 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj"
 				OutputFile="$(OutDir)\zlibwapi.dll"
 				LinkIncremental="2"
 				SuppressStartupBanner="true"
@@ -150,8 +149,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				ExceptionHandling="0"
 				RuntimeLibrary="3"
 				BufferSecurityCheck="false"
@@ -177,7 +176,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
 				OutputFile="$(OutDir)\zlibwapi.dll"
 				LinkIncremental="2"
 				SuppressStartupBanner="true"
@@ -245,7 +243,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				ExceptionHandling="0"
 				RuntimeLibrary="3"
@@ -340,7 +338,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -440,7 +438,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -538,7 +536,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -636,8 +634,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="WIN32;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI"
 				StringPooling="true"
 				ExceptionHandling="0"
 				RuntimeLibrary="0"
@@ -666,7 +664,6 @@
 			<Tool
 				Name="VCLinkerTool"
 				AdditionalOptions="/MACHINE:I386"
-				AdditionalDependencies="..\..\masmx86\match686.obj ..\..\masmx86\inffas32.obj "
 				OutputFile="$(OutDir)\zlibwapi.dll"
 				LinkIncremental="1"
 				SuppressStartupBanner="true"
@@ -737,8 +734,8 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
-				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;ASMV;ASMINF;WIN64"
+				AdditionalIncludeDirectories="..\..\.."
+				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
 				RuntimeLibrary="2"
@@ -766,7 +763,6 @@
 			/>
 			<Tool
 				Name="VCLinkerTool"
-				AdditionalDependencies="..\..\masmx64\gvmat64.obj ..\..\masmx64\inffasx64.obj "
 				OutputFile="$(OutDir)\zlibwapi.dll"
 				LinkIncremental="1"
 				SuppressStartupBanner="true"
@@ -836,7 +832,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="..\..\..;..\..\masmx86"
+				AdditionalIncludeDirectories="..\..\.."
 				PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;ZLIB_WINAPI;WIN64"
 				StringPooling="true"
 				ExceptionHandling="0"
@@ -949,58 +945,6 @@
 				RelativePath="..\..\..\infback.c"
 				>
 			</File>
-			<File
-				RelativePath="..\..\masmx64\inffas8664.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="ReleaseWithoutAsm|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Itanium"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
 			<File
 				RelativePath="..\..\..\inffast.c"
 				>
diff --git a/libs/zlib/crc32.c b/libs/zlib/crc32.c
index 9580440c0..6c38f5c04 100644
--- a/libs/zlib/crc32.c
+++ b/libs/zlib/crc32.c
@@ -1,12 +1,10 @@
 /* crc32.c -- compute the CRC-32 of a data stream
- * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  *
- * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
- * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
- * tables for updating the shift register in one step with three exclusive-ors
- * instead of four steps with four exclusive-ors.  This results in about a
- * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
+ * This interleaved implementation of a CRC makes use of pipelined multiple
+ * arithmetic-logic units, commonly found in modern CPU cores. It is due to
+ * Kadatch and Jenkins (2010). See doc/crc-doc.1.0.pdf in this distribution.
  */
 
 /* @(#) $Id$ */
@@ -14,11 +12,12 @@
 /*
   Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
   protection on the static variables used to control the first-use generation
-  of the crc tables.  Therefore, if you #define DYNAMIC_CRC_TABLE, you should
+  of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
   first call get_crc_table() to initialize the tables before allowing more than
   one thread to use crc32().
 
-  DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
+  MAKECRCH can be #defined to write out crc32.h. A main() routine is also
+  produced, so that this one source file can be compiled to an executable.
  */
 
 #ifdef MAKECRCH
@@ -28,415 +27,1023 @@
 #  endif /* !DYNAMIC_CRC_TABLE */
 #endif /* MAKECRCH */
 
-#include "zutil.h"      /* for STDC and FAR definitions */
+#include "zutil.h"      /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */
 
-/* Definitions for doing the crc four data bytes at a time. */
-#if !defined(NOBYFOUR) && defined(Z_U4)
-#  define BYFOUR
+ /*
+  A CRC of a message is computed on N braids of words in the message, where
+  each word consists of W bytes (4 or 8). If N is 3, for example, then three
+  running sparse CRCs are calculated respectively on each braid, at these
+  indices in the array of words: 0, 3, 6, ..., 1, 4, 7, ..., and 2, 5, 8, ...
+  This is done starting at a word boundary, and continues until as many blocks
+  of N * W bytes as are available have been processed. The results are combined
+  into a single CRC at the end. For this code, N must be in the range 1..6 and
+  W must be 4 or 8. The upper limit on N can be increased if desired by adding
+  more #if blocks, extending the patterns apparent in the code. In addition,
+  crc32.h would need to be regenerated, if the maximum N value is increased.
+
+  N and W are chosen empirically by benchmarking the execution time on a given
+  processor. The choices for N and W below were based on testing on Intel Kaby
+  Lake i7, AMD Ryzen 7, ARM Cortex-A57, Sparc64-VII, PowerPC POWER9, and MIPS64
+  Octeon II processors. The Intel, AMD, and ARM processors were all fastest
+  with N=5, W=8. The Sparc, PowerPC, and MIPS64 were all fastest at N=5, W=4.
+  They were all tested with either gcc or clang, all using the -O3 optimization
+  level. Your mileage may vary.
+ */
+
+/* Define N */
+#ifdef Z_TESTN
+#  define N Z_TESTN
+#else
+#  define N 5
+#endif
+#if N < 1 || N > 6
+#  error N must be in 1..6
 #endif
-#ifdef BYFOUR
-   local unsigned long crc32_little OF((unsigned long,
-                        const unsigned char FAR *, z_size_t));
-   local unsigned long crc32_big OF((unsigned long,
-                        const unsigned char FAR *, z_size_t));
-#  define TBLS 8
+
+/*
+  z_crc_t must be at least 32 bits. z_word_t must be at least as long as
+  z_crc_t. It is assumed here that z_word_t is either 32 bits or 64 bits, and
+  that bytes are eight bits.
+ */
+
+/*
+  Define W and the associated z_word_t type. If W is not defined, then a
+  braided calculation is not used, and the associated tables and code are not
+  compiled.
+ */
+#ifdef Z_TESTW
+#  if Z_TESTW-1 != -1
+#    define W Z_TESTW
+#  endif
 #else
-#  define TBLS 1
-#endif /* BYFOUR */
+#  ifdef MAKECRCH
+#    define W 8         /* required for MAKECRCH */
+#  else
+#    if defined(__x86_64__) || defined(__aarch64__)
+#      define W 8
+#    else
+#      define W 4
+#    endif
+#  endif
+#endif
+#ifdef W
+#  if W == 8 && defined(Z_U8)
+     typedef Z_U8 z_word_t;
+#  elif defined(Z_U4)
+#    undef W
+#    define W 4
+     typedef Z_U4 z_word_t;
+#  else
+#    undef W
+#  endif
+#endif
 
-/* Local functions for crc concatenation */
-local unsigned long gf2_matrix_times OF((unsigned long *mat,
-                                         unsigned long vec));
-local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
-local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2));
+/* If available, use the ARM processor CRC32 instruction. */
+#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8
+#  define ARMCRC32
+#endif
 
+#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
+/*
+  Swap the bytes in a z_word_t to convert between little and big endian. Any
+  self-respecting compiler will optimize this to a single machine byte-swap
+  instruction, if one is available. This assumes that word_t is either 32 bits
+  or 64 bits.
+ */
+local z_word_t byte_swap(z_word_t word) {
+#  if W == 8
+    return
+        (word & 0xff00000000000000) >> 56 |
+        (word & 0xff000000000000) >> 40 |
+        (word & 0xff0000000000) >> 24 |
+        (word & 0xff00000000) >> 8 |
+        (word & 0xff000000) << 8 |
+        (word & 0xff0000) << 24 |
+        (word & 0xff00) << 40 |
+        (word & 0xff) << 56;
+#  else   /* W == 4 */
+    return
+        (word & 0xff000000) >> 24 |
+        (word & 0xff0000) >> 8 |
+        (word & 0xff00) << 8 |
+        (word & 0xff) << 24;
+#  endif
+}
+#endif
 
 #ifdef DYNAMIC_CRC_TABLE
+/* =========================================================================
+ * Table of powers of x for combining CRC-32s, filled in by make_crc_table()
+ * below.
+ */
+   local z_crc_t FAR x2n_table[32];
+#else
+/* =========================================================================
+ * Tables for byte-wise and braided CRC-32 calculations, and a table of powers
+ * of x for combining CRC-32s, all made by make_crc_table().
+ */
+#  include "crc32.h"
+#endif
+
+/* CRC polynomial. */
+#define POLY 0xedb88320         /* p(x) reflected, with x^32 implied */
 
-local volatile int crc_table_empty = 1;
-local z_crc_t FAR crc_table[TBLS][256];
-local void make_crc_table OF((void));
+/*
+  Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial,
+  reflected. For speed, this requires that a not be zero.
+ */
+local z_crc_t multmodp(z_crc_t a, z_crc_t b) {
+    z_crc_t m, p;
+
+    m = (z_crc_t)1 << 31;
+    p = 0;
+    for (;;) {
+        if (a & m) {
+            p ^= b;
+            if ((a & (m - 1)) == 0)
+                break;
+        }
+        m >>= 1;
+        b = b & 1 ? (b >> 1) ^ POLY : b >> 1;
+    }
+    return p;
+}
+
+/*
+  Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been
+  initialized.
+ */
+local z_crc_t x2nmodp(z_off64_t n, unsigned k) {
+    z_crc_t p;
+
+    p = (z_crc_t)1 << 31;           /* x^0 == 1 */
+    while (n) {
+        if (n & 1)
+            p = multmodp(x2n_table[k & 31], p);
+        n >>= 1;
+        k++;
+    }
+    return p;
+}
+
+#ifdef DYNAMIC_CRC_TABLE
+/* =========================================================================
+ * Build the tables for byte-wise and braided CRC-32 calculations, and a table
+ * of powers of x for combining CRC-32s.
+ */
+local z_crc_t FAR crc_table[256];
+#ifdef W
+   local z_word_t FAR crc_big_table[256];
+   local z_crc_t FAR crc_braid_table[W][256];
+   local z_word_t FAR crc_braid_big_table[W][256];
+   local void braid(z_crc_t [][256], z_word_t [][256], int, int);
+#endif
 #ifdef MAKECRCH
-   local void write_table OF((FILE *, const z_crc_t FAR *));
+   local void write_table(FILE *, const z_crc_t FAR *, int);
+   local void write_table32hi(FILE *, const z_word_t FAR *, int);
+   local void write_table64(FILE *, const z_word_t FAR *, int);
 #endif /* MAKECRCH */
+
+/*
+  Define a once() function depending on the availability of atomics. If this is
+  compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in
+  multiple threads, and if atomics are not available, then get_crc_table() must
+  be called to initialize the tables and must return before any threads are
+  allowed to compute or combine CRCs.
+ */
+
+/* Definition of once functionality. */
+typedef struct once_s once_t;
+
+/* Check for the availability of atomics. */
+#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \
+    !defined(__STDC_NO_ATOMICS__)
+
+#include <stdatomic.h>
+
+/* Structure for once(), which must be initialized with ONCE_INIT. */
+struct once_s {
+    atomic_flag begun;
+    atomic_int done;
+};
+#define ONCE_INIT {ATOMIC_FLAG_INIT, 0}
+
+/*
+  Run the provided init() function exactly once, even if multiple threads
+  invoke once() at the same time. The state must be a once_t initialized with
+  ONCE_INIT.
+ */
+local void once(once_t *state, void (*init)(void)) {
+    if (!atomic_load(&state->done)) {
+        if (atomic_flag_test_and_set(&state->begun))
+            while (!atomic_load(&state->done))
+                ;
+        else {
+            init();
+            atomic_store(&state->done, 1);
+        }
+    }
+}
+
+#else   /* no atomics */
+
+/* Structure for once(), which must be initialized with ONCE_INIT. */
+struct once_s {
+    volatile int begun;
+    volatile int done;
+};
+#define ONCE_INIT {0, 0}
+
+/* Test and set. Alas, not atomic, but tries to minimize the period of
+   vulnerability. */
+local int test_and_set(int volatile *flag) {
+    int was;
+
+    was = *flag;
+    *flag = 1;
+    return was;
+}
+
+/* Run the provided init() function once. This is not thread-safe. */
+local void once(once_t *state, void (*init)(void)) {
+    if (!state->done) {
+        if (test_and_set(&state->begun))
+            while (!state->done)
+                ;
+        else {
+            init();
+            state->done = 1;
+        }
+    }
+}
+
+#endif
+
+/* State for once(). */
+local once_t made = ONCE_INIT;
+
 /*
   Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
   x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
 
   Polynomials over GF(2) are represented in binary, one bit per coefficient,
-  with the lowest powers in the most significant bit.  Then adding polynomials
+  with the lowest powers in the most significant bit. Then adding polynomials
   is just exclusive-or, and multiplying a polynomial by x is a right shift by
-  one.  If we call the above polynomial p, and represent a byte as the
+  one. If we call the above polynomial p, and represent a byte as the
   polynomial q, also with the lowest power in the most significant bit (so the
-  byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
+  byte 0xb1 is the polynomial x^7+x^3+x^2+1), then the CRC is (q*x^32) mod p,
   where a mod b means the remainder after dividing a by b.
 
   This calculation is done using the shift-register method of multiplying and
-  taking the remainder.  The register is initialized to zero, and for each
+  taking the remainder. The register is initialized to zero, and for each
   incoming bit, x^32 is added mod p to the register if the bit is a one (where
-  x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
-  x (which is shifting right by one and adding x^32 mod p if the bit shifted
-  out is a one).  We start with the highest power (least significant bit) of
-  q and repeat for all eight bits of q.
-
-  The first table is simply the CRC of all possible eight bit values.  This is
-  all the information needed to generate CRCs on data a byte at a time for all
-  combinations of CRC register values and incoming bytes.  The remaining tables
-  allow for word-at-a-time CRC calculation for both big-endian and little-
-  endian machines, where a word is four bytes.
-*/
-local void make_crc_table()
-{
-    z_crc_t c;
-    int n, k;
-    z_crc_t poly;                       /* polynomial exclusive-or pattern */
-    /* terms of polynomial defining this crc (except x^32): */
-    static volatile int first = 1;      /* flag to limit concurrent making */
-    static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
-
-    /* See if another task is already doing this (not thread-safe, but better
-       than nothing -- significantly reduces duration of vulnerability in
-       case the advice about DYNAMIC_CRC_TABLE is ignored) */
-    if (first) {
-        first = 0;
-
-        /* make exclusive-or pattern from polynomial (0xedb88320UL) */
-        poly = 0;
-        for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++)
-            poly |= (z_crc_t)1 << (31 - p[n]);
-
-        /* generate a crc for every 8-bit value */
-        for (n = 0; n < 256; n++) {
-            c = (z_crc_t)n;
-            for (k = 0; k < 8; k++)
-                c = c & 1 ? poly ^ (c >> 1) : c >> 1;
-            crc_table[0][n] = c;
-        }
+  x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by x
+  (which is shifting right by one and adding x^32 mod p if the bit shifted out
+  is a one). We start with the highest power (least significant bit) of q and
+  repeat for all eight bits of q.
 
-#ifdef BYFOUR
-        /* generate crc for each value followed by one, two, and three zeros,
-           and then the byte reversal of those as well as the first table */
-        for (n = 0; n < 256; n++) {
-            c = crc_table[0][n];
-            crc_table[4][n] = ZSWAP32(c);
-            for (k = 1; k < 4; k++) {
-                c = crc_table[0][c & 0xff] ^ (c >> 8);
-                crc_table[k][n] = c;
-                crc_table[k + 4][n] = ZSWAP32(c);
-            }
-        }
-#endif /* BYFOUR */
+  The table is simply the CRC of all possible eight bit values. This is all the
+  information needed to generate CRCs on data a byte at a time for all
+  combinations of CRC register values and incoming bytes.
+ */
 
-        crc_table_empty = 0;
-    }
-    else {      /* not first */
-        /* wait for the other guy to finish (not efficient, but rare) */
-        while (crc_table_empty)
-            ;
+local void make_crc_table(void) {
+    unsigned i, j, n;
+    z_crc_t p;
+
+    /* initialize the CRC of bytes tables */
+    for (i = 0; i < 256; i++) {
+        p = i;
+        for (j = 0; j < 8; j++)
+            p = p & 1 ? (p >> 1) ^ POLY : p >> 1;
+        crc_table[i] = p;
+#ifdef W
+        crc_big_table[i] = byte_swap(p);
+#endif
     }
 
+    /* initialize the x^2^n mod p(x) table */
+    p = (z_crc_t)1 << 30;         /* x^1 */
+    x2n_table[0] = p;
+    for (n = 1; n < 32; n++)
+        x2n_table[n] = p = multmodp(p, p);
+
+#ifdef W
+    /* initialize the braiding tables -- needs x2n_table[] */
+    braid(crc_braid_table, crc_braid_big_table, N, W);
+#endif
+
 #ifdef MAKECRCH
-    /* write out CRC tables to crc32.h */
     {
+        /*
+          The crc32.h header file contains tables for both 32-bit and 64-bit
+          z_word_t's, and so requires a 64-bit type be available. In that case,
+          z_word_t must be defined to be 64-bits. This code then also generates
+          and writes out the tables for the case that z_word_t is 32 bits.
+         */
+#if !defined(W) || W != 8
+#  error Need a 64-bit integer type in order to generate crc32.h.
+#endif
         FILE *out;
+        int k, n;
+        z_crc_t ltl[8][256];
+        z_word_t big[8][256];
 
         out = fopen("crc32.h", "w");
         if (out == NULL) return;
-        fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
-        fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
-        fprintf(out, "local const z_crc_t FAR ");
-        fprintf(out, "crc_table[TBLS][256] =\n{\n  {\n");
-        write_table(out, crc_table[0]);
-#  ifdef BYFOUR
-        fprintf(out, "#ifdef BYFOUR\n");
-        for (k = 1; k < 8; k++) {
-            fprintf(out, "  },\n  {\n");
-            write_table(out, crc_table[k]);
+
+        /* write out little-endian CRC table to crc32.h */
+        fprintf(out,
+            "/* crc32.h -- tables for rapid CRC calculation\n"
+            " * Generated automatically by crc32.c\n */\n"
+            "\n"
+            "local const z_crc_t FAR crc_table[] = {\n"
+            "    ");
+        write_table(out, crc_table, 256);
+        fprintf(out,
+            "};\n");
+
+        /* write out big-endian CRC table for 64-bit z_word_t to crc32.h */
+        fprintf(out,
+            "\n"
+            "#ifdef W\n"
+            "\n"
+            "#if W == 8\n"
+            "\n"
+            "local const z_word_t FAR crc_big_table[] = {\n"
+            "    ");
+        write_table64(out, crc_big_table, 256);
+        fprintf(out,
+            "};\n");
+
+        /* write out big-endian CRC table for 32-bit z_word_t to crc32.h */
+        fprintf(out,
+            "\n"
+            "#else /* W == 4 */\n"
+            "\n"
+            "local const z_word_t FAR crc_big_table[] = {\n"
+            "    ");
+        write_table32hi(out, crc_big_table, 256);
+        fprintf(out,
+            "};\n"
+            "\n"
+            "#endif\n");
+
+        /* write out braid tables for each value of N */
+        for (n = 1; n <= 6; n++) {
+            fprintf(out,
+            "\n"
+            "#if N == %d\n", n);
+
+            /* compute braid tables for this N and 64-bit word_t */
+            braid(ltl, big, n, 8);
+
+            /* write out braid tables for 64-bit z_word_t to crc32.h */
+            fprintf(out,
+            "\n"
+            "#if W == 8\n"
+            "\n"
+            "local const z_crc_t FAR crc_braid_table[][256] = {\n");
+            for (k = 0; k < 8; k++) {
+                fprintf(out, "   {");
+                write_table(out, ltl[k], 256);
+                fprintf(out, "}%s", k < 7 ? ",\n" : "");
+            }
+            fprintf(out,
+            "};\n"
+            "\n"
+            "local const z_word_t FAR crc_braid_big_table[][256] = {\n");
+            for (k = 0; k < 8; k++) {
+                fprintf(out, "   {");
+                write_table64(out, big[k], 256);
+                fprintf(out, "}%s", k < 7 ? ",\n" : "");
+            }
+            fprintf(out,
+            "};\n");
+
+            /* compute braid tables for this N and 32-bit word_t */
+            braid(ltl, big, n, 4);
+
+            /* write out braid tables for 32-bit z_word_t to crc32.h */
+            fprintf(out,
+            "\n"
+            "#else /* W == 4 */\n"
+            "\n"
+            "local const z_crc_t FAR crc_braid_table[][256] = {\n");
+            for (k = 0; k < 4; k++) {
+                fprintf(out, "   {");
+                write_table(out, ltl[k], 256);
+                fprintf(out, "}%s", k < 3 ? ",\n" : "");
+            }
+            fprintf(out,
+            "};\n"
+            "\n"
+            "local const z_word_t FAR crc_braid_big_table[][256] = {\n");
+            for (k = 0; k < 4; k++) {
+                fprintf(out, "   {");
+                write_table32hi(out, big[k], 256);
+                fprintf(out, "}%s", k < 3 ? ",\n" : "");
+            }
+            fprintf(out,
+            "};\n"
+            "\n"
+            "#endif\n"
+            "\n"
+            "#endif\n");
         }
-        fprintf(out, "#endif\n");
-#  endif /* BYFOUR */
-        fprintf(out, "  }\n};\n");
+        fprintf(out,
+            "\n"
+            "#endif\n");
+
+        /* write out zeros operator table to crc32.h */
+        fprintf(out,
+            "\n"
+            "local const z_crc_t FAR x2n_table[] = {\n"
+            "    ");
+        write_table(out, x2n_table, 32);
+        fprintf(out,
+            "};\n");
         fclose(out);
     }
 #endif /* MAKECRCH */
 }
 
 #ifdef MAKECRCH
-local void write_table(out, table)
-    FILE *out;
-    const z_crc_t FAR *table;
-{
+
+/*
+   Write the 32-bit values in table[0..k-1] to out, five per line in
+   hexadecimal separated by commas.
+ */
+local void write_table(FILE *out, const z_crc_t FAR *table, int k) {
     int n;
 
-    for (n = 0; n < 256; n++)
-        fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : "    ",
+    for (n = 0; n < k; n++)
+        fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : "    ",
                 (unsigned long)(table[n]),
-                n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
+                n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
+}
+
+/*
+   Write the high 32-bits of each value in table[0..k-1] to out, five per line
+   in hexadecimal separated by commas.
+ */
+local void write_table32hi(FILE *out, const z_word_t FAR *table, int k) {
+    int n;
+
+    for (n = 0; n < k; n++)
+        fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : "    ",
+                (unsigned long)(table[n] >> 32),
+                n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
+}
+
+/*
+  Write the 64-bit values in table[0..k-1] to out, three per line in
+  hexadecimal separated by commas. This assumes that if there is a 64-bit
+  type, then there is also a long long integer type, and it is at least 64
+  bits. If not, then the type cast and format string can be adjusted
+  accordingly.
+ */
+local void write_table64(FILE *out, const z_word_t FAR *table, int k) {
+    int n;
+
+    for (n = 0; n < k; n++)
+        fprintf(out, "%s0x%016llx%s", n == 0 || n % 3 ? "" : "    ",
+                (unsigned long long)(table[n]),
+                n == k - 1 ? "" : (n % 3 == 2 ? ",\n" : ", "));
+}
+
+/* Actually do the deed. */
+int main(void) {
+    make_crc_table();
+    return 0;
 }
+
 #endif /* MAKECRCH */
 
-#else /* !DYNAMIC_CRC_TABLE */
-/* ========================================================================
- * Tables of CRC-32s of all single-byte values, made by make_crc_table().
+#ifdef W
+/*
+  Generate the little and big-endian braid tables for the given n and z_word_t
+  size w. Each array must have room for w blocks of 256 elements.
  */
-#include "crc32.h"
+local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) {
+    int k;
+    z_crc_t i, p, q;
+    for (k = 0; k < w; k++) {
+        p = x2nmodp((n * w + 3 - k) << 3, 0);
+        ltl[k][0] = 0;
+        big[w - 1 - k][0] = 0;
+        for (i = 1; i < 256; i++) {
+            ltl[k][i] = q = multmodp(i << 24, p);
+            big[w - 1 - k][i] = byte_swap(q);
+        }
+    }
+}
+#endif
+
 #endif /* DYNAMIC_CRC_TABLE */
 
 /* =========================================================================
- * This function can be used by asm versions of crc32()
+ * This function can be used by asm versions of crc32(), and to force the
+ * generation of the CRC tables in a threaded application.
  */
-const z_crc_t FAR * ZEXPORT get_crc_table()
-{
+const z_crc_t FAR * ZEXPORT get_crc_table(void) {
 #ifdef DYNAMIC_CRC_TABLE
-    if (crc_table_empty)
-        make_crc_table();
+    once(&made, make_crc_table);
 #endif /* DYNAMIC_CRC_TABLE */
     return (const z_crc_t FAR *)crc_table;
 }
 
-/* ========================================================================= */
-#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
-#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
+/* =========================================================================
+ * Use ARM machine instructions if available. This will compute the CRC about
+ * ten times faster than the braided calculation. This code does not check for
+ * the presence of the CRC instruction at run time. __ARM_FEATURE_CRC32 will
+ * only be defined if the compilation specifies an ARM processor architecture
+ * that has the instructions. For example, compiling with -march=armv8.1-a or
+ * -march=armv8-a+crc, or -march=native if the compile machine has the crc32
+ * instructions.
+ */
+#ifdef ARMCRC32
 
-/* ========================================================================= */
-unsigned long ZEXPORT crc32_z(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    z_size_t len;
-{
-    if (buf == Z_NULL) return 0UL;
+/*
+   Constants empirically determined to maximize speed. These values are from
+   measurements on a Cortex-A57. Your mileage may vary.
+ */
+#define Z_BATCH 3990                /* number of words in a batch */
+#define Z_BATCH_ZEROS 0xa10d3d0c    /* computed from Z_BATCH = 3990 */
+#define Z_BATCH_MIN 800             /* fewest words in a final batch */
+
+unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf,
+                              z_size_t len) {
+    z_crc_t val;
+    z_word_t crc1, crc2;
+    const z_word_t *word;
+    z_word_t val0, val1, val2;
+    z_size_t last, last2, i;
+    z_size_t num;
+
+    /* Return initial CRC, if requested. */
+    if (buf == Z_NULL) return 0;
 
 #ifdef DYNAMIC_CRC_TABLE
-    if (crc_table_empty)
-        make_crc_table();
+    once(&made, make_crc_table);
 #endif /* DYNAMIC_CRC_TABLE */
 
-#ifdef BYFOUR
-    if (sizeof(void *) == sizeof(ptrdiff_t)) {
-        z_crc_t endian;
+    /* Pre-condition the CRC */
+    crc = (~crc) & 0xffffffff;
 
-        endian = 1;
-        if (*((unsigned char *)(&endian)))
-            return crc32_little(crc, buf, len);
-        else
-            return crc32_big(crc, buf, len);
+    /* Compute the CRC up to a word boundary. */
+    while (len && ((z_size_t)buf & 7) != 0) {
+        len--;
+        val = *buf++;
+        __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val));
     }
-#endif /* BYFOUR */
-    crc = crc ^ 0xffffffffUL;
-    while (len >= 8) {
-        DO8;
-        len -= 8;
+
+    /* Prepare to compute the CRC on full 64-bit words word[0..num-1]. */
+    word = (z_word_t const *)buf;
+    num = len >> 3;
+    len &= 7;
+
+    /* Do three interleaved CRCs to realize the throughput of one crc32x
+       instruction per cycle. Each CRC is calculated on Z_BATCH words. The
+       three CRCs are combined into a single CRC after each set of batches. */
+    while (num >= 3 * Z_BATCH) {
+        crc1 = 0;
+        crc2 = 0;
+        for (i = 0; i < Z_BATCH; i++) {
+            val0 = word[i];
+            val1 = word[i + Z_BATCH];
+            val2 = word[i + 2 * Z_BATCH];
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1));
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2));
+        }
+        word += 3 * Z_BATCH;
+        num -= 3 * Z_BATCH;
+        crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc1;
+        crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc2;
     }
-    if (len) do {
-        DO1;
-    } while (--len);
-    return crc ^ 0xffffffffUL;
-}
 
-/* ========================================================================= */
-unsigned long ZEXPORT crc32(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    uInt len;
-{
-    return crc32_z(crc, buf, len);
+    /* Do one last smaller batch with the remaining words, if there are enough
+       to pay for the combination of CRCs. */
+    last = num / 3;
+    if (last >= Z_BATCH_MIN) {
+        last2 = last << 1;
+        crc1 = 0;
+        crc2 = 0;
+        for (i = 0; i < last; i++) {
+            val0 = word[i];
+            val1 = word[i + last];
+            val2 = word[i + last2];
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1));
+            __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2));
+        }
+        word += 3 * last;
+        num -= 3 * last;
+        val = x2nmodp(last, 6);
+        crc = multmodp(val, crc) ^ crc1;
+        crc = multmodp(val, crc) ^ crc2;
+    }
+
+    /* Compute the CRC on any remaining words. */
+    for (i = 0; i < num; i++) {
+        val0 = word[i];
+        __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+    }
+    word += num;
+
+    /* Complete the CRC on any remaining bytes. */
+    buf = (const unsigned char FAR *)word;
+    while (len) {
+        len--;
+        val = *buf++;
+        __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val));
+    }
+
+    /* Return the CRC, post-conditioned. */
+    return crc ^ 0xffffffff;
 }
 
-#ifdef BYFOUR
+#else
+
+#ifdef W
 
 /*
-   This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
-   integer pointer type. This violates the strict aliasing rule, where a
-   compiler can assume, for optimization purposes, that two pointers to
-   fundamentally different types won't ever point to the same memory. This can
-   manifest as a problem only if one of the pointers is written to. This code
-   only reads from those pointers. So long as this code remains isolated in
-   this compilation unit, there won't be a problem. For this reason, this code
-   should not be copied and pasted into a compilation unit in which other code
-   writes to the buffer that is passed to these routines.
+  Return the CRC of the W bytes in the word_t data, taking the
+  least-significant byte of the word as the first byte of data, without any pre
+  or post conditioning. This is used to combine the CRCs of each braid.
  */
+local z_crc_t crc_word(z_word_t data) {
+    int k;
+    for (k = 0; k < W; k++)
+        data = (data >> 8) ^ crc_table[data & 0xff];
+    return (z_crc_t)data;
+}
 
-/* ========================================================================= */
-#define DOLIT4 c ^= *buf4++; \
-        c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
-            crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
-#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
+local z_word_t crc_word_big(z_word_t data) {
+    int k;
+    for (k = 0; k < W; k++)
+        data = (data << 8) ^
+            crc_big_table[(data >> ((W - 1) << 3)) & 0xff];
+    return data;
+}
+
+#endif
 
 /* ========================================================================= */
-local unsigned long crc32_little(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    z_size_t len;
-{
-    register z_crc_t c;
-    register const z_crc_t FAR *buf4;
-
-    c = (z_crc_t)crc;
-    c = ~c;
-    while (len && ((ptrdiff_t)buf & 3)) {
-        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
-        len--;
-    }
+unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf,
+                              z_size_t len) {
+    /* Return initial CRC, if requested. */
+    if (buf == Z_NULL) return 0;
 
-    buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
-    while (len >= 32) {
-        DOLIT32;
-        len -= 32;
-    }
-    while (len >= 4) {
-        DOLIT4;
-        len -= 4;
-    }
-    buf = (const unsigned char FAR *)buf4;
+#ifdef DYNAMIC_CRC_TABLE
+    once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
 
-    if (len) do {
-        c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
-    } while (--len);
-    c = ~c;
-    return (unsigned long)c;
-}
+    /* Pre-condition the CRC */
+    crc = (~crc) & 0xffffffff;
 
-/* ========================================================================= */
-#define DOBIG4 c ^= *buf4++; \
-        c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
-            crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
-#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
+#ifdef W
 
-/* ========================================================================= */
-local unsigned long crc32_big(crc, buf, len)
-    unsigned long crc;
-    const unsigned char FAR *buf;
-    z_size_t len;
-{
-    register z_crc_t c;
-    register const z_crc_t FAR *buf4;
-
-    c = ZSWAP32((z_crc_t)crc);
-    c = ~c;
-    while (len && ((ptrdiff_t)buf & 3)) {
-        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
-        len--;
+    /* If provided enough bytes, do a braided CRC calculation. */
+    if (len >= N * W + W - 1) {
+        z_size_t blks;
+        z_word_t const *words;
+        unsigned endian;
+        int k;
+
+        /* Compute the CRC up to a z_word_t boundary. */
+        while (len && ((z_size_t)buf & (W - 1)) != 0) {
+            len--;
+            crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        }
+
+        /* Compute the CRC on as many N z_word_t blocks as are available. */
+        blks = len / (N * W);
+        len -= blks * N * W;
+        words = (z_word_t const *)buf;
+
+        /* Do endian check at execution time instead of compile time, since ARM
+           processors can change the endianness at execution time. If the
+           compiler knows what the endianness will be, it can optimize out the
+           check and the unused branch. */
+        endian = 1;
+        if (*(unsigned char *)&endian) {
+            /* Little endian. */
+
+            z_crc_t crc0;
+            z_word_t word0;
+#if N > 1
+            z_crc_t crc1;
+            z_word_t word1;
+#if N > 2
+            z_crc_t crc2;
+            z_word_t word2;
+#if N > 3
+            z_crc_t crc3;
+            z_word_t word3;
+#if N > 4
+            z_crc_t crc4;
+            z_word_t word4;
+#if N > 5
+            z_crc_t crc5;
+            z_word_t word5;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+            /* Initialize the CRC for each braid. */
+            crc0 = crc;
+#if N > 1
+            crc1 = 0;
+#if N > 2
+            crc2 = 0;
+#if N > 3
+            crc3 = 0;
+#if N > 4
+            crc4 = 0;
+#if N > 5
+            crc5 = 0;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+            /*
+              Process the first blks-1 blocks, computing the CRCs on each braid
+              independently.
+             */
+            while (--blks) {
+                /* Load the word for each braid into registers. */
+                word0 = crc0 ^ words[0];
+#if N > 1
+                word1 = crc1 ^ words[1];
+#if N > 2
+                word2 = crc2 ^ words[2];
+#if N > 3
+                word3 = crc3 ^ words[3];
+#if N > 4
+                word4 = crc4 ^ words[4];
+#if N > 5
+                word5 = crc5 ^ words[5];
+#endif
+#endif
+#endif
+#endif
+#endif
+                words += N;
+
+                /* Compute and update the CRC for each word. The loop should
+                   get unrolled. */
+                crc0 = crc_braid_table[0][word0 & 0xff];
+#if N > 1
+                crc1 = crc_braid_table[0][word1 & 0xff];
+#if N > 2
+                crc2 = crc_braid_table[0][word2 & 0xff];
+#if N > 3
+                crc3 = crc_braid_table[0][word3 & 0xff];
+#if N > 4
+                crc4 = crc_braid_table[0][word4 & 0xff];
+#if N > 5
+                crc5 = crc_braid_table[0][word5 & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+                for (k = 1; k < W; k++) {
+                    crc0 ^= crc_braid_table[k][(word0 >> (k << 3)) & 0xff];
+#if N > 1
+                    crc1 ^= crc_braid_table[k][(word1 >> (k << 3)) & 0xff];
+#if N > 2
+                    crc2 ^= crc_braid_table[k][(word2 >> (k << 3)) & 0xff];
+#if N > 3
+                    crc3 ^= crc_braid_table[k][(word3 >> (k << 3)) & 0xff];
+#if N > 4
+                    crc4 ^= crc_braid_table[k][(word4 >> (k << 3)) & 0xff];
+#if N > 5
+                    crc5 ^= crc_braid_table[k][(word5 >> (k << 3)) & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+                }
+            }
+
+            /*
+              Process the last block, combining the CRCs of the N braids at the
+              same time.
+             */
+            crc = crc_word(crc0 ^ words[0]);
+#if N > 1
+            crc = crc_word(crc1 ^ words[1] ^ crc);
+#if N > 2
+            crc = crc_word(crc2 ^ words[2] ^ crc);
+#if N > 3
+            crc = crc_word(crc3 ^ words[3] ^ crc);
+#if N > 4
+            crc = crc_word(crc4 ^ words[4] ^ crc);
+#if N > 5
+            crc = crc_word(crc5 ^ words[5] ^ crc);
+#endif
+#endif
+#endif
+#endif
+#endif
+            words += N;
+        }
+        else {
+            /* Big endian. */
+
+            z_word_t crc0, word0, comb;
+#if N > 1
+            z_word_t crc1, word1;
+#if N > 2
+            z_word_t crc2, word2;
+#if N > 3
+            z_word_t crc3, word3;
+#if N > 4
+            z_word_t crc4, word4;
+#if N > 5
+            z_word_t crc5, word5;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+            /* Initialize the CRC for each braid. */
+            crc0 = byte_swap(crc);
+#if N > 1
+            crc1 = 0;
+#if N > 2
+            crc2 = 0;
+#if N > 3
+            crc3 = 0;
+#if N > 4
+            crc4 = 0;
+#if N > 5
+            crc5 = 0;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+            /*
+              Process the first blks-1 blocks, computing the CRCs on each braid
+              independently.
+             */
+            while (--blks) {
+                /* Load the word for each braid into registers. */
+                word0 = crc0 ^ words[0];
+#if N > 1
+                word1 = crc1 ^ words[1];
+#if N > 2
+                word2 = crc2 ^ words[2];
+#if N > 3
+                word3 = crc3 ^ words[3];
+#if N > 4
+                word4 = crc4 ^ words[4];
+#if N > 5
+                word5 = crc5 ^ words[5];
+#endif
+#endif
+#endif
+#endif
+#endif
+                words += N;
+
+                /* Compute and update the CRC for each word. The loop should
+                   get unrolled. */
+                crc0 = crc_braid_big_table[0][word0 & 0xff];
+#if N > 1
+                crc1 = crc_braid_big_table[0][word1 & 0xff];
+#if N > 2
+                crc2 = crc_braid_big_table[0][word2 & 0xff];
+#if N > 3
+                crc3 = crc_braid_big_table[0][word3 & 0xff];
+#if N > 4
+                crc4 = crc_braid_big_table[0][word4 & 0xff];
+#if N > 5
+                crc5 = crc_braid_big_table[0][word5 & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+                for (k = 1; k < W; k++) {
+                    crc0 ^= crc_braid_big_table[k][(word0 >> (k << 3)) & 0xff];
+#if N > 1
+                    crc1 ^= crc_braid_big_table[k][(word1 >> (k << 3)) & 0xff];
+#if N > 2
+                    crc2 ^= crc_braid_big_table[k][(word2 >> (k << 3)) & 0xff];
+#if N > 3
+                    crc3 ^= crc_braid_big_table[k][(word3 >> (k << 3)) & 0xff];
+#if N > 4
+                    crc4 ^= crc_braid_big_table[k][(word4 >> (k << 3)) & 0xff];
+#if N > 5
+                    crc5 ^= crc_braid_big_table[k][(word5 >> (k << 3)) & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+                }
+            }
+
+            /*
+              Process the last block, combining the CRCs of the N braids at the
+              same time.
+             */
+            comb = crc_word_big(crc0 ^ words[0]);
+#if N > 1
+            comb = crc_word_big(crc1 ^ words[1] ^ comb);
+#if N > 2
+            comb = crc_word_big(crc2 ^ words[2] ^ comb);
+#if N > 3
+            comb = crc_word_big(crc3 ^ words[3] ^ comb);
+#if N > 4
+            comb = crc_word_big(crc4 ^ words[4] ^ comb);
+#if N > 5
+            comb = crc_word_big(crc5 ^ words[5] ^ comb);
+#endif
+#endif
+#endif
+#endif
+#endif
+            words += N;
+            crc = byte_swap(comb);
+        }
+
+        /*
+          Update the pointer to the remaining bytes to process.
+         */
+        buf = (unsigned char const *)words;
     }
 
-    buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
-    while (len >= 32) {
-        DOBIG32;
-        len -= 32;
+#endif /* W */
+
+    /* Complete the computation of the CRC on any remaining bytes. */
+    while (len >= 8) {
+        len -= 8;
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
     }
-    while (len >= 4) {
-        DOBIG4;
-        len -= 4;
+    while (len) {
+        len--;
+        crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
     }
-    buf = (const unsigned char FAR *)buf4;
 
-    if (len) do {
-        c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
-    } while (--len);
-    c = ~c;
-    return (unsigned long)(ZSWAP32(c));
+    /* Return the CRC, post-conditioned. */
+    return crc ^ 0xffffffff;
 }
 
-#endif /* BYFOUR */
-
-#define GF2_DIM 32      /* dimension of GF(2) vectors (length of CRC) */
+#endif
 
 /* ========================================================================= */
-local unsigned long gf2_matrix_times(mat, vec)
-    unsigned long *mat;
-    unsigned long vec;
-{
-    unsigned long sum;
-
-    sum = 0;
-    while (vec) {
-        if (vec & 1)
-            sum ^= *mat;
-        vec >>= 1;
-        mat++;
-    }
-    return sum;
+unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf,
+                            uInt len) {
+    return crc32_z(crc, buf, len);
 }
 
 /* ========================================================================= */
-local void gf2_matrix_square(square, mat)
-    unsigned long *square;
-    unsigned long *mat;
-{
-    int n;
-
-    for (n = 0; n < GF2_DIM; n++)
-        square[n] = gf2_matrix_times(mat, mat[n]);
+uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) {
+#ifdef DYNAMIC_CRC_TABLE
+    once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
+    return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff);
 }
 
 /* ========================================================================= */
-local uLong crc32_combine_(crc1, crc2, len2)
-    uLong crc1;
-    uLong crc2;
-    z_off64_t len2;
-{
-    int n;
-    unsigned long row;
-    unsigned long even[GF2_DIM];    /* even-power-of-two zeros operator */
-    unsigned long odd[GF2_DIM];     /* odd-power-of-two zeros operator */
-
-    /* degenerate case (also disallow negative lengths) */
-    if (len2 <= 0)
-        return crc1;
-
-    /* put operator for one zero bit in odd */
-    odd[0] = 0xedb88320UL;          /* CRC-32 polynomial */
-    row = 1;
-    for (n = 1; n < GF2_DIM; n++) {
-        odd[n] = row;
-        row <<= 1;
-    }
+uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) {
+    return crc32_combine64(crc1, crc2, (z_off64_t)len2);
+}
 
-    /* put operator for two zero bits in even */
-    gf2_matrix_square(even, odd);
-
-    /* put operator for four zero bits in odd */
-    gf2_matrix_square(odd, even);
-
-    /* apply len2 zeros to crc1 (first square will put the operator for one
-       zero byte, eight zero bits, in even) */
-    do {
-        /* apply zeros operator for this bit of len2 */
-        gf2_matrix_square(even, odd);
-        if (len2 & 1)
-            crc1 = gf2_matrix_times(even, crc1);
-        len2 >>= 1;
-
-        /* if no more bits set, then done */
-        if (len2 == 0)
-            break;
-
-        /* another iteration of the loop with odd and even swapped */
-        gf2_matrix_square(odd, even);
-        if (len2 & 1)
-            crc1 = gf2_matrix_times(odd, crc1);
-        len2 >>= 1;
-
-        /* if no more bits set, then done */
-    } while (len2 != 0);
-
-    /* return combined crc */
-    crc1 ^= crc2;
-    return crc1;
+/* ========================================================================= */
+uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) {
+#ifdef DYNAMIC_CRC_TABLE
+    once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
+    return x2nmodp(len2, 3);
 }
 
 /* ========================================================================= */
-uLong ZEXPORT crc32_combine(crc1, crc2, len2)
-    uLong crc1;
-    uLong crc2;
-    z_off_t len2;
-{
-    return crc32_combine_(crc1, crc2, len2);
+uLong ZEXPORT crc32_combine_gen(z_off_t len2) {
+    return crc32_combine_gen64((z_off64_t)len2);
 }
 
-uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
-    uLong crc1;
-    uLong crc2;
-    z_off64_t len2;
-{
-    return crc32_combine_(crc1, crc2, len2);
+/* ========================================================================= */
+uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op) {
+    return multmodp(op, crc1) ^ (crc2 & 0xffffffff);
 }
diff --git a/libs/zlib/crc32.h b/libs/zlib/crc32.h
index 9e0c77810..137df68d6 100644
--- a/libs/zlib/crc32.h
+++ b/libs/zlib/crc32.h
@@ -2,440 +2,9445 @@
  * Generated automatically by crc32.c
  */
 
-local const z_crc_t FAR crc_table[TBLS][256] =
-{
-  {
-    0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
-    0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
-    0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
-    0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
-    0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
-    0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
-    0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
-    0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
-    0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
-    0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
-    0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
-    0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
-    0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
-    0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
-    0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
-    0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
-    0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
-    0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
-    0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
-    0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
-    0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
-    0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
-    0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
-    0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
-    0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
-    0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
-    0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
-    0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
-    0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
-    0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
-    0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
-    0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
-    0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
-    0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
-    0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
-    0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
-    0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
-    0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
-    0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
-    0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
-    0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
-    0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
-    0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
-    0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
-    0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
-    0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
-    0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
-    0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
-    0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
-    0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
-    0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
-    0x2d02ef8dUL
-#ifdef BYFOUR
-  },
-  {
-    0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
-    0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
-    0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
-    0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
-    0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
-    0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
-    0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
-    0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
-    0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
-    0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
-    0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
-    0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
-    0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
-    0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
-    0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
-    0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
-    0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
-    0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
-    0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
-    0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
-    0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
-    0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
-    0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
-    0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
-    0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
-    0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
-    0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
-    0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
-    0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
-    0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
-    0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
-    0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
-    0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
-    0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
-    0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
-    0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
-    0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
-    0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
-    0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
-    0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
-    0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
-    0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
-    0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
-    0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
-    0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
-    0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
-    0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
-    0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
-    0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
-    0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
-    0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
-    0x9324fd72UL
-  },
-  {
-    0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
-    0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
-    0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
-    0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
-    0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
-    0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
-    0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
-    0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
-    0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
-    0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
-    0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
-    0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
-    0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
-    0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
-    0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
-    0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
-    0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
-    0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
-    0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
-    0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
-    0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
-    0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
-    0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
-    0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
-    0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
-    0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
-    0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
-    0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
-    0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
-    0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
-    0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
-    0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
-    0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
-    0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
-    0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
-    0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
-    0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
-    0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
-    0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
-    0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
-    0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
-    0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
-    0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
-    0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
-    0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
-    0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
-    0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
-    0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
-    0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
-    0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
-    0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
-    0xbe9834edUL
-  },
-  {
-    0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
-    0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
-    0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
-    0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
-    0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
-    0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
-    0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
-    0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
-    0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
-    0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
-    0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
-    0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
-    0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
-    0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
-    0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
-    0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
-    0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
-    0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
-    0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
-    0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
-    0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
-    0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
-    0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
-    0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
-    0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
-    0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
-    0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
-    0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
-    0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
-    0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
-    0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
-    0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
-    0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
-    0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
-    0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
-    0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
-    0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
-    0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
-    0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
-    0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
-    0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
-    0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
-    0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
-    0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
-    0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
-    0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
-    0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
-    0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
-    0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
-    0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
-    0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
-    0xde0506f1UL
-  },
-  {
-    0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
-    0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
-    0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
-    0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
-    0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
-    0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
-    0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
-    0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
-    0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
-    0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
-    0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
-    0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
-    0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
-    0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
-    0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
-    0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
-    0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
-    0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
-    0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
-    0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
-    0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
-    0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
-    0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
-    0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
-    0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
-    0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
-    0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
-    0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
-    0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
-    0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
-    0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
-    0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
-    0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
-    0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
-    0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
-    0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
-    0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
-    0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
-    0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
-    0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
-    0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
-    0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
-    0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
-    0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
-    0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
-    0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
-    0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
-    0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
-    0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
-    0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
-    0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
-    0x8def022dUL
-  },
-  {
-    0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
-    0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
-    0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
-    0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
-    0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
-    0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
-    0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
-    0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
-    0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
-    0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
-    0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
-    0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
-    0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
-    0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
-    0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
-    0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
-    0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
-    0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
-    0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
-    0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
-    0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
-    0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
-    0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
-    0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
-    0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
-    0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
-    0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
-    0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
-    0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
-    0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
-    0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
-    0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
-    0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
-    0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
-    0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
-    0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
-    0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
-    0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
-    0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
-    0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
-    0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
-    0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
-    0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
-    0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
-    0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
-    0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
-    0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
-    0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
-    0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
-    0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
-    0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
-    0x72fd2493UL
-  },
-  {
-    0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
-    0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
-    0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
-    0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
-    0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
-    0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
-    0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
-    0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
-    0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
-    0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
-    0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
-    0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
-    0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
-    0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
-    0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
-    0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
-    0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
-    0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
-    0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
-    0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
-    0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
-    0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
-    0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
-    0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
-    0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
-    0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
-    0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
-    0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
-    0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
-    0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
-    0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
-    0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
-    0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
-    0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
-    0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
-    0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
-    0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
-    0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
-    0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
-    0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
-    0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
-    0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
-    0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
-    0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
-    0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
-    0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
-    0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
-    0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
-    0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
-    0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
-    0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
-    0xed3498beUL
-  },
-  {
-    0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
-    0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
-    0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
-    0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
-    0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
-    0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
-    0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
-    0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
-    0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
-    0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
-    0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
-    0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
-    0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
-    0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
-    0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
-    0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
-    0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
-    0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
-    0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
-    0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
-    0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
-    0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
-    0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
-    0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
-    0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
-    0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
-    0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
-    0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
-    0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
-    0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
-    0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
-    0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
-    0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
-    0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
-    0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
-    0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
-    0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
-    0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
-    0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
-    0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
-    0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
-    0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
-    0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
-    0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
-    0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
-    0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
-    0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
-    0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
-    0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
-    0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
-    0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
-    0xf10605deUL
+local const z_crc_t FAR crc_table[] = {
+    0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+    0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+    0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+    0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+    0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+    0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+    0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+    0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+    0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+    0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+    0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+    0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+    0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+    0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+    0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+    0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+    0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+    0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+    0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+    0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+    0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+    0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+    0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+    0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+    0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+    0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+    0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+    0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+    0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+    0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+    0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+    0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+    0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+    0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+    0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+    0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+    0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+    0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+    0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+    0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+    0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+    0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+    0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+    0x2d02ef8d};
+
+#ifdef W
+
+#if W == 8
+
+local const z_word_t FAR crc_big_table[] = {
+    0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000,
+    0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000,
+    0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000,
+    0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000,
+    0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000,
+    0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000,
+    0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000,
+    0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000,
+    0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000,
+    0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000,
+    0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000,
+    0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000,
+    0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000,
+    0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000,
+    0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000,
+    0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000,
+    0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000,
+    0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000,
+    0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000,
+    0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000,
+    0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000,
+    0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000,
+    0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000,
+    0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000,
+    0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000,
+    0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000,
+    0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000,
+    0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000,
+    0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000,
+    0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000,
+    0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000,
+    0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000,
+    0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000,
+    0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000,
+    0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000,
+    0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000,
+    0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000,
+    0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000,
+    0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000,
+    0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000,
+    0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000,
+    0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000,
+    0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000,
+    0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000,
+    0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000,
+    0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000,
+    0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000,
+    0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000,
+    0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000,
+    0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000,
+    0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000,
+    0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000,
+    0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000,
+    0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000,
+    0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000,
+    0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000,
+    0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000,
+    0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000,
+    0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000,
+    0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000,
+    0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000,
+    0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000,
+    0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000,
+    0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000,
+    0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000,
+    0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000,
+    0x8567077200000000, 0x1357000500000000, 0x824abf9500000000,
+    0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000,
+    0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000,
+    0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000,
+    0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000,
+    0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000,
+    0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000,
+    0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000,
+    0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000,
+    0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000,
+    0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000,
+    0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000,
+    0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000,
+    0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000,
+    0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000,
+    0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000,
+    0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000,
+    0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000,
+    0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000,
+    0x8def022d00000000};
+
+#else /* W == 4 */
+
+local const z_word_t FAR crc_big_table[] = {
+    0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
+    0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
+    0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
+    0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
+    0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
+    0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
+    0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
+    0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
+    0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
+    0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
+    0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
+    0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
+    0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
+    0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
+    0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
+    0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
+    0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
+    0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
+    0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
+    0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
+    0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
+    0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
+    0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
+    0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
+    0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
+    0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
+    0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
+    0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
+    0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
+    0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
+    0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
+    0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
+    0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
+    0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
+    0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
+    0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
+    0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
+    0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
+    0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
+    0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
+    0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
+    0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
+    0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
+    0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
+    0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
+    0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
+    0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
+    0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
+    0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
+    0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
+    0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
+    0x8def022d};
+
+#endif
+
+#if N == 1
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa,
+    0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b,
+    0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232,
+    0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8,
+    0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e,
+    0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa,
+    0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b,
+    0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f,
+    0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719,
+    0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3,
+    0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa,
+    0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b,
+    0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed,
+    0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89,
+    0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25,
+    0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041,
+    0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c,
+    0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed,
+    0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4,
+    0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758,
+    0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e,
+    0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a,
+    0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed,
+    0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889,
+    0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df,
+    0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544,
+    0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d,
+    0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c,
+    0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1,
+    0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95,
+    0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839,
+    0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d,
+    0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976,
+    0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7,
+    0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be,
+    0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144,
+    0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12,
+    0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376,
+    0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a,
+    0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e,
+    0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278,
+    0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682,
+    0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b,
+    0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a,
+    0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561,
+    0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05,
+    0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9,
+    0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd,
+    0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0,
+    0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61,
+    0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678,
+    0x264b06e6},
+   {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413,
+    0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3,
+    0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d,
+    0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653,
+    0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9,
+    0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e,
+    0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5,
+    0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712,
+    0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8,
+    0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6,
+    0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068,
+    0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8,
+    0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579,
+    0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade,
+    0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37,
+    0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590,
+    0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4,
+    0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64,
+    0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea,
+    0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678,
+    0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282,
+    0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25,
+    0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102,
+    0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5,
+    0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f,
+    0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146,
+    0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8,
+    0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08,
+    0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c,
+    0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b,
+    0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972,
+    0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5,
+    0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d,
+    0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd,
+    0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833,
+    0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d,
+    0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7,
+    0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60,
+    0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2,
+    0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105,
+    0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff,
+    0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1,
+    0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f,
+    0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf,
+    0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617,
+    0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0,
+    0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959,
+    0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe,
+    0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca,
+    0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a,
+    0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184,
+    0x92364a30},
+   {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216,
+    0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8,
+    0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170,
+    0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035,
+    0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6,
+    0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145,
+    0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d,
+    0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e,
+    0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d,
+    0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408,
+    0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0,
+    0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e,
+    0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c,
+    0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf,
+    0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a,
+    0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9,
+    0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1,
+    0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f,
+    0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987,
+    0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4,
+    0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37,
+    0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84,
+    0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca,
+    0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79,
+    0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba,
+    0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d,
+    0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5,
+    0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b,
+    0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643,
+    0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0,
+    0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525,
+    0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496,
+    0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8,
+    0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026,
+    0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e,
+    0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db,
+    0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118,
+    0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab,
+    0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf,
+    0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c,
+    0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf,
+    0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a,
+    0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32,
+    0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec,
+    0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82,
+    0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31,
+    0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4,
+    0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957,
+    0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f,
+    0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1,
+    0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869,
+    0xe4c4abcc},
+   {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0,
+    0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271,
+    0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61,
+    0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52,
+    0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43,
+    0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333,
+    0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64,
+    0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314,
+    0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205,
+    0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136,
+    0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26,
+    0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997,
+    0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849,
+    0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739,
+    0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8,
+    0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98,
+    0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b,
+    0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba,
+    0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa,
+    0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d,
+    0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c,
+    0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc,
+    0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af,
+    0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf,
+    0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce,
+    0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922,
+    0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532,
+    0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183,
+    0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710,
+    0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860,
+    0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1,
+    0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1,
+    0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956,
+    0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7,
+    0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7,
+    0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4,
+    0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5,
+    0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5,
+    0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb,
+    0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb,
+    0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da,
+    0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9,
+    0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9,
+    0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48,
+    0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df,
+    0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af,
+    0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e,
+    0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e,
+    0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d,
+    0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c,
+    0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c,
+    0xca64c78c},
+   {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
+    0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
+    0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
+    0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
+    0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
+    0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
+    0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
+    0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
+    0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
+    0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
+    0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
+    0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
+    0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
+    0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
+    0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
+    0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
+    0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
+    0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
+    0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
+    0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
+    0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
+    0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
+    0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
+    0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
+    0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
+    0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
+    0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
+    0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
+    0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
+    0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
+    0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
+    0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
+    0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
+    0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
+    0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
+    0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
+    0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
+    0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
+    0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
+    0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
+    0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
+    0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
+    0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
+    0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
+    0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
+    0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
+    0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
+    0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
+    0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
+    0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
+    0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
+    0xde0506f1},
+   {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
+    0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
+    0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
+    0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
+    0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
+    0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
+    0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
+    0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
+    0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
+    0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
+    0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
+    0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
+    0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
+    0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
+    0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
+    0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
+    0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
+    0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
+    0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
+    0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
+    0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
+    0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
+    0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
+    0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
+    0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
+    0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
+    0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
+    0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
+    0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
+    0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
+    0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
+    0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
+    0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
+    0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
+    0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
+    0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
+    0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
+    0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
+    0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
+    0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
+    0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
+    0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
+    0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
+    0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
+    0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
+    0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
+    0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
+    0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
+    0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
+    0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
+    0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
+    0xbe9834ed},
+   {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
+    0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
+    0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
+    0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
+    0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
+    0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
+    0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
+    0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
+    0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
+    0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
+    0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
+    0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
+    0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
+    0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
+    0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
+    0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
+    0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
+    0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
+    0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
+    0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
+    0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
+    0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
+    0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
+    0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
+    0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
+    0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
+    0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
+    0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
+    0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
+    0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
+    0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
+    0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
+    0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
+    0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
+    0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
+    0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
+    0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
+    0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
+    0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
+    0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
+    0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
+    0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
+    0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
+    0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
+    0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
+    0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
+    0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
+    0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
+    0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
+    0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
+    0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
+    0x9324fd72},
+   {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+    0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+    0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+    0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+    0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+    0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+    0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+    0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+    0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+    0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+    0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+    0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+    0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+    0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+    0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+    0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+    0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+    0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+    0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+    0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+    0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+    0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+    0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+    0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+    0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+    0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+    0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+    0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+    0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+    0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+    0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+    0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+    0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+    0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+    0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+    0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+    0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+    0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+    0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+    0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+    0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+    0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+    0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+    0x2d02ef8d}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000,
+    0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000,
+    0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000,
+    0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000,
+    0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000,
+    0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000,
+    0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000,
+    0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000,
+    0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000,
+    0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000,
+    0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000,
+    0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000,
+    0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000,
+    0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000,
+    0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000,
+    0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000,
+    0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000,
+    0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000,
+    0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000,
+    0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000,
+    0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000,
+    0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000,
+    0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000,
+    0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000,
+    0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000,
+    0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000,
+    0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000,
+    0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000,
+    0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000,
+    0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000,
+    0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000,
+    0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000,
+    0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000,
+    0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000,
+    0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000,
+    0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000,
+    0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000,
+    0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000,
+    0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000,
+    0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000,
+    0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000,
+    0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000,
+    0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000,
+    0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000,
+    0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000,
+    0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000,
+    0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000,
+    0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000,
+    0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000,
+    0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000,
+    0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000,
+    0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000,
+    0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000,
+    0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000,
+    0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000,
+    0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000,
+    0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000,
+    0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000,
+    0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000,
+    0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000,
+    0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000,
+    0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000,
+    0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000,
+    0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000,
+    0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000,
+    0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000,
+    0x8567077200000000, 0x1357000500000000, 0x824abf9500000000,
+    0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000,
+    0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000,
+    0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000,
+    0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000,
+    0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000,
+    0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000,
+    0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000,
+    0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000,
+    0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000,
+    0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000,
+    0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000,
+    0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000,
+    0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000,
+    0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000,
+    0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000,
+    0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000,
+    0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000,
+    0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000,
+    0x8def022d00000000},
+   {0x0000000000000000, 0x41311b1900000000, 0x8262363200000000,
+    0xc3532d2b00000000, 0x04c56c6400000000, 0x45f4777d00000000,
+    0x86a75a5600000000, 0xc796414f00000000, 0x088ad9c800000000,
+    0x49bbc2d100000000, 0x8ae8effa00000000, 0xcbd9f4e300000000,
+    0x0c4fb5ac00000000, 0x4d7eaeb500000000, 0x8e2d839e00000000,
+    0xcf1c988700000000, 0x5112c24a00000000, 0x1023d95300000000,
+    0xd370f47800000000, 0x9241ef6100000000, 0x55d7ae2e00000000,
+    0x14e6b53700000000, 0xd7b5981c00000000, 0x9684830500000000,
+    0x59981b8200000000, 0x18a9009b00000000, 0xdbfa2db000000000,
+    0x9acb36a900000000, 0x5d5d77e600000000, 0x1c6c6cff00000000,
+    0xdf3f41d400000000, 0x9e0e5acd00000000, 0xa224849500000000,
+    0xe3159f8c00000000, 0x2046b2a700000000, 0x6177a9be00000000,
+    0xa6e1e8f100000000, 0xe7d0f3e800000000, 0x2483dec300000000,
+    0x65b2c5da00000000, 0xaaae5d5d00000000, 0xeb9f464400000000,
+    0x28cc6b6f00000000, 0x69fd707600000000, 0xae6b313900000000,
+    0xef5a2a2000000000, 0x2c09070b00000000, 0x6d381c1200000000,
+    0xf33646df00000000, 0xb2075dc600000000, 0x715470ed00000000,
+    0x30656bf400000000, 0xf7f32abb00000000, 0xb6c231a200000000,
+    0x75911c8900000000, 0x34a0079000000000, 0xfbbc9f1700000000,
+    0xba8d840e00000000, 0x79dea92500000000, 0x38efb23c00000000,
+    0xff79f37300000000, 0xbe48e86a00000000, 0x7d1bc54100000000,
+    0x3c2ade5800000000, 0x054f79f000000000, 0x447e62e900000000,
+    0x872d4fc200000000, 0xc61c54db00000000, 0x018a159400000000,
+    0x40bb0e8d00000000, 0x83e823a600000000, 0xc2d938bf00000000,
+    0x0dc5a03800000000, 0x4cf4bb2100000000, 0x8fa7960a00000000,
+    0xce968d1300000000, 0x0900cc5c00000000, 0x4831d74500000000,
+    0x8b62fa6e00000000, 0xca53e17700000000, 0x545dbbba00000000,
+    0x156ca0a300000000, 0xd63f8d8800000000, 0x970e969100000000,
+    0x5098d7de00000000, 0x11a9ccc700000000, 0xd2fae1ec00000000,
+    0x93cbfaf500000000, 0x5cd7627200000000, 0x1de6796b00000000,
+    0xdeb5544000000000, 0x9f844f5900000000, 0x58120e1600000000,
+    0x1923150f00000000, 0xda70382400000000, 0x9b41233d00000000,
+    0xa76bfd6500000000, 0xe65ae67c00000000, 0x2509cb5700000000,
+    0x6438d04e00000000, 0xa3ae910100000000, 0xe29f8a1800000000,
+    0x21cca73300000000, 0x60fdbc2a00000000, 0xafe124ad00000000,
+    0xeed03fb400000000, 0x2d83129f00000000, 0x6cb2098600000000,
+    0xab2448c900000000, 0xea1553d000000000, 0x29467efb00000000,
+    0x687765e200000000, 0xf6793f2f00000000, 0xb748243600000000,
+    0x741b091d00000000, 0x352a120400000000, 0xf2bc534b00000000,
+    0xb38d485200000000, 0x70de657900000000, 0x31ef7e6000000000,
+    0xfef3e6e700000000, 0xbfc2fdfe00000000, 0x7c91d0d500000000,
+    0x3da0cbcc00000000, 0xfa368a8300000000, 0xbb07919a00000000,
+    0x7854bcb100000000, 0x3965a7a800000000, 0x4b98833b00000000,
+    0x0aa9982200000000, 0xc9fab50900000000, 0x88cbae1000000000,
+    0x4f5def5f00000000, 0x0e6cf44600000000, 0xcd3fd96d00000000,
+    0x8c0ec27400000000, 0x43125af300000000, 0x022341ea00000000,
+    0xc1706cc100000000, 0x804177d800000000, 0x47d7369700000000,
+    0x06e62d8e00000000, 0xc5b500a500000000, 0x84841bbc00000000,
+    0x1a8a417100000000, 0x5bbb5a6800000000, 0x98e8774300000000,
+    0xd9d96c5a00000000, 0x1e4f2d1500000000, 0x5f7e360c00000000,
+    0x9c2d1b2700000000, 0xdd1c003e00000000, 0x120098b900000000,
+    0x533183a000000000, 0x9062ae8b00000000, 0xd153b59200000000,
+    0x16c5f4dd00000000, 0x57f4efc400000000, 0x94a7c2ef00000000,
+    0xd596d9f600000000, 0xe9bc07ae00000000, 0xa88d1cb700000000,
+    0x6bde319c00000000, 0x2aef2a8500000000, 0xed796bca00000000,
+    0xac4870d300000000, 0x6f1b5df800000000, 0x2e2a46e100000000,
+    0xe136de6600000000, 0xa007c57f00000000, 0x6354e85400000000,
+    0x2265f34d00000000, 0xe5f3b20200000000, 0xa4c2a91b00000000,
+    0x6791843000000000, 0x26a09f2900000000, 0xb8aec5e400000000,
+    0xf99fdefd00000000, 0x3accf3d600000000, 0x7bfde8cf00000000,
+    0xbc6ba98000000000, 0xfd5ab29900000000, 0x3e099fb200000000,
+    0x7f3884ab00000000, 0xb0241c2c00000000, 0xf115073500000000,
+    0x32462a1e00000000, 0x7377310700000000, 0xb4e1704800000000,
+    0xf5d06b5100000000, 0x3683467a00000000, 0x77b25d6300000000,
+    0x4ed7facb00000000, 0x0fe6e1d200000000, 0xccb5ccf900000000,
+    0x8d84d7e000000000, 0x4a1296af00000000, 0x0b238db600000000,
+    0xc870a09d00000000, 0x8941bb8400000000, 0x465d230300000000,
+    0x076c381a00000000, 0xc43f153100000000, 0x850e0e2800000000,
+    0x42984f6700000000, 0x03a9547e00000000, 0xc0fa795500000000,
+    0x81cb624c00000000, 0x1fc5388100000000, 0x5ef4239800000000,
+    0x9da70eb300000000, 0xdc9615aa00000000, 0x1b0054e500000000,
+    0x5a314ffc00000000, 0x996262d700000000, 0xd85379ce00000000,
+    0x174fe14900000000, 0x567efa5000000000, 0x952dd77b00000000,
+    0xd41ccc6200000000, 0x138a8d2d00000000, 0x52bb963400000000,
+    0x91e8bb1f00000000, 0xd0d9a00600000000, 0xecf37e5e00000000,
+    0xadc2654700000000, 0x6e91486c00000000, 0x2fa0537500000000,
+    0xe836123a00000000, 0xa907092300000000, 0x6a54240800000000,
+    0x2b653f1100000000, 0xe479a79600000000, 0xa548bc8f00000000,
+    0x661b91a400000000, 0x272a8abd00000000, 0xe0bccbf200000000,
+    0xa18dd0eb00000000, 0x62defdc000000000, 0x23efe6d900000000,
+    0xbde1bc1400000000, 0xfcd0a70d00000000, 0x3f838a2600000000,
+    0x7eb2913f00000000, 0xb924d07000000000, 0xf815cb6900000000,
+    0x3b46e64200000000, 0x7a77fd5b00000000, 0xb56b65dc00000000,
+    0xf45a7ec500000000, 0x370953ee00000000, 0x763848f700000000,
+    0xb1ae09b800000000, 0xf09f12a100000000, 0x33cc3f8a00000000,
+    0x72fd249300000000},
+   {0x0000000000000000, 0x376ac20100000000, 0x6ed4840300000000,
+    0x59be460200000000, 0xdca8090700000000, 0xebc2cb0600000000,
+    0xb27c8d0400000000, 0x85164f0500000000, 0xb851130e00000000,
+    0x8f3bd10f00000000, 0xd685970d00000000, 0xe1ef550c00000000,
+    0x64f91a0900000000, 0x5393d80800000000, 0x0a2d9e0a00000000,
+    0x3d475c0b00000000, 0x70a3261c00000000, 0x47c9e41d00000000,
+    0x1e77a21f00000000, 0x291d601e00000000, 0xac0b2f1b00000000,
+    0x9b61ed1a00000000, 0xc2dfab1800000000, 0xf5b5691900000000,
+    0xc8f2351200000000, 0xff98f71300000000, 0xa626b11100000000,
+    0x914c731000000000, 0x145a3c1500000000, 0x2330fe1400000000,
+    0x7a8eb81600000000, 0x4de47a1700000000, 0xe0464d3800000000,
+    0xd72c8f3900000000, 0x8e92c93b00000000, 0xb9f80b3a00000000,
+    0x3cee443f00000000, 0x0b84863e00000000, 0x523ac03c00000000,
+    0x6550023d00000000, 0x58175e3600000000, 0x6f7d9c3700000000,
+    0x36c3da3500000000, 0x01a9183400000000, 0x84bf573100000000,
+    0xb3d5953000000000, 0xea6bd33200000000, 0xdd01113300000000,
+    0x90e56b2400000000, 0xa78fa92500000000, 0xfe31ef2700000000,
+    0xc95b2d2600000000, 0x4c4d622300000000, 0x7b27a02200000000,
+    0x2299e62000000000, 0x15f3242100000000, 0x28b4782a00000000,
+    0x1fdeba2b00000000, 0x4660fc2900000000, 0x710a3e2800000000,
+    0xf41c712d00000000, 0xc376b32c00000000, 0x9ac8f52e00000000,
+    0xada2372f00000000, 0xc08d9a7000000000, 0xf7e7587100000000,
+    0xae591e7300000000, 0x9933dc7200000000, 0x1c25937700000000,
+    0x2b4f517600000000, 0x72f1177400000000, 0x459bd57500000000,
+    0x78dc897e00000000, 0x4fb64b7f00000000, 0x16080d7d00000000,
+    0x2162cf7c00000000, 0xa474807900000000, 0x931e427800000000,
+    0xcaa0047a00000000, 0xfdcac67b00000000, 0xb02ebc6c00000000,
+    0x87447e6d00000000, 0xdefa386f00000000, 0xe990fa6e00000000,
+    0x6c86b56b00000000, 0x5bec776a00000000, 0x0252316800000000,
+    0x3538f36900000000, 0x087faf6200000000, 0x3f156d6300000000,
+    0x66ab2b6100000000, 0x51c1e96000000000, 0xd4d7a66500000000,
+    0xe3bd646400000000, 0xba03226600000000, 0x8d69e06700000000,
+    0x20cbd74800000000, 0x17a1154900000000, 0x4e1f534b00000000,
+    0x7975914a00000000, 0xfc63de4f00000000, 0xcb091c4e00000000,
+    0x92b75a4c00000000, 0xa5dd984d00000000, 0x989ac44600000000,
+    0xaff0064700000000, 0xf64e404500000000, 0xc124824400000000,
+    0x4432cd4100000000, 0x73580f4000000000, 0x2ae6494200000000,
+    0x1d8c8b4300000000, 0x5068f15400000000, 0x6702335500000000,
+    0x3ebc755700000000, 0x09d6b75600000000, 0x8cc0f85300000000,
+    0xbbaa3a5200000000, 0xe2147c5000000000, 0xd57ebe5100000000,
+    0xe839e25a00000000, 0xdf53205b00000000, 0x86ed665900000000,
+    0xb187a45800000000, 0x3491eb5d00000000, 0x03fb295c00000000,
+    0x5a456f5e00000000, 0x6d2fad5f00000000, 0x801b35e100000000,
+    0xb771f7e000000000, 0xeecfb1e200000000, 0xd9a573e300000000,
+    0x5cb33ce600000000, 0x6bd9fee700000000, 0x3267b8e500000000,
+    0x050d7ae400000000, 0x384a26ef00000000, 0x0f20e4ee00000000,
+    0x569ea2ec00000000, 0x61f460ed00000000, 0xe4e22fe800000000,
+    0xd388ede900000000, 0x8a36abeb00000000, 0xbd5c69ea00000000,
+    0xf0b813fd00000000, 0xc7d2d1fc00000000, 0x9e6c97fe00000000,
+    0xa90655ff00000000, 0x2c101afa00000000, 0x1b7ad8fb00000000,
+    0x42c49ef900000000, 0x75ae5cf800000000, 0x48e900f300000000,
+    0x7f83c2f200000000, 0x263d84f000000000, 0x115746f100000000,
+    0x944109f400000000, 0xa32bcbf500000000, 0xfa958df700000000,
+    0xcdff4ff600000000, 0x605d78d900000000, 0x5737bad800000000,
+    0x0e89fcda00000000, 0x39e33edb00000000, 0xbcf571de00000000,
+    0x8b9fb3df00000000, 0xd221f5dd00000000, 0xe54b37dc00000000,
+    0xd80c6bd700000000, 0xef66a9d600000000, 0xb6d8efd400000000,
+    0x81b22dd500000000, 0x04a462d000000000, 0x33cea0d100000000,
+    0x6a70e6d300000000, 0x5d1a24d200000000, 0x10fe5ec500000000,
+    0x27949cc400000000, 0x7e2adac600000000, 0x494018c700000000,
+    0xcc5657c200000000, 0xfb3c95c300000000, 0xa282d3c100000000,
+    0x95e811c000000000, 0xa8af4dcb00000000, 0x9fc58fca00000000,
+    0xc67bc9c800000000, 0xf1110bc900000000, 0x740744cc00000000,
+    0x436d86cd00000000, 0x1ad3c0cf00000000, 0x2db902ce00000000,
+    0x4096af9100000000, 0x77fc6d9000000000, 0x2e422b9200000000,
+    0x1928e99300000000, 0x9c3ea69600000000, 0xab54649700000000,
+    0xf2ea229500000000, 0xc580e09400000000, 0xf8c7bc9f00000000,
+    0xcfad7e9e00000000, 0x9613389c00000000, 0xa179fa9d00000000,
+    0x246fb59800000000, 0x1305779900000000, 0x4abb319b00000000,
+    0x7dd1f39a00000000, 0x3035898d00000000, 0x075f4b8c00000000,
+    0x5ee10d8e00000000, 0x698bcf8f00000000, 0xec9d808a00000000,
+    0xdbf7428b00000000, 0x8249048900000000, 0xb523c68800000000,
+    0x88649a8300000000, 0xbf0e588200000000, 0xe6b01e8000000000,
+    0xd1dadc8100000000, 0x54cc938400000000, 0x63a6518500000000,
+    0x3a18178700000000, 0x0d72d58600000000, 0xa0d0e2a900000000,
+    0x97ba20a800000000, 0xce0466aa00000000, 0xf96ea4ab00000000,
+    0x7c78ebae00000000, 0x4b1229af00000000, 0x12ac6fad00000000,
+    0x25c6adac00000000, 0x1881f1a700000000, 0x2feb33a600000000,
+    0x765575a400000000, 0x413fb7a500000000, 0xc429f8a000000000,
+    0xf3433aa100000000, 0xaafd7ca300000000, 0x9d97bea200000000,
+    0xd073c4b500000000, 0xe71906b400000000, 0xbea740b600000000,
+    0x89cd82b700000000, 0x0cdbcdb200000000, 0x3bb10fb300000000,
+    0x620f49b100000000, 0x55658bb000000000, 0x6822d7bb00000000,
+    0x5f4815ba00000000, 0x06f653b800000000, 0x319c91b900000000,
+    0xb48adebc00000000, 0x83e01cbd00000000, 0xda5e5abf00000000,
+    0xed3498be00000000},
+   {0x0000000000000000, 0x6567bcb800000000, 0x8bc809aa00000000,
+    0xeeafb51200000000, 0x5797628f00000000, 0x32f0de3700000000,
+    0xdc5f6b2500000000, 0xb938d79d00000000, 0xef28b4c500000000,
+    0x8a4f087d00000000, 0x64e0bd6f00000000, 0x018701d700000000,
+    0xb8bfd64a00000000, 0xddd86af200000000, 0x3377dfe000000000,
+    0x5610635800000000, 0x9f57195000000000, 0xfa30a5e800000000,
+    0x149f10fa00000000, 0x71f8ac4200000000, 0xc8c07bdf00000000,
+    0xada7c76700000000, 0x4308727500000000, 0x266fcecd00000000,
+    0x707fad9500000000, 0x1518112d00000000, 0xfbb7a43f00000000,
+    0x9ed0188700000000, 0x27e8cf1a00000000, 0x428f73a200000000,
+    0xac20c6b000000000, 0xc9477a0800000000, 0x3eaf32a000000000,
+    0x5bc88e1800000000, 0xb5673b0a00000000, 0xd00087b200000000,
+    0x6938502f00000000, 0x0c5fec9700000000, 0xe2f0598500000000,
+    0x8797e53d00000000, 0xd187866500000000, 0xb4e03add00000000,
+    0x5a4f8fcf00000000, 0x3f28337700000000, 0x8610e4ea00000000,
+    0xe377585200000000, 0x0dd8ed4000000000, 0x68bf51f800000000,
+    0xa1f82bf000000000, 0xc49f974800000000, 0x2a30225a00000000,
+    0x4f579ee200000000, 0xf66f497f00000000, 0x9308f5c700000000,
+    0x7da740d500000000, 0x18c0fc6d00000000, 0x4ed09f3500000000,
+    0x2bb7238d00000000, 0xc518969f00000000, 0xa07f2a2700000000,
+    0x1947fdba00000000, 0x7c20410200000000, 0x928ff41000000000,
+    0xf7e848a800000000, 0x3d58149b00000000, 0x583fa82300000000,
+    0xb6901d3100000000, 0xd3f7a18900000000, 0x6acf761400000000,
+    0x0fa8caac00000000, 0xe1077fbe00000000, 0x8460c30600000000,
+    0xd270a05e00000000, 0xb7171ce600000000, 0x59b8a9f400000000,
+    0x3cdf154c00000000, 0x85e7c2d100000000, 0xe0807e6900000000,
+    0x0e2fcb7b00000000, 0x6b4877c300000000, 0xa20f0dcb00000000,
+    0xc768b17300000000, 0x29c7046100000000, 0x4ca0b8d900000000,
+    0xf5986f4400000000, 0x90ffd3fc00000000, 0x7e5066ee00000000,
+    0x1b37da5600000000, 0x4d27b90e00000000, 0x284005b600000000,
+    0xc6efb0a400000000, 0xa3880c1c00000000, 0x1ab0db8100000000,
+    0x7fd7673900000000, 0x9178d22b00000000, 0xf41f6e9300000000,
+    0x03f7263b00000000, 0x66909a8300000000, 0x883f2f9100000000,
+    0xed58932900000000, 0x546044b400000000, 0x3107f80c00000000,
+    0xdfa84d1e00000000, 0xbacff1a600000000, 0xecdf92fe00000000,
+    0x89b82e4600000000, 0x67179b5400000000, 0x027027ec00000000,
+    0xbb48f07100000000, 0xde2f4cc900000000, 0x3080f9db00000000,
+    0x55e7456300000000, 0x9ca03f6b00000000, 0xf9c783d300000000,
+    0x176836c100000000, 0x720f8a7900000000, 0xcb375de400000000,
+    0xae50e15c00000000, 0x40ff544e00000000, 0x2598e8f600000000,
+    0x73888bae00000000, 0x16ef371600000000, 0xf840820400000000,
+    0x9d273ebc00000000, 0x241fe92100000000, 0x4178559900000000,
+    0xafd7e08b00000000, 0xcab05c3300000000, 0x3bb659ed00000000,
+    0x5ed1e55500000000, 0xb07e504700000000, 0xd519ecff00000000,
+    0x6c213b6200000000, 0x094687da00000000, 0xe7e932c800000000,
+    0x828e8e7000000000, 0xd49eed2800000000, 0xb1f9519000000000,
+    0x5f56e48200000000, 0x3a31583a00000000, 0x83098fa700000000,
+    0xe66e331f00000000, 0x08c1860d00000000, 0x6da63ab500000000,
+    0xa4e140bd00000000, 0xc186fc0500000000, 0x2f29491700000000,
+    0x4a4ef5af00000000, 0xf376223200000000, 0x96119e8a00000000,
+    0x78be2b9800000000, 0x1dd9972000000000, 0x4bc9f47800000000,
+    0x2eae48c000000000, 0xc001fdd200000000, 0xa566416a00000000,
+    0x1c5e96f700000000, 0x79392a4f00000000, 0x97969f5d00000000,
+    0xf2f123e500000000, 0x05196b4d00000000, 0x607ed7f500000000,
+    0x8ed162e700000000, 0xebb6de5f00000000, 0x528e09c200000000,
+    0x37e9b57a00000000, 0xd946006800000000, 0xbc21bcd000000000,
+    0xea31df8800000000, 0x8f56633000000000, 0x61f9d62200000000,
+    0x049e6a9a00000000, 0xbda6bd0700000000, 0xd8c101bf00000000,
+    0x366eb4ad00000000, 0x5309081500000000, 0x9a4e721d00000000,
+    0xff29cea500000000, 0x11867bb700000000, 0x74e1c70f00000000,
+    0xcdd9109200000000, 0xa8beac2a00000000, 0x4611193800000000,
+    0x2376a58000000000, 0x7566c6d800000000, 0x10017a6000000000,
+    0xfeaecf7200000000, 0x9bc973ca00000000, 0x22f1a45700000000,
+    0x479618ef00000000, 0xa939adfd00000000, 0xcc5e114500000000,
+    0x06ee4d7600000000, 0x6389f1ce00000000, 0x8d2644dc00000000,
+    0xe841f86400000000, 0x51792ff900000000, 0x341e934100000000,
+    0xdab1265300000000, 0xbfd69aeb00000000, 0xe9c6f9b300000000,
+    0x8ca1450b00000000, 0x620ef01900000000, 0x07694ca100000000,
+    0xbe519b3c00000000, 0xdb36278400000000, 0x3599929600000000,
+    0x50fe2e2e00000000, 0x99b9542600000000, 0xfcdee89e00000000,
+    0x12715d8c00000000, 0x7716e13400000000, 0xce2e36a900000000,
+    0xab498a1100000000, 0x45e63f0300000000, 0x208183bb00000000,
+    0x7691e0e300000000, 0x13f65c5b00000000, 0xfd59e94900000000,
+    0x983e55f100000000, 0x2106826c00000000, 0x44613ed400000000,
+    0xaace8bc600000000, 0xcfa9377e00000000, 0x38417fd600000000,
+    0x5d26c36e00000000, 0xb389767c00000000, 0xd6eecac400000000,
+    0x6fd61d5900000000, 0x0ab1a1e100000000, 0xe41e14f300000000,
+    0x8179a84b00000000, 0xd769cb1300000000, 0xb20e77ab00000000,
+    0x5ca1c2b900000000, 0x39c67e0100000000, 0x80fea99c00000000,
+    0xe599152400000000, 0x0b36a03600000000, 0x6e511c8e00000000,
+    0xa716668600000000, 0xc271da3e00000000, 0x2cde6f2c00000000,
+    0x49b9d39400000000, 0xf081040900000000, 0x95e6b8b100000000,
+    0x7b490da300000000, 0x1e2eb11b00000000, 0x483ed24300000000,
+    0x2d596efb00000000, 0xc3f6dbe900000000, 0xa691675100000000,
+    0x1fa9b0cc00000000, 0x7ace0c7400000000, 0x9461b96600000000,
+    0xf10605de00000000},
+   {0x0000000000000000, 0xb029603d00000000, 0x6053c07a00000000,
+    0xd07aa04700000000, 0xc0a680f500000000, 0x708fe0c800000000,
+    0xa0f5408f00000000, 0x10dc20b200000000, 0xc14b703000000000,
+    0x7162100d00000000, 0xa118b04a00000000, 0x1131d07700000000,
+    0x01edf0c500000000, 0xb1c490f800000000, 0x61be30bf00000000,
+    0xd197508200000000, 0x8297e06000000000, 0x32be805d00000000,
+    0xe2c4201a00000000, 0x52ed402700000000, 0x4231609500000000,
+    0xf21800a800000000, 0x2262a0ef00000000, 0x924bc0d200000000,
+    0x43dc905000000000, 0xf3f5f06d00000000, 0x238f502a00000000,
+    0x93a6301700000000, 0x837a10a500000000, 0x3353709800000000,
+    0xe329d0df00000000, 0x5300b0e200000000, 0x042fc1c100000000,
+    0xb406a1fc00000000, 0x647c01bb00000000, 0xd455618600000000,
+    0xc489413400000000, 0x74a0210900000000, 0xa4da814e00000000,
+    0x14f3e17300000000, 0xc564b1f100000000, 0x754dd1cc00000000,
+    0xa537718b00000000, 0x151e11b600000000, 0x05c2310400000000,
+    0xb5eb513900000000, 0x6591f17e00000000, 0xd5b8914300000000,
+    0x86b821a100000000, 0x3691419c00000000, 0xe6ebe1db00000000,
+    0x56c281e600000000, 0x461ea15400000000, 0xf637c16900000000,
+    0x264d612e00000000, 0x9664011300000000, 0x47f3519100000000,
+    0xf7da31ac00000000, 0x27a091eb00000000, 0x9789f1d600000000,
+    0x8755d16400000000, 0x377cb15900000000, 0xe706111e00000000,
+    0x572f712300000000, 0x4958f35800000000, 0xf971936500000000,
+    0x290b332200000000, 0x9922531f00000000, 0x89fe73ad00000000,
+    0x39d7139000000000, 0xe9adb3d700000000, 0x5984d3ea00000000,
+    0x8813836800000000, 0x383ae35500000000, 0xe840431200000000,
+    0x5869232f00000000, 0x48b5039d00000000, 0xf89c63a000000000,
+    0x28e6c3e700000000, 0x98cfa3da00000000, 0xcbcf133800000000,
+    0x7be6730500000000, 0xab9cd34200000000, 0x1bb5b37f00000000,
+    0x0b6993cd00000000, 0xbb40f3f000000000, 0x6b3a53b700000000,
+    0xdb13338a00000000, 0x0a84630800000000, 0xbaad033500000000,
+    0x6ad7a37200000000, 0xdafec34f00000000, 0xca22e3fd00000000,
+    0x7a0b83c000000000, 0xaa71238700000000, 0x1a5843ba00000000,
+    0x4d77329900000000, 0xfd5e52a400000000, 0x2d24f2e300000000,
+    0x9d0d92de00000000, 0x8dd1b26c00000000, 0x3df8d25100000000,
+    0xed82721600000000, 0x5dab122b00000000, 0x8c3c42a900000000,
+    0x3c15229400000000, 0xec6f82d300000000, 0x5c46e2ee00000000,
+    0x4c9ac25c00000000, 0xfcb3a26100000000, 0x2cc9022600000000,
+    0x9ce0621b00000000, 0xcfe0d2f900000000, 0x7fc9b2c400000000,
+    0xafb3128300000000, 0x1f9a72be00000000, 0x0f46520c00000000,
+    0xbf6f323100000000, 0x6f15927600000000, 0xdf3cf24b00000000,
+    0x0eaba2c900000000, 0xbe82c2f400000000, 0x6ef862b300000000,
+    0xded1028e00000000, 0xce0d223c00000000, 0x7e24420100000000,
+    0xae5ee24600000000, 0x1e77827b00000000, 0x92b0e6b100000000,
+    0x2299868c00000000, 0xf2e326cb00000000, 0x42ca46f600000000,
+    0x5216664400000000, 0xe23f067900000000, 0x3245a63e00000000,
+    0x826cc60300000000, 0x53fb968100000000, 0xe3d2f6bc00000000,
+    0x33a856fb00000000, 0x838136c600000000, 0x935d167400000000,
+    0x2374764900000000, 0xf30ed60e00000000, 0x4327b63300000000,
+    0x102706d100000000, 0xa00e66ec00000000, 0x7074c6ab00000000,
+    0xc05da69600000000, 0xd081862400000000, 0x60a8e61900000000,
+    0xb0d2465e00000000, 0x00fb266300000000, 0xd16c76e100000000,
+    0x614516dc00000000, 0xb13fb69b00000000, 0x0116d6a600000000,
+    0x11caf61400000000, 0xa1e3962900000000, 0x7199366e00000000,
+    0xc1b0565300000000, 0x969f277000000000, 0x26b6474d00000000,
+    0xf6cce70a00000000, 0x46e5873700000000, 0x5639a78500000000,
+    0xe610c7b800000000, 0x366a67ff00000000, 0x864307c200000000,
+    0x57d4574000000000, 0xe7fd377d00000000, 0x3787973a00000000,
+    0x87aef70700000000, 0x9772d7b500000000, 0x275bb78800000000,
+    0xf72117cf00000000, 0x470877f200000000, 0x1408c71000000000,
+    0xa421a72d00000000, 0x745b076a00000000, 0xc472675700000000,
+    0xd4ae47e500000000, 0x648727d800000000, 0xb4fd879f00000000,
+    0x04d4e7a200000000, 0xd543b72000000000, 0x656ad71d00000000,
+    0xb510775a00000000, 0x0539176700000000, 0x15e537d500000000,
+    0xa5cc57e800000000, 0x75b6f7af00000000, 0xc59f979200000000,
+    0xdbe815e900000000, 0x6bc175d400000000, 0xbbbbd59300000000,
+    0x0b92b5ae00000000, 0x1b4e951c00000000, 0xab67f52100000000,
+    0x7b1d556600000000, 0xcb34355b00000000, 0x1aa365d900000000,
+    0xaa8a05e400000000, 0x7af0a5a300000000, 0xcad9c59e00000000,
+    0xda05e52c00000000, 0x6a2c851100000000, 0xba56255600000000,
+    0x0a7f456b00000000, 0x597ff58900000000, 0xe95695b400000000,
+    0x392c35f300000000, 0x890555ce00000000, 0x99d9757c00000000,
+    0x29f0154100000000, 0xf98ab50600000000, 0x49a3d53b00000000,
+    0x983485b900000000, 0x281de58400000000, 0xf86745c300000000,
+    0x484e25fe00000000, 0x5892054c00000000, 0xe8bb657100000000,
+    0x38c1c53600000000, 0x88e8a50b00000000, 0xdfc7d42800000000,
+    0x6feeb41500000000, 0xbf94145200000000, 0x0fbd746f00000000,
+    0x1f6154dd00000000, 0xaf4834e000000000, 0x7f3294a700000000,
+    0xcf1bf49a00000000, 0x1e8ca41800000000, 0xaea5c42500000000,
+    0x7edf646200000000, 0xcef6045f00000000, 0xde2a24ed00000000,
+    0x6e0344d000000000, 0xbe79e49700000000, 0x0e5084aa00000000,
+    0x5d50344800000000, 0xed79547500000000, 0x3d03f43200000000,
+    0x8d2a940f00000000, 0x9df6b4bd00000000, 0x2ddfd48000000000,
+    0xfda574c700000000, 0x4d8c14fa00000000, 0x9c1b447800000000,
+    0x2c32244500000000, 0xfc48840200000000, 0x4c61e43f00000000,
+    0x5cbdc48d00000000, 0xec94a4b000000000, 0x3cee04f700000000,
+    0x8cc764ca00000000},
+   {0x0000000000000000, 0xa5d35ccb00000000, 0x0ba1c84d00000000,
+    0xae72948600000000, 0x1642919b00000000, 0xb391cd5000000000,
+    0x1de359d600000000, 0xb830051d00000000, 0x6d8253ec00000000,
+    0xc8510f2700000000, 0x66239ba100000000, 0xc3f0c76a00000000,
+    0x7bc0c27700000000, 0xde139ebc00000000, 0x70610a3a00000000,
+    0xd5b256f100000000, 0x9b02d60300000000, 0x3ed18ac800000000,
+    0x90a31e4e00000000, 0x3570428500000000, 0x8d40479800000000,
+    0x28931b5300000000, 0x86e18fd500000000, 0x2332d31e00000000,
+    0xf68085ef00000000, 0x5353d92400000000, 0xfd214da200000000,
+    0x58f2116900000000, 0xe0c2147400000000, 0x451148bf00000000,
+    0xeb63dc3900000000, 0x4eb080f200000000, 0x3605ac0700000000,
+    0x93d6f0cc00000000, 0x3da4644a00000000, 0x9877388100000000,
+    0x20473d9c00000000, 0x8594615700000000, 0x2be6f5d100000000,
+    0x8e35a91a00000000, 0x5b87ffeb00000000, 0xfe54a32000000000,
+    0x502637a600000000, 0xf5f56b6d00000000, 0x4dc56e7000000000,
+    0xe81632bb00000000, 0x4664a63d00000000, 0xe3b7faf600000000,
+    0xad077a0400000000, 0x08d426cf00000000, 0xa6a6b24900000000,
+    0x0375ee8200000000, 0xbb45eb9f00000000, 0x1e96b75400000000,
+    0xb0e423d200000000, 0x15377f1900000000, 0xc08529e800000000,
+    0x6556752300000000, 0xcb24e1a500000000, 0x6ef7bd6e00000000,
+    0xd6c7b87300000000, 0x7314e4b800000000, 0xdd66703e00000000,
+    0x78b52cf500000000, 0x6c0a580f00000000, 0xc9d904c400000000,
+    0x67ab904200000000, 0xc278cc8900000000, 0x7a48c99400000000,
+    0xdf9b955f00000000, 0x71e901d900000000, 0xd43a5d1200000000,
+    0x01880be300000000, 0xa45b572800000000, 0x0a29c3ae00000000,
+    0xaffa9f6500000000, 0x17ca9a7800000000, 0xb219c6b300000000,
+    0x1c6b523500000000, 0xb9b80efe00000000, 0xf7088e0c00000000,
+    0x52dbd2c700000000, 0xfca9464100000000, 0x597a1a8a00000000,
+    0xe14a1f9700000000, 0x4499435c00000000, 0xeaebd7da00000000,
+    0x4f388b1100000000, 0x9a8adde000000000, 0x3f59812b00000000,
+    0x912b15ad00000000, 0x34f8496600000000, 0x8cc84c7b00000000,
+    0x291b10b000000000, 0x8769843600000000, 0x22bad8fd00000000,
+    0x5a0ff40800000000, 0xffdca8c300000000, 0x51ae3c4500000000,
+    0xf47d608e00000000, 0x4c4d659300000000, 0xe99e395800000000,
+    0x47ecadde00000000, 0xe23ff11500000000, 0x378da7e400000000,
+    0x925efb2f00000000, 0x3c2c6fa900000000, 0x99ff336200000000,
+    0x21cf367f00000000, 0x841c6ab400000000, 0x2a6efe3200000000,
+    0x8fbda2f900000000, 0xc10d220b00000000, 0x64de7ec000000000,
+    0xcaacea4600000000, 0x6f7fb68d00000000, 0xd74fb39000000000,
+    0x729cef5b00000000, 0xdcee7bdd00000000, 0x793d271600000000,
+    0xac8f71e700000000, 0x095c2d2c00000000, 0xa72eb9aa00000000,
+    0x02fde56100000000, 0xbacde07c00000000, 0x1f1ebcb700000000,
+    0xb16c283100000000, 0x14bf74fa00000000, 0xd814b01e00000000,
+    0x7dc7ecd500000000, 0xd3b5785300000000, 0x7666249800000000,
+    0xce56218500000000, 0x6b857d4e00000000, 0xc5f7e9c800000000,
+    0x6024b50300000000, 0xb596e3f200000000, 0x1045bf3900000000,
+    0xbe372bbf00000000, 0x1be4777400000000, 0xa3d4726900000000,
+    0x06072ea200000000, 0xa875ba2400000000, 0x0da6e6ef00000000,
+    0x4316661d00000000, 0xe6c53ad600000000, 0x48b7ae5000000000,
+    0xed64f29b00000000, 0x5554f78600000000, 0xf087ab4d00000000,
+    0x5ef53fcb00000000, 0xfb26630000000000, 0x2e9435f100000000,
+    0x8b47693a00000000, 0x2535fdbc00000000, 0x80e6a17700000000,
+    0x38d6a46a00000000, 0x9d05f8a100000000, 0x33776c2700000000,
+    0x96a430ec00000000, 0xee111c1900000000, 0x4bc240d200000000,
+    0xe5b0d45400000000, 0x4063889f00000000, 0xf8538d8200000000,
+    0x5d80d14900000000, 0xf3f245cf00000000, 0x5621190400000000,
+    0x83934ff500000000, 0x2640133e00000000, 0x883287b800000000,
+    0x2de1db7300000000, 0x95d1de6e00000000, 0x300282a500000000,
+    0x9e70162300000000, 0x3ba34ae800000000, 0x7513ca1a00000000,
+    0xd0c096d100000000, 0x7eb2025700000000, 0xdb615e9c00000000,
+    0x63515b8100000000, 0xc682074a00000000, 0x68f093cc00000000,
+    0xcd23cf0700000000, 0x189199f600000000, 0xbd42c53d00000000,
+    0x133051bb00000000, 0xb6e30d7000000000, 0x0ed3086d00000000,
+    0xab0054a600000000, 0x0572c02000000000, 0xa0a19ceb00000000,
+    0xb41ee81100000000, 0x11cdb4da00000000, 0xbfbf205c00000000,
+    0x1a6c7c9700000000, 0xa25c798a00000000, 0x078f254100000000,
+    0xa9fdb1c700000000, 0x0c2eed0c00000000, 0xd99cbbfd00000000,
+    0x7c4fe73600000000, 0xd23d73b000000000, 0x77ee2f7b00000000,
+    0xcfde2a6600000000, 0x6a0d76ad00000000, 0xc47fe22b00000000,
+    0x61acbee000000000, 0x2f1c3e1200000000, 0x8acf62d900000000,
+    0x24bdf65f00000000, 0x816eaa9400000000, 0x395eaf8900000000,
+    0x9c8df34200000000, 0x32ff67c400000000, 0x972c3b0f00000000,
+    0x429e6dfe00000000, 0xe74d313500000000, 0x493fa5b300000000,
+    0xececf97800000000, 0x54dcfc6500000000, 0xf10fa0ae00000000,
+    0x5f7d342800000000, 0xfaae68e300000000, 0x821b441600000000,
+    0x27c818dd00000000, 0x89ba8c5b00000000, 0x2c69d09000000000,
+    0x9459d58d00000000, 0x318a894600000000, 0x9ff81dc000000000,
+    0x3a2b410b00000000, 0xef9917fa00000000, 0x4a4a4b3100000000,
+    0xe438dfb700000000, 0x41eb837c00000000, 0xf9db866100000000,
+    0x5c08daaa00000000, 0xf27a4e2c00000000, 0x57a912e700000000,
+    0x1919921500000000, 0xbccacede00000000, 0x12b85a5800000000,
+    0xb76b069300000000, 0x0f5b038e00000000, 0xaa885f4500000000,
+    0x04facbc300000000, 0xa129970800000000, 0x749bc1f900000000,
+    0xd1489d3200000000, 0x7f3a09b400000000, 0xdae9557f00000000,
+    0x62d9506200000000, 0xc70a0ca900000000, 0x6978982f00000000,
+    0xccabc4e400000000},
+   {0x0000000000000000, 0xb40b77a600000000, 0x29119f9700000000,
+    0x9d1ae83100000000, 0x13244ff400000000, 0xa72f385200000000,
+    0x3a35d06300000000, 0x8e3ea7c500000000, 0x674eef3300000000,
+    0xd345989500000000, 0x4e5f70a400000000, 0xfa54070200000000,
+    0x746aa0c700000000, 0xc061d76100000000, 0x5d7b3f5000000000,
+    0xe97048f600000000, 0xce9cde6700000000, 0x7a97a9c100000000,
+    0xe78d41f000000000, 0x5386365600000000, 0xddb8919300000000,
+    0x69b3e63500000000, 0xf4a90e0400000000, 0x40a279a200000000,
+    0xa9d2315400000000, 0x1dd946f200000000, 0x80c3aec300000000,
+    0x34c8d96500000000, 0xbaf67ea000000000, 0x0efd090600000000,
+    0x93e7e13700000000, 0x27ec969100000000, 0x9c39bdcf00000000,
+    0x2832ca6900000000, 0xb528225800000000, 0x012355fe00000000,
+    0x8f1df23b00000000, 0x3b16859d00000000, 0xa60c6dac00000000,
+    0x12071a0a00000000, 0xfb7752fc00000000, 0x4f7c255a00000000,
+    0xd266cd6b00000000, 0x666dbacd00000000, 0xe8531d0800000000,
+    0x5c586aae00000000, 0xc142829f00000000, 0x7549f53900000000,
+    0x52a563a800000000, 0xe6ae140e00000000, 0x7bb4fc3f00000000,
+    0xcfbf8b9900000000, 0x41812c5c00000000, 0xf58a5bfa00000000,
+    0x6890b3cb00000000, 0xdc9bc46d00000000, 0x35eb8c9b00000000,
+    0x81e0fb3d00000000, 0x1cfa130c00000000, 0xa8f164aa00000000,
+    0x26cfc36f00000000, 0x92c4b4c900000000, 0x0fde5cf800000000,
+    0xbbd52b5e00000000, 0x79750b4400000000, 0xcd7e7ce200000000,
+    0x506494d300000000, 0xe46fe37500000000, 0x6a5144b000000000,
+    0xde5a331600000000, 0x4340db2700000000, 0xf74bac8100000000,
+    0x1e3be47700000000, 0xaa3093d100000000, 0x372a7be000000000,
+    0x83210c4600000000, 0x0d1fab8300000000, 0xb914dc2500000000,
+    0x240e341400000000, 0x900543b200000000, 0xb7e9d52300000000,
+    0x03e2a28500000000, 0x9ef84ab400000000, 0x2af33d1200000000,
+    0xa4cd9ad700000000, 0x10c6ed7100000000, 0x8ddc054000000000,
+    0x39d772e600000000, 0xd0a73a1000000000, 0x64ac4db600000000,
+    0xf9b6a58700000000, 0x4dbdd22100000000, 0xc38375e400000000,
+    0x7788024200000000, 0xea92ea7300000000, 0x5e999dd500000000,
+    0xe54cb68b00000000, 0x5147c12d00000000, 0xcc5d291c00000000,
+    0x78565eba00000000, 0xf668f97f00000000, 0x42638ed900000000,
+    0xdf7966e800000000, 0x6b72114e00000000, 0x820259b800000000,
+    0x36092e1e00000000, 0xab13c62f00000000, 0x1f18b18900000000,
+    0x9126164c00000000, 0x252d61ea00000000, 0xb83789db00000000,
+    0x0c3cfe7d00000000, 0x2bd068ec00000000, 0x9fdb1f4a00000000,
+    0x02c1f77b00000000, 0xb6ca80dd00000000, 0x38f4271800000000,
+    0x8cff50be00000000, 0x11e5b88f00000000, 0xa5eecf2900000000,
+    0x4c9e87df00000000, 0xf895f07900000000, 0x658f184800000000,
+    0xd1846fee00000000, 0x5fbac82b00000000, 0xebb1bf8d00000000,
+    0x76ab57bc00000000, 0xc2a0201a00000000, 0xf2ea168800000000,
+    0x46e1612e00000000, 0xdbfb891f00000000, 0x6ff0feb900000000,
+    0xe1ce597c00000000, 0x55c52eda00000000, 0xc8dfc6eb00000000,
+    0x7cd4b14d00000000, 0x95a4f9bb00000000, 0x21af8e1d00000000,
+    0xbcb5662c00000000, 0x08be118a00000000, 0x8680b64f00000000,
+    0x328bc1e900000000, 0xaf9129d800000000, 0x1b9a5e7e00000000,
+    0x3c76c8ef00000000, 0x887dbf4900000000, 0x1567577800000000,
+    0xa16c20de00000000, 0x2f52871b00000000, 0x9b59f0bd00000000,
+    0x0643188c00000000, 0xb2486f2a00000000, 0x5b3827dc00000000,
+    0xef33507a00000000, 0x7229b84b00000000, 0xc622cfed00000000,
+    0x481c682800000000, 0xfc171f8e00000000, 0x610df7bf00000000,
+    0xd506801900000000, 0x6ed3ab4700000000, 0xdad8dce100000000,
+    0x47c234d000000000, 0xf3c9437600000000, 0x7df7e4b300000000,
+    0xc9fc931500000000, 0x54e67b2400000000, 0xe0ed0c8200000000,
+    0x099d447400000000, 0xbd9633d200000000, 0x208cdbe300000000,
+    0x9487ac4500000000, 0x1ab90b8000000000, 0xaeb27c2600000000,
+    0x33a8941700000000, 0x87a3e3b100000000, 0xa04f752000000000,
+    0x1444028600000000, 0x895eeab700000000, 0x3d559d1100000000,
+    0xb36b3ad400000000, 0x07604d7200000000, 0x9a7aa54300000000,
+    0x2e71d2e500000000, 0xc7019a1300000000, 0x730aedb500000000,
+    0xee10058400000000, 0x5a1b722200000000, 0xd425d5e700000000,
+    0x602ea24100000000, 0xfd344a7000000000, 0x493f3dd600000000,
+    0x8b9f1dcc00000000, 0x3f946a6a00000000, 0xa28e825b00000000,
+    0x1685f5fd00000000, 0x98bb523800000000, 0x2cb0259e00000000,
+    0xb1aacdaf00000000, 0x05a1ba0900000000, 0xecd1f2ff00000000,
+    0x58da855900000000, 0xc5c06d6800000000, 0x71cb1ace00000000,
+    0xfff5bd0b00000000, 0x4bfecaad00000000, 0xd6e4229c00000000,
+    0x62ef553a00000000, 0x4503c3ab00000000, 0xf108b40d00000000,
+    0x6c125c3c00000000, 0xd8192b9a00000000, 0x56278c5f00000000,
+    0xe22cfbf900000000, 0x7f3613c800000000, 0xcb3d646e00000000,
+    0x224d2c9800000000, 0x96465b3e00000000, 0x0b5cb30f00000000,
+    0xbf57c4a900000000, 0x3169636c00000000, 0x856214ca00000000,
+    0x1878fcfb00000000, 0xac738b5d00000000, 0x17a6a00300000000,
+    0xa3add7a500000000, 0x3eb73f9400000000, 0x8abc483200000000,
+    0x0482eff700000000, 0xb089985100000000, 0x2d93706000000000,
+    0x999807c600000000, 0x70e84f3000000000, 0xc4e3389600000000,
+    0x59f9d0a700000000, 0xedf2a70100000000, 0x63cc00c400000000,
+    0xd7c7776200000000, 0x4add9f5300000000, 0xfed6e8f500000000,
+    0xd93a7e6400000000, 0x6d3109c200000000, 0xf02be1f300000000,
+    0x4420965500000000, 0xca1e319000000000, 0x7e15463600000000,
+    0xe30fae0700000000, 0x5704d9a100000000, 0xbe74915700000000,
+    0x0a7fe6f100000000, 0x97650ec000000000, 0x236e796600000000,
+    0xad50dea300000000, 0x195ba90500000000, 0x8441413400000000,
+    0x304a369200000000},
+   {0x0000000000000000, 0x9e00aacc00000000, 0x7d07254200000000,
+    0xe3078f8e00000000, 0xfa0e4a8400000000, 0x640ee04800000000,
+    0x87096fc600000000, 0x1909c50a00000000, 0xb51be5d300000000,
+    0x2b1b4f1f00000000, 0xc81cc09100000000, 0x561c6a5d00000000,
+    0x4f15af5700000000, 0xd115059b00000000, 0x32128a1500000000,
+    0xac1220d900000000, 0x2b31bb7c00000000, 0xb53111b000000000,
+    0x56369e3e00000000, 0xc83634f200000000, 0xd13ff1f800000000,
+    0x4f3f5b3400000000, 0xac38d4ba00000000, 0x32387e7600000000,
+    0x9e2a5eaf00000000, 0x002af46300000000, 0xe32d7bed00000000,
+    0x7d2dd12100000000, 0x6424142b00000000, 0xfa24bee700000000,
+    0x1923316900000000, 0x87239ba500000000, 0x566276f900000000,
+    0xc862dc3500000000, 0x2b6553bb00000000, 0xb565f97700000000,
+    0xac6c3c7d00000000, 0x326c96b100000000, 0xd16b193f00000000,
+    0x4f6bb3f300000000, 0xe379932a00000000, 0x7d7939e600000000,
+    0x9e7eb66800000000, 0x007e1ca400000000, 0x1977d9ae00000000,
+    0x8777736200000000, 0x6470fcec00000000, 0xfa70562000000000,
+    0x7d53cd8500000000, 0xe353674900000000, 0x0054e8c700000000,
+    0x9e54420b00000000, 0x875d870100000000, 0x195d2dcd00000000,
+    0xfa5aa24300000000, 0x645a088f00000000, 0xc848285600000000,
+    0x5648829a00000000, 0xb54f0d1400000000, 0x2b4fa7d800000000,
+    0x324662d200000000, 0xac46c81e00000000, 0x4f41479000000000,
+    0xd141ed5c00000000, 0xedc29d2900000000, 0x73c237e500000000,
+    0x90c5b86b00000000, 0x0ec512a700000000, 0x17ccd7ad00000000,
+    0x89cc7d6100000000, 0x6acbf2ef00000000, 0xf4cb582300000000,
+    0x58d978fa00000000, 0xc6d9d23600000000, 0x25de5db800000000,
+    0xbbdef77400000000, 0xa2d7327e00000000, 0x3cd798b200000000,
+    0xdfd0173c00000000, 0x41d0bdf000000000, 0xc6f3265500000000,
+    0x58f38c9900000000, 0xbbf4031700000000, 0x25f4a9db00000000,
+    0x3cfd6cd100000000, 0xa2fdc61d00000000, 0x41fa499300000000,
+    0xdffae35f00000000, 0x73e8c38600000000, 0xede8694a00000000,
+    0x0eefe6c400000000, 0x90ef4c0800000000, 0x89e6890200000000,
+    0x17e623ce00000000, 0xf4e1ac4000000000, 0x6ae1068c00000000,
+    0xbba0ebd000000000, 0x25a0411c00000000, 0xc6a7ce9200000000,
+    0x58a7645e00000000, 0x41aea15400000000, 0xdfae0b9800000000,
+    0x3ca9841600000000, 0xa2a92eda00000000, 0x0ebb0e0300000000,
+    0x90bba4cf00000000, 0x73bc2b4100000000, 0xedbc818d00000000,
+    0xf4b5448700000000, 0x6ab5ee4b00000000, 0x89b261c500000000,
+    0x17b2cb0900000000, 0x909150ac00000000, 0x0e91fa6000000000,
+    0xed9675ee00000000, 0x7396df2200000000, 0x6a9f1a2800000000,
+    0xf49fb0e400000000, 0x17983f6a00000000, 0x899895a600000000,
+    0x258ab57f00000000, 0xbb8a1fb300000000, 0x588d903d00000000,
+    0xc68d3af100000000, 0xdf84fffb00000000, 0x4184553700000000,
+    0xa283dab900000000, 0x3c83707500000000, 0xda853b5300000000,
+    0x4485919f00000000, 0xa7821e1100000000, 0x3982b4dd00000000,
+    0x208b71d700000000, 0xbe8bdb1b00000000, 0x5d8c549500000000,
+    0xc38cfe5900000000, 0x6f9ede8000000000, 0xf19e744c00000000,
+    0x1299fbc200000000, 0x8c99510e00000000, 0x9590940400000000,
+    0x0b903ec800000000, 0xe897b14600000000, 0x76971b8a00000000,
+    0xf1b4802f00000000, 0x6fb42ae300000000, 0x8cb3a56d00000000,
+    0x12b30fa100000000, 0x0bbacaab00000000, 0x95ba606700000000,
+    0x76bdefe900000000, 0xe8bd452500000000, 0x44af65fc00000000,
+    0xdaafcf3000000000, 0x39a840be00000000, 0xa7a8ea7200000000,
+    0xbea12f7800000000, 0x20a185b400000000, 0xc3a60a3a00000000,
+    0x5da6a0f600000000, 0x8ce74daa00000000, 0x12e7e76600000000,
+    0xf1e068e800000000, 0x6fe0c22400000000, 0x76e9072e00000000,
+    0xe8e9ade200000000, 0x0bee226c00000000, 0x95ee88a000000000,
+    0x39fca87900000000, 0xa7fc02b500000000, 0x44fb8d3b00000000,
+    0xdafb27f700000000, 0xc3f2e2fd00000000, 0x5df2483100000000,
+    0xbef5c7bf00000000, 0x20f56d7300000000, 0xa7d6f6d600000000,
+    0x39d65c1a00000000, 0xdad1d39400000000, 0x44d1795800000000,
+    0x5dd8bc5200000000, 0xc3d8169e00000000, 0x20df991000000000,
+    0xbedf33dc00000000, 0x12cd130500000000, 0x8ccdb9c900000000,
+    0x6fca364700000000, 0xf1ca9c8b00000000, 0xe8c3598100000000,
+    0x76c3f34d00000000, 0x95c47cc300000000, 0x0bc4d60f00000000,
+    0x3747a67a00000000, 0xa9470cb600000000, 0x4a40833800000000,
+    0xd44029f400000000, 0xcd49ecfe00000000, 0x5349463200000000,
+    0xb04ec9bc00000000, 0x2e4e637000000000, 0x825c43a900000000,
+    0x1c5ce96500000000, 0xff5b66eb00000000, 0x615bcc2700000000,
+    0x7852092d00000000, 0xe652a3e100000000, 0x05552c6f00000000,
+    0x9b5586a300000000, 0x1c761d0600000000, 0x8276b7ca00000000,
+    0x6171384400000000, 0xff71928800000000, 0xe678578200000000,
+    0x7878fd4e00000000, 0x9b7f72c000000000, 0x057fd80c00000000,
+    0xa96df8d500000000, 0x376d521900000000, 0xd46add9700000000,
+    0x4a6a775b00000000, 0x5363b25100000000, 0xcd63189d00000000,
+    0x2e64971300000000, 0xb0643ddf00000000, 0x6125d08300000000,
+    0xff257a4f00000000, 0x1c22f5c100000000, 0x82225f0d00000000,
+    0x9b2b9a0700000000, 0x052b30cb00000000, 0xe62cbf4500000000,
+    0x782c158900000000, 0xd43e355000000000, 0x4a3e9f9c00000000,
+    0xa939101200000000, 0x3739bade00000000, 0x2e307fd400000000,
+    0xb030d51800000000, 0x53375a9600000000, 0xcd37f05a00000000,
+    0x4a146bff00000000, 0xd414c13300000000, 0x37134ebd00000000,
+    0xa913e47100000000, 0xb01a217b00000000, 0x2e1a8bb700000000,
+    0xcd1d043900000000, 0x531daef500000000, 0xff0f8e2c00000000,
+    0x610f24e000000000, 0x8208ab6e00000000, 0x1c0801a200000000,
+    0x0501c4a800000000, 0x9b016e6400000000, 0x7806e1ea00000000,
+    0xe6064b2600000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
+    0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
+    0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
+    0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
+    0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
+    0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
+    0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
+    0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
+    0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
+    0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
+    0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
+    0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
+    0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
+    0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
+    0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
+    0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
+    0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
+    0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
+    0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
+    0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
+    0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
+    0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
+    0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
+    0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
+    0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
+    0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
+    0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
+    0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
+    0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
+    0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
+    0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
+    0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
+    0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
+    0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
+    0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
+    0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
+    0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
+    0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
+    0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
+    0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
+    0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
+    0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
+    0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
+    0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
+    0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
+    0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
+    0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
+    0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
+    0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
+    0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
+    0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
+    0xde0506f1},
+   {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
+    0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
+    0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
+    0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
+    0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
+    0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
+    0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
+    0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
+    0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
+    0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
+    0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
+    0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
+    0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
+    0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
+    0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
+    0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
+    0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
+    0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
+    0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
+    0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
+    0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
+    0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
+    0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
+    0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
+    0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
+    0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
+    0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
+    0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
+    0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
+    0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
+    0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
+    0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
+    0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
+    0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
+    0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
+    0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
+    0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
+    0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
+    0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
+    0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
+    0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
+    0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
+    0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
+    0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
+    0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
+    0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
+    0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
+    0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
+    0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
+    0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
+    0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
+    0xbe9834ed},
+   {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
+    0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
+    0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
+    0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
+    0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
+    0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
+    0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
+    0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
+    0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
+    0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
+    0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
+    0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
+    0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
+    0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
+    0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
+    0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
+    0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
+    0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
+    0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
+    0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
+    0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
+    0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
+    0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
+    0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
+    0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
+    0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
+    0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
+    0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
+    0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
+    0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
+    0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
+    0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
+    0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
+    0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
+    0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
+    0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
+    0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
+    0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
+    0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
+    0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
+    0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
+    0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
+    0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
+    0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
+    0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
+    0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
+    0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
+    0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
+    0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
+    0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
+    0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
+    0x9324fd72},
+   {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+    0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+    0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+    0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+    0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+    0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+    0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+    0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+    0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+    0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+    0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+    0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+    0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+    0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+    0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+    0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+    0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+    0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+    0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+    0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+    0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+    0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+    0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+    0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+    0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+    0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+    0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+    0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+    0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+    0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+    0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+    0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+    0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+    0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+    0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+    0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+    0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+    0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+    0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+    0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+    0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+    0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+    0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+    0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+    0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+    0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+    0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+    0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+    0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+    0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+    0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+    0x2d02ef8d}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
+    0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
+    0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
+    0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
+    0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
+    0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
+    0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
+    0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
+    0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
+    0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
+    0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
+    0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
+    0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
+    0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
+    0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
+    0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
+    0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
+    0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
+    0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
+    0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
+    0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
+    0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
+    0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
+    0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
+    0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
+    0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
+    0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
+    0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
+    0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
+    0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
+    0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
+    0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
+    0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
+    0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
+    0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
+    0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
+    0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
+    0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
+    0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
+    0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
+    0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
+    0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
+    0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
+    0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
+    0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
+    0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
+    0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
+    0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
+    0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
+    0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
+    0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
+    0x8def022d},
+   {0x00000000, 0x41311b19, 0x82623632, 0xc3532d2b, 0x04c56c64,
+    0x45f4777d, 0x86a75a56, 0xc796414f, 0x088ad9c8, 0x49bbc2d1,
+    0x8ae8effa, 0xcbd9f4e3, 0x0c4fb5ac, 0x4d7eaeb5, 0x8e2d839e,
+    0xcf1c9887, 0x5112c24a, 0x1023d953, 0xd370f478, 0x9241ef61,
+    0x55d7ae2e, 0x14e6b537, 0xd7b5981c, 0x96848305, 0x59981b82,
+    0x18a9009b, 0xdbfa2db0, 0x9acb36a9, 0x5d5d77e6, 0x1c6c6cff,
+    0xdf3f41d4, 0x9e0e5acd, 0xa2248495, 0xe3159f8c, 0x2046b2a7,
+    0x6177a9be, 0xa6e1e8f1, 0xe7d0f3e8, 0x2483dec3, 0x65b2c5da,
+    0xaaae5d5d, 0xeb9f4644, 0x28cc6b6f, 0x69fd7076, 0xae6b3139,
+    0xef5a2a20, 0x2c09070b, 0x6d381c12, 0xf33646df, 0xb2075dc6,
+    0x715470ed, 0x30656bf4, 0xf7f32abb, 0xb6c231a2, 0x75911c89,
+    0x34a00790, 0xfbbc9f17, 0xba8d840e, 0x79dea925, 0x38efb23c,
+    0xff79f373, 0xbe48e86a, 0x7d1bc541, 0x3c2ade58, 0x054f79f0,
+    0x447e62e9, 0x872d4fc2, 0xc61c54db, 0x018a1594, 0x40bb0e8d,
+    0x83e823a6, 0xc2d938bf, 0x0dc5a038, 0x4cf4bb21, 0x8fa7960a,
+    0xce968d13, 0x0900cc5c, 0x4831d745, 0x8b62fa6e, 0xca53e177,
+    0x545dbbba, 0x156ca0a3, 0xd63f8d88, 0x970e9691, 0x5098d7de,
+    0x11a9ccc7, 0xd2fae1ec, 0x93cbfaf5, 0x5cd76272, 0x1de6796b,
+    0xdeb55440, 0x9f844f59, 0x58120e16, 0x1923150f, 0xda703824,
+    0x9b41233d, 0xa76bfd65, 0xe65ae67c, 0x2509cb57, 0x6438d04e,
+    0xa3ae9101, 0xe29f8a18, 0x21cca733, 0x60fdbc2a, 0xafe124ad,
+    0xeed03fb4, 0x2d83129f, 0x6cb20986, 0xab2448c9, 0xea1553d0,
+    0x29467efb, 0x687765e2, 0xf6793f2f, 0xb7482436, 0x741b091d,
+    0x352a1204, 0xf2bc534b, 0xb38d4852, 0x70de6579, 0x31ef7e60,
+    0xfef3e6e7, 0xbfc2fdfe, 0x7c91d0d5, 0x3da0cbcc, 0xfa368a83,
+    0xbb07919a, 0x7854bcb1, 0x3965a7a8, 0x4b98833b, 0x0aa99822,
+    0xc9fab509, 0x88cbae10, 0x4f5def5f, 0x0e6cf446, 0xcd3fd96d,
+    0x8c0ec274, 0x43125af3, 0x022341ea, 0xc1706cc1, 0x804177d8,
+    0x47d73697, 0x06e62d8e, 0xc5b500a5, 0x84841bbc, 0x1a8a4171,
+    0x5bbb5a68, 0x98e87743, 0xd9d96c5a, 0x1e4f2d15, 0x5f7e360c,
+    0x9c2d1b27, 0xdd1c003e, 0x120098b9, 0x533183a0, 0x9062ae8b,
+    0xd153b592, 0x16c5f4dd, 0x57f4efc4, 0x94a7c2ef, 0xd596d9f6,
+    0xe9bc07ae, 0xa88d1cb7, 0x6bde319c, 0x2aef2a85, 0xed796bca,
+    0xac4870d3, 0x6f1b5df8, 0x2e2a46e1, 0xe136de66, 0xa007c57f,
+    0x6354e854, 0x2265f34d, 0xe5f3b202, 0xa4c2a91b, 0x67918430,
+    0x26a09f29, 0xb8aec5e4, 0xf99fdefd, 0x3accf3d6, 0x7bfde8cf,
+    0xbc6ba980, 0xfd5ab299, 0x3e099fb2, 0x7f3884ab, 0xb0241c2c,
+    0xf1150735, 0x32462a1e, 0x73773107, 0xb4e17048, 0xf5d06b51,
+    0x3683467a, 0x77b25d63, 0x4ed7facb, 0x0fe6e1d2, 0xccb5ccf9,
+    0x8d84d7e0, 0x4a1296af, 0x0b238db6, 0xc870a09d, 0x8941bb84,
+    0x465d2303, 0x076c381a, 0xc43f1531, 0x850e0e28, 0x42984f67,
+    0x03a9547e, 0xc0fa7955, 0x81cb624c, 0x1fc53881, 0x5ef42398,
+    0x9da70eb3, 0xdc9615aa, 0x1b0054e5, 0x5a314ffc, 0x996262d7,
+    0xd85379ce, 0x174fe149, 0x567efa50, 0x952dd77b, 0xd41ccc62,
+    0x138a8d2d, 0x52bb9634, 0x91e8bb1f, 0xd0d9a006, 0xecf37e5e,
+    0xadc26547, 0x6e91486c, 0x2fa05375, 0xe836123a, 0xa9070923,
+    0x6a542408, 0x2b653f11, 0xe479a796, 0xa548bc8f, 0x661b91a4,
+    0x272a8abd, 0xe0bccbf2, 0xa18dd0eb, 0x62defdc0, 0x23efe6d9,
+    0xbde1bc14, 0xfcd0a70d, 0x3f838a26, 0x7eb2913f, 0xb924d070,
+    0xf815cb69, 0x3b46e642, 0x7a77fd5b, 0xb56b65dc, 0xf45a7ec5,
+    0x370953ee, 0x763848f7, 0xb1ae09b8, 0xf09f12a1, 0x33cc3f8a,
+    0x72fd2493},
+   {0x00000000, 0x376ac201, 0x6ed48403, 0x59be4602, 0xdca80907,
+    0xebc2cb06, 0xb27c8d04, 0x85164f05, 0xb851130e, 0x8f3bd10f,
+    0xd685970d, 0xe1ef550c, 0x64f91a09, 0x5393d808, 0x0a2d9e0a,
+    0x3d475c0b, 0x70a3261c, 0x47c9e41d, 0x1e77a21f, 0x291d601e,
+    0xac0b2f1b, 0x9b61ed1a, 0xc2dfab18, 0xf5b56919, 0xc8f23512,
+    0xff98f713, 0xa626b111, 0x914c7310, 0x145a3c15, 0x2330fe14,
+    0x7a8eb816, 0x4de47a17, 0xe0464d38, 0xd72c8f39, 0x8e92c93b,
+    0xb9f80b3a, 0x3cee443f, 0x0b84863e, 0x523ac03c, 0x6550023d,
+    0x58175e36, 0x6f7d9c37, 0x36c3da35, 0x01a91834, 0x84bf5731,
+    0xb3d59530, 0xea6bd332, 0xdd011133, 0x90e56b24, 0xa78fa925,
+    0xfe31ef27, 0xc95b2d26, 0x4c4d6223, 0x7b27a022, 0x2299e620,
+    0x15f32421, 0x28b4782a, 0x1fdeba2b, 0x4660fc29, 0x710a3e28,
+    0xf41c712d, 0xc376b32c, 0x9ac8f52e, 0xada2372f, 0xc08d9a70,
+    0xf7e75871, 0xae591e73, 0x9933dc72, 0x1c259377, 0x2b4f5176,
+    0x72f11774, 0x459bd575, 0x78dc897e, 0x4fb64b7f, 0x16080d7d,
+    0x2162cf7c, 0xa4748079, 0x931e4278, 0xcaa0047a, 0xfdcac67b,
+    0xb02ebc6c, 0x87447e6d, 0xdefa386f, 0xe990fa6e, 0x6c86b56b,
+    0x5bec776a, 0x02523168, 0x3538f369, 0x087faf62, 0x3f156d63,
+    0x66ab2b61, 0x51c1e960, 0xd4d7a665, 0xe3bd6464, 0xba032266,
+    0x8d69e067, 0x20cbd748, 0x17a11549, 0x4e1f534b, 0x7975914a,
+    0xfc63de4f, 0xcb091c4e, 0x92b75a4c, 0xa5dd984d, 0x989ac446,
+    0xaff00647, 0xf64e4045, 0xc1248244, 0x4432cd41, 0x73580f40,
+    0x2ae64942, 0x1d8c8b43, 0x5068f154, 0x67023355, 0x3ebc7557,
+    0x09d6b756, 0x8cc0f853, 0xbbaa3a52, 0xe2147c50, 0xd57ebe51,
+    0xe839e25a, 0xdf53205b, 0x86ed6659, 0xb187a458, 0x3491eb5d,
+    0x03fb295c, 0x5a456f5e, 0x6d2fad5f, 0x801b35e1, 0xb771f7e0,
+    0xeecfb1e2, 0xd9a573e3, 0x5cb33ce6, 0x6bd9fee7, 0x3267b8e5,
+    0x050d7ae4, 0x384a26ef, 0x0f20e4ee, 0x569ea2ec, 0x61f460ed,
+    0xe4e22fe8, 0xd388ede9, 0x8a36abeb, 0xbd5c69ea, 0xf0b813fd,
+    0xc7d2d1fc, 0x9e6c97fe, 0xa90655ff, 0x2c101afa, 0x1b7ad8fb,
+    0x42c49ef9, 0x75ae5cf8, 0x48e900f3, 0x7f83c2f2, 0x263d84f0,
+    0x115746f1, 0x944109f4, 0xa32bcbf5, 0xfa958df7, 0xcdff4ff6,
+    0x605d78d9, 0x5737bad8, 0x0e89fcda, 0x39e33edb, 0xbcf571de,
+    0x8b9fb3df, 0xd221f5dd, 0xe54b37dc, 0xd80c6bd7, 0xef66a9d6,
+    0xb6d8efd4, 0x81b22dd5, 0x04a462d0, 0x33cea0d1, 0x6a70e6d3,
+    0x5d1a24d2, 0x10fe5ec5, 0x27949cc4, 0x7e2adac6, 0x494018c7,
+    0xcc5657c2, 0xfb3c95c3, 0xa282d3c1, 0x95e811c0, 0xa8af4dcb,
+    0x9fc58fca, 0xc67bc9c8, 0xf1110bc9, 0x740744cc, 0x436d86cd,
+    0x1ad3c0cf, 0x2db902ce, 0x4096af91, 0x77fc6d90, 0x2e422b92,
+    0x1928e993, 0x9c3ea696, 0xab546497, 0xf2ea2295, 0xc580e094,
+    0xf8c7bc9f, 0xcfad7e9e, 0x9613389c, 0xa179fa9d, 0x246fb598,
+    0x13057799, 0x4abb319b, 0x7dd1f39a, 0x3035898d, 0x075f4b8c,
+    0x5ee10d8e, 0x698bcf8f, 0xec9d808a, 0xdbf7428b, 0x82490489,
+    0xb523c688, 0x88649a83, 0xbf0e5882, 0xe6b01e80, 0xd1dadc81,
+    0x54cc9384, 0x63a65185, 0x3a181787, 0x0d72d586, 0xa0d0e2a9,
+    0x97ba20a8, 0xce0466aa, 0xf96ea4ab, 0x7c78ebae, 0x4b1229af,
+    0x12ac6fad, 0x25c6adac, 0x1881f1a7, 0x2feb33a6, 0x765575a4,
+    0x413fb7a5, 0xc429f8a0, 0xf3433aa1, 0xaafd7ca3, 0x9d97bea2,
+    0xd073c4b5, 0xe71906b4, 0xbea740b6, 0x89cd82b7, 0x0cdbcdb2,
+    0x3bb10fb3, 0x620f49b1, 0x55658bb0, 0x6822d7bb, 0x5f4815ba,
+    0x06f653b8, 0x319c91b9, 0xb48adebc, 0x83e01cbd, 0xda5e5abf,
+    0xed3498be},
+   {0x00000000, 0x6567bcb8, 0x8bc809aa, 0xeeafb512, 0x5797628f,
+    0x32f0de37, 0xdc5f6b25, 0xb938d79d, 0xef28b4c5, 0x8a4f087d,
+    0x64e0bd6f, 0x018701d7, 0xb8bfd64a, 0xddd86af2, 0x3377dfe0,
+    0x56106358, 0x9f571950, 0xfa30a5e8, 0x149f10fa, 0x71f8ac42,
+    0xc8c07bdf, 0xada7c767, 0x43087275, 0x266fcecd, 0x707fad95,
+    0x1518112d, 0xfbb7a43f, 0x9ed01887, 0x27e8cf1a, 0x428f73a2,
+    0xac20c6b0, 0xc9477a08, 0x3eaf32a0, 0x5bc88e18, 0xb5673b0a,
+    0xd00087b2, 0x6938502f, 0x0c5fec97, 0xe2f05985, 0x8797e53d,
+    0xd1878665, 0xb4e03add, 0x5a4f8fcf, 0x3f283377, 0x8610e4ea,
+    0xe3775852, 0x0dd8ed40, 0x68bf51f8, 0xa1f82bf0, 0xc49f9748,
+    0x2a30225a, 0x4f579ee2, 0xf66f497f, 0x9308f5c7, 0x7da740d5,
+    0x18c0fc6d, 0x4ed09f35, 0x2bb7238d, 0xc518969f, 0xa07f2a27,
+    0x1947fdba, 0x7c204102, 0x928ff410, 0xf7e848a8, 0x3d58149b,
+    0x583fa823, 0xb6901d31, 0xd3f7a189, 0x6acf7614, 0x0fa8caac,
+    0xe1077fbe, 0x8460c306, 0xd270a05e, 0xb7171ce6, 0x59b8a9f4,
+    0x3cdf154c, 0x85e7c2d1, 0xe0807e69, 0x0e2fcb7b, 0x6b4877c3,
+    0xa20f0dcb, 0xc768b173, 0x29c70461, 0x4ca0b8d9, 0xf5986f44,
+    0x90ffd3fc, 0x7e5066ee, 0x1b37da56, 0x4d27b90e, 0x284005b6,
+    0xc6efb0a4, 0xa3880c1c, 0x1ab0db81, 0x7fd76739, 0x9178d22b,
+    0xf41f6e93, 0x03f7263b, 0x66909a83, 0x883f2f91, 0xed589329,
+    0x546044b4, 0x3107f80c, 0xdfa84d1e, 0xbacff1a6, 0xecdf92fe,
+    0x89b82e46, 0x67179b54, 0x027027ec, 0xbb48f071, 0xde2f4cc9,
+    0x3080f9db, 0x55e74563, 0x9ca03f6b, 0xf9c783d3, 0x176836c1,
+    0x720f8a79, 0xcb375de4, 0xae50e15c, 0x40ff544e, 0x2598e8f6,
+    0x73888bae, 0x16ef3716, 0xf8408204, 0x9d273ebc, 0x241fe921,
+    0x41785599, 0xafd7e08b, 0xcab05c33, 0x3bb659ed, 0x5ed1e555,
+    0xb07e5047, 0xd519ecff, 0x6c213b62, 0x094687da, 0xe7e932c8,
+    0x828e8e70, 0xd49eed28, 0xb1f95190, 0x5f56e482, 0x3a31583a,
+    0x83098fa7, 0xe66e331f, 0x08c1860d, 0x6da63ab5, 0xa4e140bd,
+    0xc186fc05, 0x2f294917, 0x4a4ef5af, 0xf3762232, 0x96119e8a,
+    0x78be2b98, 0x1dd99720, 0x4bc9f478, 0x2eae48c0, 0xc001fdd2,
+    0xa566416a, 0x1c5e96f7, 0x79392a4f, 0x97969f5d, 0xf2f123e5,
+    0x05196b4d, 0x607ed7f5, 0x8ed162e7, 0xebb6de5f, 0x528e09c2,
+    0x37e9b57a, 0xd9460068, 0xbc21bcd0, 0xea31df88, 0x8f566330,
+    0x61f9d622, 0x049e6a9a, 0xbda6bd07, 0xd8c101bf, 0x366eb4ad,
+    0x53090815, 0x9a4e721d, 0xff29cea5, 0x11867bb7, 0x74e1c70f,
+    0xcdd91092, 0xa8beac2a, 0x46111938, 0x2376a580, 0x7566c6d8,
+    0x10017a60, 0xfeaecf72, 0x9bc973ca, 0x22f1a457, 0x479618ef,
+    0xa939adfd, 0xcc5e1145, 0x06ee4d76, 0x6389f1ce, 0x8d2644dc,
+    0xe841f864, 0x51792ff9, 0x341e9341, 0xdab12653, 0xbfd69aeb,
+    0xe9c6f9b3, 0x8ca1450b, 0x620ef019, 0x07694ca1, 0xbe519b3c,
+    0xdb362784, 0x35999296, 0x50fe2e2e, 0x99b95426, 0xfcdee89e,
+    0x12715d8c, 0x7716e134, 0xce2e36a9, 0xab498a11, 0x45e63f03,
+    0x208183bb, 0x7691e0e3, 0x13f65c5b, 0xfd59e949, 0x983e55f1,
+    0x2106826c, 0x44613ed4, 0xaace8bc6, 0xcfa9377e, 0x38417fd6,
+    0x5d26c36e, 0xb389767c, 0xd6eecac4, 0x6fd61d59, 0x0ab1a1e1,
+    0xe41e14f3, 0x8179a84b, 0xd769cb13, 0xb20e77ab, 0x5ca1c2b9,
+    0x39c67e01, 0x80fea99c, 0xe5991524, 0x0b36a036, 0x6e511c8e,
+    0xa7166686, 0xc271da3e, 0x2cde6f2c, 0x49b9d394, 0xf0810409,
+    0x95e6b8b1, 0x7b490da3, 0x1e2eb11b, 0x483ed243, 0x2d596efb,
+    0xc3f6dbe9, 0xa6916751, 0x1fa9b0cc, 0x7ace0c74, 0x9461b966,
+    0xf10605de}};
+
+#endif
+
+#endif
+
+#if N == 2
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87,
+    0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede,
+    0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab,
+    0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c,
+    0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1,
+    0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7,
+    0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e,
+    0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308,
+    0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5,
+    0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472,
+    0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07,
+    0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e,
+    0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa,
+    0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec,
+    0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6,
+    0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0,
+    0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3,
+    0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba,
+    0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf,
+    0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975,
+    0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8,
+    0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde,
+    0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a,
+    0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c,
+    0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1,
+    0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65,
+    0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410,
+    0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649,
+    0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a,
+    0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c,
+    0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946,
+    0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450,
+    0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e,
+    0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857,
+    0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022,
+    0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5,
+    0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758,
+    0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e,
+    0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d,
+    0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b,
+    0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6,
+    0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401,
+    0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74,
+    0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d,
+    0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073,
+    0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65,
+    0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f,
+    0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749,
+    0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a,
+    0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033,
+    0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846,
+    0x0d7139d7},
+   {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563,
+    0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f,
+    0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875,
+    0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536,
+    0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8,
+    0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43,
+    0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f,
+    0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184,
+    0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a,
+    0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39,
+    0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523,
+    0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f,
+    0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d,
+    0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6,
+    0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b,
+    0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0,
+    0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151,
+    0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d,
+    0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47,
+    0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a,
+    0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964,
+    0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef,
+    0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d,
+    0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6,
+    0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348,
+    0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53,
+    0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449,
+    0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645,
+    0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4,
+    0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f,
+    0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2,
+    0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69,
+    0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46,
+    0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a,
+    0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650,
+    0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13,
+    0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded,
+    0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366,
+    0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57,
+    0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc,
+    0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222,
+    0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61,
+    0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b,
+    0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277,
+    0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558,
+    0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3,
+    0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e,
+    0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5,
+    0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74,
+    0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78,
+    0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262,
+    0x1c53e98a},
+   {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b,
+    0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40,
+    0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580,
+    0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7,
+    0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a,
+    0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37,
+    0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75,
+    0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218,
+    0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5,
+    0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2,
+    0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02,
+    0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59,
+    0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1,
+    0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c,
+    0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a,
+    0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307,
+    0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486,
+    0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd,
+    0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d,
+    0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2,
+    0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f,
+    0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72,
+    0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8,
+    0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985,
+    0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268,
+    0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94,
+    0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454,
+    0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f,
+    0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e,
+    0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3,
+    0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915,
+    0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778,
+    0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821,
+    0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a,
+    0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba,
+    0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d,
+    0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560,
+    0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d,
+    0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe,
+    0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3,
+    0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e,
+    0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509,
+    0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9,
+    0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92,
+    0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb,
+    0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6,
+    0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50,
+    0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d,
+    0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc,
+    0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7,
+    0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927,
+    0x3f88e851},
+   {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96,
+    0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8,
+    0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0,
+    0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14,
+    0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7,
+    0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4,
+    0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe,
+    0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad,
+    0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e,
+    0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa,
+    0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2,
+    0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c,
+    0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab,
+    0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8,
+    0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d,
+    0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e,
+    0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7,
+    0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99,
+    0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1,
+    0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690,
+    0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933,
+    0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20,
+    0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf,
+    0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc,
+    0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f,
+    0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92,
+    0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca,
+    0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4,
+    0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd,
+    0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de,
+    0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb,
+    0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8,
+    0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474,
+    0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a,
+    0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252,
+    0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6,
+    0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55,
+    0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846,
+    0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7,
+    0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4,
+    0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47,
+    0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3,
+    0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb,
+    0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5,
+    0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49,
+    0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a,
+    0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f,
+    0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c,
+    0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305,
+    0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b,
+    0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523,
+    0x3dee8ca6},
+   {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f,
+    0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91,
+    0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e,
+    0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c,
+    0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02,
+    0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12,
+    0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567,
+    0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277,
+    0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679,
+    0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b,
+    0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4,
+    0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a,
+    0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0,
+    0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0,
+    0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91,
+    0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881,
+    0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173,
+    0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d,
+    0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912,
+    0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8,
+    0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6,
+    0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6,
+    0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b,
+    0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b,
+    0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75,
+    0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f,
+    0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00,
+    0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee,
+    0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c,
+    0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c,
+    0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d,
+    0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d,
+    0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67,
+    0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89,
+    0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706,
+    0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14,
+    0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a,
+    0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a,
+    0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f,
+    0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f,
+    0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591,
+    0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983,
+    0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c,
+    0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2,
+    0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8,
+    0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8,
+    0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89,
+    0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99,
+    0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b,
+    0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485,
+    0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a,
+    0x36197165},
+   {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382,
+    0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85,
+    0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06,
+    0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca,
+    0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e,
+    0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc,
+    0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616,
+    0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54,
+    0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10,
+    0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc,
+    0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f,
+    0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58,
+    0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef,
+    0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad,
+    0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b,
+    0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29,
+    0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6,
+    0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1,
+    0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622,
+    0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039,
+    0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d,
+    0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f,
+    0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32,
+    0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770,
+    0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034,
+    0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f,
+    0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc,
+    0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db,
+    0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154,
+    0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16,
+    0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0,
+    0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592,
+    0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca,
+    0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd,
+    0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e,
+    0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882,
+    0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6,
+    0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384,
+    0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1,
+    0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3,
+    0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7,
+    0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b,
+    0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8,
+    0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff,
+    0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7,
+    0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5,
+    0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23,
+    0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761,
+    0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee,
+    0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9,
+    0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a,
+    0x1a3b93aa},
+   {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a,
+    0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca,
+    0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3,
+    0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb,
+    0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c,
+    0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58,
+    0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed,
+    0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9,
+    0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e,
+    0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906,
+    0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f,
+    0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf,
+    0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0,
+    0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4,
+    0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769,
+    0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d,
+    0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632,
+    0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82,
+    0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb,
+    0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73,
+    0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484,
+    0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0,
+    0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5,
+    0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1,
+    0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516,
+    0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f,
+    0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946,
+    0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6,
+    0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9,
+    0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad,
+    0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820,
+    0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364,
+    0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab,
+    0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b,
+    0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62,
+    0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a,
+    0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd,
+    0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089,
+    0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c,
+    0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8,
+    0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f,
+    0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477,
+    0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e,
+    0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be,
+    0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71,
+    0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635,
+    0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8,
+    0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc,
+    0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3,
+    0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753,
+    0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a,
+    0xe147d714},
+   {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c,
+    0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b,
+    0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92,
+    0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4,
+    0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069,
+    0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526,
+    0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25,
+    0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a,
+    0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7,
+    0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491,
+    0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958,
+    0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f,
+    0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307,
+    0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648,
+    0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999,
+    0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6,
+    0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a,
+    0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d,
+    0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4,
+    0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61,
+    0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc,
+    0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3,
+    0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53,
+    0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c,
+    0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1,
+    0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c,
+    0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5,
+    0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92,
+    0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e,
+    0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771,
+    0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0,
+    0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def,
+    0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0,
+    0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7,
+    0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e,
+    0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58,
+    0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285,
+    0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca,
+    0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce,
+    0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81,
+    0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c,
+    0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a,
+    0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3,
+    0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4,
+    0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb,
+    0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4,
+    0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75,
+    0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a,
+    0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296,
+    0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1,
+    0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808,
+    0x494f0c4b}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0x43147b1700000000, 0x8628f62e00000000,
+    0xc53c8d3900000000, 0x0c51ec5d00000000, 0x4f45974a00000000,
+    0x8a791a7300000000, 0xc96d616400000000, 0x18a2d8bb00000000,
+    0x5bb6a3ac00000000, 0x9e8a2e9500000000, 0xdd9e558200000000,
+    0x14f334e600000000, 0x57e74ff100000000, 0x92dbc2c800000000,
+    0xd1cfb9df00000000, 0x7142c0ac00000000, 0x3256bbbb00000000,
+    0xf76a368200000000, 0xb47e4d9500000000, 0x7d132cf100000000,
+    0x3e0757e600000000, 0xfb3bdadf00000000, 0xb82fa1c800000000,
+    0x69e0181700000000, 0x2af4630000000000, 0xefc8ee3900000000,
+    0xacdc952e00000000, 0x65b1f44a00000000, 0x26a58f5d00000000,
+    0xe399026400000000, 0xa08d797300000000, 0xa382f18200000000,
+    0xe0968a9500000000, 0x25aa07ac00000000, 0x66be7cbb00000000,
+    0xafd31ddf00000000, 0xecc766c800000000, 0x29fbebf100000000,
+    0x6aef90e600000000, 0xbb20293900000000, 0xf834522e00000000,
+    0x3d08df1700000000, 0x7e1ca40000000000, 0xb771c56400000000,
+    0xf465be7300000000, 0x3159334a00000000, 0x724d485d00000000,
+    0xd2c0312e00000000, 0x91d44a3900000000, 0x54e8c70000000000,
+    0x17fcbc1700000000, 0xde91dd7300000000, 0x9d85a66400000000,
+    0x58b92b5d00000000, 0x1bad504a00000000, 0xca62e99500000000,
+    0x8976928200000000, 0x4c4a1fbb00000000, 0x0f5e64ac00000000,
+    0xc63305c800000000, 0x85277edf00000000, 0x401bf3e600000000,
+    0x030f88f100000000, 0x070392de00000000, 0x4417e9c900000000,
+    0x812b64f000000000, 0xc23f1fe700000000, 0x0b527e8300000000,
+    0x4846059400000000, 0x8d7a88ad00000000, 0xce6ef3ba00000000,
+    0x1fa14a6500000000, 0x5cb5317200000000, 0x9989bc4b00000000,
+    0xda9dc75c00000000, 0x13f0a63800000000, 0x50e4dd2f00000000,
+    0x95d8501600000000, 0xd6cc2b0100000000, 0x7641527200000000,
+    0x3555296500000000, 0xf069a45c00000000, 0xb37ddf4b00000000,
+    0x7a10be2f00000000, 0x3904c53800000000, 0xfc38480100000000,
+    0xbf2c331600000000, 0x6ee38ac900000000, 0x2df7f1de00000000,
+    0xe8cb7ce700000000, 0xabdf07f000000000, 0x62b2669400000000,
+    0x21a61d8300000000, 0xe49a90ba00000000, 0xa78eebad00000000,
+    0xa481635c00000000, 0xe795184b00000000, 0x22a9957200000000,
+    0x61bdee6500000000, 0xa8d08f0100000000, 0xebc4f41600000000,
+    0x2ef8792f00000000, 0x6dec023800000000, 0xbc23bbe700000000,
+    0xff37c0f000000000, 0x3a0b4dc900000000, 0x791f36de00000000,
+    0xb07257ba00000000, 0xf3662cad00000000, 0x365aa19400000000,
+    0x754eda8300000000, 0xd5c3a3f000000000, 0x96d7d8e700000000,
+    0x53eb55de00000000, 0x10ff2ec900000000, 0xd9924fad00000000,
+    0x9a8634ba00000000, 0x5fbab98300000000, 0x1caec29400000000,
+    0xcd617b4b00000000, 0x8e75005c00000000, 0x4b498d6500000000,
+    0x085df67200000000, 0xc130971600000000, 0x8224ec0100000000,
+    0x4718613800000000, 0x040c1a2f00000000, 0x4f00556600000000,
+    0x0c142e7100000000, 0xc928a34800000000, 0x8a3cd85f00000000,
+    0x4351b93b00000000, 0x0045c22c00000000, 0xc5794f1500000000,
+    0x866d340200000000, 0x57a28ddd00000000, 0x14b6f6ca00000000,
+    0xd18a7bf300000000, 0x929e00e400000000, 0x5bf3618000000000,
+    0x18e71a9700000000, 0xdddb97ae00000000, 0x9ecfecb900000000,
+    0x3e4295ca00000000, 0x7d56eedd00000000, 0xb86a63e400000000,
+    0xfb7e18f300000000, 0x3213799700000000, 0x7107028000000000,
+    0xb43b8fb900000000, 0xf72ff4ae00000000, 0x26e04d7100000000,
+    0x65f4366600000000, 0xa0c8bb5f00000000, 0xe3dcc04800000000,
+    0x2ab1a12c00000000, 0x69a5da3b00000000, 0xac99570200000000,
+    0xef8d2c1500000000, 0xec82a4e400000000, 0xaf96dff300000000,
+    0x6aaa52ca00000000, 0x29be29dd00000000, 0xe0d348b900000000,
+    0xa3c733ae00000000, 0x66fbbe9700000000, 0x25efc58000000000,
+    0xf4207c5f00000000, 0xb734074800000000, 0x72088a7100000000,
+    0x311cf16600000000, 0xf871900200000000, 0xbb65eb1500000000,
+    0x7e59662c00000000, 0x3d4d1d3b00000000, 0x9dc0644800000000,
+    0xded41f5f00000000, 0x1be8926600000000, 0x58fce97100000000,
+    0x9191881500000000, 0xd285f30200000000, 0x17b97e3b00000000,
+    0x54ad052c00000000, 0x8562bcf300000000, 0xc676c7e400000000,
+    0x034a4add00000000, 0x405e31ca00000000, 0x893350ae00000000,
+    0xca272bb900000000, 0x0f1ba68000000000, 0x4c0fdd9700000000,
+    0x4803c7b800000000, 0x0b17bcaf00000000, 0xce2b319600000000,
+    0x8d3f4a8100000000, 0x44522be500000000, 0x074650f200000000,
+    0xc27addcb00000000, 0x816ea6dc00000000, 0x50a11f0300000000,
+    0x13b5641400000000, 0xd689e92d00000000, 0x959d923a00000000,
+    0x5cf0f35e00000000, 0x1fe4884900000000, 0xdad8057000000000,
+    0x99cc7e6700000000, 0x3941071400000000, 0x7a557c0300000000,
+    0xbf69f13a00000000, 0xfc7d8a2d00000000, 0x3510eb4900000000,
+    0x7604905e00000000, 0xb3381d6700000000, 0xf02c667000000000,
+    0x21e3dfaf00000000, 0x62f7a4b800000000, 0xa7cb298100000000,
+    0xe4df529600000000, 0x2db233f200000000, 0x6ea648e500000000,
+    0xab9ac5dc00000000, 0xe88ebecb00000000, 0xeb81363a00000000,
+    0xa8954d2d00000000, 0x6da9c01400000000, 0x2ebdbb0300000000,
+    0xe7d0da6700000000, 0xa4c4a17000000000, 0x61f82c4900000000,
+    0x22ec575e00000000, 0xf323ee8100000000, 0xb037959600000000,
+    0x750b18af00000000, 0x361f63b800000000, 0xff7202dc00000000,
+    0xbc6679cb00000000, 0x795af4f200000000, 0x3a4e8fe500000000,
+    0x9ac3f69600000000, 0xd9d78d8100000000, 0x1ceb00b800000000,
+    0x5fff7baf00000000, 0x96921acb00000000, 0xd58661dc00000000,
+    0x10baece500000000, 0x53ae97f200000000, 0x82612e2d00000000,
+    0xc175553a00000000, 0x0449d80300000000, 0x475da31400000000,
+    0x8e30c27000000000, 0xcd24b96700000000, 0x0818345e00000000,
+    0x4b0c4f4900000000},
+   {0x0000000000000000, 0x3e6bc2ef00000000, 0x3dd0f50400000000,
+    0x03bb37eb00000000, 0x7aa0eb0900000000, 0x44cb29e600000000,
+    0x47701e0d00000000, 0x791bdce200000000, 0xf440d71300000000,
+    0xca2b15fc00000000, 0xc990221700000000, 0xf7fbe0f800000000,
+    0x8ee03c1a00000000, 0xb08bfef500000000, 0xb330c91e00000000,
+    0x8d5b0bf100000000, 0xe881ae2700000000, 0xd6ea6cc800000000,
+    0xd5515b2300000000, 0xeb3a99cc00000000, 0x9221452e00000000,
+    0xac4a87c100000000, 0xaff1b02a00000000, 0x919a72c500000000,
+    0x1cc1793400000000, 0x22aabbdb00000000, 0x21118c3000000000,
+    0x1f7a4edf00000000, 0x6661923d00000000, 0x580a50d200000000,
+    0x5bb1673900000000, 0x65daa5d600000000, 0xd0035d4f00000000,
+    0xee689fa000000000, 0xedd3a84b00000000, 0xd3b86aa400000000,
+    0xaaa3b64600000000, 0x94c874a900000000, 0x9773434200000000,
+    0xa91881ad00000000, 0x24438a5c00000000, 0x1a2848b300000000,
+    0x19937f5800000000, 0x27f8bdb700000000, 0x5ee3615500000000,
+    0x6088a3ba00000000, 0x6333945100000000, 0x5d5856be00000000,
+    0x3882f36800000000, 0x06e9318700000000, 0x0552066c00000000,
+    0x3b39c48300000000, 0x4222186100000000, 0x7c49da8e00000000,
+    0x7ff2ed6500000000, 0x41992f8a00000000, 0xccc2247b00000000,
+    0xf2a9e69400000000, 0xf112d17f00000000, 0xcf79139000000000,
+    0xb662cf7200000000, 0x88090d9d00000000, 0x8bb23a7600000000,
+    0xb5d9f89900000000, 0xa007ba9e00000000, 0x9e6c787100000000,
+    0x9dd74f9a00000000, 0xa3bc8d7500000000, 0xdaa7519700000000,
+    0xe4cc937800000000, 0xe777a49300000000, 0xd91c667c00000000,
+    0x54476d8d00000000, 0x6a2caf6200000000, 0x6997988900000000,
+    0x57fc5a6600000000, 0x2ee7868400000000, 0x108c446b00000000,
+    0x1337738000000000, 0x2d5cb16f00000000, 0x488614b900000000,
+    0x76edd65600000000, 0x7556e1bd00000000, 0x4b3d235200000000,
+    0x3226ffb000000000, 0x0c4d3d5f00000000, 0x0ff60ab400000000,
+    0x319dc85b00000000, 0xbcc6c3aa00000000, 0x82ad014500000000,
+    0x811636ae00000000, 0xbf7df44100000000, 0xc66628a300000000,
+    0xf80dea4c00000000, 0xfbb6dda700000000, 0xc5dd1f4800000000,
+    0x7004e7d100000000, 0x4e6f253e00000000, 0x4dd412d500000000,
+    0x73bfd03a00000000, 0x0aa40cd800000000, 0x34cfce3700000000,
+    0x3774f9dc00000000, 0x091f3b3300000000, 0x844430c200000000,
+    0xba2ff22d00000000, 0xb994c5c600000000, 0x87ff072900000000,
+    0xfee4dbcb00000000, 0xc08f192400000000, 0xc3342ecf00000000,
+    0xfd5fec2000000000, 0x988549f600000000, 0xa6ee8b1900000000,
+    0xa555bcf200000000, 0x9b3e7e1d00000000, 0xe225a2ff00000000,
+    0xdc4e601000000000, 0xdff557fb00000000, 0xe19e951400000000,
+    0x6cc59ee500000000, 0x52ae5c0a00000000, 0x51156be100000000,
+    0x6f7ea90e00000000, 0x166575ec00000000, 0x280eb70300000000,
+    0x2bb580e800000000, 0x15de420700000000, 0x010905e600000000,
+    0x3f62c70900000000, 0x3cd9f0e200000000, 0x02b2320d00000000,
+    0x7ba9eeef00000000, 0x45c22c0000000000, 0x46791beb00000000,
+    0x7812d90400000000, 0xf549d2f500000000, 0xcb22101a00000000,
+    0xc89927f100000000, 0xf6f2e51e00000000, 0x8fe939fc00000000,
+    0xb182fb1300000000, 0xb239ccf800000000, 0x8c520e1700000000,
+    0xe988abc100000000, 0xd7e3692e00000000, 0xd4585ec500000000,
+    0xea339c2a00000000, 0x932840c800000000, 0xad43822700000000,
+    0xaef8b5cc00000000, 0x9093772300000000, 0x1dc87cd200000000,
+    0x23a3be3d00000000, 0x201889d600000000, 0x1e734b3900000000,
+    0x676897db00000000, 0x5903553400000000, 0x5ab862df00000000,
+    0x64d3a03000000000, 0xd10a58a900000000, 0xef619a4600000000,
+    0xecdaadad00000000, 0xd2b16f4200000000, 0xabaab3a000000000,
+    0x95c1714f00000000, 0x967a46a400000000, 0xa811844b00000000,
+    0x254a8fba00000000, 0x1b214d5500000000, 0x189a7abe00000000,
+    0x26f1b85100000000, 0x5fea64b300000000, 0x6181a65c00000000,
+    0x623a91b700000000, 0x5c51535800000000, 0x398bf68e00000000,
+    0x07e0346100000000, 0x045b038a00000000, 0x3a30c16500000000,
+    0x432b1d8700000000, 0x7d40df6800000000, 0x7efbe88300000000,
+    0x40902a6c00000000, 0xcdcb219d00000000, 0xf3a0e37200000000,
+    0xf01bd49900000000, 0xce70167600000000, 0xb76bca9400000000,
+    0x8900087b00000000, 0x8abb3f9000000000, 0xb4d0fd7f00000000,
+    0xa10ebf7800000000, 0x9f657d9700000000, 0x9cde4a7c00000000,
+    0xa2b5889300000000, 0xdbae547100000000, 0xe5c5969e00000000,
+    0xe67ea17500000000, 0xd815639a00000000, 0x554e686b00000000,
+    0x6b25aa8400000000, 0x689e9d6f00000000, 0x56f55f8000000000,
+    0x2fee836200000000, 0x1185418d00000000, 0x123e766600000000,
+    0x2c55b48900000000, 0x498f115f00000000, 0x77e4d3b000000000,
+    0x745fe45b00000000, 0x4a3426b400000000, 0x332ffa5600000000,
+    0x0d4438b900000000, 0x0eff0f5200000000, 0x3094cdbd00000000,
+    0xbdcfc64c00000000, 0x83a404a300000000, 0x801f334800000000,
+    0xbe74f1a700000000, 0xc76f2d4500000000, 0xf904efaa00000000,
+    0xfabfd84100000000, 0xc4d41aae00000000, 0x710de23700000000,
+    0x4f6620d800000000, 0x4cdd173300000000, 0x72b6d5dc00000000,
+    0x0bad093e00000000, 0x35c6cbd100000000, 0x367dfc3a00000000,
+    0x08163ed500000000, 0x854d352400000000, 0xbb26f7cb00000000,
+    0xb89dc02000000000, 0x86f602cf00000000, 0xffedde2d00000000,
+    0xc1861cc200000000, 0xc23d2b2900000000, 0xfc56e9c600000000,
+    0x998c4c1000000000, 0xa7e78eff00000000, 0xa45cb91400000000,
+    0x9a377bfb00000000, 0xe32ca71900000000, 0xdd4765f600000000,
+    0xdefc521d00000000, 0xe09790f200000000, 0x6dcc9b0300000000,
+    0x53a759ec00000000, 0x501c6e0700000000, 0x6e77ace800000000,
+    0x176c700a00000000, 0x2907b2e500000000, 0x2abc850e00000000,
+    0x14d747e100000000},
+   {0x0000000000000000, 0xc0df8ec100000000, 0xc1b96c5800000000,
+    0x0166e29900000000, 0x8273d9b000000000, 0x42ac577100000000,
+    0x43cab5e800000000, 0x83153b2900000000, 0x45e1c3ba00000000,
+    0x853e4d7b00000000, 0x8458afe200000000, 0x4487212300000000,
+    0xc7921a0a00000000, 0x074d94cb00000000, 0x062b765200000000,
+    0xc6f4f89300000000, 0xcbc4f6ae00000000, 0x0b1b786f00000000,
+    0x0a7d9af600000000, 0xcaa2143700000000, 0x49b72f1e00000000,
+    0x8968a1df00000000, 0x880e434600000000, 0x48d1cd8700000000,
+    0x8e25351400000000, 0x4efabbd500000000, 0x4f9c594c00000000,
+    0x8f43d78d00000000, 0x0c56eca400000000, 0xcc89626500000000,
+    0xcdef80fc00000000, 0x0d300e3d00000000, 0xd78f9c8600000000,
+    0x1750124700000000, 0x1636f0de00000000, 0xd6e97e1f00000000,
+    0x55fc453600000000, 0x9523cbf700000000, 0x9445296e00000000,
+    0x549aa7af00000000, 0x926e5f3c00000000, 0x52b1d1fd00000000,
+    0x53d7336400000000, 0x9308bda500000000, 0x101d868c00000000,
+    0xd0c2084d00000000, 0xd1a4ead400000000, 0x117b641500000000,
+    0x1c4b6a2800000000, 0xdc94e4e900000000, 0xddf2067000000000,
+    0x1d2d88b100000000, 0x9e38b39800000000, 0x5ee73d5900000000,
+    0x5f81dfc000000000, 0x9f5e510100000000, 0x59aaa99200000000,
+    0x9975275300000000, 0x9813c5ca00000000, 0x58cc4b0b00000000,
+    0xdbd9702200000000, 0x1b06fee300000000, 0x1a601c7a00000000,
+    0xdabf92bb00000000, 0xef1948d600000000, 0x2fc6c61700000000,
+    0x2ea0248e00000000, 0xee7faa4f00000000, 0x6d6a916600000000,
+    0xadb51fa700000000, 0xacd3fd3e00000000, 0x6c0c73ff00000000,
+    0xaaf88b6c00000000, 0x6a2705ad00000000, 0x6b41e73400000000,
+    0xab9e69f500000000, 0x288b52dc00000000, 0xe854dc1d00000000,
+    0xe9323e8400000000, 0x29edb04500000000, 0x24ddbe7800000000,
+    0xe40230b900000000, 0xe564d22000000000, 0x25bb5ce100000000,
+    0xa6ae67c800000000, 0x6671e90900000000, 0x67170b9000000000,
+    0xa7c8855100000000, 0x613c7dc200000000, 0xa1e3f30300000000,
+    0xa085119a00000000, 0x605a9f5b00000000, 0xe34fa47200000000,
+    0x23902ab300000000, 0x22f6c82a00000000, 0xe22946eb00000000,
+    0x3896d45000000000, 0xf8495a9100000000, 0xf92fb80800000000,
+    0x39f036c900000000, 0xbae50de000000000, 0x7a3a832100000000,
+    0x7b5c61b800000000, 0xbb83ef7900000000, 0x7d7717ea00000000,
+    0xbda8992b00000000, 0xbcce7bb200000000, 0x7c11f57300000000,
+    0xff04ce5a00000000, 0x3fdb409b00000000, 0x3ebda20200000000,
+    0xfe622cc300000000, 0xf35222fe00000000, 0x338dac3f00000000,
+    0x32eb4ea600000000, 0xf234c06700000000, 0x7121fb4e00000000,
+    0xb1fe758f00000000, 0xb098971600000000, 0x704719d700000000,
+    0xb6b3e14400000000, 0x766c6f8500000000, 0x770a8d1c00000000,
+    0xb7d503dd00000000, 0x34c038f400000000, 0xf41fb63500000000,
+    0xf57954ac00000000, 0x35a6da6d00000000, 0x9f35e17700000000,
+    0x5fea6fb600000000, 0x5e8c8d2f00000000, 0x9e5303ee00000000,
+    0x1d4638c700000000, 0xdd99b60600000000, 0xdcff549f00000000,
+    0x1c20da5e00000000, 0xdad422cd00000000, 0x1a0bac0c00000000,
+    0x1b6d4e9500000000, 0xdbb2c05400000000, 0x58a7fb7d00000000,
+    0x987875bc00000000, 0x991e972500000000, 0x59c119e400000000,
+    0x54f117d900000000, 0x942e991800000000, 0x95487b8100000000,
+    0x5597f54000000000, 0xd682ce6900000000, 0x165d40a800000000,
+    0x173ba23100000000, 0xd7e42cf000000000, 0x1110d46300000000,
+    0xd1cf5aa200000000, 0xd0a9b83b00000000, 0x107636fa00000000,
+    0x93630dd300000000, 0x53bc831200000000, 0x52da618b00000000,
+    0x9205ef4a00000000, 0x48ba7df100000000, 0x8865f33000000000,
+    0x890311a900000000, 0x49dc9f6800000000, 0xcac9a44100000000,
+    0x0a162a8000000000, 0x0b70c81900000000, 0xcbaf46d800000000,
+    0x0d5bbe4b00000000, 0xcd84308a00000000, 0xcce2d21300000000,
+    0x0c3d5cd200000000, 0x8f2867fb00000000, 0x4ff7e93a00000000,
+    0x4e910ba300000000, 0x8e4e856200000000, 0x837e8b5f00000000,
+    0x43a1059e00000000, 0x42c7e70700000000, 0x821869c600000000,
+    0x010d52ef00000000, 0xc1d2dc2e00000000, 0xc0b43eb700000000,
+    0x006bb07600000000, 0xc69f48e500000000, 0x0640c62400000000,
+    0x072624bd00000000, 0xc7f9aa7c00000000, 0x44ec915500000000,
+    0x84331f9400000000, 0x8555fd0d00000000, 0x458a73cc00000000,
+    0x702ca9a100000000, 0xb0f3276000000000, 0xb195c5f900000000,
+    0x714a4b3800000000, 0xf25f701100000000, 0x3280fed000000000,
+    0x33e61c4900000000, 0xf339928800000000, 0x35cd6a1b00000000,
+    0xf512e4da00000000, 0xf474064300000000, 0x34ab888200000000,
+    0xb7beb3ab00000000, 0x77613d6a00000000, 0x7607dff300000000,
+    0xb6d8513200000000, 0xbbe85f0f00000000, 0x7b37d1ce00000000,
+    0x7a51335700000000, 0xba8ebd9600000000, 0x399b86bf00000000,
+    0xf944087e00000000, 0xf822eae700000000, 0x38fd642600000000,
+    0xfe099cb500000000, 0x3ed6127400000000, 0x3fb0f0ed00000000,
+    0xff6f7e2c00000000, 0x7c7a450500000000, 0xbca5cbc400000000,
+    0xbdc3295d00000000, 0x7d1ca79c00000000, 0xa7a3352700000000,
+    0x677cbbe600000000, 0x661a597f00000000, 0xa6c5d7be00000000,
+    0x25d0ec9700000000, 0xe50f625600000000, 0xe46980cf00000000,
+    0x24b60e0e00000000, 0xe242f69d00000000, 0x229d785c00000000,
+    0x23fb9ac500000000, 0xe324140400000000, 0x60312f2d00000000,
+    0xa0eea1ec00000000, 0xa188437500000000, 0x6157cdb400000000,
+    0x6c67c38900000000, 0xacb84d4800000000, 0xaddeafd100000000,
+    0x6d01211000000000, 0xee141a3900000000, 0x2ecb94f800000000,
+    0x2fad766100000000, 0xef72f8a000000000, 0x2986003300000000,
+    0xe9598ef200000000, 0xe83f6c6b00000000, 0x28e0e2aa00000000,
+    0xabf5d98300000000, 0x6b2a574200000000, 0x6a4cb5db00000000,
+    0xaa933b1a00000000},
+   {0x0000000000000000, 0x6f4ca59b00000000, 0x9f9e3bec00000000,
+    0xf0d29e7700000000, 0x7f3b060300000000, 0x1077a39800000000,
+    0xe0a53def00000000, 0x8fe9987400000000, 0xfe760c0600000000,
+    0x913aa99d00000000, 0x61e837ea00000000, 0x0ea4927100000000,
+    0x814d0a0500000000, 0xee01af9e00000000, 0x1ed331e900000000,
+    0x719f947200000000, 0xfced180c00000000, 0x93a1bd9700000000,
+    0x637323e000000000, 0x0c3f867b00000000, 0x83d61e0f00000000,
+    0xec9abb9400000000, 0x1c4825e300000000, 0x7304807800000000,
+    0x029b140a00000000, 0x6dd7b19100000000, 0x9d052fe600000000,
+    0xf2498a7d00000000, 0x7da0120900000000, 0x12ecb79200000000,
+    0xe23e29e500000000, 0x8d728c7e00000000, 0xf8db311800000000,
+    0x9797948300000000, 0x67450af400000000, 0x0809af6f00000000,
+    0x87e0371b00000000, 0xe8ac928000000000, 0x187e0cf700000000,
+    0x7732a96c00000000, 0x06ad3d1e00000000, 0x69e1988500000000,
+    0x993306f200000000, 0xf67fa36900000000, 0x79963b1d00000000,
+    0x16da9e8600000000, 0xe60800f100000000, 0x8944a56a00000000,
+    0x0436291400000000, 0x6b7a8c8f00000000, 0x9ba812f800000000,
+    0xf4e4b76300000000, 0x7b0d2f1700000000, 0x14418a8c00000000,
+    0xe49314fb00000000, 0x8bdfb16000000000, 0xfa40251200000000,
+    0x950c808900000000, 0x65de1efe00000000, 0x0a92bb6500000000,
+    0x857b231100000000, 0xea37868a00000000, 0x1ae518fd00000000,
+    0x75a9bd6600000000, 0xf0b7633000000000, 0x9ffbc6ab00000000,
+    0x6f2958dc00000000, 0x0065fd4700000000, 0x8f8c653300000000,
+    0xe0c0c0a800000000, 0x10125edf00000000, 0x7f5efb4400000000,
+    0x0ec16f3600000000, 0x618dcaad00000000, 0x915f54da00000000,
+    0xfe13f14100000000, 0x71fa693500000000, 0x1eb6ccae00000000,
+    0xee6452d900000000, 0x8128f74200000000, 0x0c5a7b3c00000000,
+    0x6316dea700000000, 0x93c440d000000000, 0xfc88e54b00000000,
+    0x73617d3f00000000, 0x1c2dd8a400000000, 0xecff46d300000000,
+    0x83b3e34800000000, 0xf22c773a00000000, 0x9d60d2a100000000,
+    0x6db24cd600000000, 0x02fee94d00000000, 0x8d17713900000000,
+    0xe25bd4a200000000, 0x12894ad500000000, 0x7dc5ef4e00000000,
+    0x086c522800000000, 0x6720f7b300000000, 0x97f269c400000000,
+    0xf8becc5f00000000, 0x7757542b00000000, 0x181bf1b000000000,
+    0xe8c96fc700000000, 0x8785ca5c00000000, 0xf61a5e2e00000000,
+    0x9956fbb500000000, 0x698465c200000000, 0x06c8c05900000000,
+    0x8921582d00000000, 0xe66dfdb600000000, 0x16bf63c100000000,
+    0x79f3c65a00000000, 0xf4814a2400000000, 0x9bcdefbf00000000,
+    0x6b1f71c800000000, 0x0453d45300000000, 0x8bba4c2700000000,
+    0xe4f6e9bc00000000, 0x142477cb00000000, 0x7b68d25000000000,
+    0x0af7462200000000, 0x65bbe3b900000000, 0x95697dce00000000,
+    0xfa25d85500000000, 0x75cc402100000000, 0x1a80e5ba00000000,
+    0xea527bcd00000000, 0x851ede5600000000, 0xe06fc76000000000,
+    0x8f2362fb00000000, 0x7ff1fc8c00000000, 0x10bd591700000000,
+    0x9f54c16300000000, 0xf01864f800000000, 0x00cafa8f00000000,
+    0x6f865f1400000000, 0x1e19cb6600000000, 0x71556efd00000000,
+    0x8187f08a00000000, 0xeecb551100000000, 0x6122cd6500000000,
+    0x0e6e68fe00000000, 0xfebcf68900000000, 0x91f0531200000000,
+    0x1c82df6c00000000, 0x73ce7af700000000, 0x831ce48000000000,
+    0xec50411b00000000, 0x63b9d96f00000000, 0x0cf57cf400000000,
+    0xfc27e28300000000, 0x936b471800000000, 0xe2f4d36a00000000,
+    0x8db876f100000000, 0x7d6ae88600000000, 0x12264d1d00000000,
+    0x9dcfd56900000000, 0xf28370f200000000, 0x0251ee8500000000,
+    0x6d1d4b1e00000000, 0x18b4f67800000000, 0x77f853e300000000,
+    0x872acd9400000000, 0xe866680f00000000, 0x678ff07b00000000,
+    0x08c355e000000000, 0xf811cb9700000000, 0x975d6e0c00000000,
+    0xe6c2fa7e00000000, 0x898e5fe500000000, 0x795cc19200000000,
+    0x1610640900000000, 0x99f9fc7d00000000, 0xf6b559e600000000,
+    0x0667c79100000000, 0x692b620a00000000, 0xe459ee7400000000,
+    0x8b154bef00000000, 0x7bc7d59800000000, 0x148b700300000000,
+    0x9b62e87700000000, 0xf42e4dec00000000, 0x04fcd39b00000000,
+    0x6bb0760000000000, 0x1a2fe27200000000, 0x756347e900000000,
+    0x85b1d99e00000000, 0xeafd7c0500000000, 0x6514e47100000000,
+    0x0a5841ea00000000, 0xfa8adf9d00000000, 0x95c67a0600000000,
+    0x10d8a45000000000, 0x7f9401cb00000000, 0x8f469fbc00000000,
+    0xe00a3a2700000000, 0x6fe3a25300000000, 0x00af07c800000000,
+    0xf07d99bf00000000, 0x9f313c2400000000, 0xeeaea85600000000,
+    0x81e20dcd00000000, 0x713093ba00000000, 0x1e7c362100000000,
+    0x9195ae5500000000, 0xfed90bce00000000, 0x0e0b95b900000000,
+    0x6147302200000000, 0xec35bc5c00000000, 0x837919c700000000,
+    0x73ab87b000000000, 0x1ce7222b00000000, 0x930eba5f00000000,
+    0xfc421fc400000000, 0x0c9081b300000000, 0x63dc242800000000,
+    0x1243b05a00000000, 0x7d0f15c100000000, 0x8ddd8bb600000000,
+    0xe2912e2d00000000, 0x6d78b65900000000, 0x023413c200000000,
+    0xf2e68db500000000, 0x9daa282e00000000, 0xe803954800000000,
+    0x874f30d300000000, 0x779daea400000000, 0x18d10b3f00000000,
+    0x9738934b00000000, 0xf87436d000000000, 0x08a6a8a700000000,
+    0x67ea0d3c00000000, 0x1675994e00000000, 0x79393cd500000000,
+    0x89eba2a200000000, 0xe6a7073900000000, 0x694e9f4d00000000,
+    0x06023ad600000000, 0xf6d0a4a100000000, 0x999c013a00000000,
+    0x14ee8d4400000000, 0x7ba228df00000000, 0x8b70b6a800000000,
+    0xe43c133300000000, 0x6bd58b4700000000, 0x04992edc00000000,
+    0xf44bb0ab00000000, 0x9b07153000000000, 0xea98814200000000,
+    0x85d424d900000000, 0x7506baae00000000, 0x1a4a1f3500000000,
+    0x95a3874100000000, 0xfaef22da00000000, 0x0a3dbcad00000000,
+    0x6571193600000000},
+   {0x0000000000000000, 0x85d996dd00000000, 0x4bb55c6000000000,
+    0xce6ccabd00000000, 0x966ab9c000000000, 0x13b32f1d00000000,
+    0xdddfe5a000000000, 0x5806737d00000000, 0x6dd3035a00000000,
+    0xe80a958700000000, 0x26665f3a00000000, 0xa3bfc9e700000000,
+    0xfbb9ba9a00000000, 0x7e602c4700000000, 0xb00ce6fa00000000,
+    0x35d5702700000000, 0xdaa607b400000000, 0x5f7f916900000000,
+    0x91135bd400000000, 0x14cacd0900000000, 0x4cccbe7400000000,
+    0xc91528a900000000, 0x0779e21400000000, 0x82a074c900000000,
+    0xb77504ee00000000, 0x32ac923300000000, 0xfcc0588e00000000,
+    0x7919ce5300000000, 0x211fbd2e00000000, 0xa4c62bf300000000,
+    0x6aaae14e00000000, 0xef73779300000000, 0xf54b7eb300000000,
+    0x7092e86e00000000, 0xbefe22d300000000, 0x3b27b40e00000000,
+    0x6321c77300000000, 0xe6f851ae00000000, 0x28949b1300000000,
+    0xad4d0dce00000000, 0x98987de900000000, 0x1d41eb3400000000,
+    0xd32d218900000000, 0x56f4b75400000000, 0x0ef2c42900000000,
+    0x8b2b52f400000000, 0x4547984900000000, 0xc09e0e9400000000,
+    0x2fed790700000000, 0xaa34efda00000000, 0x6458256700000000,
+    0xe181b3ba00000000, 0xb987c0c700000000, 0x3c5e561a00000000,
+    0xf2329ca700000000, 0x77eb0a7a00000000, 0x423e7a5d00000000,
+    0xc7e7ec8000000000, 0x098b263d00000000, 0x8c52b0e000000000,
+    0xd454c39d00000000, 0x518d554000000000, 0x9fe19ffd00000000,
+    0x1a38092000000000, 0xab918dbd00000000, 0x2e481b6000000000,
+    0xe024d1dd00000000, 0x65fd470000000000, 0x3dfb347d00000000,
+    0xb822a2a000000000, 0x764e681d00000000, 0xf397fec000000000,
+    0xc6428ee700000000, 0x439b183a00000000, 0x8df7d28700000000,
+    0x082e445a00000000, 0x5028372700000000, 0xd5f1a1fa00000000,
+    0x1b9d6b4700000000, 0x9e44fd9a00000000, 0x71378a0900000000,
+    0xf4ee1cd400000000, 0x3a82d66900000000, 0xbf5b40b400000000,
+    0xe75d33c900000000, 0x6284a51400000000, 0xace86fa900000000,
+    0x2931f97400000000, 0x1ce4895300000000, 0x993d1f8e00000000,
+    0x5751d53300000000, 0xd28843ee00000000, 0x8a8e309300000000,
+    0x0f57a64e00000000, 0xc13b6cf300000000, 0x44e2fa2e00000000,
+    0x5edaf30e00000000, 0xdb0365d300000000, 0x156faf6e00000000,
+    0x90b639b300000000, 0xc8b04ace00000000, 0x4d69dc1300000000,
+    0x830516ae00000000, 0x06dc807300000000, 0x3309f05400000000,
+    0xb6d0668900000000, 0x78bcac3400000000, 0xfd653ae900000000,
+    0xa563499400000000, 0x20badf4900000000, 0xeed615f400000000,
+    0x6b0f832900000000, 0x847cf4ba00000000, 0x01a5626700000000,
+    0xcfc9a8da00000000, 0x4a103e0700000000, 0x12164d7a00000000,
+    0x97cfdba700000000, 0x59a3111a00000000, 0xdc7a87c700000000,
+    0xe9aff7e000000000, 0x6c76613d00000000, 0xa21aab8000000000,
+    0x27c33d5d00000000, 0x7fc54e2000000000, 0xfa1cd8fd00000000,
+    0x3470124000000000, 0xb1a9849d00000000, 0x17256aa000000000,
+    0x92fcfc7d00000000, 0x5c9036c000000000, 0xd949a01d00000000,
+    0x814fd36000000000, 0x049645bd00000000, 0xcafa8f0000000000,
+    0x4f2319dd00000000, 0x7af669fa00000000, 0xff2fff2700000000,
+    0x3143359a00000000, 0xb49aa34700000000, 0xec9cd03a00000000,
+    0x694546e700000000, 0xa7298c5a00000000, 0x22f01a8700000000,
+    0xcd836d1400000000, 0x485afbc900000000, 0x8636317400000000,
+    0x03efa7a900000000, 0x5be9d4d400000000, 0xde30420900000000,
+    0x105c88b400000000, 0x95851e6900000000, 0xa0506e4e00000000,
+    0x2589f89300000000, 0xebe5322e00000000, 0x6e3ca4f300000000,
+    0x363ad78e00000000, 0xb3e3415300000000, 0x7d8f8bee00000000,
+    0xf8561d3300000000, 0xe26e141300000000, 0x67b782ce00000000,
+    0xa9db487300000000, 0x2c02deae00000000, 0x7404add300000000,
+    0xf1dd3b0e00000000, 0x3fb1f1b300000000, 0xba68676e00000000,
+    0x8fbd174900000000, 0x0a64819400000000, 0xc4084b2900000000,
+    0x41d1ddf400000000, 0x19d7ae8900000000, 0x9c0e385400000000,
+    0x5262f2e900000000, 0xd7bb643400000000, 0x38c813a700000000,
+    0xbd11857a00000000, 0x737d4fc700000000, 0xf6a4d91a00000000,
+    0xaea2aa6700000000, 0x2b7b3cba00000000, 0xe517f60700000000,
+    0x60ce60da00000000, 0x551b10fd00000000, 0xd0c2862000000000,
+    0x1eae4c9d00000000, 0x9b77da4000000000, 0xc371a93d00000000,
+    0x46a83fe000000000, 0x88c4f55d00000000, 0x0d1d638000000000,
+    0xbcb4e71d00000000, 0x396d71c000000000, 0xf701bb7d00000000,
+    0x72d82da000000000, 0x2ade5edd00000000, 0xaf07c80000000000,
+    0x616b02bd00000000, 0xe4b2946000000000, 0xd167e44700000000,
+    0x54be729a00000000, 0x9ad2b82700000000, 0x1f0b2efa00000000,
+    0x470d5d8700000000, 0xc2d4cb5a00000000, 0x0cb801e700000000,
+    0x8961973a00000000, 0x6612e0a900000000, 0xe3cb767400000000,
+    0x2da7bcc900000000, 0xa87e2a1400000000, 0xf078596900000000,
+    0x75a1cfb400000000, 0xbbcd050900000000, 0x3e1493d400000000,
+    0x0bc1e3f300000000, 0x8e18752e00000000, 0x4074bf9300000000,
+    0xc5ad294e00000000, 0x9dab5a3300000000, 0x1872ccee00000000,
+    0xd61e065300000000, 0x53c7908e00000000, 0x49ff99ae00000000,
+    0xcc260f7300000000, 0x024ac5ce00000000, 0x8793531300000000,
+    0xdf95206e00000000, 0x5a4cb6b300000000, 0x94207c0e00000000,
+    0x11f9ead300000000, 0x242c9af400000000, 0xa1f50c2900000000,
+    0x6f99c69400000000, 0xea40504900000000, 0xb246233400000000,
+    0x379fb5e900000000, 0xf9f37f5400000000, 0x7c2ae98900000000,
+    0x93599e1a00000000, 0x168008c700000000, 0xd8ecc27a00000000,
+    0x5d3554a700000000, 0x053327da00000000, 0x80eab10700000000,
+    0x4e867bba00000000, 0xcb5fed6700000000, 0xfe8a9d4000000000,
+    0x7b530b9d00000000, 0xb53fc12000000000, 0x30e657fd00000000,
+    0x68e0248000000000, 0xed39b25d00000000, 0x235578e000000000,
+    0xa68cee3d00000000},
+   {0x0000000000000000, 0x76e10f9d00000000, 0xadc46ee100000000,
+    0xdb25617c00000000, 0x1b8fac1900000000, 0x6d6ea38400000000,
+    0xb64bc2f800000000, 0xc0aacd6500000000, 0x361e593300000000,
+    0x40ff56ae00000000, 0x9bda37d200000000, 0xed3b384f00000000,
+    0x2d91f52a00000000, 0x5b70fab700000000, 0x80559bcb00000000,
+    0xf6b4945600000000, 0x6c3cb26600000000, 0x1addbdfb00000000,
+    0xc1f8dc8700000000, 0xb719d31a00000000, 0x77b31e7f00000000,
+    0x015211e200000000, 0xda77709e00000000, 0xac967f0300000000,
+    0x5a22eb5500000000, 0x2cc3e4c800000000, 0xf7e685b400000000,
+    0x81078a2900000000, 0x41ad474c00000000, 0x374c48d100000000,
+    0xec6929ad00000000, 0x9a88263000000000, 0xd87864cd00000000,
+    0xae996b5000000000, 0x75bc0a2c00000000, 0x035d05b100000000,
+    0xc3f7c8d400000000, 0xb516c74900000000, 0x6e33a63500000000,
+    0x18d2a9a800000000, 0xee663dfe00000000, 0x9887326300000000,
+    0x43a2531f00000000, 0x35435c8200000000, 0xf5e991e700000000,
+    0x83089e7a00000000, 0x582dff0600000000, 0x2eccf09b00000000,
+    0xb444d6ab00000000, 0xc2a5d93600000000, 0x1980b84a00000000,
+    0x6f61b7d700000000, 0xafcb7ab200000000, 0xd92a752f00000000,
+    0x020f145300000000, 0x74ee1bce00000000, 0x825a8f9800000000,
+    0xf4bb800500000000, 0x2f9ee17900000000, 0x597feee400000000,
+    0x99d5238100000000, 0xef342c1c00000000, 0x34114d6000000000,
+    0x42f042fd00000000, 0xf1f7b94100000000, 0x8716b6dc00000000,
+    0x5c33d7a000000000, 0x2ad2d83d00000000, 0xea78155800000000,
+    0x9c991ac500000000, 0x47bc7bb900000000, 0x315d742400000000,
+    0xc7e9e07200000000, 0xb108efef00000000, 0x6a2d8e9300000000,
+    0x1ccc810e00000000, 0xdc664c6b00000000, 0xaa8743f600000000,
+    0x71a2228a00000000, 0x07432d1700000000, 0x9dcb0b2700000000,
+    0xeb2a04ba00000000, 0x300f65c600000000, 0x46ee6a5b00000000,
+    0x8644a73e00000000, 0xf0a5a8a300000000, 0x2b80c9df00000000,
+    0x5d61c64200000000, 0xabd5521400000000, 0xdd345d8900000000,
+    0x06113cf500000000, 0x70f0336800000000, 0xb05afe0d00000000,
+    0xc6bbf19000000000, 0x1d9e90ec00000000, 0x6b7f9f7100000000,
+    0x298fdd8c00000000, 0x5f6ed21100000000, 0x844bb36d00000000,
+    0xf2aabcf000000000, 0x3200719500000000, 0x44e17e0800000000,
+    0x9fc41f7400000000, 0xe92510e900000000, 0x1f9184bf00000000,
+    0x69708b2200000000, 0xb255ea5e00000000, 0xc4b4e5c300000000,
+    0x041e28a600000000, 0x72ff273b00000000, 0xa9da464700000000,
+    0xdf3b49da00000000, 0x45b36fea00000000, 0x3352607700000000,
+    0xe877010b00000000, 0x9e960e9600000000, 0x5e3cc3f300000000,
+    0x28ddcc6e00000000, 0xf3f8ad1200000000, 0x8519a28f00000000,
+    0x73ad36d900000000, 0x054c394400000000, 0xde69583800000000,
+    0xa88857a500000000, 0x68229ac000000000, 0x1ec3955d00000000,
+    0xc5e6f42100000000, 0xb307fbbc00000000, 0xe2ef738300000000,
+    0x940e7c1e00000000, 0x4f2b1d6200000000, 0x39ca12ff00000000,
+    0xf960df9a00000000, 0x8f81d00700000000, 0x54a4b17b00000000,
+    0x2245bee600000000, 0xd4f12ab000000000, 0xa210252d00000000,
+    0x7935445100000000, 0x0fd44bcc00000000, 0xcf7e86a900000000,
+    0xb99f893400000000, 0x62bae84800000000, 0x145be7d500000000,
+    0x8ed3c1e500000000, 0xf832ce7800000000, 0x2317af0400000000,
+    0x55f6a09900000000, 0x955c6dfc00000000, 0xe3bd626100000000,
+    0x3898031d00000000, 0x4e790c8000000000, 0xb8cd98d600000000,
+    0xce2c974b00000000, 0x1509f63700000000, 0x63e8f9aa00000000,
+    0xa34234cf00000000, 0xd5a33b5200000000, 0x0e865a2e00000000,
+    0x786755b300000000, 0x3a97174e00000000, 0x4c7618d300000000,
+    0x975379af00000000, 0xe1b2763200000000, 0x2118bb5700000000,
+    0x57f9b4ca00000000, 0x8cdcd5b600000000, 0xfa3dda2b00000000,
+    0x0c894e7d00000000, 0x7a6841e000000000, 0xa14d209c00000000,
+    0xd7ac2f0100000000, 0x1706e26400000000, 0x61e7edf900000000,
+    0xbac28c8500000000, 0xcc23831800000000, 0x56aba52800000000,
+    0x204aaab500000000, 0xfb6fcbc900000000, 0x8d8ec45400000000,
+    0x4d24093100000000, 0x3bc506ac00000000, 0xe0e067d000000000,
+    0x9601684d00000000, 0x60b5fc1b00000000, 0x1654f38600000000,
+    0xcd7192fa00000000, 0xbb909d6700000000, 0x7b3a500200000000,
+    0x0ddb5f9f00000000, 0xd6fe3ee300000000, 0xa01f317e00000000,
+    0x1318cac200000000, 0x65f9c55f00000000, 0xbedca42300000000,
+    0xc83dabbe00000000, 0x089766db00000000, 0x7e76694600000000,
+    0xa553083a00000000, 0xd3b207a700000000, 0x250693f100000000,
+    0x53e79c6c00000000, 0x88c2fd1000000000, 0xfe23f28d00000000,
+    0x3e893fe800000000, 0x4868307500000000, 0x934d510900000000,
+    0xe5ac5e9400000000, 0x7f2478a400000000, 0x09c5773900000000,
+    0xd2e0164500000000, 0xa40119d800000000, 0x64abd4bd00000000,
+    0x124adb2000000000, 0xc96fba5c00000000, 0xbf8eb5c100000000,
+    0x493a219700000000, 0x3fdb2e0a00000000, 0xe4fe4f7600000000,
+    0x921f40eb00000000, 0x52b58d8e00000000, 0x2454821300000000,
+    0xff71e36f00000000, 0x8990ecf200000000, 0xcb60ae0f00000000,
+    0xbd81a19200000000, 0x66a4c0ee00000000, 0x1045cf7300000000,
+    0xd0ef021600000000, 0xa60e0d8b00000000, 0x7d2b6cf700000000,
+    0x0bca636a00000000, 0xfd7ef73c00000000, 0x8b9ff8a100000000,
+    0x50ba99dd00000000, 0x265b964000000000, 0xe6f15b2500000000,
+    0x901054b800000000, 0x4b3535c400000000, 0x3dd43a5900000000,
+    0xa75c1c6900000000, 0xd1bd13f400000000, 0x0a98728800000000,
+    0x7c797d1500000000, 0xbcd3b07000000000, 0xca32bfed00000000,
+    0x1117de9100000000, 0x67f6d10c00000000, 0x9142455a00000000,
+    0xe7a34ac700000000, 0x3c862bbb00000000, 0x4a67242600000000,
+    0x8acde94300000000, 0xfc2ce6de00000000, 0x270987a200000000,
+    0x51e8883f00000000},
+   {0x0000000000000000, 0xe8dbfbb900000000, 0x91b186a800000000,
+    0x796a7d1100000000, 0x63657c8a00000000, 0x8bbe873300000000,
+    0xf2d4fa2200000000, 0x1a0f019b00000000, 0x87cc89cf00000000,
+    0x6f17727600000000, 0x167d0f6700000000, 0xfea6f4de00000000,
+    0xe4a9f54500000000, 0x0c720efc00000000, 0x751873ed00000000,
+    0x9dc3885400000000, 0x4f9f624400000000, 0xa74499fd00000000,
+    0xde2ee4ec00000000, 0x36f51f5500000000, 0x2cfa1ece00000000,
+    0xc421e57700000000, 0xbd4b986600000000, 0x559063df00000000,
+    0xc853eb8b00000000, 0x2088103200000000, 0x59e26d2300000000,
+    0xb139969a00000000, 0xab36970100000000, 0x43ed6cb800000000,
+    0x3a8711a900000000, 0xd25cea1000000000, 0x9e3ec58800000000,
+    0x76e53e3100000000, 0x0f8f432000000000, 0xe754b89900000000,
+    0xfd5bb90200000000, 0x158042bb00000000, 0x6cea3faa00000000,
+    0x8431c41300000000, 0x19f24c4700000000, 0xf129b7fe00000000,
+    0x8843caef00000000, 0x6098315600000000, 0x7a9730cd00000000,
+    0x924ccb7400000000, 0xeb26b66500000000, 0x03fd4ddc00000000,
+    0xd1a1a7cc00000000, 0x397a5c7500000000, 0x4010216400000000,
+    0xa8cbdadd00000000, 0xb2c4db4600000000, 0x5a1f20ff00000000,
+    0x23755dee00000000, 0xcbaea65700000000, 0x566d2e0300000000,
+    0xbeb6d5ba00000000, 0xc7dca8ab00000000, 0x2f07531200000000,
+    0x3508528900000000, 0xddd3a93000000000, 0xa4b9d42100000000,
+    0x4c622f9800000000, 0x7d7bfbca00000000, 0x95a0007300000000,
+    0xecca7d6200000000, 0x041186db00000000, 0x1e1e874000000000,
+    0xf6c57cf900000000, 0x8faf01e800000000, 0x6774fa5100000000,
+    0xfab7720500000000, 0x126c89bc00000000, 0x6b06f4ad00000000,
+    0x83dd0f1400000000, 0x99d20e8f00000000, 0x7109f53600000000,
+    0x0863882700000000, 0xe0b8739e00000000, 0x32e4998e00000000,
+    0xda3f623700000000, 0xa3551f2600000000, 0x4b8ee49f00000000,
+    0x5181e50400000000, 0xb95a1ebd00000000, 0xc03063ac00000000,
+    0x28eb981500000000, 0xb528104100000000, 0x5df3ebf800000000,
+    0x249996e900000000, 0xcc426d5000000000, 0xd64d6ccb00000000,
+    0x3e96977200000000, 0x47fcea6300000000, 0xaf2711da00000000,
+    0xe3453e4200000000, 0x0b9ec5fb00000000, 0x72f4b8ea00000000,
+    0x9a2f435300000000, 0x802042c800000000, 0x68fbb97100000000,
+    0x1191c46000000000, 0xf94a3fd900000000, 0x6489b78d00000000,
+    0x8c524c3400000000, 0xf538312500000000, 0x1de3ca9c00000000,
+    0x07eccb0700000000, 0xef3730be00000000, 0x965d4daf00000000,
+    0x7e86b61600000000, 0xacda5c0600000000, 0x4401a7bf00000000,
+    0x3d6bdaae00000000, 0xd5b0211700000000, 0xcfbf208c00000000,
+    0x2764db3500000000, 0x5e0ea62400000000, 0xb6d55d9d00000000,
+    0x2b16d5c900000000, 0xc3cd2e7000000000, 0xbaa7536100000000,
+    0x527ca8d800000000, 0x4873a94300000000, 0xa0a852fa00000000,
+    0xd9c22feb00000000, 0x3119d45200000000, 0xbbf0874e00000000,
+    0x532b7cf700000000, 0x2a4101e600000000, 0xc29afa5f00000000,
+    0xd895fbc400000000, 0x304e007d00000000, 0x49247d6c00000000,
+    0xa1ff86d500000000, 0x3c3c0e8100000000, 0xd4e7f53800000000,
+    0xad8d882900000000, 0x4556739000000000, 0x5f59720b00000000,
+    0xb78289b200000000, 0xcee8f4a300000000, 0x26330f1a00000000,
+    0xf46fe50a00000000, 0x1cb41eb300000000, 0x65de63a200000000,
+    0x8d05981b00000000, 0x970a998000000000, 0x7fd1623900000000,
+    0x06bb1f2800000000, 0xee60e49100000000, 0x73a36cc500000000,
+    0x9b78977c00000000, 0xe212ea6d00000000, 0x0ac911d400000000,
+    0x10c6104f00000000, 0xf81debf600000000, 0x817796e700000000,
+    0x69ac6d5e00000000, 0x25ce42c600000000, 0xcd15b97f00000000,
+    0xb47fc46e00000000, 0x5ca43fd700000000, 0x46ab3e4c00000000,
+    0xae70c5f500000000, 0xd71ab8e400000000, 0x3fc1435d00000000,
+    0xa202cb0900000000, 0x4ad930b000000000, 0x33b34da100000000,
+    0xdb68b61800000000, 0xc167b78300000000, 0x29bc4c3a00000000,
+    0x50d6312b00000000, 0xb80dca9200000000, 0x6a51208200000000,
+    0x828adb3b00000000, 0xfbe0a62a00000000, 0x133b5d9300000000,
+    0x09345c0800000000, 0xe1efa7b100000000, 0x9885daa000000000,
+    0x705e211900000000, 0xed9da94d00000000, 0x054652f400000000,
+    0x7c2c2fe500000000, 0x94f7d45c00000000, 0x8ef8d5c700000000,
+    0x66232e7e00000000, 0x1f49536f00000000, 0xf792a8d600000000,
+    0xc68b7c8400000000, 0x2e50873d00000000, 0x573afa2c00000000,
+    0xbfe1019500000000, 0xa5ee000e00000000, 0x4d35fbb700000000,
+    0x345f86a600000000, 0xdc847d1f00000000, 0x4147f54b00000000,
+    0xa99c0ef200000000, 0xd0f673e300000000, 0x382d885a00000000,
+    0x222289c100000000, 0xcaf9727800000000, 0xb3930f6900000000,
+    0x5b48f4d000000000, 0x89141ec000000000, 0x61cfe57900000000,
+    0x18a5986800000000, 0xf07e63d100000000, 0xea71624a00000000,
+    0x02aa99f300000000, 0x7bc0e4e200000000, 0x931b1f5b00000000,
+    0x0ed8970f00000000, 0xe6036cb600000000, 0x9f6911a700000000,
+    0x77b2ea1e00000000, 0x6dbdeb8500000000, 0x8566103c00000000,
+    0xfc0c6d2d00000000, 0x14d7969400000000, 0x58b5b90c00000000,
+    0xb06e42b500000000, 0xc9043fa400000000, 0x21dfc41d00000000,
+    0x3bd0c58600000000, 0xd30b3e3f00000000, 0xaa61432e00000000,
+    0x42bab89700000000, 0xdf7930c300000000, 0x37a2cb7a00000000,
+    0x4ec8b66b00000000, 0xa6134dd200000000, 0xbc1c4c4900000000,
+    0x54c7b7f000000000, 0x2dadcae100000000, 0xc576315800000000,
+    0x172adb4800000000, 0xfff120f100000000, 0x869b5de000000000,
+    0x6e40a65900000000, 0x744fa7c200000000, 0x9c945c7b00000000,
+    0xe5fe216a00000000, 0x0d25dad300000000, 0x90e6528700000000,
+    0x783da93e00000000, 0x0157d42f00000000, 0xe98c2f9600000000,
+    0xf3832e0d00000000, 0x1b58d5b400000000, 0x6232a8a500000000,
+    0x8ae9531c00000000},
+   {0x0000000000000000, 0x919168ae00000000, 0x6325a08700000000,
+    0xf2b4c82900000000, 0x874c31d400000000, 0x16dd597a00000000,
+    0xe469915300000000, 0x75f8f9fd00000000, 0x4f9f137300000000,
+    0xde0e7bdd00000000, 0x2cbab3f400000000, 0xbd2bdb5a00000000,
+    0xc8d322a700000000, 0x59424a0900000000, 0xabf6822000000000,
+    0x3a67ea8e00000000, 0x9e3e27e600000000, 0x0faf4f4800000000,
+    0xfd1b876100000000, 0x6c8aefcf00000000, 0x1972163200000000,
+    0x88e37e9c00000000, 0x7a57b6b500000000, 0xebc6de1b00000000,
+    0xd1a1349500000000, 0x40305c3b00000000, 0xb284941200000000,
+    0x2315fcbc00000000, 0x56ed054100000000, 0xc77c6def00000000,
+    0x35c8a5c600000000, 0xa459cd6800000000, 0x7d7b3f1700000000,
+    0xecea57b900000000, 0x1e5e9f9000000000, 0x8fcff73e00000000,
+    0xfa370ec300000000, 0x6ba6666d00000000, 0x9912ae4400000000,
+    0x0883c6ea00000000, 0x32e42c6400000000, 0xa37544ca00000000,
+    0x51c18ce300000000, 0xc050e44d00000000, 0xb5a81db000000000,
+    0x2439751e00000000, 0xd68dbd3700000000, 0x471cd59900000000,
+    0xe34518f100000000, 0x72d4705f00000000, 0x8060b87600000000,
+    0x11f1d0d800000000, 0x6409292500000000, 0xf598418b00000000,
+    0x072c89a200000000, 0x96bde10c00000000, 0xacda0b8200000000,
+    0x3d4b632c00000000, 0xcfffab0500000000, 0x5e6ec3ab00000000,
+    0x2b963a5600000000, 0xba0752f800000000, 0x48b39ad100000000,
+    0xd922f27f00000000, 0xfaf67e2e00000000, 0x6b67168000000000,
+    0x99d3dea900000000, 0x0842b60700000000, 0x7dba4ffa00000000,
+    0xec2b275400000000, 0x1e9fef7d00000000, 0x8f0e87d300000000,
+    0xb5696d5d00000000, 0x24f805f300000000, 0xd64ccdda00000000,
+    0x47dda57400000000, 0x32255c8900000000, 0xa3b4342700000000,
+    0x5100fc0e00000000, 0xc09194a000000000, 0x64c859c800000000,
+    0xf559316600000000, 0x07edf94f00000000, 0x967c91e100000000,
+    0xe384681c00000000, 0x721500b200000000, 0x80a1c89b00000000,
+    0x1130a03500000000, 0x2b574abb00000000, 0xbac6221500000000,
+    0x4872ea3c00000000, 0xd9e3829200000000, 0xac1b7b6f00000000,
+    0x3d8a13c100000000, 0xcf3edbe800000000, 0x5eafb34600000000,
+    0x878d413900000000, 0x161c299700000000, 0xe4a8e1be00000000,
+    0x7539891000000000, 0x00c170ed00000000, 0x9150184300000000,
+    0x63e4d06a00000000, 0xf275b8c400000000, 0xc812524a00000000,
+    0x59833ae400000000, 0xab37f2cd00000000, 0x3aa69a6300000000,
+    0x4f5e639e00000000, 0xdecf0b3000000000, 0x2c7bc31900000000,
+    0xbdeaabb700000000, 0x19b366df00000000, 0x88220e7100000000,
+    0x7a96c65800000000, 0xeb07aef600000000, 0x9eff570b00000000,
+    0x0f6e3fa500000000, 0xfddaf78c00000000, 0x6c4b9f2200000000,
+    0x562c75ac00000000, 0xc7bd1d0200000000, 0x3509d52b00000000,
+    0xa498bd8500000000, 0xd160447800000000, 0x40f12cd600000000,
+    0xb245e4ff00000000, 0x23d48c5100000000, 0xf4edfd5c00000000,
+    0x657c95f200000000, 0x97c85ddb00000000, 0x0659357500000000,
+    0x73a1cc8800000000, 0xe230a42600000000, 0x10846c0f00000000,
+    0x811504a100000000, 0xbb72ee2f00000000, 0x2ae3868100000000,
+    0xd8574ea800000000, 0x49c6260600000000, 0x3c3edffb00000000,
+    0xadafb75500000000, 0x5f1b7f7c00000000, 0xce8a17d200000000,
+    0x6ad3daba00000000, 0xfb42b21400000000, 0x09f67a3d00000000,
+    0x9867129300000000, 0xed9feb6e00000000, 0x7c0e83c000000000,
+    0x8eba4be900000000, 0x1f2b234700000000, 0x254cc9c900000000,
+    0xb4dda16700000000, 0x4669694e00000000, 0xd7f801e000000000,
+    0xa200f81d00000000, 0x339190b300000000, 0xc125589a00000000,
+    0x50b4303400000000, 0x8996c24b00000000, 0x1807aae500000000,
+    0xeab362cc00000000, 0x7b220a6200000000, 0x0edaf39f00000000,
+    0x9f4b9b3100000000, 0x6dff531800000000, 0xfc6e3bb600000000,
+    0xc609d13800000000, 0x5798b99600000000, 0xa52c71bf00000000,
+    0x34bd191100000000, 0x4145e0ec00000000, 0xd0d4884200000000,
+    0x2260406b00000000, 0xb3f128c500000000, 0x17a8e5ad00000000,
+    0x86398d0300000000, 0x748d452a00000000, 0xe51c2d8400000000,
+    0x90e4d47900000000, 0x0175bcd700000000, 0xf3c174fe00000000,
+    0x62501c5000000000, 0x5837f6de00000000, 0xc9a69e7000000000,
+    0x3b12565900000000, 0xaa833ef700000000, 0xdf7bc70a00000000,
+    0x4eeaafa400000000, 0xbc5e678d00000000, 0x2dcf0f2300000000,
+    0x0e1b837200000000, 0x9f8aebdc00000000, 0x6d3e23f500000000,
+    0xfcaf4b5b00000000, 0x8957b2a600000000, 0x18c6da0800000000,
+    0xea72122100000000, 0x7be37a8f00000000, 0x4184900100000000,
+    0xd015f8af00000000, 0x22a1308600000000, 0xb330582800000000,
+    0xc6c8a1d500000000, 0x5759c97b00000000, 0xa5ed015200000000,
+    0x347c69fc00000000, 0x9025a49400000000, 0x01b4cc3a00000000,
+    0xf300041300000000, 0x62916cbd00000000, 0x1769954000000000,
+    0x86f8fdee00000000, 0x744c35c700000000, 0xe5dd5d6900000000,
+    0xdfbab7e700000000, 0x4e2bdf4900000000, 0xbc9f176000000000,
+    0x2d0e7fce00000000, 0x58f6863300000000, 0xc967ee9d00000000,
+    0x3bd326b400000000, 0xaa424e1a00000000, 0x7360bc6500000000,
+    0xe2f1d4cb00000000, 0x10451ce200000000, 0x81d4744c00000000,
+    0xf42c8db100000000, 0x65bde51f00000000, 0x97092d3600000000,
+    0x0698459800000000, 0x3cffaf1600000000, 0xad6ec7b800000000,
+    0x5fda0f9100000000, 0xce4b673f00000000, 0xbbb39ec200000000,
+    0x2a22f66c00000000, 0xd8963e4500000000, 0x490756eb00000000,
+    0xed5e9b8300000000, 0x7ccff32d00000000, 0x8e7b3b0400000000,
+    0x1fea53aa00000000, 0x6a12aa5700000000, 0xfb83c2f900000000,
+    0x09370ad000000000, 0x98a6627e00000000, 0xa2c188f000000000,
+    0x3350e05e00000000, 0xc1e4287700000000, 0x507540d900000000,
+    0x258db92400000000, 0xb41cd18a00000000, 0x46a819a300000000,
+    0xd739710d00000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa,
+    0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b,
+    0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232,
+    0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8,
+    0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e,
+    0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa,
+    0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b,
+    0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f,
+    0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719,
+    0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3,
+    0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa,
+    0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b,
+    0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed,
+    0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89,
+    0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25,
+    0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041,
+    0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c,
+    0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed,
+    0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4,
+    0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758,
+    0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e,
+    0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a,
+    0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed,
+    0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889,
+    0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df,
+    0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544,
+    0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d,
+    0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c,
+    0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1,
+    0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95,
+    0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839,
+    0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d,
+    0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976,
+    0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7,
+    0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be,
+    0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144,
+    0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12,
+    0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376,
+    0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a,
+    0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e,
+    0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278,
+    0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682,
+    0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b,
+    0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a,
+    0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561,
+    0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05,
+    0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9,
+    0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd,
+    0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0,
+    0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61,
+    0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678,
+    0x264b06e6},
+   {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413,
+    0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3,
+    0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d,
+    0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653,
+    0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9,
+    0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e,
+    0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5,
+    0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712,
+    0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8,
+    0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6,
+    0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068,
+    0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8,
+    0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579,
+    0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade,
+    0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37,
+    0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590,
+    0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4,
+    0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64,
+    0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea,
+    0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678,
+    0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282,
+    0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25,
+    0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102,
+    0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5,
+    0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f,
+    0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146,
+    0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8,
+    0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08,
+    0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c,
+    0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b,
+    0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972,
+    0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5,
+    0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d,
+    0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd,
+    0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833,
+    0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d,
+    0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7,
+    0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60,
+    0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2,
+    0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105,
+    0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff,
+    0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1,
+    0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f,
+    0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf,
+    0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617,
+    0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0,
+    0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959,
+    0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe,
+    0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca,
+    0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a,
+    0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184,
+    0x92364a30},
+   {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216,
+    0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8,
+    0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170,
+    0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035,
+    0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6,
+    0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145,
+    0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d,
+    0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e,
+    0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d,
+    0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408,
+    0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0,
+    0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e,
+    0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c,
+    0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf,
+    0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a,
+    0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9,
+    0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1,
+    0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f,
+    0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987,
+    0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4,
+    0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37,
+    0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84,
+    0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca,
+    0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79,
+    0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba,
+    0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d,
+    0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5,
+    0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b,
+    0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643,
+    0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0,
+    0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525,
+    0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496,
+    0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8,
+    0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026,
+    0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e,
+    0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db,
+    0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118,
+    0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab,
+    0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf,
+    0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c,
+    0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf,
+    0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a,
+    0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32,
+    0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec,
+    0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82,
+    0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31,
+    0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4,
+    0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957,
+    0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f,
+    0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1,
+    0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869,
+    0xe4c4abcc},
+   {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0,
+    0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271,
+    0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61,
+    0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52,
+    0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43,
+    0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333,
+    0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64,
+    0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314,
+    0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205,
+    0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136,
+    0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26,
+    0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997,
+    0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849,
+    0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739,
+    0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8,
+    0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98,
+    0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b,
+    0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba,
+    0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa,
+    0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d,
+    0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c,
+    0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc,
+    0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af,
+    0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf,
+    0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce,
+    0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922,
+    0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532,
+    0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183,
+    0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710,
+    0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860,
+    0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1,
+    0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1,
+    0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956,
+    0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7,
+    0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7,
+    0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4,
+    0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5,
+    0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5,
+    0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb,
+    0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb,
+    0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da,
+    0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9,
+    0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9,
+    0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48,
+    0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df,
+    0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af,
+    0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e,
+    0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e,
+    0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d,
+    0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c,
+    0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c,
+    0xca64c78c}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0xb029603d, 0x6053c07a, 0xd07aa047, 0xc0a680f5,
+    0x708fe0c8, 0xa0f5408f, 0x10dc20b2, 0xc14b7030, 0x7162100d,
+    0xa118b04a, 0x1131d077, 0x01edf0c5, 0xb1c490f8, 0x61be30bf,
+    0xd1975082, 0x8297e060, 0x32be805d, 0xe2c4201a, 0x52ed4027,
+    0x42316095, 0xf21800a8, 0x2262a0ef, 0x924bc0d2, 0x43dc9050,
+    0xf3f5f06d, 0x238f502a, 0x93a63017, 0x837a10a5, 0x33537098,
+    0xe329d0df, 0x5300b0e2, 0x042fc1c1, 0xb406a1fc, 0x647c01bb,
+    0xd4556186, 0xc4894134, 0x74a02109, 0xa4da814e, 0x14f3e173,
+    0xc564b1f1, 0x754dd1cc, 0xa537718b, 0x151e11b6, 0x05c23104,
+    0xb5eb5139, 0x6591f17e, 0xd5b89143, 0x86b821a1, 0x3691419c,
+    0xe6ebe1db, 0x56c281e6, 0x461ea154, 0xf637c169, 0x264d612e,
+    0x96640113, 0x47f35191, 0xf7da31ac, 0x27a091eb, 0x9789f1d6,
+    0x8755d164, 0x377cb159, 0xe706111e, 0x572f7123, 0x4958f358,
+    0xf9719365, 0x290b3322, 0x9922531f, 0x89fe73ad, 0x39d71390,
+    0xe9adb3d7, 0x5984d3ea, 0x88138368, 0x383ae355, 0xe8404312,
+    0x5869232f, 0x48b5039d, 0xf89c63a0, 0x28e6c3e7, 0x98cfa3da,
+    0xcbcf1338, 0x7be67305, 0xab9cd342, 0x1bb5b37f, 0x0b6993cd,
+    0xbb40f3f0, 0x6b3a53b7, 0xdb13338a, 0x0a846308, 0xbaad0335,
+    0x6ad7a372, 0xdafec34f, 0xca22e3fd, 0x7a0b83c0, 0xaa712387,
+    0x1a5843ba, 0x4d773299, 0xfd5e52a4, 0x2d24f2e3, 0x9d0d92de,
+    0x8dd1b26c, 0x3df8d251, 0xed827216, 0x5dab122b, 0x8c3c42a9,
+    0x3c152294, 0xec6f82d3, 0x5c46e2ee, 0x4c9ac25c, 0xfcb3a261,
+    0x2cc90226, 0x9ce0621b, 0xcfe0d2f9, 0x7fc9b2c4, 0xafb31283,
+    0x1f9a72be, 0x0f46520c, 0xbf6f3231, 0x6f159276, 0xdf3cf24b,
+    0x0eaba2c9, 0xbe82c2f4, 0x6ef862b3, 0xded1028e, 0xce0d223c,
+    0x7e244201, 0xae5ee246, 0x1e77827b, 0x92b0e6b1, 0x2299868c,
+    0xf2e326cb, 0x42ca46f6, 0x52166644, 0xe23f0679, 0x3245a63e,
+    0x826cc603, 0x53fb9681, 0xe3d2f6bc, 0x33a856fb, 0x838136c6,
+    0x935d1674, 0x23747649, 0xf30ed60e, 0x4327b633, 0x102706d1,
+    0xa00e66ec, 0x7074c6ab, 0xc05da696, 0xd0818624, 0x60a8e619,
+    0xb0d2465e, 0x00fb2663, 0xd16c76e1, 0x614516dc, 0xb13fb69b,
+    0x0116d6a6, 0x11caf614, 0xa1e39629, 0x7199366e, 0xc1b05653,
+    0x969f2770, 0x26b6474d, 0xf6cce70a, 0x46e58737, 0x5639a785,
+    0xe610c7b8, 0x366a67ff, 0x864307c2, 0x57d45740, 0xe7fd377d,
+    0x3787973a, 0x87aef707, 0x9772d7b5, 0x275bb788, 0xf72117cf,
+    0x470877f2, 0x1408c710, 0xa421a72d, 0x745b076a, 0xc4726757,
+    0xd4ae47e5, 0x648727d8, 0xb4fd879f, 0x04d4e7a2, 0xd543b720,
+    0x656ad71d, 0xb510775a, 0x05391767, 0x15e537d5, 0xa5cc57e8,
+    0x75b6f7af, 0xc59f9792, 0xdbe815e9, 0x6bc175d4, 0xbbbbd593,
+    0x0b92b5ae, 0x1b4e951c, 0xab67f521, 0x7b1d5566, 0xcb34355b,
+    0x1aa365d9, 0xaa8a05e4, 0x7af0a5a3, 0xcad9c59e, 0xda05e52c,
+    0x6a2c8511, 0xba562556, 0x0a7f456b, 0x597ff589, 0xe95695b4,
+    0x392c35f3, 0x890555ce, 0x99d9757c, 0x29f01541, 0xf98ab506,
+    0x49a3d53b, 0x983485b9, 0x281de584, 0xf86745c3, 0x484e25fe,
+    0x5892054c, 0xe8bb6571, 0x38c1c536, 0x88e8a50b, 0xdfc7d428,
+    0x6feeb415, 0xbf941452, 0x0fbd746f, 0x1f6154dd, 0xaf4834e0,
+    0x7f3294a7, 0xcf1bf49a, 0x1e8ca418, 0xaea5c425, 0x7edf6462,
+    0xcef6045f, 0xde2a24ed, 0x6e0344d0, 0xbe79e497, 0x0e5084aa,
+    0x5d503448, 0xed795475, 0x3d03f432, 0x8d2a940f, 0x9df6b4bd,
+    0x2ddfd480, 0xfda574c7, 0x4d8c14fa, 0x9c1b4478, 0x2c322445,
+    0xfc488402, 0x4c61e43f, 0x5cbdc48d, 0xec94a4b0, 0x3cee04f7,
+    0x8cc764ca},
+   {0x00000000, 0xa5d35ccb, 0x0ba1c84d, 0xae729486, 0x1642919b,
+    0xb391cd50, 0x1de359d6, 0xb830051d, 0x6d8253ec, 0xc8510f27,
+    0x66239ba1, 0xc3f0c76a, 0x7bc0c277, 0xde139ebc, 0x70610a3a,
+    0xd5b256f1, 0x9b02d603, 0x3ed18ac8, 0x90a31e4e, 0x35704285,
+    0x8d404798, 0x28931b53, 0x86e18fd5, 0x2332d31e, 0xf68085ef,
+    0x5353d924, 0xfd214da2, 0x58f21169, 0xe0c21474, 0x451148bf,
+    0xeb63dc39, 0x4eb080f2, 0x3605ac07, 0x93d6f0cc, 0x3da4644a,
+    0x98773881, 0x20473d9c, 0x85946157, 0x2be6f5d1, 0x8e35a91a,
+    0x5b87ffeb, 0xfe54a320, 0x502637a6, 0xf5f56b6d, 0x4dc56e70,
+    0xe81632bb, 0x4664a63d, 0xe3b7faf6, 0xad077a04, 0x08d426cf,
+    0xa6a6b249, 0x0375ee82, 0xbb45eb9f, 0x1e96b754, 0xb0e423d2,
+    0x15377f19, 0xc08529e8, 0x65567523, 0xcb24e1a5, 0x6ef7bd6e,
+    0xd6c7b873, 0x7314e4b8, 0xdd66703e, 0x78b52cf5, 0x6c0a580f,
+    0xc9d904c4, 0x67ab9042, 0xc278cc89, 0x7a48c994, 0xdf9b955f,
+    0x71e901d9, 0xd43a5d12, 0x01880be3, 0xa45b5728, 0x0a29c3ae,
+    0xaffa9f65, 0x17ca9a78, 0xb219c6b3, 0x1c6b5235, 0xb9b80efe,
+    0xf7088e0c, 0x52dbd2c7, 0xfca94641, 0x597a1a8a, 0xe14a1f97,
+    0x4499435c, 0xeaebd7da, 0x4f388b11, 0x9a8adde0, 0x3f59812b,
+    0x912b15ad, 0x34f84966, 0x8cc84c7b, 0x291b10b0, 0x87698436,
+    0x22bad8fd, 0x5a0ff408, 0xffdca8c3, 0x51ae3c45, 0xf47d608e,
+    0x4c4d6593, 0xe99e3958, 0x47ecadde, 0xe23ff115, 0x378da7e4,
+    0x925efb2f, 0x3c2c6fa9, 0x99ff3362, 0x21cf367f, 0x841c6ab4,
+    0x2a6efe32, 0x8fbda2f9, 0xc10d220b, 0x64de7ec0, 0xcaacea46,
+    0x6f7fb68d, 0xd74fb390, 0x729cef5b, 0xdcee7bdd, 0x793d2716,
+    0xac8f71e7, 0x095c2d2c, 0xa72eb9aa, 0x02fde561, 0xbacde07c,
+    0x1f1ebcb7, 0xb16c2831, 0x14bf74fa, 0xd814b01e, 0x7dc7ecd5,
+    0xd3b57853, 0x76662498, 0xce562185, 0x6b857d4e, 0xc5f7e9c8,
+    0x6024b503, 0xb596e3f2, 0x1045bf39, 0xbe372bbf, 0x1be47774,
+    0xa3d47269, 0x06072ea2, 0xa875ba24, 0x0da6e6ef, 0x4316661d,
+    0xe6c53ad6, 0x48b7ae50, 0xed64f29b, 0x5554f786, 0xf087ab4d,
+    0x5ef53fcb, 0xfb266300, 0x2e9435f1, 0x8b47693a, 0x2535fdbc,
+    0x80e6a177, 0x38d6a46a, 0x9d05f8a1, 0x33776c27, 0x96a430ec,
+    0xee111c19, 0x4bc240d2, 0xe5b0d454, 0x4063889f, 0xf8538d82,
+    0x5d80d149, 0xf3f245cf, 0x56211904, 0x83934ff5, 0x2640133e,
+    0x883287b8, 0x2de1db73, 0x95d1de6e, 0x300282a5, 0x9e701623,
+    0x3ba34ae8, 0x7513ca1a, 0xd0c096d1, 0x7eb20257, 0xdb615e9c,
+    0x63515b81, 0xc682074a, 0x68f093cc, 0xcd23cf07, 0x189199f6,
+    0xbd42c53d, 0x133051bb, 0xb6e30d70, 0x0ed3086d, 0xab0054a6,
+    0x0572c020, 0xa0a19ceb, 0xb41ee811, 0x11cdb4da, 0xbfbf205c,
+    0x1a6c7c97, 0xa25c798a, 0x078f2541, 0xa9fdb1c7, 0x0c2eed0c,
+    0xd99cbbfd, 0x7c4fe736, 0xd23d73b0, 0x77ee2f7b, 0xcfde2a66,
+    0x6a0d76ad, 0xc47fe22b, 0x61acbee0, 0x2f1c3e12, 0x8acf62d9,
+    0x24bdf65f, 0x816eaa94, 0x395eaf89, 0x9c8df342, 0x32ff67c4,
+    0x972c3b0f, 0x429e6dfe, 0xe74d3135, 0x493fa5b3, 0xececf978,
+    0x54dcfc65, 0xf10fa0ae, 0x5f7d3428, 0xfaae68e3, 0x821b4416,
+    0x27c818dd, 0x89ba8c5b, 0x2c69d090, 0x9459d58d, 0x318a8946,
+    0x9ff81dc0, 0x3a2b410b, 0xef9917fa, 0x4a4a4b31, 0xe438dfb7,
+    0x41eb837c, 0xf9db8661, 0x5c08daaa, 0xf27a4e2c, 0x57a912e7,
+    0x19199215, 0xbccacede, 0x12b85a58, 0xb76b0693, 0x0f5b038e,
+    0xaa885f45, 0x04facbc3, 0xa1299708, 0x749bc1f9, 0xd1489d32,
+    0x7f3a09b4, 0xdae9557f, 0x62d95062, 0xc70a0ca9, 0x6978982f,
+    0xccabc4e4},
+   {0x00000000, 0xb40b77a6, 0x29119f97, 0x9d1ae831, 0x13244ff4,
+    0xa72f3852, 0x3a35d063, 0x8e3ea7c5, 0x674eef33, 0xd3459895,
+    0x4e5f70a4, 0xfa540702, 0x746aa0c7, 0xc061d761, 0x5d7b3f50,
+    0xe97048f6, 0xce9cde67, 0x7a97a9c1, 0xe78d41f0, 0x53863656,
+    0xddb89193, 0x69b3e635, 0xf4a90e04, 0x40a279a2, 0xa9d23154,
+    0x1dd946f2, 0x80c3aec3, 0x34c8d965, 0xbaf67ea0, 0x0efd0906,
+    0x93e7e137, 0x27ec9691, 0x9c39bdcf, 0x2832ca69, 0xb5282258,
+    0x012355fe, 0x8f1df23b, 0x3b16859d, 0xa60c6dac, 0x12071a0a,
+    0xfb7752fc, 0x4f7c255a, 0xd266cd6b, 0x666dbacd, 0xe8531d08,
+    0x5c586aae, 0xc142829f, 0x7549f539, 0x52a563a8, 0xe6ae140e,
+    0x7bb4fc3f, 0xcfbf8b99, 0x41812c5c, 0xf58a5bfa, 0x6890b3cb,
+    0xdc9bc46d, 0x35eb8c9b, 0x81e0fb3d, 0x1cfa130c, 0xa8f164aa,
+    0x26cfc36f, 0x92c4b4c9, 0x0fde5cf8, 0xbbd52b5e, 0x79750b44,
+    0xcd7e7ce2, 0x506494d3, 0xe46fe375, 0x6a5144b0, 0xde5a3316,
+    0x4340db27, 0xf74bac81, 0x1e3be477, 0xaa3093d1, 0x372a7be0,
+    0x83210c46, 0x0d1fab83, 0xb914dc25, 0x240e3414, 0x900543b2,
+    0xb7e9d523, 0x03e2a285, 0x9ef84ab4, 0x2af33d12, 0xa4cd9ad7,
+    0x10c6ed71, 0x8ddc0540, 0x39d772e6, 0xd0a73a10, 0x64ac4db6,
+    0xf9b6a587, 0x4dbdd221, 0xc38375e4, 0x77880242, 0xea92ea73,
+    0x5e999dd5, 0xe54cb68b, 0x5147c12d, 0xcc5d291c, 0x78565eba,
+    0xf668f97f, 0x42638ed9, 0xdf7966e8, 0x6b72114e, 0x820259b8,
+    0x36092e1e, 0xab13c62f, 0x1f18b189, 0x9126164c, 0x252d61ea,
+    0xb83789db, 0x0c3cfe7d, 0x2bd068ec, 0x9fdb1f4a, 0x02c1f77b,
+    0xb6ca80dd, 0x38f42718, 0x8cff50be, 0x11e5b88f, 0xa5eecf29,
+    0x4c9e87df, 0xf895f079, 0x658f1848, 0xd1846fee, 0x5fbac82b,
+    0xebb1bf8d, 0x76ab57bc, 0xc2a0201a, 0xf2ea1688, 0x46e1612e,
+    0xdbfb891f, 0x6ff0feb9, 0xe1ce597c, 0x55c52eda, 0xc8dfc6eb,
+    0x7cd4b14d, 0x95a4f9bb, 0x21af8e1d, 0xbcb5662c, 0x08be118a,
+    0x8680b64f, 0x328bc1e9, 0xaf9129d8, 0x1b9a5e7e, 0x3c76c8ef,
+    0x887dbf49, 0x15675778, 0xa16c20de, 0x2f52871b, 0x9b59f0bd,
+    0x0643188c, 0xb2486f2a, 0x5b3827dc, 0xef33507a, 0x7229b84b,
+    0xc622cfed, 0x481c6828, 0xfc171f8e, 0x610df7bf, 0xd5068019,
+    0x6ed3ab47, 0xdad8dce1, 0x47c234d0, 0xf3c94376, 0x7df7e4b3,
+    0xc9fc9315, 0x54e67b24, 0xe0ed0c82, 0x099d4474, 0xbd9633d2,
+    0x208cdbe3, 0x9487ac45, 0x1ab90b80, 0xaeb27c26, 0x33a89417,
+    0x87a3e3b1, 0xa04f7520, 0x14440286, 0x895eeab7, 0x3d559d11,
+    0xb36b3ad4, 0x07604d72, 0x9a7aa543, 0x2e71d2e5, 0xc7019a13,
+    0x730aedb5, 0xee100584, 0x5a1b7222, 0xd425d5e7, 0x602ea241,
+    0xfd344a70, 0x493f3dd6, 0x8b9f1dcc, 0x3f946a6a, 0xa28e825b,
+    0x1685f5fd, 0x98bb5238, 0x2cb0259e, 0xb1aacdaf, 0x05a1ba09,
+    0xecd1f2ff, 0x58da8559, 0xc5c06d68, 0x71cb1ace, 0xfff5bd0b,
+    0x4bfecaad, 0xd6e4229c, 0x62ef553a, 0x4503c3ab, 0xf108b40d,
+    0x6c125c3c, 0xd8192b9a, 0x56278c5f, 0xe22cfbf9, 0x7f3613c8,
+    0xcb3d646e, 0x224d2c98, 0x96465b3e, 0x0b5cb30f, 0xbf57c4a9,
+    0x3169636c, 0x856214ca, 0x1878fcfb, 0xac738b5d, 0x17a6a003,
+    0xa3add7a5, 0x3eb73f94, 0x8abc4832, 0x0482eff7, 0xb0899851,
+    0x2d937060, 0x999807c6, 0x70e84f30, 0xc4e33896, 0x59f9d0a7,
+    0xedf2a701, 0x63cc00c4, 0xd7c77762, 0x4add9f53, 0xfed6e8f5,
+    0xd93a7e64, 0x6d3109c2, 0xf02be1f3, 0x44209655, 0xca1e3190,
+    0x7e154636, 0xe30fae07, 0x5704d9a1, 0xbe749157, 0x0a7fe6f1,
+    0x97650ec0, 0x236e7966, 0xad50dea3, 0x195ba905, 0x84414134,
+    0x304a3692},
+   {0x00000000, 0x9e00aacc, 0x7d072542, 0xe3078f8e, 0xfa0e4a84,
+    0x640ee048, 0x87096fc6, 0x1909c50a, 0xb51be5d3, 0x2b1b4f1f,
+    0xc81cc091, 0x561c6a5d, 0x4f15af57, 0xd115059b, 0x32128a15,
+    0xac1220d9, 0x2b31bb7c, 0xb53111b0, 0x56369e3e, 0xc83634f2,
+    0xd13ff1f8, 0x4f3f5b34, 0xac38d4ba, 0x32387e76, 0x9e2a5eaf,
+    0x002af463, 0xe32d7bed, 0x7d2dd121, 0x6424142b, 0xfa24bee7,
+    0x19233169, 0x87239ba5, 0x566276f9, 0xc862dc35, 0x2b6553bb,
+    0xb565f977, 0xac6c3c7d, 0x326c96b1, 0xd16b193f, 0x4f6bb3f3,
+    0xe379932a, 0x7d7939e6, 0x9e7eb668, 0x007e1ca4, 0x1977d9ae,
+    0x87777362, 0x6470fcec, 0xfa705620, 0x7d53cd85, 0xe3536749,
+    0x0054e8c7, 0x9e54420b, 0x875d8701, 0x195d2dcd, 0xfa5aa243,
+    0x645a088f, 0xc8482856, 0x5648829a, 0xb54f0d14, 0x2b4fa7d8,
+    0x324662d2, 0xac46c81e, 0x4f414790, 0xd141ed5c, 0xedc29d29,
+    0x73c237e5, 0x90c5b86b, 0x0ec512a7, 0x17ccd7ad, 0x89cc7d61,
+    0x6acbf2ef, 0xf4cb5823, 0x58d978fa, 0xc6d9d236, 0x25de5db8,
+    0xbbdef774, 0xa2d7327e, 0x3cd798b2, 0xdfd0173c, 0x41d0bdf0,
+    0xc6f32655, 0x58f38c99, 0xbbf40317, 0x25f4a9db, 0x3cfd6cd1,
+    0xa2fdc61d, 0x41fa4993, 0xdffae35f, 0x73e8c386, 0xede8694a,
+    0x0eefe6c4, 0x90ef4c08, 0x89e68902, 0x17e623ce, 0xf4e1ac40,
+    0x6ae1068c, 0xbba0ebd0, 0x25a0411c, 0xc6a7ce92, 0x58a7645e,
+    0x41aea154, 0xdfae0b98, 0x3ca98416, 0xa2a92eda, 0x0ebb0e03,
+    0x90bba4cf, 0x73bc2b41, 0xedbc818d, 0xf4b54487, 0x6ab5ee4b,
+    0x89b261c5, 0x17b2cb09, 0x909150ac, 0x0e91fa60, 0xed9675ee,
+    0x7396df22, 0x6a9f1a28, 0xf49fb0e4, 0x17983f6a, 0x899895a6,
+    0x258ab57f, 0xbb8a1fb3, 0x588d903d, 0xc68d3af1, 0xdf84fffb,
+    0x41845537, 0xa283dab9, 0x3c837075, 0xda853b53, 0x4485919f,
+    0xa7821e11, 0x3982b4dd, 0x208b71d7, 0xbe8bdb1b, 0x5d8c5495,
+    0xc38cfe59, 0x6f9ede80, 0xf19e744c, 0x1299fbc2, 0x8c99510e,
+    0x95909404, 0x0b903ec8, 0xe897b146, 0x76971b8a, 0xf1b4802f,
+    0x6fb42ae3, 0x8cb3a56d, 0x12b30fa1, 0x0bbacaab, 0x95ba6067,
+    0x76bdefe9, 0xe8bd4525, 0x44af65fc, 0xdaafcf30, 0x39a840be,
+    0xa7a8ea72, 0xbea12f78, 0x20a185b4, 0xc3a60a3a, 0x5da6a0f6,
+    0x8ce74daa, 0x12e7e766, 0xf1e068e8, 0x6fe0c224, 0x76e9072e,
+    0xe8e9ade2, 0x0bee226c, 0x95ee88a0, 0x39fca879, 0xa7fc02b5,
+    0x44fb8d3b, 0xdafb27f7, 0xc3f2e2fd, 0x5df24831, 0xbef5c7bf,
+    0x20f56d73, 0xa7d6f6d6, 0x39d65c1a, 0xdad1d394, 0x44d17958,
+    0x5dd8bc52, 0xc3d8169e, 0x20df9910, 0xbedf33dc, 0x12cd1305,
+    0x8ccdb9c9, 0x6fca3647, 0xf1ca9c8b, 0xe8c35981, 0x76c3f34d,
+    0x95c47cc3, 0x0bc4d60f, 0x3747a67a, 0xa9470cb6, 0x4a408338,
+    0xd44029f4, 0xcd49ecfe, 0x53494632, 0xb04ec9bc, 0x2e4e6370,
+    0x825c43a9, 0x1c5ce965, 0xff5b66eb, 0x615bcc27, 0x7852092d,
+    0xe652a3e1, 0x05552c6f, 0x9b5586a3, 0x1c761d06, 0x8276b7ca,
+    0x61713844, 0xff719288, 0xe6785782, 0x7878fd4e, 0x9b7f72c0,
+    0x057fd80c, 0xa96df8d5, 0x376d5219, 0xd46add97, 0x4a6a775b,
+    0x5363b251, 0xcd63189d, 0x2e649713, 0xb0643ddf, 0x6125d083,
+    0xff257a4f, 0x1c22f5c1, 0x82225f0d, 0x9b2b9a07, 0x052b30cb,
+    0xe62cbf45, 0x782c1589, 0xd43e3550, 0x4a3e9f9c, 0xa9391012,
+    0x3739bade, 0x2e307fd4, 0xb030d518, 0x53375a96, 0xcd37f05a,
+    0x4a146bff, 0xd414c133, 0x37134ebd, 0xa913e471, 0xb01a217b,
+    0x2e1a8bb7, 0xcd1d0439, 0x531daef5, 0xff0f8e2c, 0x610f24e0,
+    0x8208ab6e, 0x1c0801a2, 0x0501c4a8, 0x9b016e64, 0x7806e1ea,
+    0xe6064b26}};
+
 #endif
-  }
-};
+
+#endif
+
+#if N == 3
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f,
+    0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999,
+    0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee,
+    0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615,
+    0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383,
+    0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb,
+    0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275,
+    0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d,
+    0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b,
+    0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460,
+    0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317,
+    0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1,
+    0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5,
+    0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd,
+    0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04,
+    0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c,
+    0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7,
+    0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11,
+    0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66,
+    0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7,
+    0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871,
+    0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309,
+    0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd,
+    0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85,
+    0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913,
+    0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d,
+    0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a,
+    0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc,
+    0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57,
+    0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f,
+    0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6,
+    0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e,
+    0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f,
+    0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289,
+    0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe,
+    0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05,
+    0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893,
+    0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb,
+    0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0,
+    0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8,
+    0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e,
+    0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5,
+    0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2,
+    0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574,
+    0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5,
+    0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add,
+    0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114,
+    0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c,
+    0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7,
+    0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701,
+    0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076,
+    0x09cd8551},
+   {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193,
+    0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2,
+    0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c,
+    0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71,
+    0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a,
+    0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d,
+    0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71,
+    0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436,
+    0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d,
+    0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000,
+    0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae,
+    0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf,
+    0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930,
+    0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277,
+    0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff,
+    0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8,
+    0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef,
+    0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e,
+    0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20,
+    0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95,
+    0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e,
+    0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9,
+    0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d,
+    0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a,
+    0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151,
+    0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4,
+    0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a,
+    0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b,
+    0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c,
+    0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b,
+    0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3,
+    0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4,
+    0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b,
+    0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a,
+    0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4,
+    0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189,
+    0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92,
+    0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5,
+    0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9,
+    0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe,
+    0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5,
+    0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8,
+    0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66,
+    0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707,
+    0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8,
+    0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f,
+    0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707,
+    0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40,
+    0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017,
+    0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876,
+    0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8,
+    0x7bc97a0c},
+   {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300,
+    0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0,
+    0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80,
+    0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701,
+    0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41,
+    0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81,
+    0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43,
+    0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83,
+    0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3,
+    0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42,
+    0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202,
+    0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2,
+    0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7,
+    0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407,
+    0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47,
+    0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87,
+    0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86,
+    0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46,
+    0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506,
+    0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44,
+    0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704,
+    0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4,
+    0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5,
+    0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505,
+    0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45,
+    0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f,
+    0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f,
+    0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f,
+    0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e,
+    0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e,
+    0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e,
+    0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce,
+    0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c,
+    0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc,
+    0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c,
+    0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d,
+    0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d,
+    0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d,
+    0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88,
+    0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48,
+    0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708,
+    0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89,
+    0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9,
+    0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309,
+    0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb,
+    0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b,
+    0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b,
+    0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b,
+    0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a,
+    0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a,
+    0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a,
+    0x7851a2ca},
+   {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb,
+    0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8,
+    0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0,
+    0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f,
+    0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a,
+    0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf,
+    0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5,
+    0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380,
+    0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815,
+    0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa,
+    0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2,
+    0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1,
+    0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1,
+    0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4,
+    0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa,
+    0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df,
+    0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6,
+    0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5,
+    0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad,
+    0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca,
+    0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f,
+    0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a,
+    0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8,
+    0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d,
+    0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708,
+    0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d,
+    0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865,
+    0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636,
+    0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f,
+    0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a,
+    0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744,
+    0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061,
+    0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0,
+    0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293,
+    0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb,
+    0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874,
+    0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1,
+    0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4,
+    0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f,
+    0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a,
+    0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f,
+    0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120,
+    0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778,
+    0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b,
+    0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a,
+    0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af,
+    0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81,
+    0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4,
+    0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd,
+    0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e,
+    0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6,
+    0x566b6848},
+   {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59,
+    0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4,
+    0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67,
+    0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef,
+    0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97,
+    0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88,
+    0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687,
+    0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698,
+    0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0,
+    0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068,
+    0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb,
+    0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056,
+    0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016,
+    0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009,
+    0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028,
+    0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037,
+    0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a,
+    0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7,
+    0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054,
+    0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7,
+    0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af,
+    0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0,
+    0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4,
+    0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab,
+    0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3,
+    0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a,
+    0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9,
+    0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54,
+    0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09,
+    0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16,
+    0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37,
+    0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28,
+    0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e,
+    0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3,
+    0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40,
+    0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8,
+    0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0,
+    0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf,
+    0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6,
+    0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9,
+    0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1,
+    0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059,
+    0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca,
+    0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067,
+    0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031,
+    0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e,
+    0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f,
+    0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010,
+    0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d,
+    0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0,
+    0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073,
+    0xd8ac6b35},
+   {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2,
+    0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd,
+    0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696,
+    0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3,
+    0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f,
+    0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35,
+    0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5,
+    0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f,
+    0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673,
+    0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46,
+    0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d,
+    0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632,
+    0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28,
+    0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192,
+    0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c,
+    0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6,
+    0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0,
+    0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff,
+    0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4,
+    0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95,
+    0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9,
+    0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03,
+    0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7,
+    0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d,
+    0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151,
+    0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808,
+    0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343,
+    0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c,
+    0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a,
+    0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0,
+    0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e,
+    0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594,
+    0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6,
+    0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399,
+    0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2,
+    0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7,
+    0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb,
+    0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571,
+    0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289,
+    0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33,
+    0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f,
+    0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a,
+    0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461,
+    0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e,
+    0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c,
+    0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6,
+    0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918,
+    0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2,
+    0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484,
+    0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb,
+    0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0,
+    0xa140efa8},
+   {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706,
+    0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed,
+    0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289,
+    0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a,
+    0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214,
+    0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3,
+    0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3,
+    0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254,
+    0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a,
+    0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9,
+    0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad,
+    0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746,
+    0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060,
+    0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187,
+    0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef,
+    0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408,
+    0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e,
+    0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495,
+    0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1,
+    0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532,
+    0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c,
+    0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb,
+    0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb,
+    0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c,
+    0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42,
+    0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060,
+    0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04,
+    0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef,
+    0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99,
+    0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e,
+    0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16,
+    0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1,
+    0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7,
+    0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c,
+    0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38,
+    0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb,
+    0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5,
+    0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42,
+    0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62,
+    0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85,
+    0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb,
+    0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18,
+    0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c,
+    0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997,
+    0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1,
+    0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36,
+    0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e,
+    0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9,
+    0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf,
+    0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24,
+    0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040,
+    0x917cd6a1},
+   {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf,
+    0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd,
+    0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896,
+    0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9,
+    0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3,
+    0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f,
+    0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d,
+    0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1,
+    0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab,
+    0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4,
+    0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f,
+    0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d,
+    0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4,
+    0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978,
+    0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad,
+    0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621,
+    0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46,
+    0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854,
+    0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f,
+    0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a,
+    0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890,
+    0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c,
+    0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4,
+    0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238,
+    0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622,
+    0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab,
+    0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0,
+    0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2,
+    0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295,
+    0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19,
+    0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc,
+    0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140,
+    0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd,
+    0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf,
+    0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184,
+    0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb,
+    0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1,
+    0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d,
+    0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb,
+    0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257,
+    0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d,
+    0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22,
+    0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069,
+    0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b,
+    0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6,
+    0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a,
+    0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf,
+    0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33,
+    0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254,
+    0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146,
+    0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d,
+    0x18ba364e}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0x43cba68700000000, 0xc7903cd400000000,
+    0x845b9a5300000000, 0xcf27087300000000, 0x8cecaef400000000,
+    0x08b734a700000000, 0x4b7c922000000000, 0x9e4f10e600000000,
+    0xdd84b66100000000, 0x59df2c3200000000, 0x1a148ab500000000,
+    0x5168189500000000, 0x12a3be1200000000, 0x96f8244100000000,
+    0xd53382c600000000, 0x7d99511700000000, 0x3e52f79000000000,
+    0xba096dc300000000, 0xf9c2cb4400000000, 0xb2be596400000000,
+    0xf175ffe300000000, 0x752e65b000000000, 0x36e5c33700000000,
+    0xe3d641f100000000, 0xa01de77600000000, 0x24467d2500000000,
+    0x678ddba200000000, 0x2cf1498200000000, 0x6f3aef0500000000,
+    0xeb61755600000000, 0xa8aad3d100000000, 0xfa32a32e00000000,
+    0xb9f905a900000000, 0x3da29ffa00000000, 0x7e69397d00000000,
+    0x3515ab5d00000000, 0x76de0dda00000000, 0xf285978900000000,
+    0xb14e310e00000000, 0x647db3c800000000, 0x27b6154f00000000,
+    0xa3ed8f1c00000000, 0xe026299b00000000, 0xab5abbbb00000000,
+    0xe8911d3c00000000, 0x6cca876f00000000, 0x2f0121e800000000,
+    0x87abf23900000000, 0xc46054be00000000, 0x403bceed00000000,
+    0x03f0686a00000000, 0x488cfa4a00000000, 0x0b475ccd00000000,
+    0x8f1cc69e00000000, 0xccd7601900000000, 0x19e4e2df00000000,
+    0x5a2f445800000000, 0xde74de0b00000000, 0x9dbf788c00000000,
+    0xd6c3eaac00000000, 0x95084c2b00000000, 0x1153d67800000000,
+    0x529870ff00000000, 0xf465465d00000000, 0xb7aee0da00000000,
+    0x33f57a8900000000, 0x703edc0e00000000, 0x3b424e2e00000000,
+    0x7889e8a900000000, 0xfcd272fa00000000, 0xbf19d47d00000000,
+    0x6a2a56bb00000000, 0x29e1f03c00000000, 0xadba6a6f00000000,
+    0xee71cce800000000, 0xa50d5ec800000000, 0xe6c6f84f00000000,
+    0x629d621c00000000, 0x2156c49b00000000, 0x89fc174a00000000,
+    0xca37b1cd00000000, 0x4e6c2b9e00000000, 0x0da78d1900000000,
+    0x46db1f3900000000, 0x0510b9be00000000, 0x814b23ed00000000,
+    0xc280856a00000000, 0x17b307ac00000000, 0x5478a12b00000000,
+    0xd0233b7800000000, 0x93e89dff00000000, 0xd8940fdf00000000,
+    0x9b5fa95800000000, 0x1f04330b00000000, 0x5ccf958c00000000,
+    0x0e57e57300000000, 0x4d9c43f400000000, 0xc9c7d9a700000000,
+    0x8a0c7f2000000000, 0xc170ed0000000000, 0x82bb4b8700000000,
+    0x06e0d1d400000000, 0x452b775300000000, 0x9018f59500000000,
+    0xd3d3531200000000, 0x5788c94100000000, 0x14436fc600000000,
+    0x5f3ffde600000000, 0x1cf45b6100000000, 0x98afc13200000000,
+    0xdb6467b500000000, 0x73ceb46400000000, 0x300512e300000000,
+    0xb45e88b000000000, 0xf7952e3700000000, 0xbce9bc1700000000,
+    0xff221a9000000000, 0x7b7980c300000000, 0x38b2264400000000,
+    0xed81a48200000000, 0xae4a020500000000, 0x2a11985600000000,
+    0x69da3ed100000000, 0x22a6acf100000000, 0x616d0a7600000000,
+    0xe536902500000000, 0xa6fd36a200000000, 0xe8cb8cba00000000,
+    0xab002a3d00000000, 0x2f5bb06e00000000, 0x6c9016e900000000,
+    0x27ec84c900000000, 0x6427224e00000000, 0xe07cb81d00000000,
+    0xa3b71e9a00000000, 0x76849c5c00000000, 0x354f3adb00000000,
+    0xb114a08800000000, 0xf2df060f00000000, 0xb9a3942f00000000,
+    0xfa6832a800000000, 0x7e33a8fb00000000, 0x3df80e7c00000000,
+    0x9552ddad00000000, 0xd6997b2a00000000, 0x52c2e17900000000,
+    0x110947fe00000000, 0x5a75d5de00000000, 0x19be735900000000,
+    0x9de5e90a00000000, 0xde2e4f8d00000000, 0x0b1dcd4b00000000,
+    0x48d66bcc00000000, 0xcc8df19f00000000, 0x8f46571800000000,
+    0xc43ac53800000000, 0x87f163bf00000000, 0x03aaf9ec00000000,
+    0x40615f6b00000000, 0x12f92f9400000000, 0x5132891300000000,
+    0xd569134000000000, 0x96a2b5c700000000, 0xddde27e700000000,
+    0x9e15816000000000, 0x1a4e1b3300000000, 0x5985bdb400000000,
+    0x8cb63f7200000000, 0xcf7d99f500000000, 0x4b2603a600000000,
+    0x08eda52100000000, 0x4391370100000000, 0x005a918600000000,
+    0x84010bd500000000, 0xc7caad5200000000, 0x6f607e8300000000,
+    0x2cabd80400000000, 0xa8f0425700000000, 0xeb3be4d000000000,
+    0xa04776f000000000, 0xe38cd07700000000, 0x67d74a2400000000,
+    0x241ceca300000000, 0xf12f6e6500000000, 0xb2e4c8e200000000,
+    0x36bf52b100000000, 0x7574f43600000000, 0x3e08661600000000,
+    0x7dc3c09100000000, 0xf9985ac200000000, 0xba53fc4500000000,
+    0x1caecae700000000, 0x5f656c6000000000, 0xdb3ef63300000000,
+    0x98f550b400000000, 0xd389c29400000000, 0x9042641300000000,
+    0x1419fe4000000000, 0x57d258c700000000, 0x82e1da0100000000,
+    0xc12a7c8600000000, 0x4571e6d500000000, 0x06ba405200000000,
+    0x4dc6d27200000000, 0x0e0d74f500000000, 0x8a56eea600000000,
+    0xc99d482100000000, 0x61379bf000000000, 0x22fc3d7700000000,
+    0xa6a7a72400000000, 0xe56c01a300000000, 0xae10938300000000,
+    0xeddb350400000000, 0x6980af5700000000, 0x2a4b09d000000000,
+    0xff788b1600000000, 0xbcb32d9100000000, 0x38e8b7c200000000,
+    0x7b23114500000000, 0x305f836500000000, 0x739425e200000000,
+    0xf7cfbfb100000000, 0xb404193600000000, 0xe69c69c900000000,
+    0xa557cf4e00000000, 0x210c551d00000000, 0x62c7f39a00000000,
+    0x29bb61ba00000000, 0x6a70c73d00000000, 0xee2b5d6e00000000,
+    0xade0fbe900000000, 0x78d3792f00000000, 0x3b18dfa800000000,
+    0xbf4345fb00000000, 0xfc88e37c00000000, 0xb7f4715c00000000,
+    0xf43fd7db00000000, 0x70644d8800000000, 0x33afeb0f00000000,
+    0x9b0538de00000000, 0xd8ce9e5900000000, 0x5c95040a00000000,
+    0x1f5ea28d00000000, 0x542230ad00000000, 0x17e9962a00000000,
+    0x93b20c7900000000, 0xd079aafe00000000, 0x054a283800000000,
+    0x46818ebf00000000, 0xc2da14ec00000000, 0x8111b26b00000000,
+    0xca6d204b00000000, 0x89a686cc00000000, 0x0dfd1c9f00000000,
+    0x4e36ba1800000000},
+   {0x0000000000000000, 0xe1b652ef00000000, 0x836bd40500000000,
+    0x62dd86ea00000000, 0x06d7a80b00000000, 0xe761fae400000000,
+    0x85bc7c0e00000000, 0x640a2ee100000000, 0x0cae511700000000,
+    0xed1803f800000000, 0x8fc5851200000000, 0x6e73d7fd00000000,
+    0x0a79f91c00000000, 0xebcfabf300000000, 0x89122d1900000000,
+    0x68a47ff600000000, 0x185ca32e00000000, 0xf9eaf1c100000000,
+    0x9b37772b00000000, 0x7a8125c400000000, 0x1e8b0b2500000000,
+    0xff3d59ca00000000, 0x9de0df2000000000, 0x7c568dcf00000000,
+    0x14f2f23900000000, 0xf544a0d600000000, 0x9799263c00000000,
+    0x762f74d300000000, 0x12255a3200000000, 0xf39308dd00000000,
+    0x914e8e3700000000, 0x70f8dcd800000000, 0x30b8465d00000000,
+    0xd10e14b200000000, 0xb3d3925800000000, 0x5265c0b700000000,
+    0x366fee5600000000, 0xd7d9bcb900000000, 0xb5043a5300000000,
+    0x54b268bc00000000, 0x3c16174a00000000, 0xdda045a500000000,
+    0xbf7dc34f00000000, 0x5ecb91a000000000, 0x3ac1bf4100000000,
+    0xdb77edae00000000, 0xb9aa6b4400000000, 0x581c39ab00000000,
+    0x28e4e57300000000, 0xc952b79c00000000, 0xab8f317600000000,
+    0x4a39639900000000, 0x2e334d7800000000, 0xcf851f9700000000,
+    0xad58997d00000000, 0x4ceecb9200000000, 0x244ab46400000000,
+    0xc5fce68b00000000, 0xa721606100000000, 0x4697328e00000000,
+    0x229d1c6f00000000, 0xc32b4e8000000000, 0xa1f6c86a00000000,
+    0x40409a8500000000, 0x60708dba00000000, 0x81c6df5500000000,
+    0xe31b59bf00000000, 0x02ad0b5000000000, 0x66a725b100000000,
+    0x8711775e00000000, 0xe5ccf1b400000000, 0x047aa35b00000000,
+    0x6cdedcad00000000, 0x8d688e4200000000, 0xefb508a800000000,
+    0x0e035a4700000000, 0x6a0974a600000000, 0x8bbf264900000000,
+    0xe962a0a300000000, 0x08d4f24c00000000, 0x782c2e9400000000,
+    0x999a7c7b00000000, 0xfb47fa9100000000, 0x1af1a87e00000000,
+    0x7efb869f00000000, 0x9f4dd47000000000, 0xfd90529a00000000,
+    0x1c26007500000000, 0x74827f8300000000, 0x95342d6c00000000,
+    0xf7e9ab8600000000, 0x165ff96900000000, 0x7255d78800000000,
+    0x93e3856700000000, 0xf13e038d00000000, 0x1088516200000000,
+    0x50c8cbe700000000, 0xb17e990800000000, 0xd3a31fe200000000,
+    0x32154d0d00000000, 0x561f63ec00000000, 0xb7a9310300000000,
+    0xd574b7e900000000, 0x34c2e50600000000, 0x5c669af000000000,
+    0xbdd0c81f00000000, 0xdf0d4ef500000000, 0x3ebb1c1a00000000,
+    0x5ab132fb00000000, 0xbb07601400000000, 0xd9dae6fe00000000,
+    0x386cb41100000000, 0x489468c900000000, 0xa9223a2600000000,
+    0xcbffbccc00000000, 0x2a49ee2300000000, 0x4e43c0c200000000,
+    0xaff5922d00000000, 0xcd2814c700000000, 0x2c9e462800000000,
+    0x443a39de00000000, 0xa58c6b3100000000, 0xc751eddb00000000,
+    0x26e7bf3400000000, 0x42ed91d500000000, 0xa35bc33a00000000,
+    0xc18645d000000000, 0x2030173f00000000, 0x81e66bae00000000,
+    0x6050394100000000, 0x028dbfab00000000, 0xe33bed4400000000,
+    0x8731c3a500000000, 0x6687914a00000000, 0x045a17a000000000,
+    0xe5ec454f00000000, 0x8d483ab900000000, 0x6cfe685600000000,
+    0x0e23eebc00000000, 0xef95bc5300000000, 0x8b9f92b200000000,
+    0x6a29c05d00000000, 0x08f446b700000000, 0xe942145800000000,
+    0x99bac88000000000, 0x780c9a6f00000000, 0x1ad11c8500000000,
+    0xfb674e6a00000000, 0x9f6d608b00000000, 0x7edb326400000000,
+    0x1c06b48e00000000, 0xfdb0e66100000000, 0x9514999700000000,
+    0x74a2cb7800000000, 0x167f4d9200000000, 0xf7c91f7d00000000,
+    0x93c3319c00000000, 0x7275637300000000, 0x10a8e59900000000,
+    0xf11eb77600000000, 0xb15e2df300000000, 0x50e87f1c00000000,
+    0x3235f9f600000000, 0xd383ab1900000000, 0xb78985f800000000,
+    0x563fd71700000000, 0x34e251fd00000000, 0xd554031200000000,
+    0xbdf07ce400000000, 0x5c462e0b00000000, 0x3e9ba8e100000000,
+    0xdf2dfa0e00000000, 0xbb27d4ef00000000, 0x5a91860000000000,
+    0x384c00ea00000000, 0xd9fa520500000000, 0xa9028edd00000000,
+    0x48b4dc3200000000, 0x2a695ad800000000, 0xcbdf083700000000,
+    0xafd526d600000000, 0x4e63743900000000, 0x2cbef2d300000000,
+    0xcd08a03c00000000, 0xa5acdfca00000000, 0x441a8d2500000000,
+    0x26c70bcf00000000, 0xc771592000000000, 0xa37b77c100000000,
+    0x42cd252e00000000, 0x2010a3c400000000, 0xc1a6f12b00000000,
+    0xe196e61400000000, 0x0020b4fb00000000, 0x62fd321100000000,
+    0x834b60fe00000000, 0xe7414e1f00000000, 0x06f71cf000000000,
+    0x642a9a1a00000000, 0x859cc8f500000000, 0xed38b70300000000,
+    0x0c8ee5ec00000000, 0x6e53630600000000, 0x8fe531e900000000,
+    0xebef1f0800000000, 0x0a594de700000000, 0x6884cb0d00000000,
+    0x893299e200000000, 0xf9ca453a00000000, 0x187c17d500000000,
+    0x7aa1913f00000000, 0x9b17c3d000000000, 0xff1ded3100000000,
+    0x1eabbfde00000000, 0x7c76393400000000, 0x9dc06bdb00000000,
+    0xf564142d00000000, 0x14d246c200000000, 0x760fc02800000000,
+    0x97b992c700000000, 0xf3b3bc2600000000, 0x1205eec900000000,
+    0x70d8682300000000, 0x916e3acc00000000, 0xd12ea04900000000,
+    0x3098f2a600000000, 0x5245744c00000000, 0xb3f326a300000000,
+    0xd7f9084200000000, 0x364f5aad00000000, 0x5492dc4700000000,
+    0xb5248ea800000000, 0xdd80f15e00000000, 0x3c36a3b100000000,
+    0x5eeb255b00000000, 0xbf5d77b400000000, 0xdb57595500000000,
+    0x3ae10bba00000000, 0x583c8d5000000000, 0xb98adfbf00000000,
+    0xc972036700000000, 0x28c4518800000000, 0x4a19d76200000000,
+    0xabaf858d00000000, 0xcfa5ab6c00000000, 0x2e13f98300000000,
+    0x4cce7f6900000000, 0xad782d8600000000, 0xc5dc527000000000,
+    0x246a009f00000000, 0x46b7867500000000, 0xa701d49a00000000,
+    0xc30bfa7b00000000, 0x22bda89400000000, 0x40602e7e00000000,
+    0xa1d67c9100000000},
+   {0x0000000000000000, 0x5880e2d700000000, 0xf106b47400000000,
+    0xa98656a300000000, 0xe20d68e900000000, 0xba8d8a3e00000000,
+    0x130bdc9d00000000, 0x4b8b3e4a00000000, 0x851da10900000000,
+    0xdd9d43de00000000, 0x741b157d00000000, 0x2c9bf7aa00000000,
+    0x6710c9e000000000, 0x3f902b3700000000, 0x96167d9400000000,
+    0xce969f4300000000, 0x0a3b421300000000, 0x52bba0c400000000,
+    0xfb3df66700000000, 0xa3bd14b000000000, 0xe8362afa00000000,
+    0xb0b6c82d00000000, 0x19309e8e00000000, 0x41b07c5900000000,
+    0x8f26e31a00000000, 0xd7a601cd00000000, 0x7e20576e00000000,
+    0x26a0b5b900000000, 0x6d2b8bf300000000, 0x35ab692400000000,
+    0x9c2d3f8700000000, 0xc4addd5000000000, 0x1476842600000000,
+    0x4cf666f100000000, 0xe570305200000000, 0xbdf0d28500000000,
+    0xf67beccf00000000, 0xaefb0e1800000000, 0x077d58bb00000000,
+    0x5ffdba6c00000000, 0x916b252f00000000, 0xc9ebc7f800000000,
+    0x606d915b00000000, 0x38ed738c00000000, 0x73664dc600000000,
+    0x2be6af1100000000, 0x8260f9b200000000, 0xdae01b6500000000,
+    0x1e4dc63500000000, 0x46cd24e200000000, 0xef4b724100000000,
+    0xb7cb909600000000, 0xfc40aedc00000000, 0xa4c04c0b00000000,
+    0x0d461aa800000000, 0x55c6f87f00000000, 0x9b50673c00000000,
+    0xc3d085eb00000000, 0x6a56d34800000000, 0x32d6319f00000000,
+    0x795d0fd500000000, 0x21dded0200000000, 0x885bbba100000000,
+    0xd0db597600000000, 0x28ec084d00000000, 0x706cea9a00000000,
+    0xd9eabc3900000000, 0x816a5eee00000000, 0xcae160a400000000,
+    0x9261827300000000, 0x3be7d4d000000000, 0x6367360700000000,
+    0xadf1a94400000000, 0xf5714b9300000000, 0x5cf71d3000000000,
+    0x0477ffe700000000, 0x4ffcc1ad00000000, 0x177c237a00000000,
+    0xbefa75d900000000, 0xe67a970e00000000, 0x22d74a5e00000000,
+    0x7a57a88900000000, 0xd3d1fe2a00000000, 0x8b511cfd00000000,
+    0xc0da22b700000000, 0x985ac06000000000, 0x31dc96c300000000,
+    0x695c741400000000, 0xa7caeb5700000000, 0xff4a098000000000,
+    0x56cc5f2300000000, 0x0e4cbdf400000000, 0x45c783be00000000,
+    0x1d47616900000000, 0xb4c137ca00000000, 0xec41d51d00000000,
+    0x3c9a8c6b00000000, 0x641a6ebc00000000, 0xcd9c381f00000000,
+    0x951cdac800000000, 0xde97e48200000000, 0x8617065500000000,
+    0x2f9150f600000000, 0x7711b22100000000, 0xb9872d6200000000,
+    0xe107cfb500000000, 0x4881991600000000, 0x10017bc100000000,
+    0x5b8a458b00000000, 0x030aa75c00000000, 0xaa8cf1ff00000000,
+    0xf20c132800000000, 0x36a1ce7800000000, 0x6e212caf00000000,
+    0xc7a77a0c00000000, 0x9f2798db00000000, 0xd4aca69100000000,
+    0x8c2c444600000000, 0x25aa12e500000000, 0x7d2af03200000000,
+    0xb3bc6f7100000000, 0xeb3c8da600000000, 0x42badb0500000000,
+    0x1a3a39d200000000, 0x51b1079800000000, 0x0931e54f00000000,
+    0xa0b7b3ec00000000, 0xf837513b00000000, 0x50d8119a00000000,
+    0x0858f34d00000000, 0xa1dea5ee00000000, 0xf95e473900000000,
+    0xb2d5797300000000, 0xea559ba400000000, 0x43d3cd0700000000,
+    0x1b532fd000000000, 0xd5c5b09300000000, 0x8d45524400000000,
+    0x24c304e700000000, 0x7c43e63000000000, 0x37c8d87a00000000,
+    0x6f483aad00000000, 0xc6ce6c0e00000000, 0x9e4e8ed900000000,
+    0x5ae3538900000000, 0x0263b15e00000000, 0xabe5e7fd00000000,
+    0xf365052a00000000, 0xb8ee3b6000000000, 0xe06ed9b700000000,
+    0x49e88f1400000000, 0x11686dc300000000, 0xdffef28000000000,
+    0x877e105700000000, 0x2ef846f400000000, 0x7678a42300000000,
+    0x3df39a6900000000, 0x657378be00000000, 0xccf52e1d00000000,
+    0x9475ccca00000000, 0x44ae95bc00000000, 0x1c2e776b00000000,
+    0xb5a821c800000000, 0xed28c31f00000000, 0xa6a3fd5500000000,
+    0xfe231f8200000000, 0x57a5492100000000, 0x0f25abf600000000,
+    0xc1b334b500000000, 0x9933d66200000000, 0x30b580c100000000,
+    0x6835621600000000, 0x23be5c5c00000000, 0x7b3ebe8b00000000,
+    0xd2b8e82800000000, 0x8a380aff00000000, 0x4e95d7af00000000,
+    0x1615357800000000, 0xbf9363db00000000, 0xe713810c00000000,
+    0xac98bf4600000000, 0xf4185d9100000000, 0x5d9e0b3200000000,
+    0x051ee9e500000000, 0xcb8876a600000000, 0x9308947100000000,
+    0x3a8ec2d200000000, 0x620e200500000000, 0x29851e4f00000000,
+    0x7105fc9800000000, 0xd883aa3b00000000, 0x800348ec00000000,
+    0x783419d700000000, 0x20b4fb0000000000, 0x8932ada300000000,
+    0xd1b24f7400000000, 0x9a39713e00000000, 0xc2b993e900000000,
+    0x6b3fc54a00000000, 0x33bf279d00000000, 0xfd29b8de00000000,
+    0xa5a95a0900000000, 0x0c2f0caa00000000, 0x54afee7d00000000,
+    0x1f24d03700000000, 0x47a432e000000000, 0xee22644300000000,
+    0xb6a2869400000000, 0x720f5bc400000000, 0x2a8fb91300000000,
+    0x8309efb000000000, 0xdb890d6700000000, 0x9002332d00000000,
+    0xc882d1fa00000000, 0x6104875900000000, 0x3984658e00000000,
+    0xf712facd00000000, 0xaf92181a00000000, 0x06144eb900000000,
+    0x5e94ac6e00000000, 0x151f922400000000, 0x4d9f70f300000000,
+    0xe419265000000000, 0xbc99c48700000000, 0x6c429df100000000,
+    0x34c27f2600000000, 0x9d44298500000000, 0xc5c4cb5200000000,
+    0x8e4ff51800000000, 0xd6cf17cf00000000, 0x7f49416c00000000,
+    0x27c9a3bb00000000, 0xe95f3cf800000000, 0xb1dfde2f00000000,
+    0x1859888c00000000, 0x40d96a5b00000000, 0x0b52541100000000,
+    0x53d2b6c600000000, 0xfa54e06500000000, 0xa2d402b200000000,
+    0x6679dfe200000000, 0x3ef93d3500000000, 0x977f6b9600000000,
+    0xcfff894100000000, 0x8474b70b00000000, 0xdcf455dc00000000,
+    0x7572037f00000000, 0x2df2e1a800000000, 0xe3647eeb00000000,
+    0xbbe49c3c00000000, 0x1262ca9f00000000, 0x4ae2284800000000,
+    0x0169160200000000, 0x59e9f4d500000000, 0xf06fa27600000000,
+    0xa8ef40a100000000},
+   {0x0000000000000000, 0x463b676500000000, 0x8c76ceca00000000,
+    0xca4da9af00000000, 0x59ebed4e00000000, 0x1fd08a2b00000000,
+    0xd59d238400000000, 0x93a644e100000000, 0xb2d6db9d00000000,
+    0xf4edbcf800000000, 0x3ea0155700000000, 0x789b723200000000,
+    0xeb3d36d300000000, 0xad0651b600000000, 0x674bf81900000000,
+    0x21709f7c00000000, 0x25abc6e000000000, 0x6390a18500000000,
+    0xa9dd082a00000000, 0xefe66f4f00000000, 0x7c402bae00000000,
+    0x3a7b4ccb00000000, 0xf036e56400000000, 0xb60d820100000000,
+    0x977d1d7d00000000, 0xd1467a1800000000, 0x1b0bd3b700000000,
+    0x5d30b4d200000000, 0xce96f03300000000, 0x88ad975600000000,
+    0x42e03ef900000000, 0x04db599c00000000, 0x0b50fc1a00000000,
+    0x4d6b9b7f00000000, 0x872632d000000000, 0xc11d55b500000000,
+    0x52bb115400000000, 0x1480763100000000, 0xdecddf9e00000000,
+    0x98f6b8fb00000000, 0xb986278700000000, 0xffbd40e200000000,
+    0x35f0e94d00000000, 0x73cb8e2800000000, 0xe06dcac900000000,
+    0xa656adac00000000, 0x6c1b040300000000, 0x2a20636600000000,
+    0x2efb3afa00000000, 0x68c05d9f00000000, 0xa28df43000000000,
+    0xe4b6935500000000, 0x7710d7b400000000, 0x312bb0d100000000,
+    0xfb66197e00000000, 0xbd5d7e1b00000000, 0x9c2de16700000000,
+    0xda16860200000000, 0x105b2fad00000000, 0x566048c800000000,
+    0xc5c60c2900000000, 0x83fd6b4c00000000, 0x49b0c2e300000000,
+    0x0f8ba58600000000, 0x16a0f83500000000, 0x509b9f5000000000,
+    0x9ad636ff00000000, 0xdced519a00000000, 0x4f4b157b00000000,
+    0x0970721e00000000, 0xc33ddbb100000000, 0x8506bcd400000000,
+    0xa47623a800000000, 0xe24d44cd00000000, 0x2800ed6200000000,
+    0x6e3b8a0700000000, 0xfd9dcee600000000, 0xbba6a98300000000,
+    0x71eb002c00000000, 0x37d0674900000000, 0x330b3ed500000000,
+    0x753059b000000000, 0xbf7df01f00000000, 0xf946977a00000000,
+    0x6ae0d39b00000000, 0x2cdbb4fe00000000, 0xe6961d5100000000,
+    0xa0ad7a3400000000, 0x81dde54800000000, 0xc7e6822d00000000,
+    0x0dab2b8200000000, 0x4b904ce700000000, 0xd836080600000000,
+    0x9e0d6f6300000000, 0x5440c6cc00000000, 0x127ba1a900000000,
+    0x1df0042f00000000, 0x5bcb634a00000000, 0x9186cae500000000,
+    0xd7bdad8000000000, 0x441be96100000000, 0x02208e0400000000,
+    0xc86d27ab00000000, 0x8e5640ce00000000, 0xaf26dfb200000000,
+    0xe91db8d700000000, 0x2350117800000000, 0x656b761d00000000,
+    0xf6cd32fc00000000, 0xb0f6559900000000, 0x7abbfc3600000000,
+    0x3c809b5300000000, 0x385bc2cf00000000, 0x7e60a5aa00000000,
+    0xb42d0c0500000000, 0xf2166b6000000000, 0x61b02f8100000000,
+    0x278b48e400000000, 0xedc6e14b00000000, 0xabfd862e00000000,
+    0x8a8d195200000000, 0xccb67e3700000000, 0x06fbd79800000000,
+    0x40c0b0fd00000000, 0xd366f41c00000000, 0x955d937900000000,
+    0x5f103ad600000000, 0x192b5db300000000, 0x2c40f16b00000000,
+    0x6a7b960e00000000, 0xa0363fa100000000, 0xe60d58c400000000,
+    0x75ab1c2500000000, 0x33907b4000000000, 0xf9ddd2ef00000000,
+    0xbfe6b58a00000000, 0x9e962af600000000, 0xd8ad4d9300000000,
+    0x12e0e43c00000000, 0x54db835900000000, 0xc77dc7b800000000,
+    0x8146a0dd00000000, 0x4b0b097200000000, 0x0d306e1700000000,
+    0x09eb378b00000000, 0x4fd050ee00000000, 0x859df94100000000,
+    0xc3a69e2400000000, 0x5000dac500000000, 0x163bbda000000000,
+    0xdc76140f00000000, 0x9a4d736a00000000, 0xbb3dec1600000000,
+    0xfd068b7300000000, 0x374b22dc00000000, 0x717045b900000000,
+    0xe2d6015800000000, 0xa4ed663d00000000, 0x6ea0cf9200000000,
+    0x289ba8f700000000, 0x27100d7100000000, 0x612b6a1400000000,
+    0xab66c3bb00000000, 0xed5da4de00000000, 0x7efbe03f00000000,
+    0x38c0875a00000000, 0xf28d2ef500000000, 0xb4b6499000000000,
+    0x95c6d6ec00000000, 0xd3fdb18900000000, 0x19b0182600000000,
+    0x5f8b7f4300000000, 0xcc2d3ba200000000, 0x8a165cc700000000,
+    0x405bf56800000000, 0x0660920d00000000, 0x02bbcb9100000000,
+    0x4480acf400000000, 0x8ecd055b00000000, 0xc8f6623e00000000,
+    0x5b5026df00000000, 0x1d6b41ba00000000, 0xd726e81500000000,
+    0x911d8f7000000000, 0xb06d100c00000000, 0xf656776900000000,
+    0x3c1bdec600000000, 0x7a20b9a300000000, 0xe986fd4200000000,
+    0xafbd9a2700000000, 0x65f0338800000000, 0x23cb54ed00000000,
+    0x3ae0095e00000000, 0x7cdb6e3b00000000, 0xb696c79400000000,
+    0xf0ada0f100000000, 0x630be41000000000, 0x2530837500000000,
+    0xef7d2ada00000000, 0xa9464dbf00000000, 0x8836d2c300000000,
+    0xce0db5a600000000, 0x04401c0900000000, 0x427b7b6c00000000,
+    0xd1dd3f8d00000000, 0x97e658e800000000, 0x5dabf14700000000,
+    0x1b90962200000000, 0x1f4bcfbe00000000, 0x5970a8db00000000,
+    0x933d017400000000, 0xd506661100000000, 0x46a022f000000000,
+    0x009b459500000000, 0xcad6ec3a00000000, 0x8ced8b5f00000000,
+    0xad9d142300000000, 0xeba6734600000000, 0x21ebdae900000000,
+    0x67d0bd8c00000000, 0xf476f96d00000000, 0xb24d9e0800000000,
+    0x780037a700000000, 0x3e3b50c200000000, 0x31b0f54400000000,
+    0x778b922100000000, 0xbdc63b8e00000000, 0xfbfd5ceb00000000,
+    0x685b180a00000000, 0x2e607f6f00000000, 0xe42dd6c000000000,
+    0xa216b1a500000000, 0x83662ed900000000, 0xc55d49bc00000000,
+    0x0f10e01300000000, 0x492b877600000000, 0xda8dc39700000000,
+    0x9cb6a4f200000000, 0x56fb0d5d00000000, 0x10c06a3800000000,
+    0x141b33a400000000, 0x522054c100000000, 0x986dfd6e00000000,
+    0xde569a0b00000000, 0x4df0deea00000000, 0x0bcbb98f00000000,
+    0xc186102000000000, 0x87bd774500000000, 0xa6cde83900000000,
+    0xe0f68f5c00000000, 0x2abb26f300000000, 0x6c80419600000000,
+    0xff26057700000000, 0xb91d621200000000, 0x7350cbbd00000000,
+    0x356bacd800000000},
+   {0x0000000000000000, 0x9e83da9f00000000, 0x7d01c4e400000000,
+    0xe3821e7b00000000, 0xbb04f91200000000, 0x2587238d00000000,
+    0xc6053df600000000, 0x5886e76900000000, 0x7609f22500000000,
+    0xe88a28ba00000000, 0x0b0836c100000000, 0x958bec5e00000000,
+    0xcd0d0b3700000000, 0x538ed1a800000000, 0xb00ccfd300000000,
+    0x2e8f154c00000000, 0xec12e44b00000000, 0x72913ed400000000,
+    0x911320af00000000, 0x0f90fa3000000000, 0x57161d5900000000,
+    0xc995c7c600000000, 0x2a17d9bd00000000, 0xb494032200000000,
+    0x9a1b166e00000000, 0x0498ccf100000000, 0xe71ad28a00000000,
+    0x7999081500000000, 0x211fef7c00000000, 0xbf9c35e300000000,
+    0x5c1e2b9800000000, 0xc29df10700000000, 0xd825c89700000000,
+    0x46a6120800000000, 0xa5240c7300000000, 0x3ba7d6ec00000000,
+    0x6321318500000000, 0xfda2eb1a00000000, 0x1e20f56100000000,
+    0x80a32ffe00000000, 0xae2c3ab200000000, 0x30afe02d00000000,
+    0xd32dfe5600000000, 0x4dae24c900000000, 0x1528c3a000000000,
+    0x8bab193f00000000, 0x6829074400000000, 0xf6aadddb00000000,
+    0x34372cdc00000000, 0xaab4f64300000000, 0x4936e83800000000,
+    0xd7b532a700000000, 0x8f33d5ce00000000, 0x11b00f5100000000,
+    0xf232112a00000000, 0x6cb1cbb500000000, 0x423edef900000000,
+    0xdcbd046600000000, 0x3f3f1a1d00000000, 0xa1bcc08200000000,
+    0xf93a27eb00000000, 0x67b9fd7400000000, 0x843be30f00000000,
+    0x1ab8399000000000, 0xf14de1f400000000, 0x6fce3b6b00000000,
+    0x8c4c251000000000, 0x12cfff8f00000000, 0x4a4918e600000000,
+    0xd4cac27900000000, 0x3748dc0200000000, 0xa9cb069d00000000,
+    0x874413d100000000, 0x19c7c94e00000000, 0xfa45d73500000000,
+    0x64c60daa00000000, 0x3c40eac300000000, 0xa2c3305c00000000,
+    0x41412e2700000000, 0xdfc2f4b800000000, 0x1d5f05bf00000000,
+    0x83dcdf2000000000, 0x605ec15b00000000, 0xfedd1bc400000000,
+    0xa65bfcad00000000, 0x38d8263200000000, 0xdb5a384900000000,
+    0x45d9e2d600000000, 0x6b56f79a00000000, 0xf5d52d0500000000,
+    0x1657337e00000000, 0x88d4e9e100000000, 0xd0520e8800000000,
+    0x4ed1d41700000000, 0xad53ca6c00000000, 0x33d010f300000000,
+    0x2968296300000000, 0xb7ebf3fc00000000, 0x5469ed8700000000,
+    0xcaea371800000000, 0x926cd07100000000, 0x0cef0aee00000000,
+    0xef6d149500000000, 0x71eece0a00000000, 0x5f61db4600000000,
+    0xc1e201d900000000, 0x22601fa200000000, 0xbce3c53d00000000,
+    0xe465225400000000, 0x7ae6f8cb00000000, 0x9964e6b000000000,
+    0x07e73c2f00000000, 0xc57acd2800000000, 0x5bf917b700000000,
+    0xb87b09cc00000000, 0x26f8d35300000000, 0x7e7e343a00000000,
+    0xe0fdeea500000000, 0x037ff0de00000000, 0x9dfc2a4100000000,
+    0xb3733f0d00000000, 0x2df0e59200000000, 0xce72fbe900000000,
+    0x50f1217600000000, 0x0877c61f00000000, 0x96f41c8000000000,
+    0x757602fb00000000, 0xebf5d86400000000, 0xa39db33200000000,
+    0x3d1e69ad00000000, 0xde9c77d600000000, 0x401fad4900000000,
+    0x18994a2000000000, 0x861a90bf00000000, 0x65988ec400000000,
+    0xfb1b545b00000000, 0xd594411700000000, 0x4b179b8800000000,
+    0xa89585f300000000, 0x36165f6c00000000, 0x6e90b80500000000,
+    0xf013629a00000000, 0x13917ce100000000, 0x8d12a67e00000000,
+    0x4f8f577900000000, 0xd10c8de600000000, 0x328e939d00000000,
+    0xac0d490200000000, 0xf48bae6b00000000, 0x6a0874f400000000,
+    0x898a6a8f00000000, 0x1709b01000000000, 0x3986a55c00000000,
+    0xa7057fc300000000, 0x448761b800000000, 0xda04bb2700000000,
+    0x82825c4e00000000, 0x1c0186d100000000, 0xff8398aa00000000,
+    0x6100423500000000, 0x7bb87ba500000000, 0xe53ba13a00000000,
+    0x06b9bf4100000000, 0x983a65de00000000, 0xc0bc82b700000000,
+    0x5e3f582800000000, 0xbdbd465300000000, 0x233e9ccc00000000,
+    0x0db1898000000000, 0x9332531f00000000, 0x70b04d6400000000,
+    0xee3397fb00000000, 0xb6b5709200000000, 0x2836aa0d00000000,
+    0xcbb4b47600000000, 0x55376ee900000000, 0x97aa9fee00000000,
+    0x0929457100000000, 0xeaab5b0a00000000, 0x7428819500000000,
+    0x2cae66fc00000000, 0xb22dbc6300000000, 0x51afa21800000000,
+    0xcf2c788700000000, 0xe1a36dcb00000000, 0x7f20b75400000000,
+    0x9ca2a92f00000000, 0x022173b000000000, 0x5aa794d900000000,
+    0xc4244e4600000000, 0x27a6503d00000000, 0xb9258aa200000000,
+    0x52d052c600000000, 0xcc53885900000000, 0x2fd1962200000000,
+    0xb1524cbd00000000, 0xe9d4abd400000000, 0x7757714b00000000,
+    0x94d56f3000000000, 0x0a56b5af00000000, 0x24d9a0e300000000,
+    0xba5a7a7c00000000, 0x59d8640700000000, 0xc75bbe9800000000,
+    0x9fdd59f100000000, 0x015e836e00000000, 0xe2dc9d1500000000,
+    0x7c5f478a00000000, 0xbec2b68d00000000, 0x20416c1200000000,
+    0xc3c3726900000000, 0x5d40a8f600000000, 0x05c64f9f00000000,
+    0x9b45950000000000, 0x78c78b7b00000000, 0xe64451e400000000,
+    0xc8cb44a800000000, 0x56489e3700000000, 0xb5ca804c00000000,
+    0x2b495ad300000000, 0x73cfbdba00000000, 0xed4c672500000000,
+    0x0ece795e00000000, 0x904da3c100000000, 0x8af59a5100000000,
+    0x147640ce00000000, 0xf7f45eb500000000, 0x6977842a00000000,
+    0x31f1634300000000, 0xaf72b9dc00000000, 0x4cf0a7a700000000,
+    0xd2737d3800000000, 0xfcfc687400000000, 0x627fb2eb00000000,
+    0x81fdac9000000000, 0x1f7e760f00000000, 0x47f8916600000000,
+    0xd97b4bf900000000, 0x3af9558200000000, 0xa47a8f1d00000000,
+    0x66e77e1a00000000, 0xf864a48500000000, 0x1be6bafe00000000,
+    0x8565606100000000, 0xdde3870800000000, 0x43605d9700000000,
+    0xa0e243ec00000000, 0x3e61997300000000, 0x10ee8c3f00000000,
+    0x8e6d56a000000000, 0x6def48db00000000, 0xf36c924400000000,
+    0xabea752d00000000, 0x3569afb200000000, 0xd6ebb1c900000000,
+    0x48686b5600000000},
+   {0x0000000000000000, 0xc064281700000000, 0x80c9502e00000000,
+    0x40ad783900000000, 0x0093a15c00000000, 0xc0f7894b00000000,
+    0x805af17200000000, 0x403ed96500000000, 0x002643b900000000,
+    0xc0426bae00000000, 0x80ef139700000000, 0x408b3b8000000000,
+    0x00b5e2e500000000, 0xc0d1caf200000000, 0x807cb2cb00000000,
+    0x40189adc00000000, 0x414af7a900000000, 0x812edfbe00000000,
+    0xc183a78700000000, 0x01e78f9000000000, 0x41d956f500000000,
+    0x81bd7ee200000000, 0xc11006db00000000, 0x01742ecc00000000,
+    0x416cb41000000000, 0x81089c0700000000, 0xc1a5e43e00000000,
+    0x01c1cc2900000000, 0x41ff154c00000000, 0x819b3d5b00000000,
+    0xc136456200000000, 0x01526d7500000000, 0xc3929f8800000000,
+    0x03f6b79f00000000, 0x435bcfa600000000, 0x833fe7b100000000,
+    0xc3013ed400000000, 0x036516c300000000, 0x43c86efa00000000,
+    0x83ac46ed00000000, 0xc3b4dc3100000000, 0x03d0f42600000000,
+    0x437d8c1f00000000, 0x8319a40800000000, 0xc3277d6d00000000,
+    0x0343557a00000000, 0x43ee2d4300000000, 0x838a055400000000,
+    0x82d8682100000000, 0x42bc403600000000, 0x0211380f00000000,
+    0xc275101800000000, 0x824bc97d00000000, 0x422fe16a00000000,
+    0x0282995300000000, 0xc2e6b14400000000, 0x82fe2b9800000000,
+    0x429a038f00000000, 0x02377bb600000000, 0xc25353a100000000,
+    0x826d8ac400000000, 0x4209a2d300000000, 0x02a4daea00000000,
+    0xc2c0f2fd00000000, 0xc7234eca00000000, 0x074766dd00000000,
+    0x47ea1ee400000000, 0x878e36f300000000, 0xc7b0ef9600000000,
+    0x07d4c78100000000, 0x4779bfb800000000, 0x871d97af00000000,
+    0xc7050d7300000000, 0x0761256400000000, 0x47cc5d5d00000000,
+    0x87a8754a00000000, 0xc796ac2f00000000, 0x07f2843800000000,
+    0x475ffc0100000000, 0x873bd41600000000, 0x8669b96300000000,
+    0x460d917400000000, 0x06a0e94d00000000, 0xc6c4c15a00000000,
+    0x86fa183f00000000, 0x469e302800000000, 0x0633481100000000,
+    0xc657600600000000, 0x864ffada00000000, 0x462bd2cd00000000,
+    0x0686aaf400000000, 0xc6e282e300000000, 0x86dc5b8600000000,
+    0x46b8739100000000, 0x06150ba800000000, 0xc67123bf00000000,
+    0x04b1d14200000000, 0xc4d5f95500000000, 0x8478816c00000000,
+    0x441ca97b00000000, 0x0422701e00000000, 0xc446580900000000,
+    0x84eb203000000000, 0x448f082700000000, 0x049792fb00000000,
+    0xc4f3baec00000000, 0x845ec2d500000000, 0x443aeac200000000,
+    0x040433a700000000, 0xc4601bb000000000, 0x84cd638900000000,
+    0x44a94b9e00000000, 0x45fb26eb00000000, 0x859f0efc00000000,
+    0xc53276c500000000, 0x05565ed200000000, 0x456887b700000000,
+    0x850cafa000000000, 0xc5a1d79900000000, 0x05c5ff8e00000000,
+    0x45dd655200000000, 0x85b94d4500000000, 0xc514357c00000000,
+    0x05701d6b00000000, 0x454ec40e00000000, 0x852aec1900000000,
+    0xc587942000000000, 0x05e3bc3700000000, 0xcf41ed4f00000000,
+    0x0f25c55800000000, 0x4f88bd6100000000, 0x8fec957600000000,
+    0xcfd24c1300000000, 0x0fb6640400000000, 0x4f1b1c3d00000000,
+    0x8f7f342a00000000, 0xcf67aef600000000, 0x0f0386e100000000,
+    0x4faefed800000000, 0x8fcad6cf00000000, 0xcff40faa00000000,
+    0x0f9027bd00000000, 0x4f3d5f8400000000, 0x8f59779300000000,
+    0x8e0b1ae600000000, 0x4e6f32f100000000, 0x0ec24ac800000000,
+    0xcea662df00000000, 0x8e98bbba00000000, 0x4efc93ad00000000,
+    0x0e51eb9400000000, 0xce35c38300000000, 0x8e2d595f00000000,
+    0x4e49714800000000, 0x0ee4097100000000, 0xce80216600000000,
+    0x8ebef80300000000, 0x4edad01400000000, 0x0e77a82d00000000,
+    0xce13803a00000000, 0x0cd372c700000000, 0xccb75ad000000000,
+    0x8c1a22e900000000, 0x4c7e0afe00000000, 0x0c40d39b00000000,
+    0xcc24fb8c00000000, 0x8c8983b500000000, 0x4cedaba200000000,
+    0x0cf5317e00000000, 0xcc91196900000000, 0x8c3c615000000000,
+    0x4c58494700000000, 0x0c66902200000000, 0xcc02b83500000000,
+    0x8cafc00c00000000, 0x4ccbe81b00000000, 0x4d99856e00000000,
+    0x8dfdad7900000000, 0xcd50d54000000000, 0x0d34fd5700000000,
+    0x4d0a243200000000, 0x8d6e0c2500000000, 0xcdc3741c00000000,
+    0x0da75c0b00000000, 0x4dbfc6d700000000, 0x8ddbeec000000000,
+    0xcd7696f900000000, 0x0d12beee00000000, 0x4d2c678b00000000,
+    0x8d484f9c00000000, 0xcde537a500000000, 0x0d811fb200000000,
+    0x0862a38500000000, 0xc8068b9200000000, 0x88abf3ab00000000,
+    0x48cfdbbc00000000, 0x08f102d900000000, 0xc8952ace00000000,
+    0x883852f700000000, 0x485c7ae000000000, 0x0844e03c00000000,
+    0xc820c82b00000000, 0x888db01200000000, 0x48e9980500000000,
+    0x08d7416000000000, 0xc8b3697700000000, 0x881e114e00000000,
+    0x487a395900000000, 0x4928542c00000000, 0x894c7c3b00000000,
+    0xc9e1040200000000, 0x09852c1500000000, 0x49bbf57000000000,
+    0x89dfdd6700000000, 0xc972a55e00000000, 0x09168d4900000000,
+    0x490e179500000000, 0x896a3f8200000000, 0xc9c747bb00000000,
+    0x09a36fac00000000, 0x499db6c900000000, 0x89f99ede00000000,
+    0xc954e6e700000000, 0x0930cef000000000, 0xcbf03c0d00000000,
+    0x0b94141a00000000, 0x4b396c2300000000, 0x8b5d443400000000,
+    0xcb639d5100000000, 0x0b07b54600000000, 0x4baacd7f00000000,
+    0x8bcee56800000000, 0xcbd67fb400000000, 0x0bb257a300000000,
+    0x4b1f2f9a00000000, 0x8b7b078d00000000, 0xcb45dee800000000,
+    0x0b21f6ff00000000, 0x4b8c8ec600000000, 0x8be8a6d100000000,
+    0x8abacba400000000, 0x4adee3b300000000, 0x0a739b8a00000000,
+    0xca17b39d00000000, 0x8a296af800000000, 0x4a4d42ef00000000,
+    0x0ae03ad600000000, 0xca8412c100000000, 0x8a9c881d00000000,
+    0x4af8a00a00000000, 0x0a55d83300000000, 0xca31f02400000000,
+    0x8a0f294100000000, 0x4a6b015600000000, 0x0ac6796f00000000,
+    0xcaa2517800000000},
+   {0x0000000000000000, 0xd4ea739b00000000, 0xe9d396ed00000000,
+    0x3d39e57600000000, 0x93a15c0000000000, 0x474b2f9b00000000,
+    0x7a72caed00000000, 0xae98b97600000000, 0x2643b90000000000,
+    0xf2a9ca9b00000000, 0xcf902fed00000000, 0x1b7a5c7600000000,
+    0xb5e2e50000000000, 0x6108969b00000000, 0x5c3173ed00000000,
+    0x88db007600000000, 0x4c86720100000000, 0x986c019a00000000,
+    0xa555e4ec00000000, 0x71bf977700000000, 0xdf272e0100000000,
+    0x0bcd5d9a00000000, 0x36f4b8ec00000000, 0xe21ecb7700000000,
+    0x6ac5cb0100000000, 0xbe2fb89a00000000, 0x83165dec00000000,
+    0x57fc2e7700000000, 0xf964970100000000, 0x2d8ee49a00000000,
+    0x10b701ec00000000, 0xc45d727700000000, 0x980ce50200000000,
+    0x4ce6969900000000, 0x71df73ef00000000, 0xa535007400000000,
+    0x0badb90200000000, 0xdf47ca9900000000, 0xe27e2fef00000000,
+    0x36945c7400000000, 0xbe4f5c0200000000, 0x6aa52f9900000000,
+    0x579ccaef00000000, 0x8376b97400000000, 0x2dee000200000000,
+    0xf904739900000000, 0xc43d96ef00000000, 0x10d7e57400000000,
+    0xd48a970300000000, 0x0060e49800000000, 0x3d5901ee00000000,
+    0xe9b3727500000000, 0x472bcb0300000000, 0x93c1b89800000000,
+    0xaef85dee00000000, 0x7a122e7500000000, 0xf2c92e0300000000,
+    0x26235d9800000000, 0x1b1ab8ee00000000, 0xcff0cb7500000000,
+    0x6168720300000000, 0xb582019800000000, 0x88bbe4ee00000000,
+    0x5c51977500000000, 0x3019ca0500000000, 0xe4f3b99e00000000,
+    0xd9ca5ce800000000, 0x0d202f7300000000, 0xa3b8960500000000,
+    0x7752e59e00000000, 0x4a6b00e800000000, 0x9e81737300000000,
+    0x165a730500000000, 0xc2b0009e00000000, 0xff89e5e800000000,
+    0x2b63967300000000, 0x85fb2f0500000000, 0x51115c9e00000000,
+    0x6c28b9e800000000, 0xb8c2ca7300000000, 0x7c9fb80400000000,
+    0xa875cb9f00000000, 0x954c2ee900000000, 0x41a65d7200000000,
+    0xef3ee40400000000, 0x3bd4979f00000000, 0x06ed72e900000000,
+    0xd207017200000000, 0x5adc010400000000, 0x8e36729f00000000,
+    0xb30f97e900000000, 0x67e5e47200000000, 0xc97d5d0400000000,
+    0x1d972e9f00000000, 0x20aecbe900000000, 0xf444b87200000000,
+    0xa8152f0700000000, 0x7cff5c9c00000000, 0x41c6b9ea00000000,
+    0x952cca7100000000, 0x3bb4730700000000, 0xef5e009c00000000,
+    0xd267e5ea00000000, 0x068d967100000000, 0x8e56960700000000,
+    0x5abce59c00000000, 0x678500ea00000000, 0xb36f737100000000,
+    0x1df7ca0700000000, 0xc91db99c00000000, 0xf4245cea00000000,
+    0x20ce2f7100000000, 0xe4935d0600000000, 0x30792e9d00000000,
+    0x0d40cbeb00000000, 0xd9aab87000000000, 0x7732010600000000,
+    0xa3d8729d00000000, 0x9ee197eb00000000, 0x4a0be47000000000,
+    0xc2d0e40600000000, 0x163a979d00000000, 0x2b0372eb00000000,
+    0xffe9017000000000, 0x5171b80600000000, 0x859bcb9d00000000,
+    0xb8a22eeb00000000, 0x6c485d7000000000, 0x6032940b00000000,
+    0xb4d8e79000000000, 0x89e102e600000000, 0x5d0b717d00000000,
+    0xf393c80b00000000, 0x2779bb9000000000, 0x1a405ee600000000,
+    0xceaa2d7d00000000, 0x46712d0b00000000, 0x929b5e9000000000,
+    0xafa2bbe600000000, 0x7b48c87d00000000, 0xd5d0710b00000000,
+    0x013a029000000000, 0x3c03e7e600000000, 0xe8e9947d00000000,
+    0x2cb4e60a00000000, 0xf85e959100000000, 0xc56770e700000000,
+    0x118d037c00000000, 0xbf15ba0a00000000, 0x6bffc99100000000,
+    0x56c62ce700000000, 0x822c5f7c00000000, 0x0af75f0a00000000,
+    0xde1d2c9100000000, 0xe324c9e700000000, 0x37ceba7c00000000,
+    0x9956030a00000000, 0x4dbc709100000000, 0x708595e700000000,
+    0xa46fe67c00000000, 0xf83e710900000000, 0x2cd4029200000000,
+    0x11ede7e400000000, 0xc507947f00000000, 0x6b9f2d0900000000,
+    0xbf755e9200000000, 0x824cbbe400000000, 0x56a6c87f00000000,
+    0xde7dc80900000000, 0x0a97bb9200000000, 0x37ae5ee400000000,
+    0xe3442d7f00000000, 0x4ddc940900000000, 0x9936e79200000000,
+    0xa40f02e400000000, 0x70e5717f00000000, 0xb4b8030800000000,
+    0x6052709300000000, 0x5d6b95e500000000, 0x8981e67e00000000,
+    0x27195f0800000000, 0xf3f32c9300000000, 0xcecac9e500000000,
+    0x1a20ba7e00000000, 0x92fbba0800000000, 0x4611c99300000000,
+    0x7b282ce500000000, 0xafc25f7e00000000, 0x015ae60800000000,
+    0xd5b0959300000000, 0xe88970e500000000, 0x3c63037e00000000,
+    0x502b5e0e00000000, 0x84c12d9500000000, 0xb9f8c8e300000000,
+    0x6d12bb7800000000, 0xc38a020e00000000, 0x1760719500000000,
+    0x2a5994e300000000, 0xfeb3e77800000000, 0x7668e70e00000000,
+    0xa282949500000000, 0x9fbb71e300000000, 0x4b51027800000000,
+    0xe5c9bb0e00000000, 0x3123c89500000000, 0x0c1a2de300000000,
+    0xd8f05e7800000000, 0x1cad2c0f00000000, 0xc8475f9400000000,
+    0xf57ebae200000000, 0x2194c97900000000, 0x8f0c700f00000000,
+    0x5be6039400000000, 0x66dfe6e200000000, 0xb235957900000000,
+    0x3aee950f00000000, 0xee04e69400000000, 0xd33d03e200000000,
+    0x07d7707900000000, 0xa94fc90f00000000, 0x7da5ba9400000000,
+    0x409c5fe200000000, 0x94762c7900000000, 0xc827bb0c00000000,
+    0x1ccdc89700000000, 0x21f42de100000000, 0xf51e5e7a00000000,
+    0x5b86e70c00000000, 0x8f6c949700000000, 0xb25571e100000000,
+    0x66bf027a00000000, 0xee64020c00000000, 0x3a8e719700000000,
+    0x07b794e100000000, 0xd35de77a00000000, 0x7dc55e0c00000000,
+    0xa92f2d9700000000, 0x9416c8e100000000, 0x40fcbb7a00000000,
+    0x84a1c90d00000000, 0x504bba9600000000, 0x6d725fe000000000,
+    0xb9982c7b00000000, 0x1700950d00000000, 0xc3eae69600000000,
+    0xfed303e000000000, 0x2a39707b00000000, 0xa2e2700d00000000,
+    0x7608039600000000, 0x4b31e6e000000000, 0x9fdb957b00000000,
+    0x31432c0d00000000, 0xe5a95f9600000000, 0xd890bae000000000,
+    0x0c7ac97b00000000},
+   {0x0000000000000000, 0x2765258100000000, 0x0fcc3bd900000000,
+    0x28a91e5800000000, 0x5f9e066900000000, 0x78fb23e800000000,
+    0x50523db000000000, 0x7737183100000000, 0xbe3c0dd200000000,
+    0x9959285300000000, 0xb1f0360b00000000, 0x9695138a00000000,
+    0xe1a20bbb00000000, 0xc6c72e3a00000000, 0xee6e306200000000,
+    0xc90b15e300000000, 0x3d7f6b7f00000000, 0x1a1a4efe00000000,
+    0x32b350a600000000, 0x15d6752700000000, 0x62e16d1600000000,
+    0x4584489700000000, 0x6d2d56cf00000000, 0x4a48734e00000000,
+    0x834366ad00000000, 0xa426432c00000000, 0x8c8f5d7400000000,
+    0xabea78f500000000, 0xdcdd60c400000000, 0xfbb8454500000000,
+    0xd3115b1d00000000, 0xf4747e9c00000000, 0x7afed6fe00000000,
+    0x5d9bf37f00000000, 0x7532ed2700000000, 0x5257c8a600000000,
+    0x2560d09700000000, 0x0205f51600000000, 0x2aaceb4e00000000,
+    0x0dc9cecf00000000, 0xc4c2db2c00000000, 0xe3a7fead00000000,
+    0xcb0ee0f500000000, 0xec6bc57400000000, 0x9b5cdd4500000000,
+    0xbc39f8c400000000, 0x9490e69c00000000, 0xb3f5c31d00000000,
+    0x4781bd8100000000, 0x60e4980000000000, 0x484d865800000000,
+    0x6f28a3d900000000, 0x181fbbe800000000, 0x3f7a9e6900000000,
+    0x17d3803100000000, 0x30b6a5b000000000, 0xf9bdb05300000000,
+    0xded895d200000000, 0xf6718b8a00000000, 0xd114ae0b00000000,
+    0xa623b63a00000000, 0x814693bb00000000, 0xa9ef8de300000000,
+    0x8e8aa86200000000, 0xb5fadc2600000000, 0x929ff9a700000000,
+    0xba36e7ff00000000, 0x9d53c27e00000000, 0xea64da4f00000000,
+    0xcd01ffce00000000, 0xe5a8e19600000000, 0xc2cdc41700000000,
+    0x0bc6d1f400000000, 0x2ca3f47500000000, 0x040aea2d00000000,
+    0x236fcfac00000000, 0x5458d79d00000000, 0x733df21c00000000,
+    0x5b94ec4400000000, 0x7cf1c9c500000000, 0x8885b75900000000,
+    0xafe092d800000000, 0x87498c8000000000, 0xa02ca90100000000,
+    0xd71bb13000000000, 0xf07e94b100000000, 0xd8d78ae900000000,
+    0xffb2af6800000000, 0x36b9ba8b00000000, 0x11dc9f0a00000000,
+    0x3975815200000000, 0x1e10a4d300000000, 0x6927bce200000000,
+    0x4e42996300000000, 0x66eb873b00000000, 0x418ea2ba00000000,
+    0xcf040ad800000000, 0xe8612f5900000000, 0xc0c8310100000000,
+    0xe7ad148000000000, 0x909a0cb100000000, 0xb7ff293000000000,
+    0x9f56376800000000, 0xb83312e900000000, 0x7138070a00000000,
+    0x565d228b00000000, 0x7ef43cd300000000, 0x5991195200000000,
+    0x2ea6016300000000, 0x09c324e200000000, 0x216a3aba00000000,
+    0x060f1f3b00000000, 0xf27b61a700000000, 0xd51e442600000000,
+    0xfdb75a7e00000000, 0xdad27fff00000000, 0xade567ce00000000,
+    0x8a80424f00000000, 0xa2295c1700000000, 0x854c799600000000,
+    0x4c476c7500000000, 0x6b2249f400000000, 0x438b57ac00000000,
+    0x64ee722d00000000, 0x13d96a1c00000000, 0x34bc4f9d00000000,
+    0x1c1551c500000000, 0x3b70744400000000, 0x6af5b94d00000000,
+    0x4d909ccc00000000, 0x6539829400000000, 0x425ca71500000000,
+    0x356bbf2400000000, 0x120e9aa500000000, 0x3aa784fd00000000,
+    0x1dc2a17c00000000, 0xd4c9b49f00000000, 0xf3ac911e00000000,
+    0xdb058f4600000000, 0xfc60aac700000000, 0x8b57b2f600000000,
+    0xac32977700000000, 0x849b892f00000000, 0xa3feacae00000000,
+    0x578ad23200000000, 0x70eff7b300000000, 0x5846e9eb00000000,
+    0x7f23cc6a00000000, 0x0814d45b00000000, 0x2f71f1da00000000,
+    0x07d8ef8200000000, 0x20bdca0300000000, 0xe9b6dfe000000000,
+    0xced3fa6100000000, 0xe67ae43900000000, 0xc11fc1b800000000,
+    0xb628d98900000000, 0x914dfc0800000000, 0xb9e4e25000000000,
+    0x9e81c7d100000000, 0x100b6fb300000000, 0x376e4a3200000000,
+    0x1fc7546a00000000, 0x38a271eb00000000, 0x4f9569da00000000,
+    0x68f04c5b00000000, 0x4059520300000000, 0x673c778200000000,
+    0xae37626100000000, 0x895247e000000000, 0xa1fb59b800000000,
+    0x869e7c3900000000, 0xf1a9640800000000, 0xd6cc418900000000,
+    0xfe655fd100000000, 0xd9007a5000000000, 0x2d7404cc00000000,
+    0x0a11214d00000000, 0x22b83f1500000000, 0x05dd1a9400000000,
+    0x72ea02a500000000, 0x558f272400000000, 0x7d26397c00000000,
+    0x5a431cfd00000000, 0x9348091e00000000, 0xb42d2c9f00000000,
+    0x9c8432c700000000, 0xbbe1174600000000, 0xccd60f7700000000,
+    0xebb32af600000000, 0xc31a34ae00000000, 0xe47f112f00000000,
+    0xdf0f656b00000000, 0xf86a40ea00000000, 0xd0c35eb200000000,
+    0xf7a67b3300000000, 0x8091630200000000, 0xa7f4468300000000,
+    0x8f5d58db00000000, 0xa8387d5a00000000, 0x613368b900000000,
+    0x46564d3800000000, 0x6eff536000000000, 0x499a76e100000000,
+    0x3ead6ed000000000, 0x19c84b5100000000, 0x3161550900000000,
+    0x1604708800000000, 0xe2700e1400000000, 0xc5152b9500000000,
+    0xedbc35cd00000000, 0xcad9104c00000000, 0xbdee087d00000000,
+    0x9a8b2dfc00000000, 0xb22233a400000000, 0x9547162500000000,
+    0x5c4c03c600000000, 0x7b29264700000000, 0x5380381f00000000,
+    0x74e51d9e00000000, 0x03d205af00000000, 0x24b7202e00000000,
+    0x0c1e3e7600000000, 0x2b7b1bf700000000, 0xa5f1b39500000000,
+    0x8294961400000000, 0xaa3d884c00000000, 0x8d58adcd00000000,
+    0xfa6fb5fc00000000, 0xdd0a907d00000000, 0xf5a38e2500000000,
+    0xd2c6aba400000000, 0x1bcdbe4700000000, 0x3ca89bc600000000,
+    0x1401859e00000000, 0x3364a01f00000000, 0x4453b82e00000000,
+    0x63369daf00000000, 0x4b9f83f700000000, 0x6cfaa67600000000,
+    0x988ed8ea00000000, 0xbfebfd6b00000000, 0x9742e33300000000,
+    0xb027c6b200000000, 0xc710de8300000000, 0xe075fb0200000000,
+    0xc8dce55a00000000, 0xefb9c0db00000000, 0x26b2d53800000000,
+    0x01d7f0b900000000, 0x297eeee100000000, 0x0e1bcb6000000000,
+    0x792cd35100000000, 0x5e49f6d000000000, 0x76e0e88800000000,
+    0x5185cd0900000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f,
+    0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91,
+    0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e,
+    0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c,
+    0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02,
+    0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12,
+    0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567,
+    0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277,
+    0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679,
+    0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b,
+    0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4,
+    0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a,
+    0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0,
+    0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0,
+    0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91,
+    0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881,
+    0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173,
+    0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d,
+    0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912,
+    0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8,
+    0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6,
+    0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6,
+    0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b,
+    0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b,
+    0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75,
+    0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f,
+    0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00,
+    0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee,
+    0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c,
+    0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c,
+    0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d,
+    0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d,
+    0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67,
+    0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89,
+    0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706,
+    0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14,
+    0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a,
+    0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a,
+    0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f,
+    0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f,
+    0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591,
+    0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983,
+    0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c,
+    0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2,
+    0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8,
+    0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8,
+    0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89,
+    0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99,
+    0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b,
+    0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485,
+    0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a,
+    0x36197165},
+   {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382,
+    0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85,
+    0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06,
+    0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca,
+    0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e,
+    0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc,
+    0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616,
+    0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54,
+    0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10,
+    0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc,
+    0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f,
+    0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58,
+    0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef,
+    0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad,
+    0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b,
+    0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29,
+    0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6,
+    0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1,
+    0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622,
+    0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039,
+    0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d,
+    0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f,
+    0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32,
+    0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770,
+    0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034,
+    0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f,
+    0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc,
+    0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db,
+    0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154,
+    0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16,
+    0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0,
+    0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592,
+    0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca,
+    0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd,
+    0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e,
+    0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882,
+    0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6,
+    0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384,
+    0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1,
+    0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3,
+    0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7,
+    0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b,
+    0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8,
+    0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff,
+    0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7,
+    0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5,
+    0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23,
+    0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761,
+    0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee,
+    0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9,
+    0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a,
+    0x1a3b93aa},
+   {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a,
+    0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca,
+    0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3,
+    0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb,
+    0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c,
+    0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58,
+    0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed,
+    0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9,
+    0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e,
+    0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906,
+    0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f,
+    0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf,
+    0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0,
+    0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4,
+    0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769,
+    0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d,
+    0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632,
+    0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82,
+    0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb,
+    0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73,
+    0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484,
+    0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0,
+    0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5,
+    0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1,
+    0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516,
+    0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f,
+    0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946,
+    0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6,
+    0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9,
+    0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad,
+    0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820,
+    0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364,
+    0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab,
+    0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b,
+    0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62,
+    0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a,
+    0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd,
+    0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089,
+    0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c,
+    0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8,
+    0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f,
+    0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477,
+    0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e,
+    0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be,
+    0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71,
+    0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635,
+    0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8,
+    0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc,
+    0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3,
+    0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753,
+    0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a,
+    0xe147d714},
+   {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c,
+    0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b,
+    0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92,
+    0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4,
+    0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069,
+    0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526,
+    0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25,
+    0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a,
+    0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7,
+    0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491,
+    0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958,
+    0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f,
+    0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307,
+    0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648,
+    0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999,
+    0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6,
+    0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a,
+    0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d,
+    0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4,
+    0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61,
+    0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc,
+    0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3,
+    0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53,
+    0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c,
+    0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1,
+    0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c,
+    0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5,
+    0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92,
+    0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e,
+    0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771,
+    0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0,
+    0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def,
+    0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0,
+    0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7,
+    0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e,
+    0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58,
+    0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285,
+    0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca,
+    0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce,
+    0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81,
+    0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c,
+    0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a,
+    0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3,
+    0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4,
+    0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb,
+    0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4,
+    0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75,
+    0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a,
+    0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296,
+    0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1,
+    0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808,
+    0x494f0c4b}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0x43147b17, 0x8628f62e, 0xc53c8d39, 0x0c51ec5d,
+    0x4f45974a, 0x8a791a73, 0xc96d6164, 0x18a2d8bb, 0x5bb6a3ac,
+    0x9e8a2e95, 0xdd9e5582, 0x14f334e6, 0x57e74ff1, 0x92dbc2c8,
+    0xd1cfb9df, 0x7142c0ac, 0x3256bbbb, 0xf76a3682, 0xb47e4d95,
+    0x7d132cf1, 0x3e0757e6, 0xfb3bdadf, 0xb82fa1c8, 0x69e01817,
+    0x2af46300, 0xefc8ee39, 0xacdc952e, 0x65b1f44a, 0x26a58f5d,
+    0xe3990264, 0xa08d7973, 0xa382f182, 0xe0968a95, 0x25aa07ac,
+    0x66be7cbb, 0xafd31ddf, 0xecc766c8, 0x29fbebf1, 0x6aef90e6,
+    0xbb202939, 0xf834522e, 0x3d08df17, 0x7e1ca400, 0xb771c564,
+    0xf465be73, 0x3159334a, 0x724d485d, 0xd2c0312e, 0x91d44a39,
+    0x54e8c700, 0x17fcbc17, 0xde91dd73, 0x9d85a664, 0x58b92b5d,
+    0x1bad504a, 0xca62e995, 0x89769282, 0x4c4a1fbb, 0x0f5e64ac,
+    0xc63305c8, 0x85277edf, 0x401bf3e6, 0x030f88f1, 0x070392de,
+    0x4417e9c9, 0x812b64f0, 0xc23f1fe7, 0x0b527e83, 0x48460594,
+    0x8d7a88ad, 0xce6ef3ba, 0x1fa14a65, 0x5cb53172, 0x9989bc4b,
+    0xda9dc75c, 0x13f0a638, 0x50e4dd2f, 0x95d85016, 0xd6cc2b01,
+    0x76415272, 0x35552965, 0xf069a45c, 0xb37ddf4b, 0x7a10be2f,
+    0x3904c538, 0xfc384801, 0xbf2c3316, 0x6ee38ac9, 0x2df7f1de,
+    0xe8cb7ce7, 0xabdf07f0, 0x62b26694, 0x21a61d83, 0xe49a90ba,
+    0xa78eebad, 0xa481635c, 0xe795184b, 0x22a99572, 0x61bdee65,
+    0xa8d08f01, 0xebc4f416, 0x2ef8792f, 0x6dec0238, 0xbc23bbe7,
+    0xff37c0f0, 0x3a0b4dc9, 0x791f36de, 0xb07257ba, 0xf3662cad,
+    0x365aa194, 0x754eda83, 0xd5c3a3f0, 0x96d7d8e7, 0x53eb55de,
+    0x10ff2ec9, 0xd9924fad, 0x9a8634ba, 0x5fbab983, 0x1caec294,
+    0xcd617b4b, 0x8e75005c, 0x4b498d65, 0x085df672, 0xc1309716,
+    0x8224ec01, 0x47186138, 0x040c1a2f, 0x4f005566, 0x0c142e71,
+    0xc928a348, 0x8a3cd85f, 0x4351b93b, 0x0045c22c, 0xc5794f15,
+    0x866d3402, 0x57a28ddd, 0x14b6f6ca, 0xd18a7bf3, 0x929e00e4,
+    0x5bf36180, 0x18e71a97, 0xdddb97ae, 0x9ecfecb9, 0x3e4295ca,
+    0x7d56eedd, 0xb86a63e4, 0xfb7e18f3, 0x32137997, 0x71070280,
+    0xb43b8fb9, 0xf72ff4ae, 0x26e04d71, 0x65f43666, 0xa0c8bb5f,
+    0xe3dcc048, 0x2ab1a12c, 0x69a5da3b, 0xac995702, 0xef8d2c15,
+    0xec82a4e4, 0xaf96dff3, 0x6aaa52ca, 0x29be29dd, 0xe0d348b9,
+    0xa3c733ae, 0x66fbbe97, 0x25efc580, 0xf4207c5f, 0xb7340748,
+    0x72088a71, 0x311cf166, 0xf8719002, 0xbb65eb15, 0x7e59662c,
+    0x3d4d1d3b, 0x9dc06448, 0xded41f5f, 0x1be89266, 0x58fce971,
+    0x91918815, 0xd285f302, 0x17b97e3b, 0x54ad052c, 0x8562bcf3,
+    0xc676c7e4, 0x034a4add, 0x405e31ca, 0x893350ae, 0xca272bb9,
+    0x0f1ba680, 0x4c0fdd97, 0x4803c7b8, 0x0b17bcaf, 0xce2b3196,
+    0x8d3f4a81, 0x44522be5, 0x074650f2, 0xc27addcb, 0x816ea6dc,
+    0x50a11f03, 0x13b56414, 0xd689e92d, 0x959d923a, 0x5cf0f35e,
+    0x1fe48849, 0xdad80570, 0x99cc7e67, 0x39410714, 0x7a557c03,
+    0xbf69f13a, 0xfc7d8a2d, 0x3510eb49, 0x7604905e, 0xb3381d67,
+    0xf02c6670, 0x21e3dfaf, 0x62f7a4b8, 0xa7cb2981, 0xe4df5296,
+    0x2db233f2, 0x6ea648e5, 0xab9ac5dc, 0xe88ebecb, 0xeb81363a,
+    0xa8954d2d, 0x6da9c014, 0x2ebdbb03, 0xe7d0da67, 0xa4c4a170,
+    0x61f82c49, 0x22ec575e, 0xf323ee81, 0xb0379596, 0x750b18af,
+    0x361f63b8, 0xff7202dc, 0xbc6679cb, 0x795af4f2, 0x3a4e8fe5,
+    0x9ac3f696, 0xd9d78d81, 0x1ceb00b8, 0x5fff7baf, 0x96921acb,
+    0xd58661dc, 0x10baece5, 0x53ae97f2, 0x82612e2d, 0xc175553a,
+    0x0449d803, 0x475da314, 0x8e30c270, 0xcd24b967, 0x0818345e,
+    0x4b0c4f49},
+   {0x00000000, 0x3e6bc2ef, 0x3dd0f504, 0x03bb37eb, 0x7aa0eb09,
+    0x44cb29e6, 0x47701e0d, 0x791bdce2, 0xf440d713, 0xca2b15fc,
+    0xc9902217, 0xf7fbe0f8, 0x8ee03c1a, 0xb08bfef5, 0xb330c91e,
+    0x8d5b0bf1, 0xe881ae27, 0xd6ea6cc8, 0xd5515b23, 0xeb3a99cc,
+    0x9221452e, 0xac4a87c1, 0xaff1b02a, 0x919a72c5, 0x1cc17934,
+    0x22aabbdb, 0x21118c30, 0x1f7a4edf, 0x6661923d, 0x580a50d2,
+    0x5bb16739, 0x65daa5d6, 0xd0035d4f, 0xee689fa0, 0xedd3a84b,
+    0xd3b86aa4, 0xaaa3b646, 0x94c874a9, 0x97734342, 0xa91881ad,
+    0x24438a5c, 0x1a2848b3, 0x19937f58, 0x27f8bdb7, 0x5ee36155,
+    0x6088a3ba, 0x63339451, 0x5d5856be, 0x3882f368, 0x06e93187,
+    0x0552066c, 0x3b39c483, 0x42221861, 0x7c49da8e, 0x7ff2ed65,
+    0x41992f8a, 0xccc2247b, 0xf2a9e694, 0xf112d17f, 0xcf791390,
+    0xb662cf72, 0x88090d9d, 0x8bb23a76, 0xb5d9f899, 0xa007ba9e,
+    0x9e6c7871, 0x9dd74f9a, 0xa3bc8d75, 0xdaa75197, 0xe4cc9378,
+    0xe777a493, 0xd91c667c, 0x54476d8d, 0x6a2caf62, 0x69979889,
+    0x57fc5a66, 0x2ee78684, 0x108c446b, 0x13377380, 0x2d5cb16f,
+    0x488614b9, 0x76edd656, 0x7556e1bd, 0x4b3d2352, 0x3226ffb0,
+    0x0c4d3d5f, 0x0ff60ab4, 0x319dc85b, 0xbcc6c3aa, 0x82ad0145,
+    0x811636ae, 0xbf7df441, 0xc66628a3, 0xf80dea4c, 0xfbb6dda7,
+    0xc5dd1f48, 0x7004e7d1, 0x4e6f253e, 0x4dd412d5, 0x73bfd03a,
+    0x0aa40cd8, 0x34cfce37, 0x3774f9dc, 0x091f3b33, 0x844430c2,
+    0xba2ff22d, 0xb994c5c6, 0x87ff0729, 0xfee4dbcb, 0xc08f1924,
+    0xc3342ecf, 0xfd5fec20, 0x988549f6, 0xa6ee8b19, 0xa555bcf2,
+    0x9b3e7e1d, 0xe225a2ff, 0xdc4e6010, 0xdff557fb, 0xe19e9514,
+    0x6cc59ee5, 0x52ae5c0a, 0x51156be1, 0x6f7ea90e, 0x166575ec,
+    0x280eb703, 0x2bb580e8, 0x15de4207, 0x010905e6, 0x3f62c709,
+    0x3cd9f0e2, 0x02b2320d, 0x7ba9eeef, 0x45c22c00, 0x46791beb,
+    0x7812d904, 0xf549d2f5, 0xcb22101a, 0xc89927f1, 0xf6f2e51e,
+    0x8fe939fc, 0xb182fb13, 0xb239ccf8, 0x8c520e17, 0xe988abc1,
+    0xd7e3692e, 0xd4585ec5, 0xea339c2a, 0x932840c8, 0xad438227,
+    0xaef8b5cc, 0x90937723, 0x1dc87cd2, 0x23a3be3d, 0x201889d6,
+    0x1e734b39, 0x676897db, 0x59035534, 0x5ab862df, 0x64d3a030,
+    0xd10a58a9, 0xef619a46, 0xecdaadad, 0xd2b16f42, 0xabaab3a0,
+    0x95c1714f, 0x967a46a4, 0xa811844b, 0x254a8fba, 0x1b214d55,
+    0x189a7abe, 0x26f1b851, 0x5fea64b3, 0x6181a65c, 0x623a91b7,
+    0x5c515358, 0x398bf68e, 0x07e03461, 0x045b038a, 0x3a30c165,
+    0x432b1d87, 0x7d40df68, 0x7efbe883, 0x40902a6c, 0xcdcb219d,
+    0xf3a0e372, 0xf01bd499, 0xce701676, 0xb76bca94, 0x8900087b,
+    0x8abb3f90, 0xb4d0fd7f, 0xa10ebf78, 0x9f657d97, 0x9cde4a7c,
+    0xa2b58893, 0xdbae5471, 0xe5c5969e, 0xe67ea175, 0xd815639a,
+    0x554e686b, 0x6b25aa84, 0x689e9d6f, 0x56f55f80, 0x2fee8362,
+    0x1185418d, 0x123e7666, 0x2c55b489, 0x498f115f, 0x77e4d3b0,
+    0x745fe45b, 0x4a3426b4, 0x332ffa56, 0x0d4438b9, 0x0eff0f52,
+    0x3094cdbd, 0xbdcfc64c, 0x83a404a3, 0x801f3348, 0xbe74f1a7,
+    0xc76f2d45, 0xf904efaa, 0xfabfd841, 0xc4d41aae, 0x710de237,
+    0x4f6620d8, 0x4cdd1733, 0x72b6d5dc, 0x0bad093e, 0x35c6cbd1,
+    0x367dfc3a, 0x08163ed5, 0x854d3524, 0xbb26f7cb, 0xb89dc020,
+    0x86f602cf, 0xffedde2d, 0xc1861cc2, 0xc23d2b29, 0xfc56e9c6,
+    0x998c4c10, 0xa7e78eff, 0xa45cb914, 0x9a377bfb, 0xe32ca719,
+    0xdd4765f6, 0xdefc521d, 0xe09790f2, 0x6dcc9b03, 0x53a759ec,
+    0x501c6e07, 0x6e77ace8, 0x176c700a, 0x2907b2e5, 0x2abc850e,
+    0x14d747e1},
+   {0x00000000, 0xc0df8ec1, 0xc1b96c58, 0x0166e299, 0x8273d9b0,
+    0x42ac5771, 0x43cab5e8, 0x83153b29, 0x45e1c3ba, 0x853e4d7b,
+    0x8458afe2, 0x44872123, 0xc7921a0a, 0x074d94cb, 0x062b7652,
+    0xc6f4f893, 0xcbc4f6ae, 0x0b1b786f, 0x0a7d9af6, 0xcaa21437,
+    0x49b72f1e, 0x8968a1df, 0x880e4346, 0x48d1cd87, 0x8e253514,
+    0x4efabbd5, 0x4f9c594c, 0x8f43d78d, 0x0c56eca4, 0xcc896265,
+    0xcdef80fc, 0x0d300e3d, 0xd78f9c86, 0x17501247, 0x1636f0de,
+    0xd6e97e1f, 0x55fc4536, 0x9523cbf7, 0x9445296e, 0x549aa7af,
+    0x926e5f3c, 0x52b1d1fd, 0x53d73364, 0x9308bda5, 0x101d868c,
+    0xd0c2084d, 0xd1a4ead4, 0x117b6415, 0x1c4b6a28, 0xdc94e4e9,
+    0xddf20670, 0x1d2d88b1, 0x9e38b398, 0x5ee73d59, 0x5f81dfc0,
+    0x9f5e5101, 0x59aaa992, 0x99752753, 0x9813c5ca, 0x58cc4b0b,
+    0xdbd97022, 0x1b06fee3, 0x1a601c7a, 0xdabf92bb, 0xef1948d6,
+    0x2fc6c617, 0x2ea0248e, 0xee7faa4f, 0x6d6a9166, 0xadb51fa7,
+    0xacd3fd3e, 0x6c0c73ff, 0xaaf88b6c, 0x6a2705ad, 0x6b41e734,
+    0xab9e69f5, 0x288b52dc, 0xe854dc1d, 0xe9323e84, 0x29edb045,
+    0x24ddbe78, 0xe40230b9, 0xe564d220, 0x25bb5ce1, 0xa6ae67c8,
+    0x6671e909, 0x67170b90, 0xa7c88551, 0x613c7dc2, 0xa1e3f303,
+    0xa085119a, 0x605a9f5b, 0xe34fa472, 0x23902ab3, 0x22f6c82a,
+    0xe22946eb, 0x3896d450, 0xf8495a91, 0xf92fb808, 0x39f036c9,
+    0xbae50de0, 0x7a3a8321, 0x7b5c61b8, 0xbb83ef79, 0x7d7717ea,
+    0xbda8992b, 0xbcce7bb2, 0x7c11f573, 0xff04ce5a, 0x3fdb409b,
+    0x3ebda202, 0xfe622cc3, 0xf35222fe, 0x338dac3f, 0x32eb4ea6,
+    0xf234c067, 0x7121fb4e, 0xb1fe758f, 0xb0989716, 0x704719d7,
+    0xb6b3e144, 0x766c6f85, 0x770a8d1c, 0xb7d503dd, 0x34c038f4,
+    0xf41fb635, 0xf57954ac, 0x35a6da6d, 0x9f35e177, 0x5fea6fb6,
+    0x5e8c8d2f, 0x9e5303ee, 0x1d4638c7, 0xdd99b606, 0xdcff549f,
+    0x1c20da5e, 0xdad422cd, 0x1a0bac0c, 0x1b6d4e95, 0xdbb2c054,
+    0x58a7fb7d, 0x987875bc, 0x991e9725, 0x59c119e4, 0x54f117d9,
+    0x942e9918, 0x95487b81, 0x5597f540, 0xd682ce69, 0x165d40a8,
+    0x173ba231, 0xd7e42cf0, 0x1110d463, 0xd1cf5aa2, 0xd0a9b83b,
+    0x107636fa, 0x93630dd3, 0x53bc8312, 0x52da618b, 0x9205ef4a,
+    0x48ba7df1, 0x8865f330, 0x890311a9, 0x49dc9f68, 0xcac9a441,
+    0x0a162a80, 0x0b70c819, 0xcbaf46d8, 0x0d5bbe4b, 0xcd84308a,
+    0xcce2d213, 0x0c3d5cd2, 0x8f2867fb, 0x4ff7e93a, 0x4e910ba3,
+    0x8e4e8562, 0x837e8b5f, 0x43a1059e, 0x42c7e707, 0x821869c6,
+    0x010d52ef, 0xc1d2dc2e, 0xc0b43eb7, 0x006bb076, 0xc69f48e5,
+    0x0640c624, 0x072624bd, 0xc7f9aa7c, 0x44ec9155, 0x84331f94,
+    0x8555fd0d, 0x458a73cc, 0x702ca9a1, 0xb0f32760, 0xb195c5f9,
+    0x714a4b38, 0xf25f7011, 0x3280fed0, 0x33e61c49, 0xf3399288,
+    0x35cd6a1b, 0xf512e4da, 0xf4740643, 0x34ab8882, 0xb7beb3ab,
+    0x77613d6a, 0x7607dff3, 0xb6d85132, 0xbbe85f0f, 0x7b37d1ce,
+    0x7a513357, 0xba8ebd96, 0x399b86bf, 0xf944087e, 0xf822eae7,
+    0x38fd6426, 0xfe099cb5, 0x3ed61274, 0x3fb0f0ed, 0xff6f7e2c,
+    0x7c7a4505, 0xbca5cbc4, 0xbdc3295d, 0x7d1ca79c, 0xa7a33527,
+    0x677cbbe6, 0x661a597f, 0xa6c5d7be, 0x25d0ec97, 0xe50f6256,
+    0xe46980cf, 0x24b60e0e, 0xe242f69d, 0x229d785c, 0x23fb9ac5,
+    0xe3241404, 0x60312f2d, 0xa0eea1ec, 0xa1884375, 0x6157cdb4,
+    0x6c67c389, 0xacb84d48, 0xaddeafd1, 0x6d012110, 0xee141a39,
+    0x2ecb94f8, 0x2fad7661, 0xef72f8a0, 0x29860033, 0xe9598ef2,
+    0xe83f6c6b, 0x28e0e2aa, 0xabf5d983, 0x6b2a5742, 0x6a4cb5db,
+    0xaa933b1a},
+   {0x00000000, 0x6f4ca59b, 0x9f9e3bec, 0xf0d29e77, 0x7f3b0603,
+    0x1077a398, 0xe0a53def, 0x8fe99874, 0xfe760c06, 0x913aa99d,
+    0x61e837ea, 0x0ea49271, 0x814d0a05, 0xee01af9e, 0x1ed331e9,
+    0x719f9472, 0xfced180c, 0x93a1bd97, 0x637323e0, 0x0c3f867b,
+    0x83d61e0f, 0xec9abb94, 0x1c4825e3, 0x73048078, 0x029b140a,
+    0x6dd7b191, 0x9d052fe6, 0xf2498a7d, 0x7da01209, 0x12ecb792,
+    0xe23e29e5, 0x8d728c7e, 0xf8db3118, 0x97979483, 0x67450af4,
+    0x0809af6f, 0x87e0371b, 0xe8ac9280, 0x187e0cf7, 0x7732a96c,
+    0x06ad3d1e, 0x69e19885, 0x993306f2, 0xf67fa369, 0x79963b1d,
+    0x16da9e86, 0xe60800f1, 0x8944a56a, 0x04362914, 0x6b7a8c8f,
+    0x9ba812f8, 0xf4e4b763, 0x7b0d2f17, 0x14418a8c, 0xe49314fb,
+    0x8bdfb160, 0xfa402512, 0x950c8089, 0x65de1efe, 0x0a92bb65,
+    0x857b2311, 0xea37868a, 0x1ae518fd, 0x75a9bd66, 0xf0b76330,
+    0x9ffbc6ab, 0x6f2958dc, 0x0065fd47, 0x8f8c6533, 0xe0c0c0a8,
+    0x10125edf, 0x7f5efb44, 0x0ec16f36, 0x618dcaad, 0x915f54da,
+    0xfe13f141, 0x71fa6935, 0x1eb6ccae, 0xee6452d9, 0x8128f742,
+    0x0c5a7b3c, 0x6316dea7, 0x93c440d0, 0xfc88e54b, 0x73617d3f,
+    0x1c2dd8a4, 0xecff46d3, 0x83b3e348, 0xf22c773a, 0x9d60d2a1,
+    0x6db24cd6, 0x02fee94d, 0x8d177139, 0xe25bd4a2, 0x12894ad5,
+    0x7dc5ef4e, 0x086c5228, 0x6720f7b3, 0x97f269c4, 0xf8becc5f,
+    0x7757542b, 0x181bf1b0, 0xe8c96fc7, 0x8785ca5c, 0xf61a5e2e,
+    0x9956fbb5, 0x698465c2, 0x06c8c059, 0x8921582d, 0xe66dfdb6,
+    0x16bf63c1, 0x79f3c65a, 0xf4814a24, 0x9bcdefbf, 0x6b1f71c8,
+    0x0453d453, 0x8bba4c27, 0xe4f6e9bc, 0x142477cb, 0x7b68d250,
+    0x0af74622, 0x65bbe3b9, 0x95697dce, 0xfa25d855, 0x75cc4021,
+    0x1a80e5ba, 0xea527bcd, 0x851ede56, 0xe06fc760, 0x8f2362fb,
+    0x7ff1fc8c, 0x10bd5917, 0x9f54c163, 0xf01864f8, 0x00cafa8f,
+    0x6f865f14, 0x1e19cb66, 0x71556efd, 0x8187f08a, 0xeecb5511,
+    0x6122cd65, 0x0e6e68fe, 0xfebcf689, 0x91f05312, 0x1c82df6c,
+    0x73ce7af7, 0x831ce480, 0xec50411b, 0x63b9d96f, 0x0cf57cf4,
+    0xfc27e283, 0x936b4718, 0xe2f4d36a, 0x8db876f1, 0x7d6ae886,
+    0x12264d1d, 0x9dcfd569, 0xf28370f2, 0x0251ee85, 0x6d1d4b1e,
+    0x18b4f678, 0x77f853e3, 0x872acd94, 0xe866680f, 0x678ff07b,
+    0x08c355e0, 0xf811cb97, 0x975d6e0c, 0xe6c2fa7e, 0x898e5fe5,
+    0x795cc192, 0x16106409, 0x99f9fc7d, 0xf6b559e6, 0x0667c791,
+    0x692b620a, 0xe459ee74, 0x8b154bef, 0x7bc7d598, 0x148b7003,
+    0x9b62e877, 0xf42e4dec, 0x04fcd39b, 0x6bb07600, 0x1a2fe272,
+    0x756347e9, 0x85b1d99e, 0xeafd7c05, 0x6514e471, 0x0a5841ea,
+    0xfa8adf9d, 0x95c67a06, 0x10d8a450, 0x7f9401cb, 0x8f469fbc,
+    0xe00a3a27, 0x6fe3a253, 0x00af07c8, 0xf07d99bf, 0x9f313c24,
+    0xeeaea856, 0x81e20dcd, 0x713093ba, 0x1e7c3621, 0x9195ae55,
+    0xfed90bce, 0x0e0b95b9, 0x61473022, 0xec35bc5c, 0x837919c7,
+    0x73ab87b0, 0x1ce7222b, 0x930eba5f, 0xfc421fc4, 0x0c9081b3,
+    0x63dc2428, 0x1243b05a, 0x7d0f15c1, 0x8ddd8bb6, 0xe2912e2d,
+    0x6d78b659, 0x023413c2, 0xf2e68db5, 0x9daa282e, 0xe8039548,
+    0x874f30d3, 0x779daea4, 0x18d10b3f, 0x9738934b, 0xf87436d0,
+    0x08a6a8a7, 0x67ea0d3c, 0x1675994e, 0x79393cd5, 0x89eba2a2,
+    0xe6a70739, 0x694e9f4d, 0x06023ad6, 0xf6d0a4a1, 0x999c013a,
+    0x14ee8d44, 0x7ba228df, 0x8b70b6a8, 0xe43c1333, 0x6bd58b47,
+    0x04992edc, 0xf44bb0ab, 0x9b071530, 0xea988142, 0x85d424d9,
+    0x7506baae, 0x1a4a1f35, 0x95a38741, 0xfaef22da, 0x0a3dbcad,
+    0x65711936}};
+
+#endif
+
+#endif
+
+#if N == 4
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xf1da05aa, 0x38c50d15, 0xc91f08bf, 0x718a1a2a,
+    0x80501f80, 0x494f173f, 0xb8951295, 0xe3143454, 0x12ce31fe,
+    0xdbd13941, 0x2a0b3ceb, 0x929e2e7e, 0x63442bd4, 0xaa5b236b,
+    0x5b8126c1, 0x1d596ee9, 0xec836b43, 0x259c63fc, 0xd4466656,
+    0x6cd374c3, 0x9d097169, 0x541679d6, 0xa5cc7c7c, 0xfe4d5abd,
+    0x0f975f17, 0xc68857a8, 0x37525202, 0x8fc74097, 0x7e1d453d,
+    0xb7024d82, 0x46d84828, 0x3ab2ddd2, 0xcb68d878, 0x0277d0c7,
+    0xf3add56d, 0x4b38c7f8, 0xbae2c252, 0x73fdcaed, 0x8227cf47,
+    0xd9a6e986, 0x287cec2c, 0xe163e493, 0x10b9e139, 0xa82cf3ac,
+    0x59f6f606, 0x90e9feb9, 0x6133fb13, 0x27ebb33b, 0xd631b691,
+    0x1f2ebe2e, 0xeef4bb84, 0x5661a911, 0xa7bbacbb, 0x6ea4a404,
+    0x9f7ea1ae, 0xc4ff876f, 0x352582c5, 0xfc3a8a7a, 0x0de08fd0,
+    0xb5759d45, 0x44af98ef, 0x8db09050, 0x7c6a95fa, 0x7565bba4,
+    0x84bfbe0e, 0x4da0b6b1, 0xbc7ab31b, 0x04efa18e, 0xf535a424,
+    0x3c2aac9b, 0xcdf0a931, 0x96718ff0, 0x67ab8a5a, 0xaeb482e5,
+    0x5f6e874f, 0xe7fb95da, 0x16219070, 0xdf3e98cf, 0x2ee49d65,
+    0x683cd54d, 0x99e6d0e7, 0x50f9d858, 0xa123ddf2, 0x19b6cf67,
+    0xe86ccacd, 0x2173c272, 0xd0a9c7d8, 0x8b28e119, 0x7af2e4b3,
+    0xb3edec0c, 0x4237e9a6, 0xfaa2fb33, 0x0b78fe99, 0xc267f626,
+    0x33bdf38c, 0x4fd76676, 0xbe0d63dc, 0x77126b63, 0x86c86ec9,
+    0x3e5d7c5c, 0xcf8779f6, 0x06987149, 0xf74274e3, 0xacc35222,
+    0x5d195788, 0x94065f37, 0x65dc5a9d, 0xdd494808, 0x2c934da2,
+    0xe58c451d, 0x145640b7, 0x528e089f, 0xa3540d35, 0x6a4b058a,
+    0x9b910020, 0x230412b5, 0xd2de171f, 0x1bc11fa0, 0xea1b1a0a,
+    0xb19a3ccb, 0x40403961, 0x895f31de, 0x78853474, 0xc01026e1,
+    0x31ca234b, 0xf8d52bf4, 0x090f2e5e, 0xeacb7748, 0x1b1172e2,
+    0xd20e7a5d, 0x23d47ff7, 0x9b416d62, 0x6a9b68c8, 0xa3846077,
+    0x525e65dd, 0x09df431c, 0xf80546b6, 0x311a4e09, 0xc0c04ba3,
+    0x78555936, 0x898f5c9c, 0x40905423, 0xb14a5189, 0xf79219a1,
+    0x06481c0b, 0xcf5714b4, 0x3e8d111e, 0x8618038b, 0x77c20621,
+    0xbedd0e9e, 0x4f070b34, 0x14862df5, 0xe55c285f, 0x2c4320e0,
+    0xdd99254a, 0x650c37df, 0x94d63275, 0x5dc93aca, 0xac133f60,
+    0xd079aa9a, 0x21a3af30, 0xe8bca78f, 0x1966a225, 0xa1f3b0b0,
+    0x5029b51a, 0x9936bda5, 0x68ecb80f, 0x336d9ece, 0xc2b79b64,
+    0x0ba893db, 0xfa729671, 0x42e784e4, 0xb33d814e, 0x7a2289f1,
+    0x8bf88c5b, 0xcd20c473, 0x3cfac1d9, 0xf5e5c966, 0x043fcccc,
+    0xbcaade59, 0x4d70dbf3, 0x846fd34c, 0x75b5d6e6, 0x2e34f027,
+    0xdfeef58d, 0x16f1fd32, 0xe72bf898, 0x5fbeea0d, 0xae64efa7,
+    0x677be718, 0x96a1e2b2, 0x9faeccec, 0x6e74c946, 0xa76bc1f9,
+    0x56b1c453, 0xee24d6c6, 0x1ffed36c, 0xd6e1dbd3, 0x273bde79,
+    0x7cbaf8b8, 0x8d60fd12, 0x447ff5ad, 0xb5a5f007, 0x0d30e292,
+    0xfceae738, 0x35f5ef87, 0xc42fea2d, 0x82f7a205, 0x732da7af,
+    0xba32af10, 0x4be8aaba, 0xf37db82f, 0x02a7bd85, 0xcbb8b53a,
+    0x3a62b090, 0x61e39651, 0x903993fb, 0x59269b44, 0xa8fc9eee,
+    0x10698c7b, 0xe1b389d1, 0x28ac816e, 0xd97684c4, 0xa51c113e,
+    0x54c61494, 0x9dd91c2b, 0x6c031981, 0xd4960b14, 0x254c0ebe,
+    0xec530601, 0x1d8903ab, 0x4608256a, 0xb7d220c0, 0x7ecd287f,
+    0x8f172dd5, 0x37823f40, 0xc6583aea, 0x0f473255, 0xfe9d37ff,
+    0xb8457fd7, 0x499f7a7d, 0x808072c2, 0x715a7768, 0xc9cf65fd,
+    0x38156057, 0xf10a68e8, 0x00d06d42, 0x5b514b83, 0xaa8b4e29,
+    0x63944696, 0x924e433c, 0x2adb51a9, 0xdb015403, 0x121e5cbc,
+    0xe3c45916},
+   {0x00000000, 0x0ee7e8d1, 0x1dcfd1a2, 0x13283973, 0x3b9fa344,
+    0x35784b95, 0x265072e6, 0x28b79a37, 0x773f4688, 0x79d8ae59,
+    0x6af0972a, 0x64177ffb, 0x4ca0e5cc, 0x42470d1d, 0x516f346e,
+    0x5f88dcbf, 0xee7e8d10, 0xe09965c1, 0xf3b15cb2, 0xfd56b463,
+    0xd5e12e54, 0xdb06c685, 0xc82efff6, 0xc6c91727, 0x9941cb98,
+    0x97a62349, 0x848e1a3a, 0x8a69f2eb, 0xa2de68dc, 0xac39800d,
+    0xbf11b97e, 0xb1f651af, 0x078c1c61, 0x096bf4b0, 0x1a43cdc3,
+    0x14a42512, 0x3c13bf25, 0x32f457f4, 0x21dc6e87, 0x2f3b8656,
+    0x70b35ae9, 0x7e54b238, 0x6d7c8b4b, 0x639b639a, 0x4b2cf9ad,
+    0x45cb117c, 0x56e3280f, 0x5804c0de, 0xe9f29171, 0xe71579a0,
+    0xf43d40d3, 0xfadaa802, 0xd26d3235, 0xdc8adae4, 0xcfa2e397,
+    0xc1450b46, 0x9ecdd7f9, 0x902a3f28, 0x8302065b, 0x8de5ee8a,
+    0xa55274bd, 0xabb59c6c, 0xb89da51f, 0xb67a4dce, 0x0f1838c2,
+    0x01ffd013, 0x12d7e960, 0x1c3001b1, 0x34879b86, 0x3a607357,
+    0x29484a24, 0x27afa2f5, 0x78277e4a, 0x76c0969b, 0x65e8afe8,
+    0x6b0f4739, 0x43b8dd0e, 0x4d5f35df, 0x5e770cac, 0x5090e47d,
+    0xe166b5d2, 0xef815d03, 0xfca96470, 0xf24e8ca1, 0xdaf91696,
+    0xd41efe47, 0xc736c734, 0xc9d12fe5, 0x9659f35a, 0x98be1b8b,
+    0x8b9622f8, 0x8571ca29, 0xadc6501e, 0xa321b8cf, 0xb00981bc,
+    0xbeee696d, 0x089424a3, 0x0673cc72, 0x155bf501, 0x1bbc1dd0,
+    0x330b87e7, 0x3dec6f36, 0x2ec45645, 0x2023be94, 0x7fab622b,
+    0x714c8afa, 0x6264b389, 0x6c835b58, 0x4434c16f, 0x4ad329be,
+    0x59fb10cd, 0x571cf81c, 0xe6eaa9b3, 0xe80d4162, 0xfb257811,
+    0xf5c290c0, 0xdd750af7, 0xd392e226, 0xc0badb55, 0xce5d3384,
+    0x91d5ef3b, 0x9f3207ea, 0x8c1a3e99, 0x82fdd648, 0xaa4a4c7f,
+    0xa4ada4ae, 0xb7859ddd, 0xb962750c, 0x1e307184, 0x10d79955,
+    0x03ffa026, 0x0d1848f7, 0x25afd2c0, 0x2b483a11, 0x38600362,
+    0x3687ebb3, 0x690f370c, 0x67e8dfdd, 0x74c0e6ae, 0x7a270e7f,
+    0x52909448, 0x5c777c99, 0x4f5f45ea, 0x41b8ad3b, 0xf04efc94,
+    0xfea91445, 0xed812d36, 0xe366c5e7, 0xcbd15fd0, 0xc536b701,
+    0xd61e8e72, 0xd8f966a3, 0x8771ba1c, 0x899652cd, 0x9abe6bbe,
+    0x9459836f, 0xbcee1958, 0xb209f189, 0xa121c8fa, 0xafc6202b,
+    0x19bc6de5, 0x175b8534, 0x0473bc47, 0x0a945496, 0x2223cea1,
+    0x2cc42670, 0x3fec1f03, 0x310bf7d2, 0x6e832b6d, 0x6064c3bc,
+    0x734cfacf, 0x7dab121e, 0x551c8829, 0x5bfb60f8, 0x48d3598b,
+    0x4634b15a, 0xf7c2e0f5, 0xf9250824, 0xea0d3157, 0xe4ead986,
+    0xcc5d43b1, 0xc2baab60, 0xd1929213, 0xdf757ac2, 0x80fda67d,
+    0x8e1a4eac, 0x9d3277df, 0x93d59f0e, 0xbb620539, 0xb585ede8,
+    0xa6add49b, 0xa84a3c4a, 0x11284946, 0x1fcfa197, 0x0ce798e4,
+    0x02007035, 0x2ab7ea02, 0x245002d3, 0x37783ba0, 0x399fd371,
+    0x66170fce, 0x68f0e71f, 0x7bd8de6c, 0x753f36bd, 0x5d88ac8a,
+    0x536f445b, 0x40477d28, 0x4ea095f9, 0xff56c456, 0xf1b12c87,
+    0xe29915f4, 0xec7efd25, 0xc4c96712, 0xca2e8fc3, 0xd906b6b0,
+    0xd7e15e61, 0x886982de, 0x868e6a0f, 0x95a6537c, 0x9b41bbad,
+    0xb3f6219a, 0xbd11c94b, 0xae39f038, 0xa0de18e9, 0x16a45527,
+    0x1843bdf6, 0x0b6b8485, 0x058c6c54, 0x2d3bf663, 0x23dc1eb2,
+    0x30f427c1, 0x3e13cf10, 0x619b13af, 0x6f7cfb7e, 0x7c54c20d,
+    0x72b32adc, 0x5a04b0eb, 0x54e3583a, 0x47cb6149, 0x492c8998,
+    0xf8dad837, 0xf63d30e6, 0xe5150995, 0xebf2e144, 0xc3457b73,
+    0xcda293a2, 0xde8aaad1, 0xd06d4200, 0x8fe59ebf, 0x8102766e,
+    0x922a4f1d, 0x9ccda7cc, 0xb47a3dfb, 0xba9dd52a, 0xa9b5ec59,
+    0xa7520488},
+   {0x00000000, 0x3c60e308, 0x78c1c610, 0x44a12518, 0xf1838c20,
+    0xcde36f28, 0x89424a30, 0xb522a938, 0x38761e01, 0x0416fd09,
+    0x40b7d811, 0x7cd73b19, 0xc9f59221, 0xf5957129, 0xb1345431,
+    0x8d54b739, 0x70ec3c02, 0x4c8cdf0a, 0x082dfa12, 0x344d191a,
+    0x816fb022, 0xbd0f532a, 0xf9ae7632, 0xc5ce953a, 0x489a2203,
+    0x74fac10b, 0x305be413, 0x0c3b071b, 0xb919ae23, 0x85794d2b,
+    0xc1d86833, 0xfdb88b3b, 0xe1d87804, 0xddb89b0c, 0x9919be14,
+    0xa5795d1c, 0x105bf424, 0x2c3b172c, 0x689a3234, 0x54fad13c,
+    0xd9ae6605, 0xe5ce850d, 0xa16fa015, 0x9d0f431d, 0x282dea25,
+    0x144d092d, 0x50ec2c35, 0x6c8ccf3d, 0x91344406, 0xad54a70e,
+    0xe9f58216, 0xd595611e, 0x60b7c826, 0x5cd72b2e, 0x18760e36,
+    0x2416ed3e, 0xa9425a07, 0x9522b90f, 0xd1839c17, 0xede37f1f,
+    0x58c1d627, 0x64a1352f, 0x20001037, 0x1c60f33f, 0x18c1f649,
+    0x24a11541, 0x60003059, 0x5c60d351, 0xe9427a69, 0xd5229961,
+    0x9183bc79, 0xade35f71, 0x20b7e848, 0x1cd70b40, 0x58762e58,
+    0x6416cd50, 0xd1346468, 0xed548760, 0xa9f5a278, 0x95954170,
+    0x682dca4b, 0x544d2943, 0x10ec0c5b, 0x2c8cef53, 0x99ae466b,
+    0xa5cea563, 0xe16f807b, 0xdd0f6373, 0x505bd44a, 0x6c3b3742,
+    0x289a125a, 0x14faf152, 0xa1d8586a, 0x9db8bb62, 0xd9199e7a,
+    0xe5797d72, 0xf9198e4d, 0xc5796d45, 0x81d8485d, 0xbdb8ab55,
+    0x089a026d, 0x34fae165, 0x705bc47d, 0x4c3b2775, 0xc16f904c,
+    0xfd0f7344, 0xb9ae565c, 0x85ceb554, 0x30ec1c6c, 0x0c8cff64,
+    0x482dda7c, 0x744d3974, 0x89f5b24f, 0xb5955147, 0xf134745f,
+    0xcd549757, 0x78763e6f, 0x4416dd67, 0x00b7f87f, 0x3cd71b77,
+    0xb183ac4e, 0x8de34f46, 0xc9426a5e, 0xf5228956, 0x4000206e,
+    0x7c60c366, 0x38c1e67e, 0x04a10576, 0x3183ec92, 0x0de30f9a,
+    0x49422a82, 0x7522c98a, 0xc00060b2, 0xfc6083ba, 0xb8c1a6a2,
+    0x84a145aa, 0x09f5f293, 0x3595119b, 0x71343483, 0x4d54d78b,
+    0xf8767eb3, 0xc4169dbb, 0x80b7b8a3, 0xbcd75bab, 0x416fd090,
+    0x7d0f3398, 0x39ae1680, 0x05cef588, 0xb0ec5cb0, 0x8c8cbfb8,
+    0xc82d9aa0, 0xf44d79a8, 0x7919ce91, 0x45792d99, 0x01d80881,
+    0x3db8eb89, 0x889a42b1, 0xb4faa1b9, 0xf05b84a1, 0xcc3b67a9,
+    0xd05b9496, 0xec3b779e, 0xa89a5286, 0x94fab18e, 0x21d818b6,
+    0x1db8fbbe, 0x5919dea6, 0x65793dae, 0xe82d8a97, 0xd44d699f,
+    0x90ec4c87, 0xac8caf8f, 0x19ae06b7, 0x25cee5bf, 0x616fc0a7,
+    0x5d0f23af, 0xa0b7a894, 0x9cd74b9c, 0xd8766e84, 0xe4168d8c,
+    0x513424b4, 0x6d54c7bc, 0x29f5e2a4, 0x159501ac, 0x98c1b695,
+    0xa4a1559d, 0xe0007085, 0xdc60938d, 0x69423ab5, 0x5522d9bd,
+    0x1183fca5, 0x2de31fad, 0x29421adb, 0x1522f9d3, 0x5183dccb,
+    0x6de33fc3, 0xd8c196fb, 0xe4a175f3, 0xa00050eb, 0x9c60b3e3,
+    0x113404da, 0x2d54e7d2, 0x69f5c2ca, 0x559521c2, 0xe0b788fa,
+    0xdcd76bf2, 0x98764eea, 0xa416ade2, 0x59ae26d9, 0x65cec5d1,
+    0x216fe0c9, 0x1d0f03c1, 0xa82daaf9, 0x944d49f1, 0xd0ec6ce9,
+    0xec8c8fe1, 0x61d838d8, 0x5db8dbd0, 0x1919fec8, 0x25791dc0,
+    0x905bb4f8, 0xac3b57f0, 0xe89a72e8, 0xd4fa91e0, 0xc89a62df,
+    0xf4fa81d7, 0xb05ba4cf, 0x8c3b47c7, 0x3919eeff, 0x05790df7,
+    0x41d828ef, 0x7db8cbe7, 0xf0ec7cde, 0xcc8c9fd6, 0x882dbace,
+    0xb44d59c6, 0x016ff0fe, 0x3d0f13f6, 0x79ae36ee, 0x45ced5e6,
+    0xb8765edd, 0x8416bdd5, 0xc0b798cd, 0xfcd77bc5, 0x49f5d2fd,
+    0x759531f5, 0x313414ed, 0x0d54f7e5, 0x800040dc, 0xbc60a3d4,
+    0xf8c186cc, 0xc4a165c4, 0x7183ccfc, 0x4de32ff4, 0x09420aec,
+    0x3522e9e4},
+   {0x00000000, 0x6307d924, 0xc60fb248, 0xa5086b6c, 0x576e62d1,
+    0x3469bbf5, 0x9161d099, 0xf26609bd, 0xaedcc5a2, 0xcddb1c86,
+    0x68d377ea, 0x0bd4aece, 0xf9b2a773, 0x9ab57e57, 0x3fbd153b,
+    0x5cbacc1f, 0x86c88d05, 0xe5cf5421, 0x40c73f4d, 0x23c0e669,
+    0xd1a6efd4, 0xb2a136f0, 0x17a95d9c, 0x74ae84b8, 0x281448a7,
+    0x4b139183, 0xee1bfaef, 0x8d1c23cb, 0x7f7a2a76, 0x1c7df352,
+    0xb975983e, 0xda72411a, 0xd6e01c4b, 0xb5e7c56f, 0x10efae03,
+    0x73e87727, 0x818e7e9a, 0xe289a7be, 0x4781ccd2, 0x248615f6,
+    0x783cd9e9, 0x1b3b00cd, 0xbe336ba1, 0xdd34b285, 0x2f52bb38,
+    0x4c55621c, 0xe95d0970, 0x8a5ad054, 0x5028914e, 0x332f486a,
+    0x96272306, 0xf520fa22, 0x0746f39f, 0x64412abb, 0xc14941d7,
+    0xa24e98f3, 0xfef454ec, 0x9df38dc8, 0x38fbe6a4, 0x5bfc3f80,
+    0xa99a363d, 0xca9def19, 0x6f958475, 0x0c925d51, 0x76b13ed7,
+    0x15b6e7f3, 0xb0be8c9f, 0xd3b955bb, 0x21df5c06, 0x42d88522,
+    0xe7d0ee4e, 0x84d7376a, 0xd86dfb75, 0xbb6a2251, 0x1e62493d,
+    0x7d659019, 0x8f0399a4, 0xec044080, 0x490c2bec, 0x2a0bf2c8,
+    0xf079b3d2, 0x937e6af6, 0x3676019a, 0x5571d8be, 0xa717d103,
+    0xc4100827, 0x6118634b, 0x021fba6f, 0x5ea57670, 0x3da2af54,
+    0x98aac438, 0xfbad1d1c, 0x09cb14a1, 0x6acccd85, 0xcfc4a6e9,
+    0xacc37fcd, 0xa051229c, 0xc356fbb8, 0x665e90d4, 0x055949f0,
+    0xf73f404d, 0x94389969, 0x3130f205, 0x52372b21, 0x0e8de73e,
+    0x6d8a3e1a, 0xc8825576, 0xab858c52, 0x59e385ef, 0x3ae45ccb,
+    0x9fec37a7, 0xfcebee83, 0x2699af99, 0x459e76bd, 0xe0961dd1,
+    0x8391c4f5, 0x71f7cd48, 0x12f0146c, 0xb7f87f00, 0xd4ffa624,
+    0x88456a3b, 0xeb42b31f, 0x4e4ad873, 0x2d4d0157, 0xdf2b08ea,
+    0xbc2cd1ce, 0x1924baa2, 0x7a236386, 0xed627dae, 0x8e65a48a,
+    0x2b6dcfe6, 0x486a16c2, 0xba0c1f7f, 0xd90bc65b, 0x7c03ad37,
+    0x1f047413, 0x43beb80c, 0x20b96128, 0x85b10a44, 0xe6b6d360,
+    0x14d0dadd, 0x77d703f9, 0xd2df6895, 0xb1d8b1b1, 0x6baaf0ab,
+    0x08ad298f, 0xada542e3, 0xcea29bc7, 0x3cc4927a, 0x5fc34b5e,
+    0xfacb2032, 0x99ccf916, 0xc5763509, 0xa671ec2d, 0x03798741,
+    0x607e5e65, 0x921857d8, 0xf11f8efc, 0x5417e590, 0x37103cb4,
+    0x3b8261e5, 0x5885b8c1, 0xfd8dd3ad, 0x9e8a0a89, 0x6cec0334,
+    0x0febda10, 0xaae3b17c, 0xc9e46858, 0x955ea447, 0xf6597d63,
+    0x5351160f, 0x3056cf2b, 0xc230c696, 0xa1371fb2, 0x043f74de,
+    0x6738adfa, 0xbd4aece0, 0xde4d35c4, 0x7b455ea8, 0x1842878c,
+    0xea248e31, 0x89235715, 0x2c2b3c79, 0x4f2ce55d, 0x13962942,
+    0x7091f066, 0xd5999b0a, 0xb69e422e, 0x44f84b93, 0x27ff92b7,
+    0x82f7f9db, 0xe1f020ff, 0x9bd34379, 0xf8d49a5d, 0x5ddcf131,
+    0x3edb2815, 0xccbd21a8, 0xafbaf88c, 0x0ab293e0, 0x69b54ac4,
+    0x350f86db, 0x56085fff, 0xf3003493, 0x9007edb7, 0x6261e40a,
+    0x01663d2e, 0xa46e5642, 0xc7698f66, 0x1d1bce7c, 0x7e1c1758,
+    0xdb147c34, 0xb813a510, 0x4a75acad, 0x29727589, 0x8c7a1ee5,
+    0xef7dc7c1, 0xb3c70bde, 0xd0c0d2fa, 0x75c8b996, 0x16cf60b2,
+    0xe4a9690f, 0x87aeb02b, 0x22a6db47, 0x41a10263, 0x4d335f32,
+    0x2e348616, 0x8b3ced7a, 0xe83b345e, 0x1a5d3de3, 0x795ae4c7,
+    0xdc528fab, 0xbf55568f, 0xe3ef9a90, 0x80e843b4, 0x25e028d8,
+    0x46e7f1fc, 0xb481f841, 0xd7862165, 0x728e4a09, 0x1189932d,
+    0xcbfbd237, 0xa8fc0b13, 0x0df4607f, 0x6ef3b95b, 0x9c95b0e6,
+    0xff9269c2, 0x5a9a02ae, 0x399ddb8a, 0x65271795, 0x0620ceb1,
+    0xa328a5dd, 0xc02f7cf9, 0x32497544, 0x514eac60, 0xf446c70c,
+    0x97411e28},
+   {0x00000000, 0x01b5fd1d, 0x036bfa3a, 0x02de0727, 0x06d7f474,
+    0x07620969, 0x05bc0e4e, 0x0409f353, 0x0dafe8e8, 0x0c1a15f5,
+    0x0ec412d2, 0x0f71efcf, 0x0b781c9c, 0x0acde181, 0x0813e6a6,
+    0x09a61bbb, 0x1b5fd1d0, 0x1aea2ccd, 0x18342bea, 0x1981d6f7,
+    0x1d8825a4, 0x1c3dd8b9, 0x1ee3df9e, 0x1f562283, 0x16f03938,
+    0x1745c425, 0x159bc302, 0x142e3e1f, 0x1027cd4c, 0x11923051,
+    0x134c3776, 0x12f9ca6b, 0x36bfa3a0, 0x370a5ebd, 0x35d4599a,
+    0x3461a487, 0x306857d4, 0x31ddaac9, 0x3303adee, 0x32b650f3,
+    0x3b104b48, 0x3aa5b655, 0x387bb172, 0x39ce4c6f, 0x3dc7bf3c,
+    0x3c724221, 0x3eac4506, 0x3f19b81b, 0x2de07270, 0x2c558f6d,
+    0x2e8b884a, 0x2f3e7557, 0x2b378604, 0x2a827b19, 0x285c7c3e,
+    0x29e98123, 0x204f9a98, 0x21fa6785, 0x232460a2, 0x22919dbf,
+    0x26986eec, 0x272d93f1, 0x25f394d6, 0x244669cb, 0x6d7f4740,
+    0x6ccaba5d, 0x6e14bd7a, 0x6fa14067, 0x6ba8b334, 0x6a1d4e29,
+    0x68c3490e, 0x6976b413, 0x60d0afa8, 0x616552b5, 0x63bb5592,
+    0x620ea88f, 0x66075bdc, 0x67b2a6c1, 0x656ca1e6, 0x64d95cfb,
+    0x76209690, 0x77956b8d, 0x754b6caa, 0x74fe91b7, 0x70f762e4,
+    0x71429ff9, 0x739c98de, 0x722965c3, 0x7b8f7e78, 0x7a3a8365,
+    0x78e48442, 0x7951795f, 0x7d588a0c, 0x7ced7711, 0x7e337036,
+    0x7f868d2b, 0x5bc0e4e0, 0x5a7519fd, 0x58ab1eda, 0x591ee3c7,
+    0x5d171094, 0x5ca2ed89, 0x5e7ceaae, 0x5fc917b3, 0x566f0c08,
+    0x57daf115, 0x5504f632, 0x54b10b2f, 0x50b8f87c, 0x510d0561,
+    0x53d30246, 0x5266ff5b, 0x409f3530, 0x412ac82d, 0x43f4cf0a,
+    0x42413217, 0x4648c144, 0x47fd3c59, 0x45233b7e, 0x4496c663,
+    0x4d30ddd8, 0x4c8520c5, 0x4e5b27e2, 0x4feedaff, 0x4be729ac,
+    0x4a52d4b1, 0x488cd396, 0x49392e8b, 0xdafe8e80, 0xdb4b739d,
+    0xd99574ba, 0xd82089a7, 0xdc297af4, 0xdd9c87e9, 0xdf4280ce,
+    0xdef77dd3, 0xd7516668, 0xd6e49b75, 0xd43a9c52, 0xd58f614f,
+    0xd186921c, 0xd0336f01, 0xd2ed6826, 0xd358953b, 0xc1a15f50,
+    0xc014a24d, 0xc2caa56a, 0xc37f5877, 0xc776ab24, 0xc6c35639,
+    0xc41d511e, 0xc5a8ac03, 0xcc0eb7b8, 0xcdbb4aa5, 0xcf654d82,
+    0xced0b09f, 0xcad943cc, 0xcb6cbed1, 0xc9b2b9f6, 0xc80744eb,
+    0xec412d20, 0xedf4d03d, 0xef2ad71a, 0xee9f2a07, 0xea96d954,
+    0xeb232449, 0xe9fd236e, 0xe848de73, 0xe1eec5c8, 0xe05b38d5,
+    0xe2853ff2, 0xe330c2ef, 0xe73931bc, 0xe68ccca1, 0xe452cb86,
+    0xe5e7369b, 0xf71efcf0, 0xf6ab01ed, 0xf47506ca, 0xf5c0fbd7,
+    0xf1c90884, 0xf07cf599, 0xf2a2f2be, 0xf3170fa3, 0xfab11418,
+    0xfb04e905, 0xf9daee22, 0xf86f133f, 0xfc66e06c, 0xfdd31d71,
+    0xff0d1a56, 0xfeb8e74b, 0xb781c9c0, 0xb63434dd, 0xb4ea33fa,
+    0xb55fcee7, 0xb1563db4, 0xb0e3c0a9, 0xb23dc78e, 0xb3883a93,
+    0xba2e2128, 0xbb9bdc35, 0xb945db12, 0xb8f0260f, 0xbcf9d55c,
+    0xbd4c2841, 0xbf922f66, 0xbe27d27b, 0xacde1810, 0xad6be50d,
+    0xafb5e22a, 0xae001f37, 0xaa09ec64, 0xabbc1179, 0xa962165e,
+    0xa8d7eb43, 0xa171f0f8, 0xa0c40de5, 0xa21a0ac2, 0xa3aff7df,
+    0xa7a6048c, 0xa613f991, 0xa4cdfeb6, 0xa57803ab, 0x813e6a60,
+    0x808b977d, 0x8255905a, 0x83e06d47, 0x87e99e14, 0x865c6309,
+    0x8482642e, 0x85379933, 0x8c918288, 0x8d247f95, 0x8ffa78b2,
+    0x8e4f85af, 0x8a4676fc, 0x8bf38be1, 0x892d8cc6, 0x889871db,
+    0x9a61bbb0, 0x9bd446ad, 0x990a418a, 0x98bfbc97, 0x9cb64fc4,
+    0x9d03b2d9, 0x9fddb5fe, 0x9e6848e3, 0x97ce5358, 0x967bae45,
+    0x94a5a962, 0x9510547f, 0x9119a72c, 0x90ac5a31, 0x92725d16,
+    0x93c7a00b},
+   {0x00000000, 0x6e8c1b41, 0xdd183682, 0xb3942dc3, 0x61416b45,
+    0x0fcd7004, 0xbc595dc7, 0xd2d54686, 0xc282d68a, 0xac0ecdcb,
+    0x1f9ae008, 0x7116fb49, 0xa3c3bdcf, 0xcd4fa68e, 0x7edb8b4d,
+    0x1057900c, 0x5e74ab55, 0x30f8b014, 0x836c9dd7, 0xede08696,
+    0x3f35c010, 0x51b9db51, 0xe22df692, 0x8ca1edd3, 0x9cf67ddf,
+    0xf27a669e, 0x41ee4b5d, 0x2f62501c, 0xfdb7169a, 0x933b0ddb,
+    0x20af2018, 0x4e233b59, 0xbce956aa, 0xd2654deb, 0x61f16028,
+    0x0f7d7b69, 0xdda83def, 0xb32426ae, 0x00b00b6d, 0x6e3c102c,
+    0x7e6b8020, 0x10e79b61, 0xa373b6a2, 0xcdffade3, 0x1f2aeb65,
+    0x71a6f024, 0xc232dde7, 0xacbec6a6, 0xe29dfdff, 0x8c11e6be,
+    0x3f85cb7d, 0x5109d03c, 0x83dc96ba, 0xed508dfb, 0x5ec4a038,
+    0x3048bb79, 0x201f2b75, 0x4e933034, 0xfd071df7, 0x938b06b6,
+    0x415e4030, 0x2fd25b71, 0x9c4676b2, 0xf2ca6df3, 0xa2a3ab15,
+    0xcc2fb054, 0x7fbb9d97, 0x113786d6, 0xc3e2c050, 0xad6edb11,
+    0x1efaf6d2, 0x7076ed93, 0x60217d9f, 0x0ead66de, 0xbd394b1d,
+    0xd3b5505c, 0x016016da, 0x6fec0d9b, 0xdc782058, 0xb2f43b19,
+    0xfcd70040, 0x925b1b01, 0x21cf36c2, 0x4f432d83, 0x9d966b05,
+    0xf31a7044, 0x408e5d87, 0x2e0246c6, 0x3e55d6ca, 0x50d9cd8b,
+    0xe34de048, 0x8dc1fb09, 0x5f14bd8f, 0x3198a6ce, 0x820c8b0d,
+    0xec80904c, 0x1e4afdbf, 0x70c6e6fe, 0xc352cb3d, 0xadded07c,
+    0x7f0b96fa, 0x11878dbb, 0xa213a078, 0xcc9fbb39, 0xdcc82b35,
+    0xb2443074, 0x01d01db7, 0x6f5c06f6, 0xbd894070, 0xd3055b31,
+    0x609176f2, 0x0e1d6db3, 0x403e56ea, 0x2eb24dab, 0x9d266068,
+    0xf3aa7b29, 0x217f3daf, 0x4ff326ee, 0xfc670b2d, 0x92eb106c,
+    0x82bc8060, 0xec309b21, 0x5fa4b6e2, 0x3128ada3, 0xe3fdeb25,
+    0x8d71f064, 0x3ee5dda7, 0x5069c6e6, 0x9e36506b, 0xf0ba4b2a,
+    0x432e66e9, 0x2da27da8, 0xff773b2e, 0x91fb206f, 0x226f0dac,
+    0x4ce316ed, 0x5cb486e1, 0x32389da0, 0x81acb063, 0xef20ab22,
+    0x3df5eda4, 0x5379f6e5, 0xe0eddb26, 0x8e61c067, 0xc042fb3e,
+    0xaecee07f, 0x1d5acdbc, 0x73d6d6fd, 0xa103907b, 0xcf8f8b3a,
+    0x7c1ba6f9, 0x1297bdb8, 0x02c02db4, 0x6c4c36f5, 0xdfd81b36,
+    0xb1540077, 0x638146f1, 0x0d0d5db0, 0xbe997073, 0xd0156b32,
+    0x22df06c1, 0x4c531d80, 0xffc73043, 0x914b2b02, 0x439e6d84,
+    0x2d1276c5, 0x9e865b06, 0xf00a4047, 0xe05dd04b, 0x8ed1cb0a,
+    0x3d45e6c9, 0x53c9fd88, 0x811cbb0e, 0xef90a04f, 0x5c048d8c,
+    0x328896cd, 0x7cabad94, 0x1227b6d5, 0xa1b39b16, 0xcf3f8057,
+    0x1deac6d1, 0x7366dd90, 0xc0f2f053, 0xae7eeb12, 0xbe297b1e,
+    0xd0a5605f, 0x63314d9c, 0x0dbd56dd, 0xdf68105b, 0xb1e40b1a,
+    0x027026d9, 0x6cfc3d98, 0x3c95fb7e, 0x5219e03f, 0xe18dcdfc,
+    0x8f01d6bd, 0x5dd4903b, 0x33588b7a, 0x80cca6b9, 0xee40bdf8,
+    0xfe172df4, 0x909b36b5, 0x230f1b76, 0x4d830037, 0x9f5646b1,
+    0xf1da5df0, 0x424e7033, 0x2cc26b72, 0x62e1502b, 0x0c6d4b6a,
+    0xbff966a9, 0xd1757de8, 0x03a03b6e, 0x6d2c202f, 0xdeb80dec,
+    0xb03416ad, 0xa06386a1, 0xceef9de0, 0x7d7bb023, 0x13f7ab62,
+    0xc122ede4, 0xafaef6a5, 0x1c3adb66, 0x72b6c027, 0x807cadd4,
+    0xeef0b695, 0x5d649b56, 0x33e88017, 0xe13dc691, 0x8fb1ddd0,
+    0x3c25f013, 0x52a9eb52, 0x42fe7b5e, 0x2c72601f, 0x9fe64ddc,
+    0xf16a569d, 0x23bf101b, 0x4d330b5a, 0xfea72699, 0x902b3dd8,
+    0xde080681, 0xb0841dc0, 0x03103003, 0x6d9c2b42, 0xbf496dc4,
+    0xd1c57685, 0x62515b46, 0x0cdd4007, 0x1c8ad00b, 0x7206cb4a,
+    0xc192e689, 0xaf1efdc8, 0x7dcbbb4e, 0x1347a00f, 0xa0d38dcc,
+    0xce5f968d},
+   {0x00000000, 0xe71da697, 0x154a4b6f, 0xf257edf8, 0x2a9496de,
+    0xcd893049, 0x3fdeddb1, 0xd8c37b26, 0x55292dbc, 0xb2348b2b,
+    0x406366d3, 0xa77ec044, 0x7fbdbb62, 0x98a01df5, 0x6af7f00d,
+    0x8dea569a, 0xaa525b78, 0x4d4ffdef, 0xbf181017, 0x5805b680,
+    0x80c6cda6, 0x67db6b31, 0x958c86c9, 0x7291205e, 0xff7b76c4,
+    0x1866d053, 0xea313dab, 0x0d2c9b3c, 0xd5efe01a, 0x32f2468d,
+    0xc0a5ab75, 0x27b80de2, 0x8fd5b0b1, 0x68c81626, 0x9a9ffbde,
+    0x7d825d49, 0xa541266f, 0x425c80f8, 0xb00b6d00, 0x5716cb97,
+    0xdafc9d0d, 0x3de13b9a, 0xcfb6d662, 0x28ab70f5, 0xf0680bd3,
+    0x1775ad44, 0xe52240bc, 0x023fe62b, 0x2587ebc9, 0xc29a4d5e,
+    0x30cda0a6, 0xd7d00631, 0x0f137d17, 0xe80edb80, 0x1a593678,
+    0xfd4490ef, 0x70aec675, 0x97b360e2, 0x65e48d1a, 0x82f92b8d,
+    0x5a3a50ab, 0xbd27f63c, 0x4f701bc4, 0xa86dbd53, 0xc4da6723,
+    0x23c7c1b4, 0xd1902c4c, 0x368d8adb, 0xee4ef1fd, 0x0953576a,
+    0xfb04ba92, 0x1c191c05, 0x91f34a9f, 0x76eeec08, 0x84b901f0,
+    0x63a4a767, 0xbb67dc41, 0x5c7a7ad6, 0xae2d972e, 0x493031b9,
+    0x6e883c5b, 0x89959acc, 0x7bc27734, 0x9cdfd1a3, 0x441caa85,
+    0xa3010c12, 0x5156e1ea, 0xb64b477d, 0x3ba111e7, 0xdcbcb770,
+    0x2eeb5a88, 0xc9f6fc1f, 0x11358739, 0xf62821ae, 0x047fcc56,
+    0xe3626ac1, 0x4b0fd792, 0xac127105, 0x5e459cfd, 0xb9583a6a,
+    0x619b414c, 0x8686e7db, 0x74d10a23, 0x93ccacb4, 0x1e26fa2e,
+    0xf93b5cb9, 0x0b6cb141, 0xec7117d6, 0x34b26cf0, 0xd3afca67,
+    0x21f8279f, 0xc6e58108, 0xe15d8cea, 0x06402a7d, 0xf417c785,
+    0x130a6112, 0xcbc91a34, 0x2cd4bca3, 0xde83515b, 0x399ef7cc,
+    0xb474a156, 0x536907c1, 0xa13eea39, 0x46234cae, 0x9ee03788,
+    0x79fd911f, 0x8baa7ce7, 0x6cb7da70, 0x52c5c807, 0xb5d86e90,
+    0x478f8368, 0xa09225ff, 0x78515ed9, 0x9f4cf84e, 0x6d1b15b6,
+    0x8a06b321, 0x07ece5bb, 0xe0f1432c, 0x12a6aed4, 0xf5bb0843,
+    0x2d787365, 0xca65d5f2, 0x3832380a, 0xdf2f9e9d, 0xf897937f,
+    0x1f8a35e8, 0xedddd810, 0x0ac07e87, 0xd20305a1, 0x351ea336,
+    0xc7494ece, 0x2054e859, 0xadbebec3, 0x4aa31854, 0xb8f4f5ac,
+    0x5fe9533b, 0x872a281d, 0x60378e8a, 0x92606372, 0x757dc5e5,
+    0xdd1078b6, 0x3a0dde21, 0xc85a33d9, 0x2f47954e, 0xf784ee68,
+    0x109948ff, 0xe2cea507, 0x05d30390, 0x8839550a, 0x6f24f39d,
+    0x9d731e65, 0x7a6eb8f2, 0xa2adc3d4, 0x45b06543, 0xb7e788bb,
+    0x50fa2e2c, 0x774223ce, 0x905f8559, 0x620868a1, 0x8515ce36,
+    0x5dd6b510, 0xbacb1387, 0x489cfe7f, 0xaf8158e8, 0x226b0e72,
+    0xc576a8e5, 0x3721451d, 0xd03ce38a, 0x08ff98ac, 0xefe23e3b,
+    0x1db5d3c3, 0xfaa87554, 0x961faf24, 0x710209b3, 0x8355e44b,
+    0x644842dc, 0xbc8b39fa, 0x5b969f6d, 0xa9c17295, 0x4edcd402,
+    0xc3368298, 0x242b240f, 0xd67cc9f7, 0x31616f60, 0xe9a21446,
+    0x0ebfb2d1, 0xfce85f29, 0x1bf5f9be, 0x3c4df45c, 0xdb5052cb,
+    0x2907bf33, 0xce1a19a4, 0x16d96282, 0xf1c4c415, 0x039329ed,
+    0xe48e8f7a, 0x6964d9e0, 0x8e797f77, 0x7c2e928f, 0x9b333418,
+    0x43f04f3e, 0xa4ede9a9, 0x56ba0451, 0xb1a7a2c6, 0x19ca1f95,
+    0xfed7b902, 0x0c8054fa, 0xeb9df26d, 0x335e894b, 0xd4432fdc,
+    0x2614c224, 0xc10964b3, 0x4ce33229, 0xabfe94be, 0x59a97946,
+    0xbeb4dfd1, 0x6677a4f7, 0x816a0260, 0x733def98, 0x9420490f,
+    0xb39844ed, 0x5485e27a, 0xa6d20f82, 0x41cfa915, 0x990cd233,
+    0x7e1174a4, 0x8c46995c, 0x6b5b3fcb, 0xe6b16951, 0x01accfc6,
+    0xf3fb223e, 0x14e684a9, 0xcc25ff8f, 0x2b385918, 0xd96fb4e0,
+    0x3e721277},
+   {0x00000000, 0xa58b900e, 0x9066265d, 0x35edb653, 0xfbbd4afb,
+    0x5e36daf5, 0x6bdb6ca6, 0xce50fca8, 0x2c0b93b7, 0x898003b9,
+    0xbc6db5ea, 0x19e625e4, 0xd7b6d94c, 0x723d4942, 0x47d0ff11,
+    0xe25b6f1f, 0x5817276e, 0xfd9cb760, 0xc8710133, 0x6dfa913d,
+    0xa3aa6d95, 0x0621fd9b, 0x33cc4bc8, 0x9647dbc6, 0x741cb4d9,
+    0xd19724d7, 0xe47a9284, 0x41f1028a, 0x8fa1fe22, 0x2a2a6e2c,
+    0x1fc7d87f, 0xba4c4871, 0xb02e4edc, 0x15a5ded2, 0x20486881,
+    0x85c3f88f, 0x4b930427, 0xee189429, 0xdbf5227a, 0x7e7eb274,
+    0x9c25dd6b, 0x39ae4d65, 0x0c43fb36, 0xa9c86b38, 0x67989790,
+    0xc213079e, 0xf7feb1cd, 0x527521c3, 0xe83969b2, 0x4db2f9bc,
+    0x785f4fef, 0xddd4dfe1, 0x13842349, 0xb60fb347, 0x83e20514,
+    0x2669951a, 0xc432fa05, 0x61b96a0b, 0x5454dc58, 0xf1df4c56,
+    0x3f8fb0fe, 0x9a0420f0, 0xafe996a3, 0x0a6206ad, 0xbb2d9bf9,
+    0x1ea60bf7, 0x2b4bbda4, 0x8ec02daa, 0x4090d102, 0xe51b410c,
+    0xd0f6f75f, 0x757d6751, 0x9726084e, 0x32ad9840, 0x07402e13,
+    0xa2cbbe1d, 0x6c9b42b5, 0xc910d2bb, 0xfcfd64e8, 0x5976f4e6,
+    0xe33abc97, 0x46b12c99, 0x735c9aca, 0xd6d70ac4, 0x1887f66c,
+    0xbd0c6662, 0x88e1d031, 0x2d6a403f, 0xcf312f20, 0x6ababf2e,
+    0x5f57097d, 0xfadc9973, 0x348c65db, 0x9107f5d5, 0xa4ea4386,
+    0x0161d388, 0x0b03d525, 0xae88452b, 0x9b65f378, 0x3eee6376,
+    0xf0be9fde, 0x55350fd0, 0x60d8b983, 0xc553298d, 0x27084692,
+    0x8283d69c, 0xb76e60cf, 0x12e5f0c1, 0xdcb50c69, 0x793e9c67,
+    0x4cd32a34, 0xe958ba3a, 0x5314f24b, 0xf69f6245, 0xc372d416,
+    0x66f94418, 0xa8a9b8b0, 0x0d2228be, 0x38cf9eed, 0x9d440ee3,
+    0x7f1f61fc, 0xda94f1f2, 0xef7947a1, 0x4af2d7af, 0x84a22b07,
+    0x2129bb09, 0x14c40d5a, 0xb14f9d54, 0xad2a31b3, 0x08a1a1bd,
+    0x3d4c17ee, 0x98c787e0, 0x56977b48, 0xf31ceb46, 0xc6f15d15,
+    0x637acd1b, 0x8121a204, 0x24aa320a, 0x11478459, 0xb4cc1457,
+    0x7a9ce8ff, 0xdf1778f1, 0xeafacea2, 0x4f715eac, 0xf53d16dd,
+    0x50b686d3, 0x655b3080, 0xc0d0a08e, 0x0e805c26, 0xab0bcc28,
+    0x9ee67a7b, 0x3b6dea75, 0xd936856a, 0x7cbd1564, 0x4950a337,
+    0xecdb3339, 0x228bcf91, 0x87005f9f, 0xb2ede9cc, 0x176679c2,
+    0x1d047f6f, 0xb88fef61, 0x8d625932, 0x28e9c93c, 0xe6b93594,
+    0x4332a59a, 0x76df13c9, 0xd35483c7, 0x310fecd8, 0x94847cd6,
+    0xa169ca85, 0x04e25a8b, 0xcab2a623, 0x6f39362d, 0x5ad4807e,
+    0xff5f1070, 0x45135801, 0xe098c80f, 0xd5757e5c, 0x70feee52,
+    0xbeae12fa, 0x1b2582f4, 0x2ec834a7, 0x8b43a4a9, 0x6918cbb6,
+    0xcc935bb8, 0xf97eedeb, 0x5cf57de5, 0x92a5814d, 0x372e1143,
+    0x02c3a710, 0xa748371e, 0x1607aa4a, 0xb38c3a44, 0x86618c17,
+    0x23ea1c19, 0xedbae0b1, 0x483170bf, 0x7ddcc6ec, 0xd85756e2,
+    0x3a0c39fd, 0x9f87a9f3, 0xaa6a1fa0, 0x0fe18fae, 0xc1b17306,
+    0x643ae308, 0x51d7555b, 0xf45cc555, 0x4e108d24, 0xeb9b1d2a,
+    0xde76ab79, 0x7bfd3b77, 0xb5adc7df, 0x102657d1, 0x25cbe182,
+    0x8040718c, 0x621b1e93, 0xc7908e9d, 0xf27d38ce, 0x57f6a8c0,
+    0x99a65468, 0x3c2dc466, 0x09c07235, 0xac4be23b, 0xa629e496,
+    0x03a27498, 0x364fc2cb, 0x93c452c5, 0x5d94ae6d, 0xf81f3e63,
+    0xcdf28830, 0x6879183e, 0x8a227721, 0x2fa9e72f, 0x1a44517c,
+    0xbfcfc172, 0x719f3dda, 0xd414add4, 0xe1f91b87, 0x44728b89,
+    0xfe3ec3f8, 0x5bb553f6, 0x6e58e5a5, 0xcbd375ab, 0x05838903,
+    0xa008190d, 0x95e5af5e, 0x306e3f50, 0xd235504f, 0x77bec041,
+    0x42537612, 0xe7d8e61c, 0x29881ab4, 0x8c038aba, 0xb9ee3ce9,
+    0x1c65ace7}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0x0e908ba500000000, 0x5d26669000000000,
+    0x53b6ed3500000000, 0xfb4abdfb00000000, 0xf5da365e00000000,
+    0xa66cdb6b00000000, 0xa8fc50ce00000000, 0xb7930b2c00000000,
+    0xb903808900000000, 0xeab56dbc00000000, 0xe425e61900000000,
+    0x4cd9b6d700000000, 0x42493d7200000000, 0x11ffd04700000000,
+    0x1f6f5be200000000, 0x6e27175800000000, 0x60b79cfd00000000,
+    0x330171c800000000, 0x3d91fa6d00000000, 0x956daaa300000000,
+    0x9bfd210600000000, 0xc84bcc3300000000, 0xc6db479600000000,
+    0xd9b41c7400000000, 0xd72497d100000000, 0x84927ae400000000,
+    0x8a02f14100000000, 0x22fea18f00000000, 0x2c6e2a2a00000000,
+    0x7fd8c71f00000000, 0x71484cba00000000, 0xdc4e2eb000000000,
+    0xd2dea51500000000, 0x8168482000000000, 0x8ff8c38500000000,
+    0x2704934b00000000, 0x299418ee00000000, 0x7a22f5db00000000,
+    0x74b27e7e00000000, 0x6bdd259c00000000, 0x654dae3900000000,
+    0x36fb430c00000000, 0x386bc8a900000000, 0x9097986700000000,
+    0x9e0713c200000000, 0xcdb1fef700000000, 0xc321755200000000,
+    0xb26939e800000000, 0xbcf9b24d00000000, 0xef4f5f7800000000,
+    0xe1dfd4dd00000000, 0x4923841300000000, 0x47b30fb600000000,
+    0x1405e28300000000, 0x1a95692600000000, 0x05fa32c400000000,
+    0x0b6ab96100000000, 0x58dc545400000000, 0x564cdff100000000,
+    0xfeb08f3f00000000, 0xf020049a00000000, 0xa396e9af00000000,
+    0xad06620a00000000, 0xf99b2dbb00000000, 0xf70ba61e00000000,
+    0xa4bd4b2b00000000, 0xaa2dc08e00000000, 0x02d1904000000000,
+    0x0c411be500000000, 0x5ff7f6d000000000, 0x51677d7500000000,
+    0x4e08269700000000, 0x4098ad3200000000, 0x132e400700000000,
+    0x1dbecba200000000, 0xb5429b6c00000000, 0xbbd210c900000000,
+    0xe864fdfc00000000, 0xe6f4765900000000, 0x97bc3ae300000000,
+    0x992cb14600000000, 0xca9a5c7300000000, 0xc40ad7d600000000,
+    0x6cf6871800000000, 0x62660cbd00000000, 0x31d0e18800000000,
+    0x3f406a2d00000000, 0x202f31cf00000000, 0x2ebfba6a00000000,
+    0x7d09575f00000000, 0x7399dcfa00000000, 0xdb658c3400000000,
+    0xd5f5079100000000, 0x8643eaa400000000, 0x88d3610100000000,
+    0x25d5030b00000000, 0x2b4588ae00000000, 0x78f3659b00000000,
+    0x7663ee3e00000000, 0xde9fbef000000000, 0xd00f355500000000,
+    0x83b9d86000000000, 0x8d2953c500000000, 0x9246082700000000,
+    0x9cd6838200000000, 0xcf606eb700000000, 0xc1f0e51200000000,
+    0x690cb5dc00000000, 0x679c3e7900000000, 0x342ad34c00000000,
+    0x3aba58e900000000, 0x4bf2145300000000, 0x45629ff600000000,
+    0x16d472c300000000, 0x1844f96600000000, 0xb0b8a9a800000000,
+    0xbe28220d00000000, 0xed9ecf3800000000, 0xe30e449d00000000,
+    0xfc611f7f00000000, 0xf2f194da00000000, 0xa14779ef00000000,
+    0xafd7f24a00000000, 0x072ba28400000000, 0x09bb292100000000,
+    0x5a0dc41400000000, 0x549d4fb100000000, 0xb3312aad00000000,
+    0xbda1a10800000000, 0xee174c3d00000000, 0xe087c79800000000,
+    0x487b975600000000, 0x46eb1cf300000000, 0x155df1c600000000,
+    0x1bcd7a6300000000, 0x04a2218100000000, 0x0a32aa2400000000,
+    0x5984471100000000, 0x5714ccb400000000, 0xffe89c7a00000000,
+    0xf17817df00000000, 0xa2cefaea00000000, 0xac5e714f00000000,
+    0xdd163df500000000, 0xd386b65000000000, 0x80305b6500000000,
+    0x8ea0d0c000000000, 0x265c800e00000000, 0x28cc0bab00000000,
+    0x7b7ae69e00000000, 0x75ea6d3b00000000, 0x6a8536d900000000,
+    0x6415bd7c00000000, 0x37a3504900000000, 0x3933dbec00000000,
+    0x91cf8b2200000000, 0x9f5f008700000000, 0xcce9edb200000000,
+    0xc279661700000000, 0x6f7f041d00000000, 0x61ef8fb800000000,
+    0x3259628d00000000, 0x3cc9e92800000000, 0x9435b9e600000000,
+    0x9aa5324300000000, 0xc913df7600000000, 0xc78354d300000000,
+    0xd8ec0f3100000000, 0xd67c849400000000, 0x85ca69a100000000,
+    0x8b5ae20400000000, 0x23a6b2ca00000000, 0x2d36396f00000000,
+    0x7e80d45a00000000, 0x70105fff00000000, 0x0158134500000000,
+    0x0fc898e000000000, 0x5c7e75d500000000, 0x52eefe7000000000,
+    0xfa12aebe00000000, 0xf482251b00000000, 0xa734c82e00000000,
+    0xa9a4438b00000000, 0xb6cb186900000000, 0xb85b93cc00000000,
+    0xebed7ef900000000, 0xe57df55c00000000, 0x4d81a59200000000,
+    0x43112e3700000000, 0x10a7c30200000000, 0x1e3748a700000000,
+    0x4aaa071600000000, 0x443a8cb300000000, 0x178c618600000000,
+    0x191cea2300000000, 0xb1e0baed00000000, 0xbf70314800000000,
+    0xecc6dc7d00000000, 0xe25657d800000000, 0xfd390c3a00000000,
+    0xf3a9879f00000000, 0xa01f6aaa00000000, 0xae8fe10f00000000,
+    0x0673b1c100000000, 0x08e33a6400000000, 0x5b55d75100000000,
+    0x55c55cf400000000, 0x248d104e00000000, 0x2a1d9beb00000000,
+    0x79ab76de00000000, 0x773bfd7b00000000, 0xdfc7adb500000000,
+    0xd157261000000000, 0x82e1cb2500000000, 0x8c71408000000000,
+    0x931e1b6200000000, 0x9d8e90c700000000, 0xce387df200000000,
+    0xc0a8f65700000000, 0x6854a69900000000, 0x66c42d3c00000000,
+    0x3572c00900000000, 0x3be24bac00000000, 0x96e429a600000000,
+    0x9874a20300000000, 0xcbc24f3600000000, 0xc552c49300000000,
+    0x6dae945d00000000, 0x633e1ff800000000, 0x3088f2cd00000000,
+    0x3e18796800000000, 0x2177228a00000000, 0x2fe7a92f00000000,
+    0x7c51441a00000000, 0x72c1cfbf00000000, 0xda3d9f7100000000,
+    0xd4ad14d400000000, 0x871bf9e100000000, 0x898b724400000000,
+    0xf8c33efe00000000, 0xf653b55b00000000, 0xa5e5586e00000000,
+    0xab75d3cb00000000, 0x0389830500000000, 0x0d1908a000000000,
+    0x5eafe59500000000, 0x503f6e3000000000, 0x4f5035d200000000,
+    0x41c0be7700000000, 0x1276534200000000, 0x1ce6d8e700000000,
+    0xb41a882900000000, 0xba8a038c00000000, 0xe93ceeb900000000,
+    0xe7ac651c00000000},
+   {0x0000000000000000, 0x97a61de700000000, 0x6f4b4a1500000000,
+    0xf8ed57f200000000, 0xde96942a00000000, 0x493089cd00000000,
+    0xb1ddde3f00000000, 0x267bc3d800000000, 0xbc2d295500000000,
+    0x2b8b34b200000000, 0xd366634000000000, 0x44c07ea700000000,
+    0x62bbbd7f00000000, 0xf51da09800000000, 0x0df0f76a00000000,
+    0x9a56ea8d00000000, 0x785b52aa00000000, 0xeffd4f4d00000000,
+    0x171018bf00000000, 0x80b6055800000000, 0xa6cdc68000000000,
+    0x316bdb6700000000, 0xc9868c9500000000, 0x5e20917200000000,
+    0xc4767bff00000000, 0x53d0661800000000, 0xab3d31ea00000000,
+    0x3c9b2c0d00000000, 0x1ae0efd500000000, 0x8d46f23200000000,
+    0x75aba5c000000000, 0xe20db82700000000, 0xb1b0d58f00000000,
+    0x2616c86800000000, 0xdefb9f9a00000000, 0x495d827d00000000,
+    0x6f2641a500000000, 0xf8805c4200000000, 0x006d0bb000000000,
+    0x97cb165700000000, 0x0d9dfcda00000000, 0x9a3be13d00000000,
+    0x62d6b6cf00000000, 0xf570ab2800000000, 0xd30b68f000000000,
+    0x44ad751700000000, 0xbc4022e500000000, 0x2be63f0200000000,
+    0xc9eb872500000000, 0x5e4d9ac200000000, 0xa6a0cd3000000000,
+    0x3106d0d700000000, 0x177d130f00000000, 0x80db0ee800000000,
+    0x7836591a00000000, 0xef9044fd00000000, 0x75c6ae7000000000,
+    0xe260b39700000000, 0x1a8de46500000000, 0x8d2bf98200000000,
+    0xab503a5a00000000, 0x3cf627bd00000000, 0xc41b704f00000000,
+    0x53bd6da800000000, 0x2367dac400000000, 0xb4c1c72300000000,
+    0x4c2c90d100000000, 0xdb8a8d3600000000, 0xfdf14eee00000000,
+    0x6a57530900000000, 0x92ba04fb00000000, 0x051c191c00000000,
+    0x9f4af39100000000, 0x08ecee7600000000, 0xf001b98400000000,
+    0x67a7a46300000000, 0x41dc67bb00000000, 0xd67a7a5c00000000,
+    0x2e972dae00000000, 0xb931304900000000, 0x5b3c886e00000000,
+    0xcc9a958900000000, 0x3477c27b00000000, 0xa3d1df9c00000000,
+    0x85aa1c4400000000, 0x120c01a300000000, 0xeae1565100000000,
+    0x7d474bb600000000, 0xe711a13b00000000, 0x70b7bcdc00000000,
+    0x885aeb2e00000000, 0x1ffcf6c900000000, 0x3987351100000000,
+    0xae2128f600000000, 0x56cc7f0400000000, 0xc16a62e300000000,
+    0x92d70f4b00000000, 0x057112ac00000000, 0xfd9c455e00000000,
+    0x6a3a58b900000000, 0x4c419b6100000000, 0xdbe7868600000000,
+    0x230ad17400000000, 0xb4accc9300000000, 0x2efa261e00000000,
+    0xb95c3bf900000000, 0x41b16c0b00000000, 0xd61771ec00000000,
+    0xf06cb23400000000, 0x67caafd300000000, 0x9f27f82100000000,
+    0x0881e5c600000000, 0xea8c5de100000000, 0x7d2a400600000000,
+    0x85c717f400000000, 0x12610a1300000000, 0x341ac9cb00000000,
+    0xa3bcd42c00000000, 0x5b5183de00000000, 0xccf79e3900000000,
+    0x56a174b400000000, 0xc107695300000000, 0x39ea3ea100000000,
+    0xae4c234600000000, 0x8837e09e00000000, 0x1f91fd7900000000,
+    0xe77caa8b00000000, 0x70dab76c00000000, 0x07c8c55200000000,
+    0x906ed8b500000000, 0x68838f4700000000, 0xff2592a000000000,
+    0xd95e517800000000, 0x4ef84c9f00000000, 0xb6151b6d00000000,
+    0x21b3068a00000000, 0xbbe5ec0700000000, 0x2c43f1e000000000,
+    0xd4aea61200000000, 0x4308bbf500000000, 0x6573782d00000000,
+    0xf2d565ca00000000, 0x0a38323800000000, 0x9d9e2fdf00000000,
+    0x7f9397f800000000, 0xe8358a1f00000000, 0x10d8dded00000000,
+    0x877ec00a00000000, 0xa10503d200000000, 0x36a31e3500000000,
+    0xce4e49c700000000, 0x59e8542000000000, 0xc3bebead00000000,
+    0x5418a34a00000000, 0xacf5f4b800000000, 0x3b53e95f00000000,
+    0x1d282a8700000000, 0x8a8e376000000000, 0x7263609200000000,
+    0xe5c57d7500000000, 0xb67810dd00000000, 0x21de0d3a00000000,
+    0xd9335ac800000000, 0x4e95472f00000000, 0x68ee84f700000000,
+    0xff48991000000000, 0x07a5cee200000000, 0x9003d30500000000,
+    0x0a55398800000000, 0x9df3246f00000000, 0x651e739d00000000,
+    0xf2b86e7a00000000, 0xd4c3ada200000000, 0x4365b04500000000,
+    0xbb88e7b700000000, 0x2c2efa5000000000, 0xce23427700000000,
+    0x59855f9000000000, 0xa168086200000000, 0x36ce158500000000,
+    0x10b5d65d00000000, 0x8713cbba00000000, 0x7ffe9c4800000000,
+    0xe85881af00000000, 0x720e6b2200000000, 0xe5a876c500000000,
+    0x1d45213700000000, 0x8ae33cd000000000, 0xac98ff0800000000,
+    0x3b3ee2ef00000000, 0xc3d3b51d00000000, 0x5475a8fa00000000,
+    0x24af1f9600000000, 0xb309027100000000, 0x4be4558300000000,
+    0xdc42486400000000, 0xfa398bbc00000000, 0x6d9f965b00000000,
+    0x9572c1a900000000, 0x02d4dc4e00000000, 0x988236c300000000,
+    0x0f242b2400000000, 0xf7c97cd600000000, 0x606f613100000000,
+    0x4614a2e900000000, 0xd1b2bf0e00000000, 0x295fe8fc00000000,
+    0xbef9f51b00000000, 0x5cf44d3c00000000, 0xcb5250db00000000,
+    0x33bf072900000000, 0xa4191ace00000000, 0x8262d91600000000,
+    0x15c4c4f100000000, 0xed29930300000000, 0x7a8f8ee400000000,
+    0xe0d9646900000000, 0x777f798e00000000, 0x8f922e7c00000000,
+    0x1834339b00000000, 0x3e4ff04300000000, 0xa9e9eda400000000,
+    0x5104ba5600000000, 0xc6a2a7b100000000, 0x951fca1900000000,
+    0x02b9d7fe00000000, 0xfa54800c00000000, 0x6df29deb00000000,
+    0x4b895e3300000000, 0xdc2f43d400000000, 0x24c2142600000000,
+    0xb36409c100000000, 0x2932e34c00000000, 0xbe94feab00000000,
+    0x4679a95900000000, 0xd1dfb4be00000000, 0xf7a4776600000000,
+    0x60026a8100000000, 0x98ef3d7300000000, 0x0f49209400000000,
+    0xed4498b300000000, 0x7ae2855400000000, 0x820fd2a600000000,
+    0x15a9cf4100000000, 0x33d20c9900000000, 0xa474117e00000000,
+    0x5c99468c00000000, 0xcb3f5b6b00000000, 0x5169b1e600000000,
+    0xc6cfac0100000000, 0x3e22fbf300000000, 0xa984e61400000000,
+    0x8fff25cc00000000, 0x1859382b00000000, 0xe0b46fd900000000,
+    0x7712723e00000000},
+   {0x0000000000000000, 0x411b8c6e00000000, 0x823618dd00000000,
+    0xc32d94b300000000, 0x456b416100000000, 0x0470cd0f00000000,
+    0xc75d59bc00000000, 0x8646d5d200000000, 0x8ad682c200000000,
+    0xcbcd0eac00000000, 0x08e09a1f00000000, 0x49fb167100000000,
+    0xcfbdc3a300000000, 0x8ea64fcd00000000, 0x4d8bdb7e00000000,
+    0x0c90571000000000, 0x55ab745e00000000, 0x14b0f83000000000,
+    0xd79d6c8300000000, 0x9686e0ed00000000, 0x10c0353f00000000,
+    0x51dbb95100000000, 0x92f62de200000000, 0xd3eda18c00000000,
+    0xdf7df69c00000000, 0x9e667af200000000, 0x5d4bee4100000000,
+    0x1c50622f00000000, 0x9a16b7fd00000000, 0xdb0d3b9300000000,
+    0x1820af2000000000, 0x593b234e00000000, 0xaa56e9bc00000000,
+    0xeb4d65d200000000, 0x2860f16100000000, 0x697b7d0f00000000,
+    0xef3da8dd00000000, 0xae2624b300000000, 0x6d0bb00000000000,
+    0x2c103c6e00000000, 0x20806b7e00000000, 0x619be71000000000,
+    0xa2b673a300000000, 0xe3adffcd00000000, 0x65eb2a1f00000000,
+    0x24f0a67100000000, 0xe7dd32c200000000, 0xa6c6beac00000000,
+    0xfffd9de200000000, 0xbee6118c00000000, 0x7dcb853f00000000,
+    0x3cd0095100000000, 0xba96dc8300000000, 0xfb8d50ed00000000,
+    0x38a0c45e00000000, 0x79bb483000000000, 0x752b1f2000000000,
+    0x3430934e00000000, 0xf71d07fd00000000, 0xb6068b9300000000,
+    0x30405e4100000000, 0x715bd22f00000000, 0xb276469c00000000,
+    0xf36dcaf200000000, 0x15aba3a200000000, 0x54b02fcc00000000,
+    0x979dbb7f00000000, 0xd686371100000000, 0x50c0e2c300000000,
+    0x11db6ead00000000, 0xd2f6fa1e00000000, 0x93ed767000000000,
+    0x9f7d216000000000, 0xde66ad0e00000000, 0x1d4b39bd00000000,
+    0x5c50b5d300000000, 0xda16600100000000, 0x9b0dec6f00000000,
+    0x582078dc00000000, 0x193bf4b200000000, 0x4000d7fc00000000,
+    0x011b5b9200000000, 0xc236cf2100000000, 0x832d434f00000000,
+    0x056b969d00000000, 0x44701af300000000, 0x875d8e4000000000,
+    0xc646022e00000000, 0xcad6553e00000000, 0x8bcdd95000000000,
+    0x48e04de300000000, 0x09fbc18d00000000, 0x8fbd145f00000000,
+    0xcea6983100000000, 0x0d8b0c8200000000, 0x4c9080ec00000000,
+    0xbffd4a1e00000000, 0xfee6c67000000000, 0x3dcb52c300000000,
+    0x7cd0dead00000000, 0xfa960b7f00000000, 0xbb8d871100000000,
+    0x78a013a200000000, 0x39bb9fcc00000000, 0x352bc8dc00000000,
+    0x743044b200000000, 0xb71dd00100000000, 0xf6065c6f00000000,
+    0x704089bd00000000, 0x315b05d300000000, 0xf276916000000000,
+    0xb36d1d0e00000000, 0xea563e4000000000, 0xab4db22e00000000,
+    0x6860269d00000000, 0x297baaf300000000, 0xaf3d7f2100000000,
+    0xee26f34f00000000, 0x2d0b67fc00000000, 0x6c10eb9200000000,
+    0x6080bc8200000000, 0x219b30ec00000000, 0xe2b6a45f00000000,
+    0xa3ad283100000000, 0x25ebfde300000000, 0x64f0718d00000000,
+    0xa7dde53e00000000, 0xe6c6695000000000, 0x6b50369e00000000,
+    0x2a4bbaf000000000, 0xe9662e4300000000, 0xa87da22d00000000,
+    0x2e3b77ff00000000, 0x6f20fb9100000000, 0xac0d6f2200000000,
+    0xed16e34c00000000, 0xe186b45c00000000, 0xa09d383200000000,
+    0x63b0ac8100000000, 0x22ab20ef00000000, 0xa4edf53d00000000,
+    0xe5f6795300000000, 0x26dbede000000000, 0x67c0618e00000000,
+    0x3efb42c000000000, 0x7fe0ceae00000000, 0xbccd5a1d00000000,
+    0xfdd6d67300000000, 0x7b9003a100000000, 0x3a8b8fcf00000000,
+    0xf9a61b7c00000000, 0xb8bd971200000000, 0xb42dc00200000000,
+    0xf5364c6c00000000, 0x361bd8df00000000, 0x770054b100000000,
+    0xf146816300000000, 0xb05d0d0d00000000, 0x737099be00000000,
+    0x326b15d000000000, 0xc106df2200000000, 0x801d534c00000000,
+    0x4330c7ff00000000, 0x022b4b9100000000, 0x846d9e4300000000,
+    0xc576122d00000000, 0x065b869e00000000, 0x47400af000000000,
+    0x4bd05de000000000, 0x0acbd18e00000000, 0xc9e6453d00000000,
+    0x88fdc95300000000, 0x0ebb1c8100000000, 0x4fa090ef00000000,
+    0x8c8d045c00000000, 0xcd96883200000000, 0x94adab7c00000000,
+    0xd5b6271200000000, 0x169bb3a100000000, 0x57803fcf00000000,
+    0xd1c6ea1d00000000, 0x90dd667300000000, 0x53f0f2c000000000,
+    0x12eb7eae00000000, 0x1e7b29be00000000, 0x5f60a5d000000000,
+    0x9c4d316300000000, 0xdd56bd0d00000000, 0x5b1068df00000000,
+    0x1a0be4b100000000, 0xd926700200000000, 0x983dfc6c00000000,
+    0x7efb953c00000000, 0x3fe0195200000000, 0xfccd8de100000000,
+    0xbdd6018f00000000, 0x3b90d45d00000000, 0x7a8b583300000000,
+    0xb9a6cc8000000000, 0xf8bd40ee00000000, 0xf42d17fe00000000,
+    0xb5369b9000000000, 0x761b0f2300000000, 0x3700834d00000000,
+    0xb146569f00000000, 0xf05ddaf100000000, 0x33704e4200000000,
+    0x726bc22c00000000, 0x2b50e16200000000, 0x6a4b6d0c00000000,
+    0xa966f9bf00000000, 0xe87d75d100000000, 0x6e3ba00300000000,
+    0x2f202c6d00000000, 0xec0db8de00000000, 0xad1634b000000000,
+    0xa18663a000000000, 0xe09defce00000000, 0x23b07b7d00000000,
+    0x62abf71300000000, 0xe4ed22c100000000, 0xa5f6aeaf00000000,
+    0x66db3a1c00000000, 0x27c0b67200000000, 0xd4ad7c8000000000,
+    0x95b6f0ee00000000, 0x569b645d00000000, 0x1780e83300000000,
+    0x91c63de100000000, 0xd0ddb18f00000000, 0x13f0253c00000000,
+    0x52eba95200000000, 0x5e7bfe4200000000, 0x1f60722c00000000,
+    0xdc4de69f00000000, 0x9d566af100000000, 0x1b10bf2300000000,
+    0x5a0b334d00000000, 0x9926a7fe00000000, 0xd83d2b9000000000,
+    0x810608de00000000, 0xc01d84b000000000, 0x0330100300000000,
+    0x422b9c6d00000000, 0xc46d49bf00000000, 0x8576c5d100000000,
+    0x465b516200000000, 0x0740dd0c00000000, 0x0bd08a1c00000000,
+    0x4acb067200000000, 0x89e692c100000000, 0xc8fd1eaf00000000,
+    0x4ebbcb7d00000000, 0x0fa0471300000000, 0xcc8dd3a000000000,
+    0x8d965fce00000000},
+   {0x0000000000000000, 0x1dfdb50100000000, 0x3afa6b0300000000,
+    0x2707de0200000000, 0x74f4d70600000000, 0x6909620700000000,
+    0x4e0ebc0500000000, 0x53f3090400000000, 0xe8e8af0d00000000,
+    0xf5151a0c00000000, 0xd212c40e00000000, 0xcfef710f00000000,
+    0x9c1c780b00000000, 0x81e1cd0a00000000, 0xa6e6130800000000,
+    0xbb1ba60900000000, 0xd0d15f1b00000000, 0xcd2cea1a00000000,
+    0xea2b341800000000, 0xf7d6811900000000, 0xa425881d00000000,
+    0xb9d83d1c00000000, 0x9edfe31e00000000, 0x8322561f00000000,
+    0x3839f01600000000, 0x25c4451700000000, 0x02c39b1500000000,
+    0x1f3e2e1400000000, 0x4ccd271000000000, 0x5130921100000000,
+    0x76374c1300000000, 0x6bcaf91200000000, 0xa0a3bf3600000000,
+    0xbd5e0a3700000000, 0x9a59d43500000000, 0x87a4613400000000,
+    0xd457683000000000, 0xc9aadd3100000000, 0xeead033300000000,
+    0xf350b63200000000, 0x484b103b00000000, 0x55b6a53a00000000,
+    0x72b17b3800000000, 0x6f4cce3900000000, 0x3cbfc73d00000000,
+    0x2142723c00000000, 0x0645ac3e00000000, 0x1bb8193f00000000,
+    0x7072e02d00000000, 0x6d8f552c00000000, 0x4a888b2e00000000,
+    0x57753e2f00000000, 0x0486372b00000000, 0x197b822a00000000,
+    0x3e7c5c2800000000, 0x2381e92900000000, 0x989a4f2000000000,
+    0x8567fa2100000000, 0xa260242300000000, 0xbf9d912200000000,
+    0xec6e982600000000, 0xf1932d2700000000, 0xd694f32500000000,
+    0xcb69462400000000, 0x40477f6d00000000, 0x5dbaca6c00000000,
+    0x7abd146e00000000, 0x6740a16f00000000, 0x34b3a86b00000000,
+    0x294e1d6a00000000, 0x0e49c36800000000, 0x13b4766900000000,
+    0xa8afd06000000000, 0xb552656100000000, 0x9255bb6300000000,
+    0x8fa80e6200000000, 0xdc5b076600000000, 0xc1a6b26700000000,
+    0xe6a16c6500000000, 0xfb5cd96400000000, 0x9096207600000000,
+    0x8d6b957700000000, 0xaa6c4b7500000000, 0xb791fe7400000000,
+    0xe462f77000000000, 0xf99f427100000000, 0xde989c7300000000,
+    0xc365297200000000, 0x787e8f7b00000000, 0x65833a7a00000000,
+    0x4284e47800000000, 0x5f79517900000000, 0x0c8a587d00000000,
+    0x1177ed7c00000000, 0x3670337e00000000, 0x2b8d867f00000000,
+    0xe0e4c05b00000000, 0xfd19755a00000000, 0xda1eab5800000000,
+    0xc7e31e5900000000, 0x9410175d00000000, 0x89eda25c00000000,
+    0xaeea7c5e00000000, 0xb317c95f00000000, 0x080c6f5600000000,
+    0x15f1da5700000000, 0x32f6045500000000, 0x2f0bb15400000000,
+    0x7cf8b85000000000, 0x61050d5100000000, 0x4602d35300000000,
+    0x5bff665200000000, 0x30359f4000000000, 0x2dc82a4100000000,
+    0x0acff44300000000, 0x1732414200000000, 0x44c1484600000000,
+    0x593cfd4700000000, 0x7e3b234500000000, 0x63c6964400000000,
+    0xd8dd304d00000000, 0xc520854c00000000, 0xe2275b4e00000000,
+    0xffdaee4f00000000, 0xac29e74b00000000, 0xb1d4524a00000000,
+    0x96d38c4800000000, 0x8b2e394900000000, 0x808efeda00000000,
+    0x9d734bdb00000000, 0xba7495d900000000, 0xa78920d800000000,
+    0xf47a29dc00000000, 0xe9879cdd00000000, 0xce8042df00000000,
+    0xd37df7de00000000, 0x686651d700000000, 0x759be4d600000000,
+    0x529c3ad400000000, 0x4f618fd500000000, 0x1c9286d100000000,
+    0x016f33d000000000, 0x2668edd200000000, 0x3b9558d300000000,
+    0x505fa1c100000000, 0x4da214c000000000, 0x6aa5cac200000000,
+    0x77587fc300000000, 0x24ab76c700000000, 0x3956c3c600000000,
+    0x1e511dc400000000, 0x03aca8c500000000, 0xb8b70ecc00000000,
+    0xa54abbcd00000000, 0x824d65cf00000000, 0x9fb0d0ce00000000,
+    0xcc43d9ca00000000, 0xd1be6ccb00000000, 0xf6b9b2c900000000,
+    0xeb4407c800000000, 0x202d41ec00000000, 0x3dd0f4ed00000000,
+    0x1ad72aef00000000, 0x072a9fee00000000, 0x54d996ea00000000,
+    0x492423eb00000000, 0x6e23fde900000000, 0x73de48e800000000,
+    0xc8c5eee100000000, 0xd5385be000000000, 0xf23f85e200000000,
+    0xefc230e300000000, 0xbc3139e700000000, 0xa1cc8ce600000000,
+    0x86cb52e400000000, 0x9b36e7e500000000, 0xf0fc1ef700000000,
+    0xed01abf600000000, 0xca0675f400000000, 0xd7fbc0f500000000,
+    0x8408c9f100000000, 0x99f57cf000000000, 0xbef2a2f200000000,
+    0xa30f17f300000000, 0x1814b1fa00000000, 0x05e904fb00000000,
+    0x22eedaf900000000, 0x3f136ff800000000, 0x6ce066fc00000000,
+    0x711dd3fd00000000, 0x561a0dff00000000, 0x4be7b8fe00000000,
+    0xc0c981b700000000, 0xdd3434b600000000, 0xfa33eab400000000,
+    0xe7ce5fb500000000, 0xb43d56b100000000, 0xa9c0e3b000000000,
+    0x8ec73db200000000, 0x933a88b300000000, 0x28212eba00000000,
+    0x35dc9bbb00000000, 0x12db45b900000000, 0x0f26f0b800000000,
+    0x5cd5f9bc00000000, 0x41284cbd00000000, 0x662f92bf00000000,
+    0x7bd227be00000000, 0x1018deac00000000, 0x0de56bad00000000,
+    0x2ae2b5af00000000, 0x371f00ae00000000, 0x64ec09aa00000000,
+    0x7911bcab00000000, 0x5e1662a900000000, 0x43ebd7a800000000,
+    0xf8f071a100000000, 0xe50dc4a000000000, 0xc20a1aa200000000,
+    0xdff7afa300000000, 0x8c04a6a700000000, 0x91f913a600000000,
+    0xb6fecda400000000, 0xab0378a500000000, 0x606a3e8100000000,
+    0x7d978b8000000000, 0x5a90558200000000, 0x476de08300000000,
+    0x149ee98700000000, 0x09635c8600000000, 0x2e64828400000000,
+    0x3399378500000000, 0x8882918c00000000, 0x957f248d00000000,
+    0xb278fa8f00000000, 0xaf854f8e00000000, 0xfc76468a00000000,
+    0xe18bf38b00000000, 0xc68c2d8900000000, 0xdb71988800000000,
+    0xb0bb619a00000000, 0xad46d49b00000000, 0x8a410a9900000000,
+    0x97bcbf9800000000, 0xc44fb69c00000000, 0xd9b2039d00000000,
+    0xfeb5dd9f00000000, 0xe348689e00000000, 0x5853ce9700000000,
+    0x45ae7b9600000000, 0x62a9a59400000000, 0x7f54109500000000,
+    0x2ca7199100000000, 0x315aac9000000000, 0x165d729200000000,
+    0x0ba0c79300000000},
+   {0x0000000000000000, 0x24d9076300000000, 0x48b20fc600000000,
+    0x6c6b08a500000000, 0xd1626e5700000000, 0xf5bb693400000000,
+    0x99d0619100000000, 0xbd0966f200000000, 0xa2c5dcae00000000,
+    0x861cdbcd00000000, 0xea77d36800000000, 0xceaed40b00000000,
+    0x73a7b2f900000000, 0x577eb59a00000000, 0x3b15bd3f00000000,
+    0x1fccba5c00000000, 0x058dc88600000000, 0x2154cfe500000000,
+    0x4d3fc74000000000, 0x69e6c02300000000, 0xd4efa6d100000000,
+    0xf036a1b200000000, 0x9c5da91700000000, 0xb884ae7400000000,
+    0xa748142800000000, 0x8391134b00000000, 0xeffa1bee00000000,
+    0xcb231c8d00000000, 0x762a7a7f00000000, 0x52f37d1c00000000,
+    0x3e9875b900000000, 0x1a4172da00000000, 0x4b1ce0d600000000,
+    0x6fc5e7b500000000, 0x03aeef1000000000, 0x2777e87300000000,
+    0x9a7e8e8100000000, 0xbea789e200000000, 0xd2cc814700000000,
+    0xf615862400000000, 0xe9d93c7800000000, 0xcd003b1b00000000,
+    0xa16b33be00000000, 0x85b234dd00000000, 0x38bb522f00000000,
+    0x1c62554c00000000, 0x70095de900000000, 0x54d05a8a00000000,
+    0x4e91285000000000, 0x6a482f3300000000, 0x0623279600000000,
+    0x22fa20f500000000, 0x9ff3460700000000, 0xbb2a416400000000,
+    0xd74149c100000000, 0xf3984ea200000000, 0xec54f4fe00000000,
+    0xc88df39d00000000, 0xa4e6fb3800000000, 0x803ffc5b00000000,
+    0x3d369aa900000000, 0x19ef9dca00000000, 0x7584956f00000000,
+    0x515d920c00000000, 0xd73eb17600000000, 0xf3e7b61500000000,
+    0x9f8cbeb000000000, 0xbb55b9d300000000, 0x065cdf2100000000,
+    0x2285d84200000000, 0x4eeed0e700000000, 0x6a37d78400000000,
+    0x75fb6dd800000000, 0x51226abb00000000, 0x3d49621e00000000,
+    0x1990657d00000000, 0xa499038f00000000, 0x804004ec00000000,
+    0xec2b0c4900000000, 0xc8f20b2a00000000, 0xd2b379f000000000,
+    0xf66a7e9300000000, 0x9a01763600000000, 0xbed8715500000000,
+    0x03d117a700000000, 0x270810c400000000, 0x4b63186100000000,
+    0x6fba1f0200000000, 0x7076a55e00000000, 0x54afa23d00000000,
+    0x38c4aa9800000000, 0x1c1dadfb00000000, 0xa114cb0900000000,
+    0x85cdcc6a00000000, 0xe9a6c4cf00000000, 0xcd7fc3ac00000000,
+    0x9c2251a000000000, 0xb8fb56c300000000, 0xd4905e6600000000,
+    0xf049590500000000, 0x4d403ff700000000, 0x6999389400000000,
+    0x05f2303100000000, 0x212b375200000000, 0x3ee78d0e00000000,
+    0x1a3e8a6d00000000, 0x765582c800000000, 0x528c85ab00000000,
+    0xef85e35900000000, 0xcb5ce43a00000000, 0xa737ec9f00000000,
+    0x83eeebfc00000000, 0x99af992600000000, 0xbd769e4500000000,
+    0xd11d96e000000000, 0xf5c4918300000000, 0x48cdf77100000000,
+    0x6c14f01200000000, 0x007ff8b700000000, 0x24a6ffd400000000,
+    0x3b6a458800000000, 0x1fb342eb00000000, 0x73d84a4e00000000,
+    0x57014d2d00000000, 0xea082bdf00000000, 0xced12cbc00000000,
+    0xa2ba241900000000, 0x8663237a00000000, 0xae7d62ed00000000,
+    0x8aa4658e00000000, 0xe6cf6d2b00000000, 0xc2166a4800000000,
+    0x7f1f0cba00000000, 0x5bc60bd900000000, 0x37ad037c00000000,
+    0x1374041f00000000, 0x0cb8be4300000000, 0x2861b92000000000,
+    0x440ab18500000000, 0x60d3b6e600000000, 0xdddad01400000000,
+    0xf903d77700000000, 0x9568dfd200000000, 0xb1b1d8b100000000,
+    0xabf0aa6b00000000, 0x8f29ad0800000000, 0xe342a5ad00000000,
+    0xc79ba2ce00000000, 0x7a92c43c00000000, 0x5e4bc35f00000000,
+    0x3220cbfa00000000, 0x16f9cc9900000000, 0x093576c500000000,
+    0x2dec71a600000000, 0x4187790300000000, 0x655e7e6000000000,
+    0xd857189200000000, 0xfc8e1ff100000000, 0x90e5175400000000,
+    0xb43c103700000000, 0xe561823b00000000, 0xc1b8855800000000,
+    0xadd38dfd00000000, 0x890a8a9e00000000, 0x3403ec6c00000000,
+    0x10daeb0f00000000, 0x7cb1e3aa00000000, 0x5868e4c900000000,
+    0x47a45e9500000000, 0x637d59f600000000, 0x0f16515300000000,
+    0x2bcf563000000000, 0x96c630c200000000, 0xb21f37a100000000,
+    0xde743f0400000000, 0xfaad386700000000, 0xe0ec4abd00000000,
+    0xc4354dde00000000, 0xa85e457b00000000, 0x8c87421800000000,
+    0x318e24ea00000000, 0x1557238900000000, 0x793c2b2c00000000,
+    0x5de52c4f00000000, 0x4229961300000000, 0x66f0917000000000,
+    0x0a9b99d500000000, 0x2e429eb600000000, 0x934bf84400000000,
+    0xb792ff2700000000, 0xdbf9f78200000000, 0xff20f0e100000000,
+    0x7943d39b00000000, 0x5d9ad4f800000000, 0x31f1dc5d00000000,
+    0x1528db3e00000000, 0xa821bdcc00000000, 0x8cf8baaf00000000,
+    0xe093b20a00000000, 0xc44ab56900000000, 0xdb860f3500000000,
+    0xff5f085600000000, 0x933400f300000000, 0xb7ed079000000000,
+    0x0ae4616200000000, 0x2e3d660100000000, 0x42566ea400000000,
+    0x668f69c700000000, 0x7cce1b1d00000000, 0x58171c7e00000000,
+    0x347c14db00000000, 0x10a513b800000000, 0xadac754a00000000,
+    0x8975722900000000, 0xe51e7a8c00000000, 0xc1c77def00000000,
+    0xde0bc7b300000000, 0xfad2c0d000000000, 0x96b9c87500000000,
+    0xb260cf1600000000, 0x0f69a9e400000000, 0x2bb0ae8700000000,
+    0x47dba62200000000, 0x6302a14100000000, 0x325f334d00000000,
+    0x1686342e00000000, 0x7aed3c8b00000000, 0x5e343be800000000,
+    0xe33d5d1a00000000, 0xc7e45a7900000000, 0xab8f52dc00000000,
+    0x8f5655bf00000000, 0x909aefe300000000, 0xb443e88000000000,
+    0xd828e02500000000, 0xfcf1e74600000000, 0x41f881b400000000,
+    0x652186d700000000, 0x094a8e7200000000, 0x2d93891100000000,
+    0x37d2fbcb00000000, 0x130bfca800000000, 0x7f60f40d00000000,
+    0x5bb9f36e00000000, 0xe6b0959c00000000, 0xc26992ff00000000,
+    0xae029a5a00000000, 0x8adb9d3900000000, 0x9517276500000000,
+    0xb1ce200600000000, 0xdda528a300000000, 0xf97c2fc000000000,
+    0x4475493200000000, 0x60ac4e5100000000, 0x0cc746f400000000,
+    0x281e419700000000},
+   {0x0000000000000000, 0x08e3603c00000000, 0x10c6c17800000000,
+    0x1825a14400000000, 0x208c83f100000000, 0x286fe3cd00000000,
+    0x304a428900000000, 0x38a922b500000000, 0x011e763800000000,
+    0x09fd160400000000, 0x11d8b74000000000, 0x193bd77c00000000,
+    0x2192f5c900000000, 0x297195f500000000, 0x315434b100000000,
+    0x39b7548d00000000, 0x023cec7000000000, 0x0adf8c4c00000000,
+    0x12fa2d0800000000, 0x1a194d3400000000, 0x22b06f8100000000,
+    0x2a530fbd00000000, 0x3276aef900000000, 0x3a95cec500000000,
+    0x03229a4800000000, 0x0bc1fa7400000000, 0x13e45b3000000000,
+    0x1b073b0c00000000, 0x23ae19b900000000, 0x2b4d798500000000,
+    0x3368d8c100000000, 0x3b8bb8fd00000000, 0x0478d8e100000000,
+    0x0c9bb8dd00000000, 0x14be199900000000, 0x1c5d79a500000000,
+    0x24f45b1000000000, 0x2c173b2c00000000, 0x34329a6800000000,
+    0x3cd1fa5400000000, 0x0566aed900000000, 0x0d85cee500000000,
+    0x15a06fa100000000, 0x1d430f9d00000000, 0x25ea2d2800000000,
+    0x2d094d1400000000, 0x352cec5000000000, 0x3dcf8c6c00000000,
+    0x0644349100000000, 0x0ea754ad00000000, 0x1682f5e900000000,
+    0x1e6195d500000000, 0x26c8b76000000000, 0x2e2bd75c00000000,
+    0x360e761800000000, 0x3eed162400000000, 0x075a42a900000000,
+    0x0fb9229500000000, 0x179c83d100000000, 0x1f7fe3ed00000000,
+    0x27d6c15800000000, 0x2f35a16400000000, 0x3710002000000000,
+    0x3ff3601c00000000, 0x49f6c11800000000, 0x4115a12400000000,
+    0x5930006000000000, 0x51d3605c00000000, 0x697a42e900000000,
+    0x619922d500000000, 0x79bc839100000000, 0x715fe3ad00000000,
+    0x48e8b72000000000, 0x400bd71c00000000, 0x582e765800000000,
+    0x50cd166400000000, 0x686434d100000000, 0x608754ed00000000,
+    0x78a2f5a900000000, 0x7041959500000000, 0x4bca2d6800000000,
+    0x43294d5400000000, 0x5b0cec1000000000, 0x53ef8c2c00000000,
+    0x6b46ae9900000000, 0x63a5cea500000000, 0x7b806fe100000000,
+    0x73630fdd00000000, 0x4ad45b5000000000, 0x42373b6c00000000,
+    0x5a129a2800000000, 0x52f1fa1400000000, 0x6a58d8a100000000,
+    0x62bbb89d00000000, 0x7a9e19d900000000, 0x727d79e500000000,
+    0x4d8e19f900000000, 0x456d79c500000000, 0x5d48d88100000000,
+    0x55abb8bd00000000, 0x6d029a0800000000, 0x65e1fa3400000000,
+    0x7dc45b7000000000, 0x75273b4c00000000, 0x4c906fc100000000,
+    0x44730ffd00000000, 0x5c56aeb900000000, 0x54b5ce8500000000,
+    0x6c1cec3000000000, 0x64ff8c0c00000000, 0x7cda2d4800000000,
+    0x74394d7400000000, 0x4fb2f58900000000, 0x475195b500000000,
+    0x5f7434f100000000, 0x579754cd00000000, 0x6f3e767800000000,
+    0x67dd164400000000, 0x7ff8b70000000000, 0x771bd73c00000000,
+    0x4eac83b100000000, 0x464fe38d00000000, 0x5e6a42c900000000,
+    0x568922f500000000, 0x6e20004000000000, 0x66c3607c00000000,
+    0x7ee6c13800000000, 0x7605a10400000000, 0x92ec833100000000,
+    0x9a0fe30d00000000, 0x822a424900000000, 0x8ac9227500000000,
+    0xb26000c000000000, 0xba8360fc00000000, 0xa2a6c1b800000000,
+    0xaa45a18400000000, 0x93f2f50900000000, 0x9b11953500000000,
+    0x8334347100000000, 0x8bd7544d00000000, 0xb37e76f800000000,
+    0xbb9d16c400000000, 0xa3b8b78000000000, 0xab5bd7bc00000000,
+    0x90d06f4100000000, 0x98330f7d00000000, 0x8016ae3900000000,
+    0x88f5ce0500000000, 0xb05cecb000000000, 0xb8bf8c8c00000000,
+    0xa09a2dc800000000, 0xa8794df400000000, 0x91ce197900000000,
+    0x992d794500000000, 0x8108d80100000000, 0x89ebb83d00000000,
+    0xb1429a8800000000, 0xb9a1fab400000000, 0xa1845bf000000000,
+    0xa9673bcc00000000, 0x96945bd000000000, 0x9e773bec00000000,
+    0x86529aa800000000, 0x8eb1fa9400000000, 0xb618d82100000000,
+    0xbefbb81d00000000, 0xa6de195900000000, 0xae3d796500000000,
+    0x978a2de800000000, 0x9f694dd400000000, 0x874cec9000000000,
+    0x8faf8cac00000000, 0xb706ae1900000000, 0xbfe5ce2500000000,
+    0xa7c06f6100000000, 0xaf230f5d00000000, 0x94a8b7a000000000,
+    0x9c4bd79c00000000, 0x846e76d800000000, 0x8c8d16e400000000,
+    0xb424345100000000, 0xbcc7546d00000000, 0xa4e2f52900000000,
+    0xac01951500000000, 0x95b6c19800000000, 0x9d55a1a400000000,
+    0x857000e000000000, 0x8d9360dc00000000, 0xb53a426900000000,
+    0xbdd9225500000000, 0xa5fc831100000000, 0xad1fe32d00000000,
+    0xdb1a422900000000, 0xd3f9221500000000, 0xcbdc835100000000,
+    0xc33fe36d00000000, 0xfb96c1d800000000, 0xf375a1e400000000,
+    0xeb5000a000000000, 0xe3b3609c00000000, 0xda04341100000000,
+    0xd2e7542d00000000, 0xcac2f56900000000, 0xc221955500000000,
+    0xfa88b7e000000000, 0xf26bd7dc00000000, 0xea4e769800000000,
+    0xe2ad16a400000000, 0xd926ae5900000000, 0xd1c5ce6500000000,
+    0xc9e06f2100000000, 0xc1030f1d00000000, 0xf9aa2da800000000,
+    0xf1494d9400000000, 0xe96cecd000000000, 0xe18f8cec00000000,
+    0xd838d86100000000, 0xd0dbb85d00000000, 0xc8fe191900000000,
+    0xc01d792500000000, 0xf8b45b9000000000, 0xf0573bac00000000,
+    0xe8729ae800000000, 0xe091fad400000000, 0xdf629ac800000000,
+    0xd781faf400000000, 0xcfa45bb000000000, 0xc7473b8c00000000,
+    0xffee193900000000, 0xf70d790500000000, 0xef28d84100000000,
+    0xe7cbb87d00000000, 0xde7cecf000000000, 0xd69f8ccc00000000,
+    0xceba2d8800000000, 0xc6594db400000000, 0xfef06f0100000000,
+    0xf6130f3d00000000, 0xee36ae7900000000, 0xe6d5ce4500000000,
+    0xdd5e76b800000000, 0xd5bd168400000000, 0xcd98b7c000000000,
+    0xc57bd7fc00000000, 0xfdd2f54900000000, 0xf531957500000000,
+    0xed14343100000000, 0xe5f7540d00000000, 0xdc40008000000000,
+    0xd4a360bc00000000, 0xcc86c1f800000000, 0xc465a1c400000000,
+    0xfccc837100000000, 0xf42fe34d00000000, 0xec0a420900000000,
+    0xe4e9223500000000},
+   {0x0000000000000000, 0xd1e8e70e00000000, 0xa2d1cf1d00000000,
+    0x7339281300000000, 0x44a39f3b00000000, 0x954b783500000000,
+    0xe672502600000000, 0x379ab72800000000, 0x88463f7700000000,
+    0x59aed87900000000, 0x2a97f06a00000000, 0xfb7f176400000000,
+    0xcce5a04c00000000, 0x1d0d474200000000, 0x6e346f5100000000,
+    0xbfdc885f00000000, 0x108d7eee00000000, 0xc16599e000000000,
+    0xb25cb1f300000000, 0x63b456fd00000000, 0x542ee1d500000000,
+    0x85c606db00000000, 0xf6ff2ec800000000, 0x2717c9c600000000,
+    0x98cb419900000000, 0x4923a69700000000, 0x3a1a8e8400000000,
+    0xebf2698a00000000, 0xdc68dea200000000, 0x0d8039ac00000000,
+    0x7eb911bf00000000, 0xaf51f6b100000000, 0x611c8c0700000000,
+    0xb0f46b0900000000, 0xc3cd431a00000000, 0x1225a41400000000,
+    0x25bf133c00000000, 0xf457f43200000000, 0x876edc2100000000,
+    0x56863b2f00000000, 0xe95ab37000000000, 0x38b2547e00000000,
+    0x4b8b7c6d00000000, 0x9a639b6300000000, 0xadf92c4b00000000,
+    0x7c11cb4500000000, 0x0f28e35600000000, 0xdec0045800000000,
+    0x7191f2e900000000, 0xa07915e700000000, 0xd3403df400000000,
+    0x02a8dafa00000000, 0x35326dd200000000, 0xe4da8adc00000000,
+    0x97e3a2cf00000000, 0x460b45c100000000, 0xf9d7cd9e00000000,
+    0x283f2a9000000000, 0x5b06028300000000, 0x8aeee58d00000000,
+    0xbd7452a500000000, 0x6c9cb5ab00000000, 0x1fa59db800000000,
+    0xce4d7ab600000000, 0xc238180f00000000, 0x13d0ff0100000000,
+    0x60e9d71200000000, 0xb101301c00000000, 0x869b873400000000,
+    0x5773603a00000000, 0x244a482900000000, 0xf5a2af2700000000,
+    0x4a7e277800000000, 0x9b96c07600000000, 0xe8afe86500000000,
+    0x39470f6b00000000, 0x0eddb84300000000, 0xdf355f4d00000000,
+    0xac0c775e00000000, 0x7de4905000000000, 0xd2b566e100000000,
+    0x035d81ef00000000, 0x7064a9fc00000000, 0xa18c4ef200000000,
+    0x9616f9da00000000, 0x47fe1ed400000000, 0x34c736c700000000,
+    0xe52fd1c900000000, 0x5af3599600000000, 0x8b1bbe9800000000,
+    0xf822968b00000000, 0x29ca718500000000, 0x1e50c6ad00000000,
+    0xcfb821a300000000, 0xbc8109b000000000, 0x6d69eebe00000000,
+    0xa324940800000000, 0x72cc730600000000, 0x01f55b1500000000,
+    0xd01dbc1b00000000, 0xe7870b3300000000, 0x366fec3d00000000,
+    0x4556c42e00000000, 0x94be232000000000, 0x2b62ab7f00000000,
+    0xfa8a4c7100000000, 0x89b3646200000000, 0x585b836c00000000,
+    0x6fc1344400000000, 0xbe29d34a00000000, 0xcd10fb5900000000,
+    0x1cf81c5700000000, 0xb3a9eae600000000, 0x62410de800000000,
+    0x117825fb00000000, 0xc090c2f500000000, 0xf70a75dd00000000,
+    0x26e292d300000000, 0x55dbbac000000000, 0x84335dce00000000,
+    0x3befd59100000000, 0xea07329f00000000, 0x993e1a8c00000000,
+    0x48d6fd8200000000, 0x7f4c4aaa00000000, 0xaea4ada400000000,
+    0xdd9d85b700000000, 0x0c7562b900000000, 0x8471301e00000000,
+    0x5599d71000000000, 0x26a0ff0300000000, 0xf748180d00000000,
+    0xc0d2af2500000000, 0x113a482b00000000, 0x6203603800000000,
+    0xb3eb873600000000, 0x0c370f6900000000, 0xdddfe86700000000,
+    0xaee6c07400000000, 0x7f0e277a00000000, 0x4894905200000000,
+    0x997c775c00000000, 0xea455f4f00000000, 0x3badb84100000000,
+    0x94fc4ef000000000, 0x4514a9fe00000000, 0x362d81ed00000000,
+    0xe7c566e300000000, 0xd05fd1cb00000000, 0x01b736c500000000,
+    0x728e1ed600000000, 0xa366f9d800000000, 0x1cba718700000000,
+    0xcd52968900000000, 0xbe6bbe9a00000000, 0x6f83599400000000,
+    0x5819eebc00000000, 0x89f109b200000000, 0xfac821a100000000,
+    0x2b20c6af00000000, 0xe56dbc1900000000, 0x34855b1700000000,
+    0x47bc730400000000, 0x9654940a00000000, 0xa1ce232200000000,
+    0x7026c42c00000000, 0x031fec3f00000000, 0xd2f70b3100000000,
+    0x6d2b836e00000000, 0xbcc3646000000000, 0xcffa4c7300000000,
+    0x1e12ab7d00000000, 0x29881c5500000000, 0xf860fb5b00000000,
+    0x8b59d34800000000, 0x5ab1344600000000, 0xf5e0c2f700000000,
+    0x240825f900000000, 0x57310dea00000000, 0x86d9eae400000000,
+    0xb1435dcc00000000, 0x60abbac200000000, 0x139292d100000000,
+    0xc27a75df00000000, 0x7da6fd8000000000, 0xac4e1a8e00000000,
+    0xdf77329d00000000, 0x0e9fd59300000000, 0x390562bb00000000,
+    0xe8ed85b500000000, 0x9bd4ada600000000, 0x4a3c4aa800000000,
+    0x4649281100000000, 0x97a1cf1f00000000, 0xe498e70c00000000,
+    0x3570000200000000, 0x02eab72a00000000, 0xd302502400000000,
+    0xa03b783700000000, 0x71d39f3900000000, 0xce0f176600000000,
+    0x1fe7f06800000000, 0x6cded87b00000000, 0xbd363f7500000000,
+    0x8aac885d00000000, 0x5b446f5300000000, 0x287d474000000000,
+    0xf995a04e00000000, 0x56c456ff00000000, 0x872cb1f100000000,
+    0xf41599e200000000, 0x25fd7eec00000000, 0x1267c9c400000000,
+    0xc38f2eca00000000, 0xb0b606d900000000, 0x615ee1d700000000,
+    0xde82698800000000, 0x0f6a8e8600000000, 0x7c53a69500000000,
+    0xadbb419b00000000, 0x9a21f6b300000000, 0x4bc911bd00000000,
+    0x38f039ae00000000, 0xe918dea000000000, 0x2755a41600000000,
+    0xf6bd431800000000, 0x85846b0b00000000, 0x546c8c0500000000,
+    0x63f63b2d00000000, 0xb21edc2300000000, 0xc127f43000000000,
+    0x10cf133e00000000, 0xaf139b6100000000, 0x7efb7c6f00000000,
+    0x0dc2547c00000000, 0xdc2ab37200000000, 0xebb0045a00000000,
+    0x3a58e35400000000, 0x4961cb4700000000, 0x98892c4900000000,
+    0x37d8daf800000000, 0xe6303df600000000, 0x950915e500000000,
+    0x44e1f2eb00000000, 0x737b45c300000000, 0xa293a2cd00000000,
+    0xd1aa8ade00000000, 0x00426dd000000000, 0xbf9ee58f00000000,
+    0x6e76028100000000, 0x1d4f2a9200000000, 0xcca7cd9c00000000,
+    0xfb3d7ab400000000, 0x2ad59dba00000000, 0x59ecb5a900000000,
+    0x880452a700000000},
+   {0x0000000000000000, 0xaa05daf100000000, 0x150dc53800000000,
+    0xbf081fc900000000, 0x2a1a8a7100000000, 0x801f508000000000,
+    0x3f174f4900000000, 0x951295b800000000, 0x543414e300000000,
+    0xfe31ce1200000000, 0x4139d1db00000000, 0xeb3c0b2a00000000,
+    0x7e2e9e9200000000, 0xd42b446300000000, 0x6b235baa00000000,
+    0xc126815b00000000, 0xe96e591d00000000, 0x436b83ec00000000,
+    0xfc639c2500000000, 0x566646d400000000, 0xc374d36c00000000,
+    0x6971099d00000000, 0xd679165400000000, 0x7c7ccca500000000,
+    0xbd5a4dfe00000000, 0x175f970f00000000, 0xa85788c600000000,
+    0x0252523700000000, 0x9740c78f00000000, 0x3d451d7e00000000,
+    0x824d02b700000000, 0x2848d84600000000, 0xd2ddb23a00000000,
+    0x78d868cb00000000, 0xc7d0770200000000, 0x6dd5adf300000000,
+    0xf8c7384b00000000, 0x52c2e2ba00000000, 0xedcafd7300000000,
+    0x47cf278200000000, 0x86e9a6d900000000, 0x2cec7c2800000000,
+    0x93e463e100000000, 0x39e1b91000000000, 0xacf32ca800000000,
+    0x06f6f65900000000, 0xb9fee99000000000, 0x13fb336100000000,
+    0x3bb3eb2700000000, 0x91b631d600000000, 0x2ebe2e1f00000000,
+    0x84bbf4ee00000000, 0x11a9615600000000, 0xbbacbba700000000,
+    0x04a4a46e00000000, 0xaea17e9f00000000, 0x6f87ffc400000000,
+    0xc582253500000000, 0x7a8a3afc00000000, 0xd08fe00d00000000,
+    0x459d75b500000000, 0xef98af4400000000, 0x5090b08d00000000,
+    0xfa956a7c00000000, 0xa4bb657500000000, 0x0ebebf8400000000,
+    0xb1b6a04d00000000, 0x1bb37abc00000000, 0x8ea1ef0400000000,
+    0x24a435f500000000, 0x9bac2a3c00000000, 0x31a9f0cd00000000,
+    0xf08f719600000000, 0x5a8aab6700000000, 0xe582b4ae00000000,
+    0x4f876e5f00000000, 0xda95fbe700000000, 0x7090211600000000,
+    0xcf983edf00000000, 0x659de42e00000000, 0x4dd53c6800000000,
+    0xe7d0e69900000000, 0x58d8f95000000000, 0xf2dd23a100000000,
+    0x67cfb61900000000, 0xcdca6ce800000000, 0x72c2732100000000,
+    0xd8c7a9d000000000, 0x19e1288b00000000, 0xb3e4f27a00000000,
+    0x0cecedb300000000, 0xa6e9374200000000, 0x33fba2fa00000000,
+    0x99fe780b00000000, 0x26f667c200000000, 0x8cf3bd3300000000,
+    0x7666d74f00000000, 0xdc630dbe00000000, 0x636b127700000000,
+    0xc96ec88600000000, 0x5c7c5d3e00000000, 0xf67987cf00000000,
+    0x4971980600000000, 0xe37442f700000000, 0x2252c3ac00000000,
+    0x8857195d00000000, 0x375f069400000000, 0x9d5adc6500000000,
+    0x084849dd00000000, 0xa24d932c00000000, 0x1d458ce500000000,
+    0xb740561400000000, 0x9f088e5200000000, 0x350d54a300000000,
+    0x8a054b6a00000000, 0x2000919b00000000, 0xb512042300000000,
+    0x1f17ded200000000, 0xa01fc11b00000000, 0x0a1a1bea00000000,
+    0xcb3c9ab100000000, 0x6139404000000000, 0xde315f8900000000,
+    0x7434857800000000, 0xe12610c000000000, 0x4b23ca3100000000,
+    0xf42bd5f800000000, 0x5e2e0f0900000000, 0x4877cbea00000000,
+    0xe272111b00000000, 0x5d7a0ed200000000, 0xf77fd42300000000,
+    0x626d419b00000000, 0xc8689b6a00000000, 0x776084a300000000,
+    0xdd655e5200000000, 0x1c43df0900000000, 0xb64605f800000000,
+    0x094e1a3100000000, 0xa34bc0c000000000, 0x3659557800000000,
+    0x9c5c8f8900000000, 0x2354904000000000, 0x89514ab100000000,
+    0xa11992f700000000, 0x0b1c480600000000, 0xb41457cf00000000,
+    0x1e118d3e00000000, 0x8b03188600000000, 0x2106c27700000000,
+    0x9e0eddbe00000000, 0x340b074f00000000, 0xf52d861400000000,
+    0x5f285ce500000000, 0xe020432c00000000, 0x4a2599dd00000000,
+    0xdf370c6500000000, 0x7532d69400000000, 0xca3ac95d00000000,
+    0x603f13ac00000000, 0x9aaa79d000000000, 0x30afa32100000000,
+    0x8fa7bce800000000, 0x25a2661900000000, 0xb0b0f3a100000000,
+    0x1ab5295000000000, 0xa5bd369900000000, 0x0fb8ec6800000000,
+    0xce9e6d3300000000, 0x649bb7c200000000, 0xdb93a80b00000000,
+    0x719672fa00000000, 0xe484e74200000000, 0x4e813db300000000,
+    0xf189227a00000000, 0x5b8cf88b00000000, 0x73c420cd00000000,
+    0xd9c1fa3c00000000, 0x66c9e5f500000000, 0xcccc3f0400000000,
+    0x59deaabc00000000, 0xf3db704d00000000, 0x4cd36f8400000000,
+    0xe6d6b57500000000, 0x27f0342e00000000, 0x8df5eedf00000000,
+    0x32fdf11600000000, 0x98f82be700000000, 0x0deabe5f00000000,
+    0xa7ef64ae00000000, 0x18e77b6700000000, 0xb2e2a19600000000,
+    0xecccae9f00000000, 0x46c9746e00000000, 0xf9c16ba700000000,
+    0x53c4b15600000000, 0xc6d624ee00000000, 0x6cd3fe1f00000000,
+    0xd3dbe1d600000000, 0x79de3b2700000000, 0xb8f8ba7c00000000,
+    0x12fd608d00000000, 0xadf57f4400000000, 0x07f0a5b500000000,
+    0x92e2300d00000000, 0x38e7eafc00000000, 0x87eff53500000000,
+    0x2dea2fc400000000, 0x05a2f78200000000, 0xafa72d7300000000,
+    0x10af32ba00000000, 0xbaaae84b00000000, 0x2fb87df300000000,
+    0x85bda70200000000, 0x3ab5b8cb00000000, 0x90b0623a00000000,
+    0x5196e36100000000, 0xfb93399000000000, 0x449b265900000000,
+    0xee9efca800000000, 0x7b8c691000000000, 0xd189b3e100000000,
+    0x6e81ac2800000000, 0xc48476d900000000, 0x3e111ca500000000,
+    0x9414c65400000000, 0x2b1cd99d00000000, 0x8119036c00000000,
+    0x140b96d400000000, 0xbe0e4c2500000000, 0x010653ec00000000,
+    0xab03891d00000000, 0x6a25084600000000, 0xc020d2b700000000,
+    0x7f28cd7e00000000, 0xd52d178f00000000, 0x403f823700000000,
+    0xea3a58c600000000, 0x5532470f00000000, 0xff379dfe00000000,
+    0xd77f45b800000000, 0x7d7a9f4900000000, 0xc272808000000000,
+    0x68775a7100000000, 0xfd65cfc900000000, 0x5760153800000000,
+    0xe8680af100000000, 0x426dd00000000000, 0x834b515b00000000,
+    0x294e8baa00000000, 0x9646946300000000, 0x3c434e9200000000,
+    0xa951db2a00000000, 0x035401db00000000, 0xbc5c1e1200000000,
+    0x1659c4e300000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87,
+    0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede,
+    0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab,
+    0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c,
+    0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1,
+    0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7,
+    0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e,
+    0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308,
+    0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5,
+    0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472,
+    0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07,
+    0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e,
+    0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa,
+    0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec,
+    0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6,
+    0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0,
+    0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3,
+    0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba,
+    0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf,
+    0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975,
+    0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8,
+    0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde,
+    0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a,
+    0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c,
+    0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1,
+    0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65,
+    0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410,
+    0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649,
+    0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a,
+    0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c,
+    0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946,
+    0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450,
+    0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e,
+    0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857,
+    0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022,
+    0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5,
+    0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758,
+    0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e,
+    0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d,
+    0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b,
+    0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6,
+    0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401,
+    0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74,
+    0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d,
+    0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073,
+    0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65,
+    0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f,
+    0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749,
+    0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a,
+    0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033,
+    0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846,
+    0x0d7139d7},
+   {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563,
+    0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f,
+    0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875,
+    0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536,
+    0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8,
+    0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43,
+    0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f,
+    0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184,
+    0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a,
+    0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39,
+    0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523,
+    0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f,
+    0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d,
+    0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6,
+    0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b,
+    0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0,
+    0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151,
+    0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d,
+    0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47,
+    0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a,
+    0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964,
+    0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef,
+    0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d,
+    0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6,
+    0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348,
+    0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53,
+    0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449,
+    0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645,
+    0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4,
+    0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f,
+    0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2,
+    0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69,
+    0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46,
+    0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a,
+    0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650,
+    0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13,
+    0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded,
+    0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366,
+    0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57,
+    0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc,
+    0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222,
+    0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61,
+    0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b,
+    0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277,
+    0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558,
+    0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3,
+    0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e,
+    0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5,
+    0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74,
+    0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78,
+    0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262,
+    0x1c53e98a},
+   {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b,
+    0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40,
+    0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580,
+    0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7,
+    0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a,
+    0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37,
+    0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75,
+    0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218,
+    0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5,
+    0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2,
+    0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02,
+    0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59,
+    0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1,
+    0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c,
+    0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a,
+    0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307,
+    0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486,
+    0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd,
+    0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d,
+    0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2,
+    0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f,
+    0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72,
+    0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8,
+    0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985,
+    0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268,
+    0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94,
+    0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454,
+    0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f,
+    0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e,
+    0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3,
+    0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915,
+    0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778,
+    0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821,
+    0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a,
+    0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba,
+    0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d,
+    0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560,
+    0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d,
+    0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe,
+    0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3,
+    0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e,
+    0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509,
+    0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9,
+    0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92,
+    0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb,
+    0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6,
+    0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50,
+    0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d,
+    0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc,
+    0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7,
+    0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927,
+    0x3f88e851},
+   {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96,
+    0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8,
+    0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0,
+    0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14,
+    0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7,
+    0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4,
+    0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe,
+    0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad,
+    0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e,
+    0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa,
+    0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2,
+    0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c,
+    0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab,
+    0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8,
+    0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d,
+    0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e,
+    0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7,
+    0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99,
+    0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1,
+    0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690,
+    0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933,
+    0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20,
+    0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf,
+    0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc,
+    0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f,
+    0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92,
+    0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca,
+    0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4,
+    0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd,
+    0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de,
+    0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb,
+    0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8,
+    0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474,
+    0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a,
+    0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252,
+    0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6,
+    0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55,
+    0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846,
+    0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7,
+    0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4,
+    0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47,
+    0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3,
+    0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb,
+    0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5,
+    0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49,
+    0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a,
+    0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f,
+    0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c,
+    0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305,
+    0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b,
+    0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523,
+    0x3dee8ca6}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0x85d996dd, 0x4bb55c60, 0xce6ccabd, 0x966ab9c0,
+    0x13b32f1d, 0xdddfe5a0, 0x5806737d, 0x6dd3035a, 0xe80a9587,
+    0x26665f3a, 0xa3bfc9e7, 0xfbb9ba9a, 0x7e602c47, 0xb00ce6fa,
+    0x35d57027, 0xdaa607b4, 0x5f7f9169, 0x91135bd4, 0x14cacd09,
+    0x4cccbe74, 0xc91528a9, 0x0779e214, 0x82a074c9, 0xb77504ee,
+    0x32ac9233, 0xfcc0588e, 0x7919ce53, 0x211fbd2e, 0xa4c62bf3,
+    0x6aaae14e, 0xef737793, 0xf54b7eb3, 0x7092e86e, 0xbefe22d3,
+    0x3b27b40e, 0x6321c773, 0xe6f851ae, 0x28949b13, 0xad4d0dce,
+    0x98987de9, 0x1d41eb34, 0xd32d2189, 0x56f4b754, 0x0ef2c429,
+    0x8b2b52f4, 0x45479849, 0xc09e0e94, 0x2fed7907, 0xaa34efda,
+    0x64582567, 0xe181b3ba, 0xb987c0c7, 0x3c5e561a, 0xf2329ca7,
+    0x77eb0a7a, 0x423e7a5d, 0xc7e7ec80, 0x098b263d, 0x8c52b0e0,
+    0xd454c39d, 0x518d5540, 0x9fe19ffd, 0x1a380920, 0xab918dbd,
+    0x2e481b60, 0xe024d1dd, 0x65fd4700, 0x3dfb347d, 0xb822a2a0,
+    0x764e681d, 0xf397fec0, 0xc6428ee7, 0x439b183a, 0x8df7d287,
+    0x082e445a, 0x50283727, 0xd5f1a1fa, 0x1b9d6b47, 0x9e44fd9a,
+    0x71378a09, 0xf4ee1cd4, 0x3a82d669, 0xbf5b40b4, 0xe75d33c9,
+    0x6284a514, 0xace86fa9, 0x2931f974, 0x1ce48953, 0x993d1f8e,
+    0x5751d533, 0xd28843ee, 0x8a8e3093, 0x0f57a64e, 0xc13b6cf3,
+    0x44e2fa2e, 0x5edaf30e, 0xdb0365d3, 0x156faf6e, 0x90b639b3,
+    0xc8b04ace, 0x4d69dc13, 0x830516ae, 0x06dc8073, 0x3309f054,
+    0xb6d06689, 0x78bcac34, 0xfd653ae9, 0xa5634994, 0x20badf49,
+    0xeed615f4, 0x6b0f8329, 0x847cf4ba, 0x01a56267, 0xcfc9a8da,
+    0x4a103e07, 0x12164d7a, 0x97cfdba7, 0x59a3111a, 0xdc7a87c7,
+    0xe9aff7e0, 0x6c76613d, 0xa21aab80, 0x27c33d5d, 0x7fc54e20,
+    0xfa1cd8fd, 0x34701240, 0xb1a9849d, 0x17256aa0, 0x92fcfc7d,
+    0x5c9036c0, 0xd949a01d, 0x814fd360, 0x049645bd, 0xcafa8f00,
+    0x4f2319dd, 0x7af669fa, 0xff2fff27, 0x3143359a, 0xb49aa347,
+    0xec9cd03a, 0x694546e7, 0xa7298c5a, 0x22f01a87, 0xcd836d14,
+    0x485afbc9, 0x86363174, 0x03efa7a9, 0x5be9d4d4, 0xde304209,
+    0x105c88b4, 0x95851e69, 0xa0506e4e, 0x2589f893, 0xebe5322e,
+    0x6e3ca4f3, 0x363ad78e, 0xb3e34153, 0x7d8f8bee, 0xf8561d33,
+    0xe26e1413, 0x67b782ce, 0xa9db4873, 0x2c02deae, 0x7404add3,
+    0xf1dd3b0e, 0x3fb1f1b3, 0xba68676e, 0x8fbd1749, 0x0a648194,
+    0xc4084b29, 0x41d1ddf4, 0x19d7ae89, 0x9c0e3854, 0x5262f2e9,
+    0xd7bb6434, 0x38c813a7, 0xbd11857a, 0x737d4fc7, 0xf6a4d91a,
+    0xaea2aa67, 0x2b7b3cba, 0xe517f607, 0x60ce60da, 0x551b10fd,
+    0xd0c28620, 0x1eae4c9d, 0x9b77da40, 0xc371a93d, 0x46a83fe0,
+    0x88c4f55d, 0x0d1d6380, 0xbcb4e71d, 0x396d71c0, 0xf701bb7d,
+    0x72d82da0, 0x2ade5edd, 0xaf07c800, 0x616b02bd, 0xe4b29460,
+    0xd167e447, 0x54be729a, 0x9ad2b827, 0x1f0b2efa, 0x470d5d87,
+    0xc2d4cb5a, 0x0cb801e7, 0x8961973a, 0x6612e0a9, 0xe3cb7674,
+    0x2da7bcc9, 0xa87e2a14, 0xf0785969, 0x75a1cfb4, 0xbbcd0509,
+    0x3e1493d4, 0x0bc1e3f3, 0x8e18752e, 0x4074bf93, 0xc5ad294e,
+    0x9dab5a33, 0x1872ccee, 0xd61e0653, 0x53c7908e, 0x49ff99ae,
+    0xcc260f73, 0x024ac5ce, 0x87935313, 0xdf95206e, 0x5a4cb6b3,
+    0x94207c0e, 0x11f9ead3, 0x242c9af4, 0xa1f50c29, 0x6f99c694,
+    0xea405049, 0xb2462334, 0x379fb5e9, 0xf9f37f54, 0x7c2ae989,
+    0x93599e1a, 0x168008c7, 0xd8ecc27a, 0x5d3554a7, 0x053327da,
+    0x80eab107, 0x4e867bba, 0xcb5fed67, 0xfe8a9d40, 0x7b530b9d,
+    0xb53fc120, 0x30e657fd, 0x68e02480, 0xed39b25d, 0x235578e0,
+    0xa68cee3d},
+   {0x00000000, 0x76e10f9d, 0xadc46ee1, 0xdb25617c, 0x1b8fac19,
+    0x6d6ea384, 0xb64bc2f8, 0xc0aacd65, 0x361e5933, 0x40ff56ae,
+    0x9bda37d2, 0xed3b384f, 0x2d91f52a, 0x5b70fab7, 0x80559bcb,
+    0xf6b49456, 0x6c3cb266, 0x1addbdfb, 0xc1f8dc87, 0xb719d31a,
+    0x77b31e7f, 0x015211e2, 0xda77709e, 0xac967f03, 0x5a22eb55,
+    0x2cc3e4c8, 0xf7e685b4, 0x81078a29, 0x41ad474c, 0x374c48d1,
+    0xec6929ad, 0x9a882630, 0xd87864cd, 0xae996b50, 0x75bc0a2c,
+    0x035d05b1, 0xc3f7c8d4, 0xb516c749, 0x6e33a635, 0x18d2a9a8,
+    0xee663dfe, 0x98873263, 0x43a2531f, 0x35435c82, 0xf5e991e7,
+    0x83089e7a, 0x582dff06, 0x2eccf09b, 0xb444d6ab, 0xc2a5d936,
+    0x1980b84a, 0x6f61b7d7, 0xafcb7ab2, 0xd92a752f, 0x020f1453,
+    0x74ee1bce, 0x825a8f98, 0xf4bb8005, 0x2f9ee179, 0x597feee4,
+    0x99d52381, 0xef342c1c, 0x34114d60, 0x42f042fd, 0xf1f7b941,
+    0x8716b6dc, 0x5c33d7a0, 0x2ad2d83d, 0xea781558, 0x9c991ac5,
+    0x47bc7bb9, 0x315d7424, 0xc7e9e072, 0xb108efef, 0x6a2d8e93,
+    0x1ccc810e, 0xdc664c6b, 0xaa8743f6, 0x71a2228a, 0x07432d17,
+    0x9dcb0b27, 0xeb2a04ba, 0x300f65c6, 0x46ee6a5b, 0x8644a73e,
+    0xf0a5a8a3, 0x2b80c9df, 0x5d61c642, 0xabd55214, 0xdd345d89,
+    0x06113cf5, 0x70f03368, 0xb05afe0d, 0xc6bbf190, 0x1d9e90ec,
+    0x6b7f9f71, 0x298fdd8c, 0x5f6ed211, 0x844bb36d, 0xf2aabcf0,
+    0x32007195, 0x44e17e08, 0x9fc41f74, 0xe92510e9, 0x1f9184bf,
+    0x69708b22, 0xb255ea5e, 0xc4b4e5c3, 0x041e28a6, 0x72ff273b,
+    0xa9da4647, 0xdf3b49da, 0x45b36fea, 0x33526077, 0xe877010b,
+    0x9e960e96, 0x5e3cc3f3, 0x28ddcc6e, 0xf3f8ad12, 0x8519a28f,
+    0x73ad36d9, 0x054c3944, 0xde695838, 0xa88857a5, 0x68229ac0,
+    0x1ec3955d, 0xc5e6f421, 0xb307fbbc, 0xe2ef7383, 0x940e7c1e,
+    0x4f2b1d62, 0x39ca12ff, 0xf960df9a, 0x8f81d007, 0x54a4b17b,
+    0x2245bee6, 0xd4f12ab0, 0xa210252d, 0x79354451, 0x0fd44bcc,
+    0xcf7e86a9, 0xb99f8934, 0x62bae848, 0x145be7d5, 0x8ed3c1e5,
+    0xf832ce78, 0x2317af04, 0x55f6a099, 0x955c6dfc, 0xe3bd6261,
+    0x3898031d, 0x4e790c80, 0xb8cd98d6, 0xce2c974b, 0x1509f637,
+    0x63e8f9aa, 0xa34234cf, 0xd5a33b52, 0x0e865a2e, 0x786755b3,
+    0x3a97174e, 0x4c7618d3, 0x975379af, 0xe1b27632, 0x2118bb57,
+    0x57f9b4ca, 0x8cdcd5b6, 0xfa3dda2b, 0x0c894e7d, 0x7a6841e0,
+    0xa14d209c, 0xd7ac2f01, 0x1706e264, 0x61e7edf9, 0xbac28c85,
+    0xcc238318, 0x56aba528, 0x204aaab5, 0xfb6fcbc9, 0x8d8ec454,
+    0x4d240931, 0x3bc506ac, 0xe0e067d0, 0x9601684d, 0x60b5fc1b,
+    0x1654f386, 0xcd7192fa, 0xbb909d67, 0x7b3a5002, 0x0ddb5f9f,
+    0xd6fe3ee3, 0xa01f317e, 0x1318cac2, 0x65f9c55f, 0xbedca423,
+    0xc83dabbe, 0x089766db, 0x7e766946, 0xa553083a, 0xd3b207a7,
+    0x250693f1, 0x53e79c6c, 0x88c2fd10, 0xfe23f28d, 0x3e893fe8,
+    0x48683075, 0x934d5109, 0xe5ac5e94, 0x7f2478a4, 0x09c57739,
+    0xd2e01645, 0xa40119d8, 0x64abd4bd, 0x124adb20, 0xc96fba5c,
+    0xbf8eb5c1, 0x493a2197, 0x3fdb2e0a, 0xe4fe4f76, 0x921f40eb,
+    0x52b58d8e, 0x24548213, 0xff71e36f, 0x8990ecf2, 0xcb60ae0f,
+    0xbd81a192, 0x66a4c0ee, 0x1045cf73, 0xd0ef0216, 0xa60e0d8b,
+    0x7d2b6cf7, 0x0bca636a, 0xfd7ef73c, 0x8b9ff8a1, 0x50ba99dd,
+    0x265b9640, 0xe6f15b25, 0x901054b8, 0x4b3535c4, 0x3dd43a59,
+    0xa75c1c69, 0xd1bd13f4, 0x0a987288, 0x7c797d15, 0xbcd3b070,
+    0xca32bfed, 0x1117de91, 0x67f6d10c, 0x9142455a, 0xe7a34ac7,
+    0x3c862bbb, 0x4a672426, 0x8acde943, 0xfc2ce6de, 0x270987a2,
+    0x51e8883f},
+   {0x00000000, 0xe8dbfbb9, 0x91b186a8, 0x796a7d11, 0x63657c8a,
+    0x8bbe8733, 0xf2d4fa22, 0x1a0f019b, 0x87cc89cf, 0x6f177276,
+    0x167d0f67, 0xfea6f4de, 0xe4a9f545, 0x0c720efc, 0x751873ed,
+    0x9dc38854, 0x4f9f6244, 0xa74499fd, 0xde2ee4ec, 0x36f51f55,
+    0x2cfa1ece, 0xc421e577, 0xbd4b9866, 0x559063df, 0xc853eb8b,
+    0x20881032, 0x59e26d23, 0xb139969a, 0xab369701, 0x43ed6cb8,
+    0x3a8711a9, 0xd25cea10, 0x9e3ec588, 0x76e53e31, 0x0f8f4320,
+    0xe754b899, 0xfd5bb902, 0x158042bb, 0x6cea3faa, 0x8431c413,
+    0x19f24c47, 0xf129b7fe, 0x8843caef, 0x60983156, 0x7a9730cd,
+    0x924ccb74, 0xeb26b665, 0x03fd4ddc, 0xd1a1a7cc, 0x397a5c75,
+    0x40102164, 0xa8cbdadd, 0xb2c4db46, 0x5a1f20ff, 0x23755dee,
+    0xcbaea657, 0x566d2e03, 0xbeb6d5ba, 0xc7dca8ab, 0x2f075312,
+    0x35085289, 0xddd3a930, 0xa4b9d421, 0x4c622f98, 0x7d7bfbca,
+    0x95a00073, 0xecca7d62, 0x041186db, 0x1e1e8740, 0xf6c57cf9,
+    0x8faf01e8, 0x6774fa51, 0xfab77205, 0x126c89bc, 0x6b06f4ad,
+    0x83dd0f14, 0x99d20e8f, 0x7109f536, 0x08638827, 0xe0b8739e,
+    0x32e4998e, 0xda3f6237, 0xa3551f26, 0x4b8ee49f, 0x5181e504,
+    0xb95a1ebd, 0xc03063ac, 0x28eb9815, 0xb5281041, 0x5df3ebf8,
+    0x249996e9, 0xcc426d50, 0xd64d6ccb, 0x3e969772, 0x47fcea63,
+    0xaf2711da, 0xe3453e42, 0x0b9ec5fb, 0x72f4b8ea, 0x9a2f4353,
+    0x802042c8, 0x68fbb971, 0x1191c460, 0xf94a3fd9, 0x6489b78d,
+    0x8c524c34, 0xf5383125, 0x1de3ca9c, 0x07eccb07, 0xef3730be,
+    0x965d4daf, 0x7e86b616, 0xacda5c06, 0x4401a7bf, 0x3d6bdaae,
+    0xd5b02117, 0xcfbf208c, 0x2764db35, 0x5e0ea624, 0xb6d55d9d,
+    0x2b16d5c9, 0xc3cd2e70, 0xbaa75361, 0x527ca8d8, 0x4873a943,
+    0xa0a852fa, 0xd9c22feb, 0x3119d452, 0xbbf0874e, 0x532b7cf7,
+    0x2a4101e6, 0xc29afa5f, 0xd895fbc4, 0x304e007d, 0x49247d6c,
+    0xa1ff86d5, 0x3c3c0e81, 0xd4e7f538, 0xad8d8829, 0x45567390,
+    0x5f59720b, 0xb78289b2, 0xcee8f4a3, 0x26330f1a, 0xf46fe50a,
+    0x1cb41eb3, 0x65de63a2, 0x8d05981b, 0x970a9980, 0x7fd16239,
+    0x06bb1f28, 0xee60e491, 0x73a36cc5, 0x9b78977c, 0xe212ea6d,
+    0x0ac911d4, 0x10c6104f, 0xf81debf6, 0x817796e7, 0x69ac6d5e,
+    0x25ce42c6, 0xcd15b97f, 0xb47fc46e, 0x5ca43fd7, 0x46ab3e4c,
+    0xae70c5f5, 0xd71ab8e4, 0x3fc1435d, 0xa202cb09, 0x4ad930b0,
+    0x33b34da1, 0xdb68b618, 0xc167b783, 0x29bc4c3a, 0x50d6312b,
+    0xb80dca92, 0x6a512082, 0x828adb3b, 0xfbe0a62a, 0x133b5d93,
+    0x09345c08, 0xe1efa7b1, 0x9885daa0, 0x705e2119, 0xed9da94d,
+    0x054652f4, 0x7c2c2fe5, 0x94f7d45c, 0x8ef8d5c7, 0x66232e7e,
+    0x1f49536f, 0xf792a8d6, 0xc68b7c84, 0x2e50873d, 0x573afa2c,
+    0xbfe10195, 0xa5ee000e, 0x4d35fbb7, 0x345f86a6, 0xdc847d1f,
+    0x4147f54b, 0xa99c0ef2, 0xd0f673e3, 0x382d885a, 0x222289c1,
+    0xcaf97278, 0xb3930f69, 0x5b48f4d0, 0x89141ec0, 0x61cfe579,
+    0x18a59868, 0xf07e63d1, 0xea71624a, 0x02aa99f3, 0x7bc0e4e2,
+    0x931b1f5b, 0x0ed8970f, 0xe6036cb6, 0x9f6911a7, 0x77b2ea1e,
+    0x6dbdeb85, 0x8566103c, 0xfc0c6d2d, 0x14d79694, 0x58b5b90c,
+    0xb06e42b5, 0xc9043fa4, 0x21dfc41d, 0x3bd0c586, 0xd30b3e3f,
+    0xaa61432e, 0x42bab897, 0xdf7930c3, 0x37a2cb7a, 0x4ec8b66b,
+    0xa6134dd2, 0xbc1c4c49, 0x54c7b7f0, 0x2dadcae1, 0xc5763158,
+    0x172adb48, 0xfff120f1, 0x869b5de0, 0x6e40a659, 0x744fa7c2,
+    0x9c945c7b, 0xe5fe216a, 0x0d25dad3, 0x90e65287, 0x783da93e,
+    0x0157d42f, 0xe98c2f96, 0xf3832e0d, 0x1b58d5b4, 0x6232a8a5,
+    0x8ae9531c},
+   {0x00000000, 0x919168ae, 0x6325a087, 0xf2b4c829, 0x874c31d4,
+    0x16dd597a, 0xe4699153, 0x75f8f9fd, 0x4f9f1373, 0xde0e7bdd,
+    0x2cbab3f4, 0xbd2bdb5a, 0xc8d322a7, 0x59424a09, 0xabf68220,
+    0x3a67ea8e, 0x9e3e27e6, 0x0faf4f48, 0xfd1b8761, 0x6c8aefcf,
+    0x19721632, 0x88e37e9c, 0x7a57b6b5, 0xebc6de1b, 0xd1a13495,
+    0x40305c3b, 0xb2849412, 0x2315fcbc, 0x56ed0541, 0xc77c6def,
+    0x35c8a5c6, 0xa459cd68, 0x7d7b3f17, 0xecea57b9, 0x1e5e9f90,
+    0x8fcff73e, 0xfa370ec3, 0x6ba6666d, 0x9912ae44, 0x0883c6ea,
+    0x32e42c64, 0xa37544ca, 0x51c18ce3, 0xc050e44d, 0xb5a81db0,
+    0x2439751e, 0xd68dbd37, 0x471cd599, 0xe34518f1, 0x72d4705f,
+    0x8060b876, 0x11f1d0d8, 0x64092925, 0xf598418b, 0x072c89a2,
+    0x96bde10c, 0xacda0b82, 0x3d4b632c, 0xcfffab05, 0x5e6ec3ab,
+    0x2b963a56, 0xba0752f8, 0x48b39ad1, 0xd922f27f, 0xfaf67e2e,
+    0x6b671680, 0x99d3dea9, 0x0842b607, 0x7dba4ffa, 0xec2b2754,
+    0x1e9fef7d, 0x8f0e87d3, 0xb5696d5d, 0x24f805f3, 0xd64ccdda,
+    0x47dda574, 0x32255c89, 0xa3b43427, 0x5100fc0e, 0xc09194a0,
+    0x64c859c8, 0xf5593166, 0x07edf94f, 0x967c91e1, 0xe384681c,
+    0x721500b2, 0x80a1c89b, 0x1130a035, 0x2b574abb, 0xbac62215,
+    0x4872ea3c, 0xd9e38292, 0xac1b7b6f, 0x3d8a13c1, 0xcf3edbe8,
+    0x5eafb346, 0x878d4139, 0x161c2997, 0xe4a8e1be, 0x75398910,
+    0x00c170ed, 0x91501843, 0x63e4d06a, 0xf275b8c4, 0xc812524a,
+    0x59833ae4, 0xab37f2cd, 0x3aa69a63, 0x4f5e639e, 0xdecf0b30,
+    0x2c7bc319, 0xbdeaabb7, 0x19b366df, 0x88220e71, 0x7a96c658,
+    0xeb07aef6, 0x9eff570b, 0x0f6e3fa5, 0xfddaf78c, 0x6c4b9f22,
+    0x562c75ac, 0xc7bd1d02, 0x3509d52b, 0xa498bd85, 0xd1604478,
+    0x40f12cd6, 0xb245e4ff, 0x23d48c51, 0xf4edfd5c, 0x657c95f2,
+    0x97c85ddb, 0x06593575, 0x73a1cc88, 0xe230a426, 0x10846c0f,
+    0x811504a1, 0xbb72ee2f, 0x2ae38681, 0xd8574ea8, 0x49c62606,
+    0x3c3edffb, 0xadafb755, 0x5f1b7f7c, 0xce8a17d2, 0x6ad3daba,
+    0xfb42b214, 0x09f67a3d, 0x98671293, 0xed9feb6e, 0x7c0e83c0,
+    0x8eba4be9, 0x1f2b2347, 0x254cc9c9, 0xb4dda167, 0x4669694e,
+    0xd7f801e0, 0xa200f81d, 0x339190b3, 0xc125589a, 0x50b43034,
+    0x8996c24b, 0x1807aae5, 0xeab362cc, 0x7b220a62, 0x0edaf39f,
+    0x9f4b9b31, 0x6dff5318, 0xfc6e3bb6, 0xc609d138, 0x5798b996,
+    0xa52c71bf, 0x34bd1911, 0x4145e0ec, 0xd0d48842, 0x2260406b,
+    0xb3f128c5, 0x17a8e5ad, 0x86398d03, 0x748d452a, 0xe51c2d84,
+    0x90e4d479, 0x0175bcd7, 0xf3c174fe, 0x62501c50, 0x5837f6de,
+    0xc9a69e70, 0x3b125659, 0xaa833ef7, 0xdf7bc70a, 0x4eeaafa4,
+    0xbc5e678d, 0x2dcf0f23, 0x0e1b8372, 0x9f8aebdc, 0x6d3e23f5,
+    0xfcaf4b5b, 0x8957b2a6, 0x18c6da08, 0xea721221, 0x7be37a8f,
+    0x41849001, 0xd015f8af, 0x22a13086, 0xb3305828, 0xc6c8a1d5,
+    0x5759c97b, 0xa5ed0152, 0x347c69fc, 0x9025a494, 0x01b4cc3a,
+    0xf3000413, 0x62916cbd, 0x17699540, 0x86f8fdee, 0x744c35c7,
+    0xe5dd5d69, 0xdfbab7e7, 0x4e2bdf49, 0xbc9f1760, 0x2d0e7fce,
+    0x58f68633, 0xc967ee9d, 0x3bd326b4, 0xaa424e1a, 0x7360bc65,
+    0xe2f1d4cb, 0x10451ce2, 0x81d4744c, 0xf42c8db1, 0x65bde51f,
+    0x97092d36, 0x06984598, 0x3cffaf16, 0xad6ec7b8, 0x5fda0f91,
+    0xce4b673f, 0xbbb39ec2, 0x2a22f66c, 0xd8963e45, 0x490756eb,
+    0xed5e9b83, 0x7ccff32d, 0x8e7b3b04, 0x1fea53aa, 0x6a12aa57,
+    0xfb83c2f9, 0x09370ad0, 0x98a6627e, 0xa2c188f0, 0x3350e05e,
+    0xc1e42877, 0x507540d9, 0x258db924, 0xb41cd18a, 0x46a819a3,
+    0xd739710d}};
+
+#endif
+
+#endif
+
+#if N == 5
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0xaf449247, 0x85f822cf, 0x2abcb088, 0xd08143df,
+    0x7fc5d198, 0x55796110, 0xfa3df357, 0x7a7381ff, 0xd53713b8,
+    0xff8ba330, 0x50cf3177, 0xaaf2c220, 0x05b65067, 0x2f0ae0ef,
+    0x804e72a8, 0xf4e703fe, 0x5ba391b9, 0x711f2131, 0xde5bb376,
+    0x24664021, 0x8b22d266, 0xa19e62ee, 0x0edaf0a9, 0x8e948201,
+    0x21d01046, 0x0b6ca0ce, 0xa4283289, 0x5e15c1de, 0xf1515399,
+    0xdbede311, 0x74a97156, 0x32bf01bd, 0x9dfb93fa, 0xb7472372,
+    0x1803b135, 0xe23e4262, 0x4d7ad025, 0x67c660ad, 0xc882f2ea,
+    0x48cc8042, 0xe7881205, 0xcd34a28d, 0x627030ca, 0x984dc39d,
+    0x370951da, 0x1db5e152, 0xb2f17315, 0xc6580243, 0x691c9004,
+    0x43a0208c, 0xece4b2cb, 0x16d9419c, 0xb99dd3db, 0x93216353,
+    0x3c65f114, 0xbc2b83bc, 0x136f11fb, 0x39d3a173, 0x96973334,
+    0x6caac063, 0xc3ee5224, 0xe952e2ac, 0x461670eb, 0x657e037a,
+    0xca3a913d, 0xe08621b5, 0x4fc2b3f2, 0xb5ff40a5, 0x1abbd2e2,
+    0x3007626a, 0x9f43f02d, 0x1f0d8285, 0xb04910c2, 0x9af5a04a,
+    0x35b1320d, 0xcf8cc15a, 0x60c8531d, 0x4a74e395, 0xe53071d2,
+    0x91990084, 0x3edd92c3, 0x1461224b, 0xbb25b00c, 0x4118435b,
+    0xee5cd11c, 0xc4e06194, 0x6ba4f3d3, 0xebea817b, 0x44ae133c,
+    0x6e12a3b4, 0xc15631f3, 0x3b6bc2a4, 0x942f50e3, 0xbe93e06b,
+    0x11d7722c, 0x57c102c7, 0xf8859080, 0xd2392008, 0x7d7db24f,
+    0x87404118, 0x2804d35f, 0x02b863d7, 0xadfcf190, 0x2db28338,
+    0x82f6117f, 0xa84aa1f7, 0x070e33b0, 0xfd33c0e7, 0x527752a0,
+    0x78cbe228, 0xd78f706f, 0xa3260139, 0x0c62937e, 0x26de23f6,
+    0x899ab1b1, 0x73a742e6, 0xdce3d0a1, 0xf65f6029, 0x591bf26e,
+    0xd95580c6, 0x76111281, 0x5cada209, 0xf3e9304e, 0x09d4c319,
+    0xa690515e, 0x8c2ce1d6, 0x23687391, 0xcafc06f4, 0x65b894b3,
+    0x4f04243b, 0xe040b67c, 0x1a7d452b, 0xb539d76c, 0x9f8567e4,
+    0x30c1f5a3, 0xb08f870b, 0x1fcb154c, 0x3577a5c4, 0x9a333783,
+    0x600ec4d4, 0xcf4a5693, 0xe5f6e61b, 0x4ab2745c, 0x3e1b050a,
+    0x915f974d, 0xbbe327c5, 0x14a7b582, 0xee9a46d5, 0x41ded492,
+    0x6b62641a, 0xc426f65d, 0x446884f5, 0xeb2c16b2, 0xc190a63a,
+    0x6ed4347d, 0x94e9c72a, 0x3bad556d, 0x1111e5e5, 0xbe5577a2,
+    0xf8430749, 0x5707950e, 0x7dbb2586, 0xd2ffb7c1, 0x28c24496,
+    0x8786d6d1, 0xad3a6659, 0x027ef41e, 0x823086b6, 0x2d7414f1,
+    0x07c8a479, 0xa88c363e, 0x52b1c569, 0xfdf5572e, 0xd749e7a6,
+    0x780d75e1, 0x0ca404b7, 0xa3e096f0, 0x895c2678, 0x2618b43f,
+    0xdc254768, 0x7361d52f, 0x59dd65a7, 0xf699f7e0, 0x76d78548,
+    0xd993170f, 0xf32fa787, 0x5c6b35c0, 0xa656c697, 0x091254d0,
+    0x23aee458, 0x8cea761f, 0xaf82058e, 0x00c697c9, 0x2a7a2741,
+    0x853eb506, 0x7f034651, 0xd047d416, 0xfafb649e, 0x55bff6d9,
+    0xd5f18471, 0x7ab51636, 0x5009a6be, 0xff4d34f9, 0x0570c7ae,
+    0xaa3455e9, 0x8088e561, 0x2fcc7726, 0x5b650670, 0xf4219437,
+    0xde9d24bf, 0x71d9b6f8, 0x8be445af, 0x24a0d7e8, 0x0e1c6760,
+    0xa158f527, 0x2116878f, 0x8e5215c8, 0xa4eea540, 0x0baa3707,
+    0xf197c450, 0x5ed35617, 0x746fe69f, 0xdb2b74d8, 0x9d3d0433,
+    0x32799674, 0x18c526fc, 0xb781b4bb, 0x4dbc47ec, 0xe2f8d5ab,
+    0xc8446523, 0x6700f764, 0xe74e85cc, 0x480a178b, 0x62b6a703,
+    0xcdf23544, 0x37cfc613, 0x988b5454, 0xb237e4dc, 0x1d73769b,
+    0x69da07cd, 0xc69e958a, 0xec222502, 0x4366b745, 0xb95b4412,
+    0x161fd655, 0x3ca366dd, 0x93e7f49a, 0x13a98632, 0xbced1475,
+    0x9651a4fd, 0x391536ba, 0xc328c5ed, 0x6c6c57aa, 0x46d0e722,
+    0xe9947565},
+   {0x00000000, 0x4e890ba9, 0x9d121752, 0xd39b1cfb, 0xe15528e5,
+    0xafdc234c, 0x7c473fb7, 0x32ce341e, 0x19db578b, 0x57525c22,
+    0x84c940d9, 0xca404b70, 0xf88e7f6e, 0xb60774c7, 0x659c683c,
+    0x2b156395, 0x33b6af16, 0x7d3fa4bf, 0xaea4b844, 0xe02db3ed,
+    0xd2e387f3, 0x9c6a8c5a, 0x4ff190a1, 0x01789b08, 0x2a6df89d,
+    0x64e4f334, 0xb77fefcf, 0xf9f6e466, 0xcb38d078, 0x85b1dbd1,
+    0x562ac72a, 0x18a3cc83, 0x676d5e2c, 0x29e45585, 0xfa7f497e,
+    0xb4f642d7, 0x863876c9, 0xc8b17d60, 0x1b2a619b, 0x55a36a32,
+    0x7eb609a7, 0x303f020e, 0xe3a41ef5, 0xad2d155c, 0x9fe32142,
+    0xd16a2aeb, 0x02f13610, 0x4c783db9, 0x54dbf13a, 0x1a52fa93,
+    0xc9c9e668, 0x8740edc1, 0xb58ed9df, 0xfb07d276, 0x289cce8d,
+    0x6615c524, 0x4d00a6b1, 0x0389ad18, 0xd012b1e3, 0x9e9bba4a,
+    0xac558e54, 0xe2dc85fd, 0x31479906, 0x7fce92af, 0xcedabc58,
+    0x8053b7f1, 0x53c8ab0a, 0x1d41a0a3, 0x2f8f94bd, 0x61069f14,
+    0xb29d83ef, 0xfc148846, 0xd701ebd3, 0x9988e07a, 0x4a13fc81,
+    0x049af728, 0x3654c336, 0x78ddc89f, 0xab46d464, 0xe5cfdfcd,
+    0xfd6c134e, 0xb3e518e7, 0x607e041c, 0x2ef70fb5, 0x1c393bab,
+    0x52b03002, 0x812b2cf9, 0xcfa22750, 0xe4b744c5, 0xaa3e4f6c,
+    0x79a55397, 0x372c583e, 0x05e26c20, 0x4b6b6789, 0x98f07b72,
+    0xd67970db, 0xa9b7e274, 0xe73ee9dd, 0x34a5f526, 0x7a2cfe8f,
+    0x48e2ca91, 0x066bc138, 0xd5f0ddc3, 0x9b79d66a, 0xb06cb5ff,
+    0xfee5be56, 0x2d7ea2ad, 0x63f7a904, 0x51399d1a, 0x1fb096b3,
+    0xcc2b8a48, 0x82a281e1, 0x9a014d62, 0xd48846cb, 0x07135a30,
+    0x499a5199, 0x7b546587, 0x35dd6e2e, 0xe64672d5, 0xa8cf797c,
+    0x83da1ae9, 0xcd531140, 0x1ec80dbb, 0x50410612, 0x628f320c,
+    0x2c0639a5, 0xff9d255e, 0xb1142ef7, 0x46c47ef1, 0x084d7558,
+    0xdbd669a3, 0x955f620a, 0xa7915614, 0xe9185dbd, 0x3a834146,
+    0x740a4aef, 0x5f1f297a, 0x119622d3, 0xc20d3e28, 0x8c843581,
+    0xbe4a019f, 0xf0c30a36, 0x235816cd, 0x6dd11d64, 0x7572d1e7,
+    0x3bfbda4e, 0xe860c6b5, 0xa6e9cd1c, 0x9427f902, 0xdaaef2ab,
+    0x0935ee50, 0x47bce5f9, 0x6ca9866c, 0x22208dc5, 0xf1bb913e,
+    0xbf329a97, 0x8dfcae89, 0xc375a520, 0x10eeb9db, 0x5e67b272,
+    0x21a920dd, 0x6f202b74, 0xbcbb378f, 0xf2323c26, 0xc0fc0838,
+    0x8e750391, 0x5dee1f6a, 0x136714c3, 0x38727756, 0x76fb7cff,
+    0xa5606004, 0xebe96bad, 0xd9275fb3, 0x97ae541a, 0x443548e1,
+    0x0abc4348, 0x121f8fcb, 0x5c968462, 0x8f0d9899, 0xc1849330,
+    0xf34aa72e, 0xbdc3ac87, 0x6e58b07c, 0x20d1bbd5, 0x0bc4d840,
+    0x454dd3e9, 0x96d6cf12, 0xd85fc4bb, 0xea91f0a5, 0xa418fb0c,
+    0x7783e7f7, 0x390aec5e, 0x881ec2a9, 0xc697c900, 0x150cd5fb,
+    0x5b85de52, 0x694bea4c, 0x27c2e1e5, 0xf459fd1e, 0xbad0f6b7,
+    0x91c59522, 0xdf4c9e8b, 0x0cd78270, 0x425e89d9, 0x7090bdc7,
+    0x3e19b66e, 0xed82aa95, 0xa30ba13c, 0xbba86dbf, 0xf5216616,
+    0x26ba7aed, 0x68337144, 0x5afd455a, 0x14744ef3, 0xc7ef5208,
+    0x896659a1, 0xa2733a34, 0xecfa319d, 0x3f612d66, 0x71e826cf,
+    0x432612d1, 0x0daf1978, 0xde340583, 0x90bd0e2a, 0xef739c85,
+    0xa1fa972c, 0x72618bd7, 0x3ce8807e, 0x0e26b460, 0x40afbfc9,
+    0x9334a332, 0xddbda89b, 0xf6a8cb0e, 0xb821c0a7, 0x6bbadc5c,
+    0x2533d7f5, 0x17fde3eb, 0x5974e842, 0x8aeff4b9, 0xc466ff10,
+    0xdcc53393, 0x924c383a, 0x41d724c1, 0x0f5e2f68, 0x3d901b76,
+    0x731910df, 0xa0820c24, 0xee0b078d, 0xc51e6418, 0x8b976fb1,
+    0x580c734a, 0x168578e3, 0x244b4cfd, 0x6ac24754, 0xb9595baf,
+    0xf7d05006},
+   {0x00000000, 0x8d88fde2, 0xc060fd85, 0x4de80067, 0x5bb0fd4b,
+    0xd63800a9, 0x9bd000ce, 0x1658fd2c, 0xb761fa96, 0x3ae90774,
+    0x77010713, 0xfa89faf1, 0xecd107dd, 0x6159fa3f, 0x2cb1fa58,
+    0xa13907ba, 0xb5b2f36d, 0x383a0e8f, 0x75d20ee8, 0xf85af30a,
+    0xee020e26, 0x638af3c4, 0x2e62f3a3, 0xa3ea0e41, 0x02d309fb,
+    0x8f5bf419, 0xc2b3f47e, 0x4f3b099c, 0x5963f4b0, 0xd4eb0952,
+    0x99030935, 0x148bf4d7, 0xb014e09b, 0x3d9c1d79, 0x70741d1e,
+    0xfdfce0fc, 0xeba41dd0, 0x662ce032, 0x2bc4e055, 0xa64c1db7,
+    0x07751a0d, 0x8afde7ef, 0xc715e788, 0x4a9d1a6a, 0x5cc5e746,
+    0xd14d1aa4, 0x9ca51ac3, 0x112de721, 0x05a613f6, 0x882eee14,
+    0xc5c6ee73, 0x484e1391, 0x5e16eebd, 0xd39e135f, 0x9e761338,
+    0x13feeeda, 0xb2c7e960, 0x3f4f1482, 0x72a714e5, 0xff2fe907,
+    0xe977142b, 0x64ffe9c9, 0x2917e9ae, 0xa49f144c, 0xbb58c777,
+    0x36d03a95, 0x7b383af2, 0xf6b0c710, 0xe0e83a3c, 0x6d60c7de,
+    0x2088c7b9, 0xad003a5b, 0x0c393de1, 0x81b1c003, 0xcc59c064,
+    0x41d13d86, 0x5789c0aa, 0xda013d48, 0x97e93d2f, 0x1a61c0cd,
+    0x0eea341a, 0x8362c9f8, 0xce8ac99f, 0x4302347d, 0x555ac951,
+    0xd8d234b3, 0x953a34d4, 0x18b2c936, 0xb98bce8c, 0x3403336e,
+    0x79eb3309, 0xf463ceeb, 0xe23b33c7, 0x6fb3ce25, 0x225bce42,
+    0xafd333a0, 0x0b4c27ec, 0x86c4da0e, 0xcb2cda69, 0x46a4278b,
+    0x50fcdaa7, 0xdd742745, 0x909c2722, 0x1d14dac0, 0xbc2ddd7a,
+    0x31a52098, 0x7c4d20ff, 0xf1c5dd1d, 0xe79d2031, 0x6a15ddd3,
+    0x27fdddb4, 0xaa752056, 0xbefed481, 0x33762963, 0x7e9e2904,
+    0xf316d4e6, 0xe54e29ca, 0x68c6d428, 0x252ed44f, 0xa8a629ad,
+    0x099f2e17, 0x8417d3f5, 0xc9ffd392, 0x44772e70, 0x522fd35c,
+    0xdfa72ebe, 0x924f2ed9, 0x1fc7d33b, 0xadc088af, 0x2048754d,
+    0x6da0752a, 0xe02888c8, 0xf67075e4, 0x7bf88806, 0x36108861,
+    0xbb987583, 0x1aa17239, 0x97298fdb, 0xdac18fbc, 0x5749725e,
+    0x41118f72, 0xcc997290, 0x817172f7, 0x0cf98f15, 0x18727bc2,
+    0x95fa8620, 0xd8128647, 0x559a7ba5, 0x43c28689, 0xce4a7b6b,
+    0x83a27b0c, 0x0e2a86ee, 0xaf138154, 0x229b7cb6, 0x6f737cd1,
+    0xe2fb8133, 0xf4a37c1f, 0x792b81fd, 0x34c3819a, 0xb94b7c78,
+    0x1dd46834, 0x905c95d6, 0xddb495b1, 0x503c6853, 0x4664957f,
+    0xcbec689d, 0x860468fa, 0x0b8c9518, 0xaab592a2, 0x273d6f40,
+    0x6ad56f27, 0xe75d92c5, 0xf1056fe9, 0x7c8d920b, 0x3165926c,
+    0xbced6f8e, 0xa8669b59, 0x25ee66bb, 0x680666dc, 0xe58e9b3e,
+    0xf3d66612, 0x7e5e9bf0, 0x33b69b97, 0xbe3e6675, 0x1f0761cf,
+    0x928f9c2d, 0xdf679c4a, 0x52ef61a8, 0x44b79c84, 0xc93f6166,
+    0x84d76101, 0x095f9ce3, 0x16984fd8, 0x9b10b23a, 0xd6f8b25d,
+    0x5b704fbf, 0x4d28b293, 0xc0a04f71, 0x8d484f16, 0x00c0b2f4,
+    0xa1f9b54e, 0x2c7148ac, 0x619948cb, 0xec11b529, 0xfa494805,
+    0x77c1b5e7, 0x3a29b580, 0xb7a14862, 0xa32abcb5, 0x2ea24157,
+    0x634a4130, 0xeec2bcd2, 0xf89a41fe, 0x7512bc1c, 0x38fabc7b,
+    0xb5724199, 0x144b4623, 0x99c3bbc1, 0xd42bbba6, 0x59a34644,
+    0x4ffbbb68, 0xc273468a, 0x8f9b46ed, 0x0213bb0f, 0xa68caf43,
+    0x2b0452a1, 0x66ec52c6, 0xeb64af24, 0xfd3c5208, 0x70b4afea,
+    0x3d5caf8d, 0xb0d4526f, 0x11ed55d5, 0x9c65a837, 0xd18da850,
+    0x5c0555b2, 0x4a5da89e, 0xc7d5557c, 0x8a3d551b, 0x07b5a8f9,
+    0x133e5c2e, 0x9eb6a1cc, 0xd35ea1ab, 0x5ed65c49, 0x488ea165,
+    0xc5065c87, 0x88ee5ce0, 0x0566a102, 0xa45fa6b8, 0x29d75b5a,
+    0x643f5b3d, 0xe9b7a6df, 0xffef5bf3, 0x7267a611, 0x3f8fa676,
+    0xb2075b94},
+   {0x00000000, 0x80f0171f, 0xda91287f, 0x5a613f60, 0x6e5356bf,
+    0xeea341a0, 0xb4c27ec0, 0x343269df, 0xdca6ad7e, 0x5c56ba61,
+    0x06378501, 0x86c7921e, 0xb2f5fbc1, 0x3205ecde, 0x6864d3be,
+    0xe894c4a1, 0x623c5cbd, 0xe2cc4ba2, 0xb8ad74c2, 0x385d63dd,
+    0x0c6f0a02, 0x8c9f1d1d, 0xd6fe227d, 0x560e3562, 0xbe9af1c3,
+    0x3e6ae6dc, 0x640bd9bc, 0xe4fbcea3, 0xd0c9a77c, 0x5039b063,
+    0x0a588f03, 0x8aa8981c, 0xc478b97a, 0x4488ae65, 0x1ee99105,
+    0x9e19861a, 0xaa2befc5, 0x2adbf8da, 0x70bac7ba, 0xf04ad0a5,
+    0x18de1404, 0x982e031b, 0xc24f3c7b, 0x42bf2b64, 0x768d42bb,
+    0xf67d55a4, 0xac1c6ac4, 0x2cec7ddb, 0xa644e5c7, 0x26b4f2d8,
+    0x7cd5cdb8, 0xfc25daa7, 0xc817b378, 0x48e7a467, 0x12869b07,
+    0x92768c18, 0x7ae248b9, 0xfa125fa6, 0xa07360c6, 0x208377d9,
+    0x14b11e06, 0x94410919, 0xce203679, 0x4ed02166, 0x538074b5,
+    0xd37063aa, 0x89115cca, 0x09e14bd5, 0x3dd3220a, 0xbd233515,
+    0xe7420a75, 0x67b21d6a, 0x8f26d9cb, 0x0fd6ced4, 0x55b7f1b4,
+    0xd547e6ab, 0xe1758f74, 0x6185986b, 0x3be4a70b, 0xbb14b014,
+    0x31bc2808, 0xb14c3f17, 0xeb2d0077, 0x6bdd1768, 0x5fef7eb7,
+    0xdf1f69a8, 0x857e56c8, 0x058e41d7, 0xed1a8576, 0x6dea9269,
+    0x378bad09, 0xb77bba16, 0x8349d3c9, 0x03b9c4d6, 0x59d8fbb6,
+    0xd928eca9, 0x97f8cdcf, 0x1708dad0, 0x4d69e5b0, 0xcd99f2af,
+    0xf9ab9b70, 0x795b8c6f, 0x233ab30f, 0xa3caa410, 0x4b5e60b1,
+    0xcbae77ae, 0x91cf48ce, 0x113f5fd1, 0x250d360e, 0xa5fd2111,
+    0xff9c1e71, 0x7f6c096e, 0xf5c49172, 0x7534866d, 0x2f55b90d,
+    0xafa5ae12, 0x9b97c7cd, 0x1b67d0d2, 0x4106efb2, 0xc1f6f8ad,
+    0x29623c0c, 0xa9922b13, 0xf3f31473, 0x7303036c, 0x47316ab3,
+    0xc7c17dac, 0x9da042cc, 0x1d5055d3, 0xa700e96a, 0x27f0fe75,
+    0x7d91c115, 0xfd61d60a, 0xc953bfd5, 0x49a3a8ca, 0x13c297aa,
+    0x933280b5, 0x7ba64414, 0xfb56530b, 0xa1376c6b, 0x21c77b74,
+    0x15f512ab, 0x950505b4, 0xcf643ad4, 0x4f942dcb, 0xc53cb5d7,
+    0x45cca2c8, 0x1fad9da8, 0x9f5d8ab7, 0xab6fe368, 0x2b9ff477,
+    0x71fecb17, 0xf10edc08, 0x199a18a9, 0x996a0fb6, 0xc30b30d6,
+    0x43fb27c9, 0x77c94e16, 0xf7395909, 0xad586669, 0x2da87176,
+    0x63785010, 0xe388470f, 0xb9e9786f, 0x39196f70, 0x0d2b06af,
+    0x8ddb11b0, 0xd7ba2ed0, 0x574a39cf, 0xbfdefd6e, 0x3f2eea71,
+    0x654fd511, 0xe5bfc20e, 0xd18dabd1, 0x517dbcce, 0x0b1c83ae,
+    0x8bec94b1, 0x01440cad, 0x81b41bb2, 0xdbd524d2, 0x5b2533cd,
+    0x6f175a12, 0xefe74d0d, 0xb586726d, 0x35766572, 0xdde2a1d3,
+    0x5d12b6cc, 0x077389ac, 0x87839eb3, 0xb3b1f76c, 0x3341e073,
+    0x6920df13, 0xe9d0c80c, 0xf4809ddf, 0x74708ac0, 0x2e11b5a0,
+    0xaee1a2bf, 0x9ad3cb60, 0x1a23dc7f, 0x4042e31f, 0xc0b2f400,
+    0x282630a1, 0xa8d627be, 0xf2b718de, 0x72470fc1, 0x4675661e,
+    0xc6857101, 0x9ce44e61, 0x1c14597e, 0x96bcc162, 0x164cd67d,
+    0x4c2de91d, 0xccddfe02, 0xf8ef97dd, 0x781f80c2, 0x227ebfa2,
+    0xa28ea8bd, 0x4a1a6c1c, 0xcaea7b03, 0x908b4463, 0x107b537c,
+    0x24493aa3, 0xa4b92dbc, 0xfed812dc, 0x7e2805c3, 0x30f824a5,
+    0xb00833ba, 0xea690cda, 0x6a991bc5, 0x5eab721a, 0xde5b6505,
+    0x843a5a65, 0x04ca4d7a, 0xec5e89db, 0x6cae9ec4, 0x36cfa1a4,
+    0xb63fb6bb, 0x820ddf64, 0x02fdc87b, 0x589cf71b, 0xd86ce004,
+    0x52c47818, 0xd2346f07, 0x88555067, 0x08a54778, 0x3c972ea7,
+    0xbc6739b8, 0xe60606d8, 0x66f611c7, 0x8e62d566, 0x0e92c279,
+    0x54f3fd19, 0xd403ea06, 0xe03183d9, 0x60c194c6, 0x3aa0aba6,
+    0xba50bcb9},
+   {0x00000000, 0x9570d495, 0xf190af6b, 0x64e07bfe, 0x38505897,
+    0xad208c02, 0xc9c0f7fc, 0x5cb02369, 0x70a0b12e, 0xe5d065bb,
+    0x81301e45, 0x1440cad0, 0x48f0e9b9, 0xdd803d2c, 0xb96046d2,
+    0x2c109247, 0xe141625c, 0x7431b6c9, 0x10d1cd37, 0x85a119a2,
+    0xd9113acb, 0x4c61ee5e, 0x288195a0, 0xbdf14135, 0x91e1d372,
+    0x049107e7, 0x60717c19, 0xf501a88c, 0xa9b18be5, 0x3cc15f70,
+    0x5821248e, 0xcd51f01b, 0x19f3c2f9, 0x8c83166c, 0xe8636d92,
+    0x7d13b907, 0x21a39a6e, 0xb4d34efb, 0xd0333505, 0x4543e190,
+    0x695373d7, 0xfc23a742, 0x98c3dcbc, 0x0db30829, 0x51032b40,
+    0xc473ffd5, 0xa093842b, 0x35e350be, 0xf8b2a0a5, 0x6dc27430,
+    0x09220fce, 0x9c52db5b, 0xc0e2f832, 0x55922ca7, 0x31725759,
+    0xa40283cc, 0x8812118b, 0x1d62c51e, 0x7982bee0, 0xecf26a75,
+    0xb042491c, 0x25329d89, 0x41d2e677, 0xd4a232e2, 0x33e785f2,
+    0xa6975167, 0xc2772a99, 0x5707fe0c, 0x0bb7dd65, 0x9ec709f0,
+    0xfa27720e, 0x6f57a69b, 0x434734dc, 0xd637e049, 0xb2d79bb7,
+    0x27a74f22, 0x7b176c4b, 0xee67b8de, 0x8a87c320, 0x1ff717b5,
+    0xd2a6e7ae, 0x47d6333b, 0x233648c5, 0xb6469c50, 0xeaf6bf39,
+    0x7f866bac, 0x1b661052, 0x8e16c4c7, 0xa2065680, 0x37768215,
+    0x5396f9eb, 0xc6e62d7e, 0x9a560e17, 0x0f26da82, 0x6bc6a17c,
+    0xfeb675e9, 0x2a14470b, 0xbf64939e, 0xdb84e860, 0x4ef43cf5,
+    0x12441f9c, 0x8734cb09, 0xe3d4b0f7, 0x76a46462, 0x5ab4f625,
+    0xcfc422b0, 0xab24594e, 0x3e548ddb, 0x62e4aeb2, 0xf7947a27,
+    0x937401d9, 0x0604d54c, 0xcb552557, 0x5e25f1c2, 0x3ac58a3c,
+    0xafb55ea9, 0xf3057dc0, 0x6675a955, 0x0295d2ab, 0x97e5063e,
+    0xbbf59479, 0x2e8540ec, 0x4a653b12, 0xdf15ef87, 0x83a5ccee,
+    0x16d5187b, 0x72356385, 0xe745b710, 0x67cf0be4, 0xf2bfdf71,
+    0x965fa48f, 0x032f701a, 0x5f9f5373, 0xcaef87e6, 0xae0ffc18,
+    0x3b7f288d, 0x176fbaca, 0x821f6e5f, 0xe6ff15a1, 0x738fc134,
+    0x2f3fe25d, 0xba4f36c8, 0xdeaf4d36, 0x4bdf99a3, 0x868e69b8,
+    0x13febd2d, 0x771ec6d3, 0xe26e1246, 0xbede312f, 0x2baee5ba,
+    0x4f4e9e44, 0xda3e4ad1, 0xf62ed896, 0x635e0c03, 0x07be77fd,
+    0x92cea368, 0xce7e8001, 0x5b0e5494, 0x3fee2f6a, 0xaa9efbff,
+    0x7e3cc91d, 0xeb4c1d88, 0x8fac6676, 0x1adcb2e3, 0x466c918a,
+    0xd31c451f, 0xb7fc3ee1, 0x228cea74, 0x0e9c7833, 0x9becaca6,
+    0xff0cd758, 0x6a7c03cd, 0x36cc20a4, 0xa3bcf431, 0xc75c8fcf,
+    0x522c5b5a, 0x9f7dab41, 0x0a0d7fd4, 0x6eed042a, 0xfb9dd0bf,
+    0xa72df3d6, 0x325d2743, 0x56bd5cbd, 0xc3cd8828, 0xefdd1a6f,
+    0x7aadcefa, 0x1e4db504, 0x8b3d6191, 0xd78d42f8, 0x42fd966d,
+    0x261ded93, 0xb36d3906, 0x54288e16, 0xc1585a83, 0xa5b8217d,
+    0x30c8f5e8, 0x6c78d681, 0xf9080214, 0x9de879ea, 0x0898ad7f,
+    0x24883f38, 0xb1f8ebad, 0xd5189053, 0x406844c6, 0x1cd867af,
+    0x89a8b33a, 0xed48c8c4, 0x78381c51, 0xb569ec4a, 0x201938df,
+    0x44f94321, 0xd18997b4, 0x8d39b4dd, 0x18496048, 0x7ca91bb6,
+    0xe9d9cf23, 0xc5c95d64, 0x50b989f1, 0x3459f20f, 0xa129269a,
+    0xfd9905f3, 0x68e9d166, 0x0c09aa98, 0x99797e0d, 0x4ddb4cef,
+    0xd8ab987a, 0xbc4be384, 0x293b3711, 0x758b1478, 0xe0fbc0ed,
+    0x841bbb13, 0x116b6f86, 0x3d7bfdc1, 0xa80b2954, 0xcceb52aa,
+    0x599b863f, 0x052ba556, 0x905b71c3, 0xf4bb0a3d, 0x61cbdea8,
+    0xac9a2eb3, 0x39eafa26, 0x5d0a81d8, 0xc87a554d, 0x94ca7624,
+    0x01baa2b1, 0x655ad94f, 0xf02a0dda, 0xdc3a9f9d, 0x494a4b08,
+    0x2daa30f6, 0xb8dae463, 0xe46ac70a, 0x711a139f, 0x15fa6861,
+    0x808abcf4},
+   {0x00000000, 0xcf9e17c8, 0x444d29d1, 0x8bd33e19, 0x889a53a2,
+    0x4704446a, 0xccd77a73, 0x03496dbb, 0xca45a105, 0x05dbb6cd,
+    0x8e0888d4, 0x41969f1c, 0x42dff2a7, 0x8d41e56f, 0x0692db76,
+    0xc90cccbe, 0x4ffa444b, 0x80645383, 0x0bb76d9a, 0xc4297a52,
+    0xc76017e9, 0x08fe0021, 0x832d3e38, 0x4cb329f0, 0x85bfe54e,
+    0x4a21f286, 0xc1f2cc9f, 0x0e6cdb57, 0x0d25b6ec, 0xc2bba124,
+    0x49689f3d, 0x86f688f5, 0x9ff48896, 0x506a9f5e, 0xdbb9a147,
+    0x1427b68f, 0x176edb34, 0xd8f0ccfc, 0x5323f2e5, 0x9cbde52d,
+    0x55b12993, 0x9a2f3e5b, 0x11fc0042, 0xde62178a, 0xdd2b7a31,
+    0x12b56df9, 0x996653e0, 0x56f84428, 0xd00eccdd, 0x1f90db15,
+    0x9443e50c, 0x5bddf2c4, 0x58949f7f, 0x970a88b7, 0x1cd9b6ae,
+    0xd347a166, 0x1a4b6dd8, 0xd5d57a10, 0x5e064409, 0x919853c1,
+    0x92d13e7a, 0x5d4f29b2, 0xd69c17ab, 0x19020063, 0xe498176d,
+    0x2b0600a5, 0xa0d53ebc, 0x6f4b2974, 0x6c0244cf, 0xa39c5307,
+    0x284f6d1e, 0xe7d17ad6, 0x2eddb668, 0xe143a1a0, 0x6a909fb9,
+    0xa50e8871, 0xa647e5ca, 0x69d9f202, 0xe20acc1b, 0x2d94dbd3,
+    0xab625326, 0x64fc44ee, 0xef2f7af7, 0x20b16d3f, 0x23f80084,
+    0xec66174c, 0x67b52955, 0xa82b3e9d, 0x6127f223, 0xaeb9e5eb,
+    0x256adbf2, 0xeaf4cc3a, 0xe9bda181, 0x2623b649, 0xadf08850,
+    0x626e9f98, 0x7b6c9ffb, 0xb4f28833, 0x3f21b62a, 0xf0bfa1e2,
+    0xf3f6cc59, 0x3c68db91, 0xb7bbe588, 0x7825f240, 0xb1293efe,
+    0x7eb72936, 0xf564172f, 0x3afa00e7, 0x39b36d5c, 0xf62d7a94,
+    0x7dfe448d, 0xb2605345, 0x3496dbb0, 0xfb08cc78, 0x70dbf261,
+    0xbf45e5a9, 0xbc0c8812, 0x73929fda, 0xf841a1c3, 0x37dfb60b,
+    0xfed37ab5, 0x314d6d7d, 0xba9e5364, 0x750044ac, 0x76492917,
+    0xb9d73edf, 0x320400c6, 0xfd9a170e, 0x1241289b, 0xdddf3f53,
+    0x560c014a, 0x99921682, 0x9adb7b39, 0x55456cf1, 0xde9652e8,
+    0x11084520, 0xd804899e, 0x179a9e56, 0x9c49a04f, 0x53d7b787,
+    0x509eda3c, 0x9f00cdf4, 0x14d3f3ed, 0xdb4de425, 0x5dbb6cd0,
+    0x92257b18, 0x19f64501, 0xd66852c9, 0xd5213f72, 0x1abf28ba,
+    0x916c16a3, 0x5ef2016b, 0x97fecdd5, 0x5860da1d, 0xd3b3e404,
+    0x1c2df3cc, 0x1f649e77, 0xd0fa89bf, 0x5b29b7a6, 0x94b7a06e,
+    0x8db5a00d, 0x422bb7c5, 0xc9f889dc, 0x06669e14, 0x052ff3af,
+    0xcab1e467, 0x4162da7e, 0x8efccdb6, 0x47f00108, 0x886e16c0,
+    0x03bd28d9, 0xcc233f11, 0xcf6a52aa, 0x00f44562, 0x8b277b7b,
+    0x44b96cb3, 0xc24fe446, 0x0dd1f38e, 0x8602cd97, 0x499cda5f,
+    0x4ad5b7e4, 0x854ba02c, 0x0e989e35, 0xc10689fd, 0x080a4543,
+    0xc794528b, 0x4c476c92, 0x83d97b5a, 0x809016e1, 0x4f0e0129,
+    0xc4dd3f30, 0x0b4328f8, 0xf6d93ff6, 0x3947283e, 0xb2941627,
+    0x7d0a01ef, 0x7e436c54, 0xb1dd7b9c, 0x3a0e4585, 0xf590524d,
+    0x3c9c9ef3, 0xf302893b, 0x78d1b722, 0xb74fa0ea, 0xb406cd51,
+    0x7b98da99, 0xf04be480, 0x3fd5f348, 0xb9237bbd, 0x76bd6c75,
+    0xfd6e526c, 0x32f045a4, 0x31b9281f, 0xfe273fd7, 0x75f401ce,
+    0xba6a1606, 0x7366dab8, 0xbcf8cd70, 0x372bf369, 0xf8b5e4a1,
+    0xfbfc891a, 0x34629ed2, 0xbfb1a0cb, 0x702fb703, 0x692db760,
+    0xa6b3a0a8, 0x2d609eb1, 0xe2fe8979, 0xe1b7e4c2, 0x2e29f30a,
+    0xa5facd13, 0x6a64dadb, 0xa3681665, 0x6cf601ad, 0xe7253fb4,
+    0x28bb287c, 0x2bf245c7, 0xe46c520f, 0x6fbf6c16, 0xa0217bde,
+    0x26d7f32b, 0xe949e4e3, 0x629adafa, 0xad04cd32, 0xae4da089,
+    0x61d3b741, 0xea008958, 0x259e9e90, 0xec92522e, 0x230c45e6,
+    0xa8df7bff, 0x67416c37, 0x6408018c, 0xab961644, 0x2045285d,
+    0xefdb3f95},
+   {0x00000000, 0x24825136, 0x4904a26c, 0x6d86f35a, 0x920944d8,
+    0xb68b15ee, 0xdb0de6b4, 0xff8fb782, 0xff638ff1, 0xdbe1dec7,
+    0xb6672d9d, 0x92e57cab, 0x6d6acb29, 0x49e89a1f, 0x246e6945,
+    0x00ec3873, 0x25b619a3, 0x01344895, 0x6cb2bbcf, 0x4830eaf9,
+    0xb7bf5d7b, 0x933d0c4d, 0xfebbff17, 0xda39ae21, 0xdad59652,
+    0xfe57c764, 0x93d1343e, 0xb7536508, 0x48dcd28a, 0x6c5e83bc,
+    0x01d870e6, 0x255a21d0, 0x4b6c3346, 0x6fee6270, 0x0268912a,
+    0x26eac01c, 0xd965779e, 0xfde726a8, 0x9061d5f2, 0xb4e384c4,
+    0xb40fbcb7, 0x908ded81, 0xfd0b1edb, 0xd9894fed, 0x2606f86f,
+    0x0284a959, 0x6f025a03, 0x4b800b35, 0x6eda2ae5, 0x4a587bd3,
+    0x27de8889, 0x035cd9bf, 0xfcd36e3d, 0xd8513f0b, 0xb5d7cc51,
+    0x91559d67, 0x91b9a514, 0xb53bf422, 0xd8bd0778, 0xfc3f564e,
+    0x03b0e1cc, 0x2732b0fa, 0x4ab443a0, 0x6e361296, 0x96d8668c,
+    0xb25a37ba, 0xdfdcc4e0, 0xfb5e95d6, 0x04d12254, 0x20537362,
+    0x4dd58038, 0x6957d10e, 0x69bbe97d, 0x4d39b84b, 0x20bf4b11,
+    0x043d1a27, 0xfbb2ada5, 0xdf30fc93, 0xb2b60fc9, 0x96345eff,
+    0xb36e7f2f, 0x97ec2e19, 0xfa6add43, 0xdee88c75, 0x21673bf7,
+    0x05e56ac1, 0x6863999b, 0x4ce1c8ad, 0x4c0df0de, 0x688fa1e8,
+    0x050952b2, 0x218b0384, 0xde04b406, 0xfa86e530, 0x9700166a,
+    0xb382475c, 0xddb455ca, 0xf93604fc, 0x94b0f7a6, 0xb032a690,
+    0x4fbd1112, 0x6b3f4024, 0x06b9b37e, 0x223be248, 0x22d7da3b,
+    0x06558b0d, 0x6bd37857, 0x4f512961, 0xb0de9ee3, 0x945ccfd5,
+    0xf9da3c8f, 0xdd586db9, 0xf8024c69, 0xdc801d5f, 0xb106ee05,
+    0x9584bf33, 0x6a0b08b1, 0x4e895987, 0x230faadd, 0x078dfbeb,
+    0x0761c398, 0x23e392ae, 0x4e6561f4, 0x6ae730c2, 0x95688740,
+    0xb1ead676, 0xdc6c252c, 0xf8ee741a, 0xf6c1cb59, 0xd2439a6f,
+    0xbfc56935, 0x9b473803, 0x64c88f81, 0x404adeb7, 0x2dcc2ded,
+    0x094e7cdb, 0x09a244a8, 0x2d20159e, 0x40a6e6c4, 0x6424b7f2,
+    0x9bab0070, 0xbf295146, 0xd2afa21c, 0xf62df32a, 0xd377d2fa,
+    0xf7f583cc, 0x9a737096, 0xbef121a0, 0x417e9622, 0x65fcc714,
+    0x087a344e, 0x2cf86578, 0x2c145d0b, 0x08960c3d, 0x6510ff67,
+    0x4192ae51, 0xbe1d19d3, 0x9a9f48e5, 0xf719bbbf, 0xd39bea89,
+    0xbdadf81f, 0x992fa929, 0xf4a95a73, 0xd02b0b45, 0x2fa4bcc7,
+    0x0b26edf1, 0x66a01eab, 0x42224f9d, 0x42ce77ee, 0x664c26d8,
+    0x0bcad582, 0x2f4884b4, 0xd0c73336, 0xf4456200, 0x99c3915a,
+    0xbd41c06c, 0x981be1bc, 0xbc99b08a, 0xd11f43d0, 0xf59d12e6,
+    0x0a12a564, 0x2e90f452, 0x43160708, 0x6794563e, 0x67786e4d,
+    0x43fa3f7b, 0x2e7ccc21, 0x0afe9d17, 0xf5712a95, 0xd1f37ba3,
+    0xbc7588f9, 0x98f7d9cf, 0x6019add5, 0x449bfce3, 0x291d0fb9,
+    0x0d9f5e8f, 0xf210e90d, 0xd692b83b, 0xbb144b61, 0x9f961a57,
+    0x9f7a2224, 0xbbf87312, 0xd67e8048, 0xf2fcd17e, 0x0d7366fc,
+    0x29f137ca, 0x4477c490, 0x60f595a6, 0x45afb476, 0x612de540,
+    0x0cab161a, 0x2829472c, 0xd7a6f0ae, 0xf324a198, 0x9ea252c2,
+    0xba2003f4, 0xbacc3b87, 0x9e4e6ab1, 0xf3c899eb, 0xd74ac8dd,
+    0x28c57f5f, 0x0c472e69, 0x61c1dd33, 0x45438c05, 0x2b759e93,
+    0x0ff7cfa5, 0x62713cff, 0x46f36dc9, 0xb97cda4b, 0x9dfe8b7d,
+    0xf0787827, 0xd4fa2911, 0xd4161162, 0xf0944054, 0x9d12b30e,
+    0xb990e238, 0x461f55ba, 0x629d048c, 0x0f1bf7d6, 0x2b99a6e0,
+    0x0ec38730, 0x2a41d606, 0x47c7255c, 0x6345746a, 0x9ccac3e8,
+    0xb84892de, 0xd5ce6184, 0xf14c30b2, 0xf1a008c1, 0xd52259f7,
+    0xb8a4aaad, 0x9c26fb9b, 0x63a94c19, 0x472b1d2f, 0x2aadee75,
+    0x0e2fbf43},
+   {0x00000000, 0x36f290f3, 0x6de521e6, 0x5b17b115, 0xdbca43cc,
+    0xed38d33f, 0xb62f622a, 0x80ddf2d9, 0x6ce581d9, 0x5a17112a,
+    0x0100a03f, 0x37f230cc, 0xb72fc215, 0x81dd52e6, 0xdacae3f3,
+    0xec387300, 0xd9cb03b2, 0xef399341, 0xb42e2254, 0x82dcb2a7,
+    0x0201407e, 0x34f3d08d, 0x6fe46198, 0x5916f16b, 0xb52e826b,
+    0x83dc1298, 0xd8cba38d, 0xee39337e, 0x6ee4c1a7, 0x58165154,
+    0x0301e041, 0x35f370b2, 0x68e70125, 0x5e1591d6, 0x050220c3,
+    0x33f0b030, 0xb32d42e9, 0x85dfd21a, 0xdec8630f, 0xe83af3fc,
+    0x040280fc, 0x32f0100f, 0x69e7a11a, 0x5f1531e9, 0xdfc8c330,
+    0xe93a53c3, 0xb22de2d6, 0x84df7225, 0xb12c0297, 0x87de9264,
+    0xdcc92371, 0xea3bb382, 0x6ae6415b, 0x5c14d1a8, 0x070360bd,
+    0x31f1f04e, 0xddc9834e, 0xeb3b13bd, 0xb02ca2a8, 0x86de325b,
+    0x0603c082, 0x30f15071, 0x6be6e164, 0x5d147197, 0xd1ce024a,
+    0xe73c92b9, 0xbc2b23ac, 0x8ad9b35f, 0x0a044186, 0x3cf6d175,
+    0x67e16060, 0x5113f093, 0xbd2b8393, 0x8bd91360, 0xd0cea275,
+    0xe63c3286, 0x66e1c05f, 0x501350ac, 0x0b04e1b9, 0x3df6714a,
+    0x080501f8, 0x3ef7910b, 0x65e0201e, 0x5312b0ed, 0xd3cf4234,
+    0xe53dd2c7, 0xbe2a63d2, 0x88d8f321, 0x64e08021, 0x521210d2,
+    0x0905a1c7, 0x3ff73134, 0xbf2ac3ed, 0x89d8531e, 0xd2cfe20b,
+    0xe43d72f8, 0xb929036f, 0x8fdb939c, 0xd4cc2289, 0xe23eb27a,
+    0x62e340a3, 0x5411d050, 0x0f066145, 0x39f4f1b6, 0xd5cc82b6,
+    0xe33e1245, 0xb829a350, 0x8edb33a3, 0x0e06c17a, 0x38f45189,
+    0x63e3e09c, 0x5511706f, 0x60e200dd, 0x5610902e, 0x0d07213b,
+    0x3bf5b1c8, 0xbb284311, 0x8ddad3e2, 0xd6cd62f7, 0xe03ff204,
+    0x0c078104, 0x3af511f7, 0x61e2a0e2, 0x57103011, 0xd7cdc2c8,
+    0xe13f523b, 0xba28e32e, 0x8cda73dd, 0x78ed02d5, 0x4e1f9226,
+    0x15082333, 0x23fab3c0, 0xa3274119, 0x95d5d1ea, 0xcec260ff,
+    0xf830f00c, 0x1408830c, 0x22fa13ff, 0x79eda2ea, 0x4f1f3219,
+    0xcfc2c0c0, 0xf9305033, 0xa227e126, 0x94d571d5, 0xa1260167,
+    0x97d49194, 0xccc32081, 0xfa31b072, 0x7aec42ab, 0x4c1ed258,
+    0x1709634d, 0x21fbf3be, 0xcdc380be, 0xfb31104d, 0xa026a158,
+    0x96d431ab, 0x1609c372, 0x20fb5381, 0x7bece294, 0x4d1e7267,
+    0x100a03f0, 0x26f89303, 0x7def2216, 0x4b1db2e5, 0xcbc0403c,
+    0xfd32d0cf, 0xa62561da, 0x90d7f129, 0x7cef8229, 0x4a1d12da,
+    0x110aa3cf, 0x27f8333c, 0xa725c1e5, 0x91d75116, 0xcac0e003,
+    0xfc3270f0, 0xc9c10042, 0xff3390b1, 0xa42421a4, 0x92d6b157,
+    0x120b438e, 0x24f9d37d, 0x7fee6268, 0x491cf29b, 0xa524819b,
+    0x93d61168, 0xc8c1a07d, 0xfe33308e, 0x7eeec257, 0x481c52a4,
+    0x130be3b1, 0x25f97342, 0xa923009f, 0x9fd1906c, 0xc4c62179,
+    0xf234b18a, 0x72e94353, 0x441bd3a0, 0x1f0c62b5, 0x29fef246,
+    0xc5c68146, 0xf33411b5, 0xa823a0a0, 0x9ed13053, 0x1e0cc28a,
+    0x28fe5279, 0x73e9e36c, 0x451b739f, 0x70e8032d, 0x461a93de,
+    0x1d0d22cb, 0x2bffb238, 0xab2240e1, 0x9dd0d012, 0xc6c76107,
+    0xf035f1f4, 0x1c0d82f4, 0x2aff1207, 0x71e8a312, 0x471a33e1,
+    0xc7c7c138, 0xf13551cb, 0xaa22e0de, 0x9cd0702d, 0xc1c401ba,
+    0xf7369149, 0xac21205c, 0x9ad3b0af, 0x1a0e4276, 0x2cfcd285,
+    0x77eb6390, 0x4119f363, 0xad218063, 0x9bd31090, 0xc0c4a185,
+    0xf6363176, 0x76ebc3af, 0x4019535c, 0x1b0ee249, 0x2dfc72ba,
+    0x180f0208, 0x2efd92fb, 0x75ea23ee, 0x4318b31d, 0xc3c541c4,
+    0xf537d137, 0xae206022, 0x98d2f0d1, 0x74ea83d1, 0x42181322,
+    0x190fa237, 0x2ffd32c4, 0xaf20c01d, 0x99d250ee, 0xc2c5e1fb,
+    0xf4377108}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0xf390f23600000000, 0xe621e56d00000000,
+    0x15b1175b00000000, 0xcc43cadb00000000, 0x3fd338ed00000000,
+    0x2a622fb600000000, 0xd9f2dd8000000000, 0xd981e56c00000000,
+    0x2a11175a00000000, 0x3fa0000100000000, 0xcc30f23700000000,
+    0x15c22fb700000000, 0xe652dd8100000000, 0xf3e3cada00000000,
+    0x007338ec00000000, 0xb203cbd900000000, 0x419339ef00000000,
+    0x54222eb400000000, 0xa7b2dc8200000000, 0x7e40010200000000,
+    0x8dd0f33400000000, 0x9861e46f00000000, 0x6bf1165900000000,
+    0x6b822eb500000000, 0x9812dc8300000000, 0x8da3cbd800000000,
+    0x7e3339ee00000000, 0xa7c1e46e00000000, 0x5451165800000000,
+    0x41e0010300000000, 0xb270f33500000000, 0x2501e76800000000,
+    0xd691155e00000000, 0xc320020500000000, 0x30b0f03300000000,
+    0xe9422db300000000, 0x1ad2df8500000000, 0x0f63c8de00000000,
+    0xfcf33ae800000000, 0xfc80020400000000, 0x0f10f03200000000,
+    0x1aa1e76900000000, 0xe931155f00000000, 0x30c3c8df00000000,
+    0xc3533ae900000000, 0xd6e22db200000000, 0x2572df8400000000,
+    0x97022cb100000000, 0x6492de8700000000, 0x7123c9dc00000000,
+    0x82b33bea00000000, 0x5b41e66a00000000, 0xa8d1145c00000000,
+    0xbd60030700000000, 0x4ef0f13100000000, 0x4e83c9dd00000000,
+    0xbd133beb00000000, 0xa8a22cb000000000, 0x5b32de8600000000,
+    0x82c0030600000000, 0x7150f13000000000, 0x64e1e66b00000000,
+    0x9771145d00000000, 0x4a02ced100000000, 0xb9923ce700000000,
+    0xac232bbc00000000, 0x5fb3d98a00000000, 0x8641040a00000000,
+    0x75d1f63c00000000, 0x6060e16700000000, 0x93f0135100000000,
+    0x93832bbd00000000, 0x6013d98b00000000, 0x75a2ced000000000,
+    0x86323ce600000000, 0x5fc0e16600000000, 0xac50135000000000,
+    0xb9e1040b00000000, 0x4a71f63d00000000, 0xf801050800000000,
+    0x0b91f73e00000000, 0x1e20e06500000000, 0xedb0125300000000,
+    0x3442cfd300000000, 0xc7d23de500000000, 0xd2632abe00000000,
+    0x21f3d88800000000, 0x2180e06400000000, 0xd210125200000000,
+    0xc7a1050900000000, 0x3431f73f00000000, 0xedc32abf00000000,
+    0x1e53d88900000000, 0x0be2cfd200000000, 0xf8723de400000000,
+    0x6f0329b900000000, 0x9c93db8f00000000, 0x8922ccd400000000,
+    0x7ab23ee200000000, 0xa340e36200000000, 0x50d0115400000000,
+    0x4561060f00000000, 0xb6f1f43900000000, 0xb682ccd500000000,
+    0x45123ee300000000, 0x50a329b800000000, 0xa333db8e00000000,
+    0x7ac1060e00000000, 0x8951f43800000000, 0x9ce0e36300000000,
+    0x6f70115500000000, 0xdd00e26000000000, 0x2e90105600000000,
+    0x3b21070d00000000, 0xc8b1f53b00000000, 0x114328bb00000000,
+    0xe2d3da8d00000000, 0xf762cdd600000000, 0x04f23fe000000000,
+    0x0481070c00000000, 0xf711f53a00000000, 0xe2a0e26100000000,
+    0x1130105700000000, 0xc8c2cdd700000000, 0x3b523fe100000000,
+    0x2ee328ba00000000, 0xdd73da8c00000000, 0xd502ed7800000000,
+    0x26921f4e00000000, 0x3323081500000000, 0xc0b3fa2300000000,
+    0x194127a300000000, 0xead1d59500000000, 0xff60c2ce00000000,
+    0x0cf030f800000000, 0x0c83081400000000, 0xff13fa2200000000,
+    0xeaa2ed7900000000, 0x19321f4f00000000, 0xc0c0c2cf00000000,
+    0x335030f900000000, 0x26e127a200000000, 0xd571d59400000000,
+    0x670126a100000000, 0x9491d49700000000, 0x8120c3cc00000000,
+    0x72b031fa00000000, 0xab42ec7a00000000, 0x58d21e4c00000000,
+    0x4d63091700000000, 0xbef3fb2100000000, 0xbe80c3cd00000000,
+    0x4d1031fb00000000, 0x58a126a000000000, 0xab31d49600000000,
+    0x72c3091600000000, 0x8153fb2000000000, 0x94e2ec7b00000000,
+    0x67721e4d00000000, 0xf0030a1000000000, 0x0393f82600000000,
+    0x1622ef7d00000000, 0xe5b21d4b00000000, 0x3c40c0cb00000000,
+    0xcfd032fd00000000, 0xda6125a600000000, 0x29f1d79000000000,
+    0x2982ef7c00000000, 0xda121d4a00000000, 0xcfa30a1100000000,
+    0x3c33f82700000000, 0xe5c125a700000000, 0x1651d79100000000,
+    0x03e0c0ca00000000, 0xf07032fc00000000, 0x4200c1c900000000,
+    0xb19033ff00000000, 0xa42124a400000000, 0x57b1d69200000000,
+    0x8e430b1200000000, 0x7dd3f92400000000, 0x6862ee7f00000000,
+    0x9bf21c4900000000, 0x9b8124a500000000, 0x6811d69300000000,
+    0x7da0c1c800000000, 0x8e3033fe00000000, 0x57c2ee7e00000000,
+    0xa4521c4800000000, 0xb1e30b1300000000, 0x4273f92500000000,
+    0x9f0023a900000000, 0x6c90d19f00000000, 0x7921c6c400000000,
+    0x8ab134f200000000, 0x5343e97200000000, 0xa0d31b4400000000,
+    0xb5620c1f00000000, 0x46f2fe2900000000, 0x4681c6c500000000,
+    0xb51134f300000000, 0xa0a023a800000000, 0x5330d19e00000000,
+    0x8ac20c1e00000000, 0x7952fe2800000000, 0x6ce3e97300000000,
+    0x9f731b4500000000, 0x2d03e87000000000, 0xde931a4600000000,
+    0xcb220d1d00000000, 0x38b2ff2b00000000, 0xe14022ab00000000,
+    0x12d0d09d00000000, 0x0761c7c600000000, 0xf4f135f000000000,
+    0xf4820d1c00000000, 0x0712ff2a00000000, 0x12a3e87100000000,
+    0xe1331a4700000000, 0x38c1c7c700000000, 0xcb5135f100000000,
+    0xdee022aa00000000, 0x2d70d09c00000000, 0xba01c4c100000000,
+    0x499136f700000000, 0x5c2021ac00000000, 0xafb0d39a00000000,
+    0x76420e1a00000000, 0x85d2fc2c00000000, 0x9063eb7700000000,
+    0x63f3194100000000, 0x638021ad00000000, 0x9010d39b00000000,
+    0x85a1c4c000000000, 0x763136f600000000, 0xafc3eb7600000000,
+    0x5c53194000000000, 0x49e20e1b00000000, 0xba72fc2d00000000,
+    0x08020f1800000000, 0xfb92fd2e00000000, 0xee23ea7500000000,
+    0x1db3184300000000, 0xc441c5c300000000, 0x37d137f500000000,
+    0x226020ae00000000, 0xd1f0d29800000000, 0xd183ea7400000000,
+    0x2213184200000000, 0x37a20f1900000000, 0xc432fd2f00000000,
+    0x1dc020af00000000, 0xee50d29900000000, 0xfbe1c5c200000000,
+    0x087137f400000000},
+   {0x0000000000000000, 0x3651822400000000, 0x6ca2044900000000,
+    0x5af3866d00000000, 0xd844099200000000, 0xee158bb600000000,
+    0xb4e60ddb00000000, 0x82b78fff00000000, 0xf18f63ff00000000,
+    0xc7dee1db00000000, 0x9d2d67b600000000, 0xab7ce59200000000,
+    0x29cb6a6d00000000, 0x1f9ae84900000000, 0x45696e2400000000,
+    0x7338ec0000000000, 0xa319b62500000000, 0x9548340100000000,
+    0xcfbbb26c00000000, 0xf9ea304800000000, 0x7b5dbfb700000000,
+    0x4d0c3d9300000000, 0x17ffbbfe00000000, 0x21ae39da00000000,
+    0x5296d5da00000000, 0x64c757fe00000000, 0x3e34d19300000000,
+    0x086553b700000000, 0x8ad2dc4800000000, 0xbc835e6c00000000,
+    0xe670d80100000000, 0xd0215a2500000000, 0x46336c4b00000000,
+    0x7062ee6f00000000, 0x2a91680200000000, 0x1cc0ea2600000000,
+    0x9e7765d900000000, 0xa826e7fd00000000, 0xf2d5619000000000,
+    0xc484e3b400000000, 0xb7bc0fb400000000, 0x81ed8d9000000000,
+    0xdb1e0bfd00000000, 0xed4f89d900000000, 0x6ff8062600000000,
+    0x59a9840200000000, 0x035a026f00000000, 0x350b804b00000000,
+    0xe52ada6e00000000, 0xd37b584a00000000, 0x8988de2700000000,
+    0xbfd95c0300000000, 0x3d6ed3fc00000000, 0x0b3f51d800000000,
+    0x51ccd7b500000000, 0x679d559100000000, 0x14a5b99100000000,
+    0x22f43bb500000000, 0x7807bdd800000000, 0x4e563ffc00000000,
+    0xcce1b00300000000, 0xfab0322700000000, 0xa043b44a00000000,
+    0x9612366e00000000, 0x8c66d89600000000, 0xba375ab200000000,
+    0xe0c4dcdf00000000, 0xd6955efb00000000, 0x5422d10400000000,
+    0x6273532000000000, 0x3880d54d00000000, 0x0ed1576900000000,
+    0x7de9bb6900000000, 0x4bb8394d00000000, 0x114bbf2000000000,
+    0x271a3d0400000000, 0xa5adb2fb00000000, 0x93fc30df00000000,
+    0xc90fb6b200000000, 0xff5e349600000000, 0x2f7f6eb300000000,
+    0x192eec9700000000, 0x43dd6afa00000000, 0x758ce8de00000000,
+    0xf73b672100000000, 0xc16ae50500000000, 0x9b99636800000000,
+    0xadc8e14c00000000, 0xdef00d4c00000000, 0xe8a18f6800000000,
+    0xb252090500000000, 0x84038b2100000000, 0x06b404de00000000,
+    0x30e586fa00000000, 0x6a16009700000000, 0x5c4782b300000000,
+    0xca55b4dd00000000, 0xfc0436f900000000, 0xa6f7b09400000000,
+    0x90a632b000000000, 0x1211bd4f00000000, 0x24403f6b00000000,
+    0x7eb3b90600000000, 0x48e23b2200000000, 0x3bdad72200000000,
+    0x0d8b550600000000, 0x5778d36b00000000, 0x6129514f00000000,
+    0xe39edeb000000000, 0xd5cf5c9400000000, 0x8f3cdaf900000000,
+    0xb96d58dd00000000, 0x694c02f800000000, 0x5f1d80dc00000000,
+    0x05ee06b100000000, 0x33bf849500000000, 0xb1080b6a00000000,
+    0x8759894e00000000, 0xddaa0f2300000000, 0xebfb8d0700000000,
+    0x98c3610700000000, 0xae92e32300000000, 0xf461654e00000000,
+    0xc230e76a00000000, 0x4087689500000000, 0x76d6eab100000000,
+    0x2c256cdc00000000, 0x1a74eef800000000, 0x59cbc1f600000000,
+    0x6f9a43d200000000, 0x3569c5bf00000000, 0x0338479b00000000,
+    0x818fc86400000000, 0xb7de4a4000000000, 0xed2dcc2d00000000,
+    0xdb7c4e0900000000, 0xa844a20900000000, 0x9e15202d00000000,
+    0xc4e6a64000000000, 0xf2b7246400000000, 0x7000ab9b00000000,
+    0x465129bf00000000, 0x1ca2afd200000000, 0x2af32df600000000,
+    0xfad277d300000000, 0xcc83f5f700000000, 0x9670739a00000000,
+    0xa021f1be00000000, 0x22967e4100000000, 0x14c7fc6500000000,
+    0x4e347a0800000000, 0x7865f82c00000000, 0x0b5d142c00000000,
+    0x3d0c960800000000, 0x67ff106500000000, 0x51ae924100000000,
+    0xd3191dbe00000000, 0xe5489f9a00000000, 0xbfbb19f700000000,
+    0x89ea9bd300000000, 0x1ff8adbd00000000, 0x29a92f9900000000,
+    0x735aa9f400000000, 0x450b2bd000000000, 0xc7bca42f00000000,
+    0xf1ed260b00000000, 0xab1ea06600000000, 0x9d4f224200000000,
+    0xee77ce4200000000, 0xd8264c6600000000, 0x82d5ca0b00000000,
+    0xb484482f00000000, 0x3633c7d000000000, 0x006245f400000000,
+    0x5a91c39900000000, 0x6cc041bd00000000, 0xbce11b9800000000,
+    0x8ab099bc00000000, 0xd0431fd100000000, 0xe6129df500000000,
+    0x64a5120a00000000, 0x52f4902e00000000, 0x0807164300000000,
+    0x3e56946700000000, 0x4d6e786700000000, 0x7b3ffa4300000000,
+    0x21cc7c2e00000000, 0x179dfe0a00000000, 0x952a71f500000000,
+    0xa37bf3d100000000, 0xf98875bc00000000, 0xcfd9f79800000000,
+    0xd5ad196000000000, 0xe3fc9b4400000000, 0xb90f1d2900000000,
+    0x8f5e9f0d00000000, 0x0de910f200000000, 0x3bb892d600000000,
+    0x614b14bb00000000, 0x571a969f00000000, 0x24227a9f00000000,
+    0x1273f8bb00000000, 0x48807ed600000000, 0x7ed1fcf200000000,
+    0xfc66730d00000000, 0xca37f12900000000, 0x90c4774400000000,
+    0xa695f56000000000, 0x76b4af4500000000, 0x40e52d6100000000,
+    0x1a16ab0c00000000, 0x2c47292800000000, 0xaef0a6d700000000,
+    0x98a124f300000000, 0xc252a29e00000000, 0xf40320ba00000000,
+    0x873bccba00000000, 0xb16a4e9e00000000, 0xeb99c8f300000000,
+    0xddc84ad700000000, 0x5f7fc52800000000, 0x692e470c00000000,
+    0x33ddc16100000000, 0x058c434500000000, 0x939e752b00000000,
+    0xa5cff70f00000000, 0xff3c716200000000, 0xc96df34600000000,
+    0x4bda7cb900000000, 0x7d8bfe9d00000000, 0x277878f000000000,
+    0x1129fad400000000, 0x621116d400000000, 0x544094f000000000,
+    0x0eb3129d00000000, 0x38e290b900000000, 0xba551f4600000000,
+    0x8c049d6200000000, 0xd6f71b0f00000000, 0xe0a6992b00000000,
+    0x3087c30e00000000, 0x06d6412a00000000, 0x5c25c74700000000,
+    0x6a74456300000000, 0xe8c3ca9c00000000, 0xde9248b800000000,
+    0x8461ced500000000, 0xb2304cf100000000, 0xc108a0f100000000,
+    0xf75922d500000000, 0xadaaa4b800000000, 0x9bfb269c00000000,
+    0x194ca96300000000, 0x2f1d2b4700000000, 0x75eead2a00000000,
+    0x43bf2f0e00000000},
+   {0x0000000000000000, 0xc8179ecf00000000, 0xd1294d4400000000,
+    0x193ed38b00000000, 0xa2539a8800000000, 0x6a44044700000000,
+    0x737ad7cc00000000, 0xbb6d490300000000, 0x05a145ca00000000,
+    0xcdb6db0500000000, 0xd488088e00000000, 0x1c9f964100000000,
+    0xa7f2df4200000000, 0x6fe5418d00000000, 0x76db920600000000,
+    0xbecc0cc900000000, 0x4b44fa4f00000000, 0x8353648000000000,
+    0x9a6db70b00000000, 0x527a29c400000000, 0xe91760c700000000,
+    0x2100fe0800000000, 0x383e2d8300000000, 0xf029b34c00000000,
+    0x4ee5bf8500000000, 0x86f2214a00000000, 0x9fccf2c100000000,
+    0x57db6c0e00000000, 0xecb6250d00000000, 0x24a1bbc200000000,
+    0x3d9f684900000000, 0xf588f68600000000, 0x9688f49f00000000,
+    0x5e9f6a5000000000, 0x47a1b9db00000000, 0x8fb6271400000000,
+    0x34db6e1700000000, 0xfcccf0d800000000, 0xe5f2235300000000,
+    0x2de5bd9c00000000, 0x9329b15500000000, 0x5b3e2f9a00000000,
+    0x4200fc1100000000, 0x8a1762de00000000, 0x317a2bdd00000000,
+    0xf96db51200000000, 0xe053669900000000, 0x2844f85600000000,
+    0xddcc0ed000000000, 0x15db901f00000000, 0x0ce5439400000000,
+    0xc4f2dd5b00000000, 0x7f9f945800000000, 0xb7880a9700000000,
+    0xaeb6d91c00000000, 0x66a147d300000000, 0xd86d4b1a00000000,
+    0x107ad5d500000000, 0x0944065e00000000, 0xc153989100000000,
+    0x7a3ed19200000000, 0xb2294f5d00000000, 0xab179cd600000000,
+    0x6300021900000000, 0x6d1798e400000000, 0xa500062b00000000,
+    0xbc3ed5a000000000, 0x74294b6f00000000, 0xcf44026c00000000,
+    0x07539ca300000000, 0x1e6d4f2800000000, 0xd67ad1e700000000,
+    0x68b6dd2e00000000, 0xa0a143e100000000, 0xb99f906a00000000,
+    0x71880ea500000000, 0xcae547a600000000, 0x02f2d96900000000,
+    0x1bcc0ae200000000, 0xd3db942d00000000, 0x265362ab00000000,
+    0xee44fc6400000000, 0xf77a2fef00000000, 0x3f6db12000000000,
+    0x8400f82300000000, 0x4c1766ec00000000, 0x5529b56700000000,
+    0x9d3e2ba800000000, 0x23f2276100000000, 0xebe5b9ae00000000,
+    0xf2db6a2500000000, 0x3accf4ea00000000, 0x81a1bde900000000,
+    0x49b6232600000000, 0x5088f0ad00000000, 0x989f6e6200000000,
+    0xfb9f6c7b00000000, 0x3388f2b400000000, 0x2ab6213f00000000,
+    0xe2a1bff000000000, 0x59ccf6f300000000, 0x91db683c00000000,
+    0x88e5bbb700000000, 0x40f2257800000000, 0xfe3e29b100000000,
+    0x3629b77e00000000, 0x2f1764f500000000, 0xe700fa3a00000000,
+    0x5c6db33900000000, 0x947a2df600000000, 0x8d44fe7d00000000,
+    0x455360b200000000, 0xb0db963400000000, 0x78cc08fb00000000,
+    0x61f2db7000000000, 0xa9e545bf00000000, 0x12880cbc00000000,
+    0xda9f927300000000, 0xc3a141f800000000, 0x0bb6df3700000000,
+    0xb57ad3fe00000000, 0x7d6d4d3100000000, 0x64539eba00000000,
+    0xac44007500000000, 0x1729497600000000, 0xdf3ed7b900000000,
+    0xc600043200000000, 0x0e179afd00000000, 0x9b28411200000000,
+    0x533fdfdd00000000, 0x4a010c5600000000, 0x8216929900000000,
+    0x397bdb9a00000000, 0xf16c455500000000, 0xe85296de00000000,
+    0x2045081100000000, 0x9e8904d800000000, 0x569e9a1700000000,
+    0x4fa0499c00000000, 0x87b7d75300000000, 0x3cda9e5000000000,
+    0xf4cd009f00000000, 0xedf3d31400000000, 0x25e44ddb00000000,
+    0xd06cbb5d00000000, 0x187b259200000000, 0x0145f61900000000,
+    0xc95268d600000000, 0x723f21d500000000, 0xba28bf1a00000000,
+    0xa3166c9100000000, 0x6b01f25e00000000, 0xd5cdfe9700000000,
+    0x1dda605800000000, 0x04e4b3d300000000, 0xccf32d1c00000000,
+    0x779e641f00000000, 0xbf89fad000000000, 0xa6b7295b00000000,
+    0x6ea0b79400000000, 0x0da0b58d00000000, 0xc5b72b4200000000,
+    0xdc89f8c900000000, 0x149e660600000000, 0xaff32f0500000000,
+    0x67e4b1ca00000000, 0x7eda624100000000, 0xb6cdfc8e00000000,
+    0x0801f04700000000, 0xc0166e8800000000, 0xd928bd0300000000,
+    0x113f23cc00000000, 0xaa526acf00000000, 0x6245f40000000000,
+    0x7b7b278b00000000, 0xb36cb94400000000, 0x46e44fc200000000,
+    0x8ef3d10d00000000, 0x97cd028600000000, 0x5fda9c4900000000,
+    0xe4b7d54a00000000, 0x2ca04b8500000000, 0x359e980e00000000,
+    0xfd8906c100000000, 0x43450a0800000000, 0x8b5294c700000000,
+    0x926c474c00000000, 0x5a7bd98300000000, 0xe116908000000000,
+    0x29010e4f00000000, 0x303fddc400000000, 0xf828430b00000000,
+    0xf63fd9f600000000, 0x3e28473900000000, 0x271694b200000000,
+    0xef010a7d00000000, 0x546c437e00000000, 0x9c7bddb100000000,
+    0x85450e3a00000000, 0x4d5290f500000000, 0xf39e9c3c00000000,
+    0x3b8902f300000000, 0x22b7d17800000000, 0xeaa04fb700000000,
+    0x51cd06b400000000, 0x99da987b00000000, 0x80e44bf000000000,
+    0x48f3d53f00000000, 0xbd7b23b900000000, 0x756cbd7600000000,
+    0x6c526efd00000000, 0xa445f03200000000, 0x1f28b93100000000,
+    0xd73f27fe00000000, 0xce01f47500000000, 0x06166aba00000000,
+    0xb8da667300000000, 0x70cdf8bc00000000, 0x69f32b3700000000,
+    0xa1e4b5f800000000, 0x1a89fcfb00000000, 0xd29e623400000000,
+    0xcba0b1bf00000000, 0x03b72f7000000000, 0x60b72d6900000000,
+    0xa8a0b3a600000000, 0xb19e602d00000000, 0x7989fee200000000,
+    0xc2e4b7e100000000, 0x0af3292e00000000, 0x13cdfaa500000000,
+    0xdbda646a00000000, 0x651668a300000000, 0xad01f66c00000000,
+    0xb43f25e700000000, 0x7c28bb2800000000, 0xc745f22b00000000,
+    0x0f526ce400000000, 0x166cbf6f00000000, 0xde7b21a000000000,
+    0x2bf3d72600000000, 0xe3e449e900000000, 0xfada9a6200000000,
+    0x32cd04ad00000000, 0x89a04dae00000000, 0x41b7d36100000000,
+    0x588900ea00000000, 0x909e9e2500000000, 0x2e5292ec00000000,
+    0xe6450c2300000000, 0xff7bdfa800000000, 0x376c416700000000,
+    0x8c01086400000000, 0x441696ab00000000, 0x5d28452000000000,
+    0x953fdbef00000000},
+   {0x0000000000000000, 0x95d4709500000000, 0x6baf90f100000000,
+    0xfe7be06400000000, 0x9758503800000000, 0x028c20ad00000000,
+    0xfcf7c0c900000000, 0x6923b05c00000000, 0x2eb1a07000000000,
+    0xbb65d0e500000000, 0x451e308100000000, 0xd0ca401400000000,
+    0xb9e9f04800000000, 0x2c3d80dd00000000, 0xd24660b900000000,
+    0x4792102c00000000, 0x5c6241e100000000, 0xc9b6317400000000,
+    0x37cdd11000000000, 0xa219a18500000000, 0xcb3a11d900000000,
+    0x5eee614c00000000, 0xa095812800000000, 0x3541f1bd00000000,
+    0x72d3e19100000000, 0xe707910400000000, 0x197c716000000000,
+    0x8ca801f500000000, 0xe58bb1a900000000, 0x705fc13c00000000,
+    0x8e24215800000000, 0x1bf051cd00000000, 0xf9c2f31900000000,
+    0x6c16838c00000000, 0x926d63e800000000, 0x07b9137d00000000,
+    0x6e9aa32100000000, 0xfb4ed3b400000000, 0x053533d000000000,
+    0x90e1434500000000, 0xd773536900000000, 0x42a723fc00000000,
+    0xbcdcc39800000000, 0x2908b30d00000000, 0x402b035100000000,
+    0xd5ff73c400000000, 0x2b8493a000000000, 0xbe50e33500000000,
+    0xa5a0b2f800000000, 0x3074c26d00000000, 0xce0f220900000000,
+    0x5bdb529c00000000, 0x32f8e2c000000000, 0xa72c925500000000,
+    0x5957723100000000, 0xcc8302a400000000, 0x8b11128800000000,
+    0x1ec5621d00000000, 0xe0be827900000000, 0x756af2ec00000000,
+    0x1c4942b000000000, 0x899d322500000000, 0x77e6d24100000000,
+    0xe232a2d400000000, 0xf285e73300000000, 0x675197a600000000,
+    0x992a77c200000000, 0x0cfe075700000000, 0x65ddb70b00000000,
+    0xf009c79e00000000, 0x0e7227fa00000000, 0x9ba6576f00000000,
+    0xdc34474300000000, 0x49e037d600000000, 0xb79bd7b200000000,
+    0x224fa72700000000, 0x4b6c177b00000000, 0xdeb867ee00000000,
+    0x20c3878a00000000, 0xb517f71f00000000, 0xaee7a6d200000000,
+    0x3b33d64700000000, 0xc548362300000000, 0x509c46b600000000,
+    0x39bff6ea00000000, 0xac6b867f00000000, 0x5210661b00000000,
+    0xc7c4168e00000000, 0x805606a200000000, 0x1582763700000000,
+    0xebf9965300000000, 0x7e2de6c600000000, 0x170e569a00000000,
+    0x82da260f00000000, 0x7ca1c66b00000000, 0xe975b6fe00000000,
+    0x0b47142a00000000, 0x9e9364bf00000000, 0x60e884db00000000,
+    0xf53cf44e00000000, 0x9c1f441200000000, 0x09cb348700000000,
+    0xf7b0d4e300000000, 0x6264a47600000000, 0x25f6b45a00000000,
+    0xb022c4cf00000000, 0x4e5924ab00000000, 0xdb8d543e00000000,
+    0xb2aee46200000000, 0x277a94f700000000, 0xd901749300000000,
+    0x4cd5040600000000, 0x572555cb00000000, 0xc2f1255e00000000,
+    0x3c8ac53a00000000, 0xa95eb5af00000000, 0xc07d05f300000000,
+    0x55a9756600000000, 0xabd2950200000000, 0x3e06e59700000000,
+    0x7994f5bb00000000, 0xec40852e00000000, 0x123b654a00000000,
+    0x87ef15df00000000, 0xeecca58300000000, 0x7b18d51600000000,
+    0x8563357200000000, 0x10b745e700000000, 0xe40bcf6700000000,
+    0x71dfbff200000000, 0x8fa45f9600000000, 0x1a702f0300000000,
+    0x73539f5f00000000, 0xe687efca00000000, 0x18fc0fae00000000,
+    0x8d287f3b00000000, 0xcaba6f1700000000, 0x5f6e1f8200000000,
+    0xa115ffe600000000, 0x34c18f7300000000, 0x5de23f2f00000000,
+    0xc8364fba00000000, 0x364dafde00000000, 0xa399df4b00000000,
+    0xb8698e8600000000, 0x2dbdfe1300000000, 0xd3c61e7700000000,
+    0x46126ee200000000, 0x2f31debe00000000, 0xbae5ae2b00000000,
+    0x449e4e4f00000000, 0xd14a3eda00000000, 0x96d82ef600000000,
+    0x030c5e6300000000, 0xfd77be0700000000, 0x68a3ce9200000000,
+    0x01807ece00000000, 0x94540e5b00000000, 0x6a2fee3f00000000,
+    0xfffb9eaa00000000, 0x1dc93c7e00000000, 0x881d4ceb00000000,
+    0x7666ac8f00000000, 0xe3b2dc1a00000000, 0x8a916c4600000000,
+    0x1f451cd300000000, 0xe13efcb700000000, 0x74ea8c2200000000,
+    0x33789c0e00000000, 0xa6acec9b00000000, 0x58d70cff00000000,
+    0xcd037c6a00000000, 0xa420cc3600000000, 0x31f4bca300000000,
+    0xcf8f5cc700000000, 0x5a5b2c5200000000, 0x41ab7d9f00000000,
+    0xd47f0d0a00000000, 0x2a04ed6e00000000, 0xbfd09dfb00000000,
+    0xd6f32da700000000, 0x43275d3200000000, 0xbd5cbd5600000000,
+    0x2888cdc300000000, 0x6f1addef00000000, 0xfacead7a00000000,
+    0x04b54d1e00000000, 0x91613d8b00000000, 0xf8428dd700000000,
+    0x6d96fd4200000000, 0x93ed1d2600000000, 0x06396db300000000,
+    0x168e285400000000, 0x835a58c100000000, 0x7d21b8a500000000,
+    0xe8f5c83000000000, 0x81d6786c00000000, 0x140208f900000000,
+    0xea79e89d00000000, 0x7fad980800000000, 0x383f882400000000,
+    0xadebf8b100000000, 0x539018d500000000, 0xc644684000000000,
+    0xaf67d81c00000000, 0x3ab3a88900000000, 0xc4c848ed00000000,
+    0x511c387800000000, 0x4aec69b500000000, 0xdf38192000000000,
+    0x2143f94400000000, 0xb49789d100000000, 0xddb4398d00000000,
+    0x4860491800000000, 0xb61ba97c00000000, 0x23cfd9e900000000,
+    0x645dc9c500000000, 0xf189b95000000000, 0x0ff2593400000000,
+    0x9a2629a100000000, 0xf30599fd00000000, 0x66d1e96800000000,
+    0x98aa090c00000000, 0x0d7e799900000000, 0xef4cdb4d00000000,
+    0x7a98abd800000000, 0x84e34bbc00000000, 0x11373b2900000000,
+    0x78148b7500000000, 0xedc0fbe000000000, 0x13bb1b8400000000,
+    0x866f6b1100000000, 0xc1fd7b3d00000000, 0x54290ba800000000,
+    0xaa52ebcc00000000, 0x3f869b5900000000, 0x56a52b0500000000,
+    0xc3715b9000000000, 0x3d0abbf400000000, 0xa8decb6100000000,
+    0xb32e9aac00000000, 0x26faea3900000000, 0xd8810a5d00000000,
+    0x4d557ac800000000, 0x2476ca9400000000, 0xb1a2ba0100000000,
+    0x4fd95a6500000000, 0xda0d2af000000000, 0x9d9f3adc00000000,
+    0x084b4a4900000000, 0xf630aa2d00000000, 0x63e4dab800000000,
+    0x0ac76ae400000000, 0x9f131a7100000000, 0x6168fa1500000000,
+    0xf4bc8a8000000000},
+   {0x0000000000000000, 0x1f17f08000000000, 0x7f2891da00000000,
+    0x603f615a00000000, 0xbf56536e00000000, 0xa041a3ee00000000,
+    0xc07ec2b400000000, 0xdf69323400000000, 0x7eada6dc00000000,
+    0x61ba565c00000000, 0x0185370600000000, 0x1e92c78600000000,
+    0xc1fbf5b200000000, 0xdeec053200000000, 0xbed3646800000000,
+    0xa1c494e800000000, 0xbd5c3c6200000000, 0xa24bcce200000000,
+    0xc274adb800000000, 0xdd635d3800000000, 0x020a6f0c00000000,
+    0x1d1d9f8c00000000, 0x7d22fed600000000, 0x62350e5600000000,
+    0xc3f19abe00000000, 0xdce66a3e00000000, 0xbcd90b6400000000,
+    0xa3cefbe400000000, 0x7ca7c9d000000000, 0x63b0395000000000,
+    0x038f580a00000000, 0x1c98a88a00000000, 0x7ab978c400000000,
+    0x65ae884400000000, 0x0591e91e00000000, 0x1a86199e00000000,
+    0xc5ef2baa00000000, 0xdaf8db2a00000000, 0xbac7ba7000000000,
+    0xa5d04af000000000, 0x0414de1800000000, 0x1b032e9800000000,
+    0x7b3c4fc200000000, 0x642bbf4200000000, 0xbb428d7600000000,
+    0xa4557df600000000, 0xc46a1cac00000000, 0xdb7dec2c00000000,
+    0xc7e544a600000000, 0xd8f2b42600000000, 0xb8cdd57c00000000,
+    0xa7da25fc00000000, 0x78b317c800000000, 0x67a4e74800000000,
+    0x079b861200000000, 0x188c769200000000, 0xb948e27a00000000,
+    0xa65f12fa00000000, 0xc66073a000000000, 0xd977832000000000,
+    0x061eb11400000000, 0x1909419400000000, 0x793620ce00000000,
+    0x6621d04e00000000, 0xb574805300000000, 0xaa6370d300000000,
+    0xca5c118900000000, 0xd54be10900000000, 0x0a22d33d00000000,
+    0x153523bd00000000, 0x750a42e700000000, 0x6a1db26700000000,
+    0xcbd9268f00000000, 0xd4ced60f00000000, 0xb4f1b75500000000,
+    0xabe647d500000000, 0x748f75e100000000, 0x6b98856100000000,
+    0x0ba7e43b00000000, 0x14b014bb00000000, 0x0828bc3100000000,
+    0x173f4cb100000000, 0x77002deb00000000, 0x6817dd6b00000000,
+    0xb77eef5f00000000, 0xa8691fdf00000000, 0xc8567e8500000000,
+    0xd7418e0500000000, 0x76851aed00000000, 0x6992ea6d00000000,
+    0x09ad8b3700000000, 0x16ba7bb700000000, 0xc9d3498300000000,
+    0xd6c4b90300000000, 0xb6fbd85900000000, 0xa9ec28d900000000,
+    0xcfcdf89700000000, 0xd0da081700000000, 0xb0e5694d00000000,
+    0xaff299cd00000000, 0x709babf900000000, 0x6f8c5b7900000000,
+    0x0fb33a2300000000, 0x10a4caa300000000, 0xb1605e4b00000000,
+    0xae77aecb00000000, 0xce48cf9100000000, 0xd15f3f1100000000,
+    0x0e360d2500000000, 0x1121fda500000000, 0x711e9cff00000000,
+    0x6e096c7f00000000, 0x7291c4f500000000, 0x6d86347500000000,
+    0x0db9552f00000000, 0x12aea5af00000000, 0xcdc7979b00000000,
+    0xd2d0671b00000000, 0xb2ef064100000000, 0xadf8f6c100000000,
+    0x0c3c622900000000, 0x132b92a900000000, 0x7314f3f300000000,
+    0x6c03037300000000, 0xb36a314700000000, 0xac7dc1c700000000,
+    0xcc42a09d00000000, 0xd355501d00000000, 0x6ae900a700000000,
+    0x75fef02700000000, 0x15c1917d00000000, 0x0ad661fd00000000,
+    0xd5bf53c900000000, 0xcaa8a34900000000, 0xaa97c21300000000,
+    0xb580329300000000, 0x1444a67b00000000, 0x0b5356fb00000000,
+    0x6b6c37a100000000, 0x747bc72100000000, 0xab12f51500000000,
+    0xb405059500000000, 0xd43a64cf00000000, 0xcb2d944f00000000,
+    0xd7b53cc500000000, 0xc8a2cc4500000000, 0xa89dad1f00000000,
+    0xb78a5d9f00000000, 0x68e36fab00000000, 0x77f49f2b00000000,
+    0x17cbfe7100000000, 0x08dc0ef100000000, 0xa9189a1900000000,
+    0xb60f6a9900000000, 0xd6300bc300000000, 0xc927fb4300000000,
+    0x164ec97700000000, 0x095939f700000000, 0x696658ad00000000,
+    0x7671a82d00000000, 0x1050786300000000, 0x0f4788e300000000,
+    0x6f78e9b900000000, 0x706f193900000000, 0xaf062b0d00000000,
+    0xb011db8d00000000, 0xd02ebad700000000, 0xcf394a5700000000,
+    0x6efddebf00000000, 0x71ea2e3f00000000, 0x11d54f6500000000,
+    0x0ec2bfe500000000, 0xd1ab8dd100000000, 0xcebc7d5100000000,
+    0xae831c0b00000000, 0xb194ec8b00000000, 0xad0c440100000000,
+    0xb21bb48100000000, 0xd224d5db00000000, 0xcd33255b00000000,
+    0x125a176f00000000, 0x0d4de7ef00000000, 0x6d7286b500000000,
+    0x7265763500000000, 0xd3a1e2dd00000000, 0xccb6125d00000000,
+    0xac89730700000000, 0xb39e838700000000, 0x6cf7b1b300000000,
+    0x73e0413300000000, 0x13df206900000000, 0x0cc8d0e900000000,
+    0xdf9d80f400000000, 0xc08a707400000000, 0xa0b5112e00000000,
+    0xbfa2e1ae00000000, 0x60cbd39a00000000, 0x7fdc231a00000000,
+    0x1fe3424000000000, 0x00f4b2c000000000, 0xa130262800000000,
+    0xbe27d6a800000000, 0xde18b7f200000000, 0xc10f477200000000,
+    0x1e66754600000000, 0x017185c600000000, 0x614ee49c00000000,
+    0x7e59141c00000000, 0x62c1bc9600000000, 0x7dd64c1600000000,
+    0x1de92d4c00000000, 0x02feddcc00000000, 0xdd97eff800000000,
+    0xc2801f7800000000, 0xa2bf7e2200000000, 0xbda88ea200000000,
+    0x1c6c1a4a00000000, 0x037beaca00000000, 0x63448b9000000000,
+    0x7c537b1000000000, 0xa33a492400000000, 0xbc2db9a400000000,
+    0xdc12d8fe00000000, 0xc305287e00000000, 0xa524f83000000000,
+    0xba3308b000000000, 0xda0c69ea00000000, 0xc51b996a00000000,
+    0x1a72ab5e00000000, 0x05655bde00000000, 0x655a3a8400000000,
+    0x7a4dca0400000000, 0xdb895eec00000000, 0xc49eae6c00000000,
+    0xa4a1cf3600000000, 0xbbb63fb600000000, 0x64df0d8200000000,
+    0x7bc8fd0200000000, 0x1bf79c5800000000, 0x04e06cd800000000,
+    0x1878c45200000000, 0x076f34d200000000, 0x6750558800000000,
+    0x7847a50800000000, 0xa72e973c00000000, 0xb83967bc00000000,
+    0xd80606e600000000, 0xc711f66600000000, 0x66d5628e00000000,
+    0x79c2920e00000000, 0x19fdf35400000000, 0x06ea03d400000000,
+    0xd98331e000000000, 0xc694c16000000000, 0xa6aba03a00000000,
+    0xb9bc50ba00000000},
+   {0x0000000000000000, 0xe2fd888d00000000, 0x85fd60c000000000,
+    0x6700e84d00000000, 0x4bfdb05b00000000, 0xa90038d600000000,
+    0xce00d09b00000000, 0x2cfd581600000000, 0x96fa61b700000000,
+    0x7407e93a00000000, 0x1307017700000000, 0xf1fa89fa00000000,
+    0xdd07d1ec00000000, 0x3ffa596100000000, 0x58fab12c00000000,
+    0xba0739a100000000, 0x6df3b2b500000000, 0x8f0e3a3800000000,
+    0xe80ed27500000000, 0x0af35af800000000, 0x260e02ee00000000,
+    0xc4f38a6300000000, 0xa3f3622e00000000, 0x410eeaa300000000,
+    0xfb09d30200000000, 0x19f45b8f00000000, 0x7ef4b3c200000000,
+    0x9c093b4f00000000, 0xb0f4635900000000, 0x5209ebd400000000,
+    0x3509039900000000, 0xd7f48b1400000000, 0x9be014b000000000,
+    0x791d9c3d00000000, 0x1e1d747000000000, 0xfce0fcfd00000000,
+    0xd01da4eb00000000, 0x32e02c6600000000, 0x55e0c42b00000000,
+    0xb71d4ca600000000, 0x0d1a750700000000, 0xefe7fd8a00000000,
+    0x88e715c700000000, 0x6a1a9d4a00000000, 0x46e7c55c00000000,
+    0xa41a4dd100000000, 0xc31aa59c00000000, 0x21e72d1100000000,
+    0xf613a60500000000, 0x14ee2e8800000000, 0x73eec6c500000000,
+    0x91134e4800000000, 0xbdee165e00000000, 0x5f139ed300000000,
+    0x3813769e00000000, 0xdaeefe1300000000, 0x60e9c7b200000000,
+    0x82144f3f00000000, 0xe514a77200000000, 0x07e92fff00000000,
+    0x2b1477e900000000, 0xc9e9ff6400000000, 0xaee9172900000000,
+    0x4c149fa400000000, 0x77c758bb00000000, 0x953ad03600000000,
+    0xf23a387b00000000, 0x10c7b0f600000000, 0x3c3ae8e000000000,
+    0xdec7606d00000000, 0xb9c7882000000000, 0x5b3a00ad00000000,
+    0xe13d390c00000000, 0x03c0b18100000000, 0x64c059cc00000000,
+    0x863dd14100000000, 0xaac0895700000000, 0x483d01da00000000,
+    0x2f3de99700000000, 0xcdc0611a00000000, 0x1a34ea0e00000000,
+    0xf8c9628300000000, 0x9fc98ace00000000, 0x7d34024300000000,
+    0x51c95a5500000000, 0xb334d2d800000000, 0xd4343a9500000000,
+    0x36c9b21800000000, 0x8cce8bb900000000, 0x6e33033400000000,
+    0x0933eb7900000000, 0xebce63f400000000, 0xc7333be200000000,
+    0x25ceb36f00000000, 0x42ce5b2200000000, 0xa033d3af00000000,
+    0xec274c0b00000000, 0x0edac48600000000, 0x69da2ccb00000000,
+    0x8b27a44600000000, 0xa7dafc5000000000, 0x452774dd00000000,
+    0x22279c9000000000, 0xc0da141d00000000, 0x7add2dbc00000000,
+    0x9820a53100000000, 0xff204d7c00000000, 0x1dddc5f100000000,
+    0x31209de700000000, 0xd3dd156a00000000, 0xb4ddfd2700000000,
+    0x562075aa00000000, 0x81d4febe00000000, 0x6329763300000000,
+    0x04299e7e00000000, 0xe6d416f300000000, 0xca294ee500000000,
+    0x28d4c66800000000, 0x4fd42e2500000000, 0xad29a6a800000000,
+    0x172e9f0900000000, 0xf5d3178400000000, 0x92d3ffc900000000,
+    0x702e774400000000, 0x5cd32f5200000000, 0xbe2ea7df00000000,
+    0xd92e4f9200000000, 0x3bd3c71f00000000, 0xaf88c0ad00000000,
+    0x4d75482000000000, 0x2a75a06d00000000, 0xc88828e000000000,
+    0xe47570f600000000, 0x0688f87b00000000, 0x6188103600000000,
+    0x837598bb00000000, 0x3972a11a00000000, 0xdb8f299700000000,
+    0xbc8fc1da00000000, 0x5e72495700000000, 0x728f114100000000,
+    0x907299cc00000000, 0xf772718100000000, 0x158ff90c00000000,
+    0xc27b721800000000, 0x2086fa9500000000, 0x478612d800000000,
+    0xa57b9a5500000000, 0x8986c24300000000, 0x6b7b4ace00000000,
+    0x0c7ba28300000000, 0xee862a0e00000000, 0x548113af00000000,
+    0xb67c9b2200000000, 0xd17c736f00000000, 0x3381fbe200000000,
+    0x1f7ca3f400000000, 0xfd812b7900000000, 0x9a81c33400000000,
+    0x787c4bb900000000, 0x3468d41d00000000, 0xd6955c9000000000,
+    0xb195b4dd00000000, 0x53683c5000000000, 0x7f95644600000000,
+    0x9d68eccb00000000, 0xfa68048600000000, 0x18958c0b00000000,
+    0xa292b5aa00000000, 0x406f3d2700000000, 0x276fd56a00000000,
+    0xc5925de700000000, 0xe96f05f100000000, 0x0b928d7c00000000,
+    0x6c92653100000000, 0x8e6fedbc00000000, 0x599b66a800000000,
+    0xbb66ee2500000000, 0xdc66066800000000, 0x3e9b8ee500000000,
+    0x1266d6f300000000, 0xf09b5e7e00000000, 0x979bb63300000000,
+    0x75663ebe00000000, 0xcf61071f00000000, 0x2d9c8f9200000000,
+    0x4a9c67df00000000, 0xa861ef5200000000, 0x849cb74400000000,
+    0x66613fc900000000, 0x0161d78400000000, 0xe39c5f0900000000,
+    0xd84f981600000000, 0x3ab2109b00000000, 0x5db2f8d600000000,
+    0xbf4f705b00000000, 0x93b2284d00000000, 0x714fa0c000000000,
+    0x164f488d00000000, 0xf4b2c00000000000, 0x4eb5f9a100000000,
+    0xac48712c00000000, 0xcb48996100000000, 0x29b511ec00000000,
+    0x054849fa00000000, 0xe7b5c17700000000, 0x80b5293a00000000,
+    0x6248a1b700000000, 0xb5bc2aa300000000, 0x5741a22e00000000,
+    0x30414a6300000000, 0xd2bcc2ee00000000, 0xfe419af800000000,
+    0x1cbc127500000000, 0x7bbcfa3800000000, 0x994172b500000000,
+    0x23464b1400000000, 0xc1bbc39900000000, 0xa6bb2bd400000000,
+    0x4446a35900000000, 0x68bbfb4f00000000, 0x8a4673c200000000,
+    0xed469b8f00000000, 0x0fbb130200000000, 0x43af8ca600000000,
+    0xa152042b00000000, 0xc652ec6600000000, 0x24af64eb00000000,
+    0x08523cfd00000000, 0xeaafb47000000000, 0x8daf5c3d00000000,
+    0x6f52d4b000000000, 0xd555ed1100000000, 0x37a8659c00000000,
+    0x50a88dd100000000, 0xb255055c00000000, 0x9ea85d4a00000000,
+    0x7c55d5c700000000, 0x1b553d8a00000000, 0xf9a8b50700000000,
+    0x2e5c3e1300000000, 0xcca1b69e00000000, 0xaba15ed300000000,
+    0x495cd65e00000000, 0x65a18e4800000000, 0x875c06c500000000,
+    0xe05cee8800000000, 0x02a1660500000000, 0xb8a65fa400000000,
+    0x5a5bd72900000000, 0x3d5b3f6400000000, 0xdfa6b7e900000000,
+    0xf35befff00000000, 0x11a6677200000000, 0x76a68f3f00000000,
+    0x945b07b200000000},
+   {0x0000000000000000, 0xa90b894e00000000, 0x5217129d00000000,
+    0xfb1c9bd300000000, 0xe52855e100000000, 0x4c23dcaf00000000,
+    0xb73f477c00000000, 0x1e34ce3200000000, 0x8b57db1900000000,
+    0x225c525700000000, 0xd940c98400000000, 0x704b40ca00000000,
+    0x6e7f8ef800000000, 0xc77407b600000000, 0x3c689c6500000000,
+    0x9563152b00000000, 0x16afb63300000000, 0xbfa43f7d00000000,
+    0x44b8a4ae00000000, 0xedb32de000000000, 0xf387e3d200000000,
+    0x5a8c6a9c00000000, 0xa190f14f00000000, 0x089b780100000000,
+    0x9df86d2a00000000, 0x34f3e46400000000, 0xcfef7fb700000000,
+    0x66e4f6f900000000, 0x78d038cb00000000, 0xd1dbb18500000000,
+    0x2ac72a5600000000, 0x83cca31800000000, 0x2c5e6d6700000000,
+    0x8555e42900000000, 0x7e497ffa00000000, 0xd742f6b400000000,
+    0xc976388600000000, 0x607db1c800000000, 0x9b612a1b00000000,
+    0x326aa35500000000, 0xa709b67e00000000, 0x0e023f3000000000,
+    0xf51ea4e300000000, 0x5c152dad00000000, 0x4221e39f00000000,
+    0xeb2a6ad100000000, 0x1036f10200000000, 0xb93d784c00000000,
+    0x3af1db5400000000, 0x93fa521a00000000, 0x68e6c9c900000000,
+    0xc1ed408700000000, 0xdfd98eb500000000, 0x76d207fb00000000,
+    0x8dce9c2800000000, 0x24c5156600000000, 0xb1a6004d00000000,
+    0x18ad890300000000, 0xe3b112d000000000, 0x4aba9b9e00000000,
+    0x548e55ac00000000, 0xfd85dce200000000, 0x0699473100000000,
+    0xaf92ce7f00000000, 0x58bcdace00000000, 0xf1b7538000000000,
+    0x0aabc85300000000, 0xa3a0411d00000000, 0xbd948f2f00000000,
+    0x149f066100000000, 0xef839db200000000, 0x468814fc00000000,
+    0xd3eb01d700000000, 0x7ae0889900000000, 0x81fc134a00000000,
+    0x28f79a0400000000, 0x36c3543600000000, 0x9fc8dd7800000000,
+    0x64d446ab00000000, 0xcddfcfe500000000, 0x4e136cfd00000000,
+    0xe718e5b300000000, 0x1c047e6000000000, 0xb50ff72e00000000,
+    0xab3b391c00000000, 0x0230b05200000000, 0xf92c2b8100000000,
+    0x5027a2cf00000000, 0xc544b7e400000000, 0x6c4f3eaa00000000,
+    0x9753a57900000000, 0x3e582c3700000000, 0x206ce20500000000,
+    0x89676b4b00000000, 0x727bf09800000000, 0xdb7079d600000000,
+    0x74e2b7a900000000, 0xdde93ee700000000, 0x26f5a53400000000,
+    0x8ffe2c7a00000000, 0x91cae24800000000, 0x38c16b0600000000,
+    0xc3ddf0d500000000, 0x6ad6799b00000000, 0xffb56cb000000000,
+    0x56bee5fe00000000, 0xada27e2d00000000, 0x04a9f76300000000,
+    0x1a9d395100000000, 0xb396b01f00000000, 0x488a2bcc00000000,
+    0xe181a28200000000, 0x624d019a00000000, 0xcb4688d400000000,
+    0x305a130700000000, 0x99519a4900000000, 0x8765547b00000000,
+    0x2e6edd3500000000, 0xd57246e600000000, 0x7c79cfa800000000,
+    0xe91ada8300000000, 0x401153cd00000000, 0xbb0dc81e00000000,
+    0x1206415000000000, 0x0c328f6200000000, 0xa539062c00000000,
+    0x5e259dff00000000, 0xf72e14b100000000, 0xf17ec44600000000,
+    0x58754d0800000000, 0xa369d6db00000000, 0x0a625f9500000000,
+    0x145691a700000000, 0xbd5d18e900000000, 0x4641833a00000000,
+    0xef4a0a7400000000, 0x7a291f5f00000000, 0xd322961100000000,
+    0x283e0dc200000000, 0x8135848c00000000, 0x9f014abe00000000,
+    0x360ac3f000000000, 0xcd16582300000000, 0x641dd16d00000000,
+    0xe7d1727500000000, 0x4edafb3b00000000, 0xb5c660e800000000,
+    0x1ccde9a600000000, 0x02f9279400000000, 0xabf2aeda00000000,
+    0x50ee350900000000, 0xf9e5bc4700000000, 0x6c86a96c00000000,
+    0xc58d202200000000, 0x3e91bbf100000000, 0x979a32bf00000000,
+    0x89aefc8d00000000, 0x20a575c300000000, 0xdbb9ee1000000000,
+    0x72b2675e00000000, 0xdd20a92100000000, 0x742b206f00000000,
+    0x8f37bbbc00000000, 0x263c32f200000000, 0x3808fcc000000000,
+    0x9103758e00000000, 0x6a1fee5d00000000, 0xc314671300000000,
+    0x5677723800000000, 0xff7cfb7600000000, 0x046060a500000000,
+    0xad6be9eb00000000, 0xb35f27d900000000, 0x1a54ae9700000000,
+    0xe148354400000000, 0x4843bc0a00000000, 0xcb8f1f1200000000,
+    0x6284965c00000000, 0x99980d8f00000000, 0x309384c100000000,
+    0x2ea74af300000000, 0x87acc3bd00000000, 0x7cb0586e00000000,
+    0xd5bbd12000000000, 0x40d8c40b00000000, 0xe9d34d4500000000,
+    0x12cfd69600000000, 0xbbc45fd800000000, 0xa5f091ea00000000,
+    0x0cfb18a400000000, 0xf7e7837700000000, 0x5eec0a3900000000,
+    0xa9c21e8800000000, 0x00c997c600000000, 0xfbd50c1500000000,
+    0x52de855b00000000, 0x4cea4b6900000000, 0xe5e1c22700000000,
+    0x1efd59f400000000, 0xb7f6d0ba00000000, 0x2295c59100000000,
+    0x8b9e4cdf00000000, 0x7082d70c00000000, 0xd9895e4200000000,
+    0xc7bd907000000000, 0x6eb6193e00000000, 0x95aa82ed00000000,
+    0x3ca10ba300000000, 0xbf6da8bb00000000, 0x166621f500000000,
+    0xed7aba2600000000, 0x4471336800000000, 0x5a45fd5a00000000,
+    0xf34e741400000000, 0x0852efc700000000, 0xa159668900000000,
+    0x343a73a200000000, 0x9d31faec00000000, 0x662d613f00000000,
+    0xcf26e87100000000, 0xd112264300000000, 0x7819af0d00000000,
+    0x830534de00000000, 0x2a0ebd9000000000, 0x859c73ef00000000,
+    0x2c97faa100000000, 0xd78b617200000000, 0x7e80e83c00000000,
+    0x60b4260e00000000, 0xc9bfaf4000000000, 0x32a3349300000000,
+    0x9ba8bddd00000000, 0x0ecba8f600000000, 0xa7c021b800000000,
+    0x5cdcba6b00000000, 0xf5d7332500000000, 0xebe3fd1700000000,
+    0x42e8745900000000, 0xb9f4ef8a00000000, 0x10ff66c400000000,
+    0x9333c5dc00000000, 0x3a384c9200000000, 0xc124d74100000000,
+    0x682f5e0f00000000, 0x761b903d00000000, 0xdf10197300000000,
+    0x240c82a000000000, 0x8d070bee00000000, 0x18641ec500000000,
+    0xb16f978b00000000, 0x4a730c5800000000, 0xe378851600000000,
+    0xfd4c4b2400000000, 0x5447c26a00000000, 0xaf5b59b900000000,
+    0x0650d0f700000000},
+   {0x0000000000000000, 0x479244af00000000, 0xcf22f88500000000,
+    0x88b0bc2a00000000, 0xdf4381d000000000, 0x98d1c57f00000000,
+    0x1061795500000000, 0x57f33dfa00000000, 0xff81737a00000000,
+    0xb81337d500000000, 0x30a38bff00000000, 0x7731cf5000000000,
+    0x20c2f2aa00000000, 0x6750b60500000000, 0xefe00a2f00000000,
+    0xa8724e8000000000, 0xfe03e7f400000000, 0xb991a35b00000000,
+    0x31211f7100000000, 0x76b35bde00000000, 0x2140662400000000,
+    0x66d2228b00000000, 0xee629ea100000000, 0xa9f0da0e00000000,
+    0x0182948e00000000, 0x4610d02100000000, 0xcea06c0b00000000,
+    0x893228a400000000, 0xdec1155e00000000, 0x995351f100000000,
+    0x11e3eddb00000000, 0x5671a97400000000, 0xbd01bf3200000000,
+    0xfa93fb9d00000000, 0x722347b700000000, 0x35b1031800000000,
+    0x62423ee200000000, 0x25d07a4d00000000, 0xad60c66700000000,
+    0xeaf282c800000000, 0x4280cc4800000000, 0x051288e700000000,
+    0x8da234cd00000000, 0xca30706200000000, 0x9dc34d9800000000,
+    0xda51093700000000, 0x52e1b51d00000000, 0x1573f1b200000000,
+    0x430258c600000000, 0x04901c6900000000, 0x8c20a04300000000,
+    0xcbb2e4ec00000000, 0x9c41d91600000000, 0xdbd39db900000000,
+    0x5363219300000000, 0x14f1653c00000000, 0xbc832bbc00000000,
+    0xfb116f1300000000, 0x73a1d33900000000, 0x3433979600000000,
+    0x63c0aa6c00000000, 0x2452eec300000000, 0xace252e900000000,
+    0xeb70164600000000, 0x7a037e6500000000, 0x3d913aca00000000,
+    0xb52186e000000000, 0xf2b3c24f00000000, 0xa540ffb500000000,
+    0xe2d2bb1a00000000, 0x6a62073000000000, 0x2df0439f00000000,
+    0x85820d1f00000000, 0xc21049b000000000, 0x4aa0f59a00000000,
+    0x0d32b13500000000, 0x5ac18ccf00000000, 0x1d53c86000000000,
+    0x95e3744a00000000, 0xd27130e500000000, 0x8400999100000000,
+    0xc392dd3e00000000, 0x4b22611400000000, 0x0cb025bb00000000,
+    0x5b43184100000000, 0x1cd15cee00000000, 0x9461e0c400000000,
+    0xd3f3a46b00000000, 0x7b81eaeb00000000, 0x3c13ae4400000000,
+    0xb4a3126e00000000, 0xf33156c100000000, 0xa4c26b3b00000000,
+    0xe3502f9400000000, 0x6be093be00000000, 0x2c72d71100000000,
+    0xc702c15700000000, 0x809085f800000000, 0x082039d200000000,
+    0x4fb27d7d00000000, 0x1841408700000000, 0x5fd3042800000000,
+    0xd763b80200000000, 0x90f1fcad00000000, 0x3883b22d00000000,
+    0x7f11f68200000000, 0xf7a14aa800000000, 0xb0330e0700000000,
+    0xe7c033fd00000000, 0xa052775200000000, 0x28e2cb7800000000,
+    0x6f708fd700000000, 0x390126a300000000, 0x7e93620c00000000,
+    0xf623de2600000000, 0xb1b19a8900000000, 0xe642a77300000000,
+    0xa1d0e3dc00000000, 0x29605ff600000000, 0x6ef21b5900000000,
+    0xc68055d900000000, 0x8112117600000000, 0x09a2ad5c00000000,
+    0x4e30e9f300000000, 0x19c3d40900000000, 0x5e5190a600000000,
+    0xd6e12c8c00000000, 0x9173682300000000, 0xf406fcca00000000,
+    0xb394b86500000000, 0x3b24044f00000000, 0x7cb640e000000000,
+    0x2b457d1a00000000, 0x6cd739b500000000, 0xe467859f00000000,
+    0xa3f5c13000000000, 0x0b878fb000000000, 0x4c15cb1f00000000,
+    0xc4a5773500000000, 0x8337339a00000000, 0xd4c40e6000000000,
+    0x93564acf00000000, 0x1be6f6e500000000, 0x5c74b24a00000000,
+    0x0a051b3e00000000, 0x4d975f9100000000, 0xc527e3bb00000000,
+    0x82b5a71400000000, 0xd5469aee00000000, 0x92d4de4100000000,
+    0x1a64626b00000000, 0x5df626c400000000, 0xf584684400000000,
+    0xb2162ceb00000000, 0x3aa690c100000000, 0x7d34d46e00000000,
+    0x2ac7e99400000000, 0x6d55ad3b00000000, 0xe5e5111100000000,
+    0xa27755be00000000, 0x490743f800000000, 0x0e95075700000000,
+    0x8625bb7d00000000, 0xc1b7ffd200000000, 0x9644c22800000000,
+    0xd1d6868700000000, 0x59663aad00000000, 0x1ef47e0200000000,
+    0xb686308200000000, 0xf114742d00000000, 0x79a4c80700000000,
+    0x3e368ca800000000, 0x69c5b15200000000, 0x2e57f5fd00000000,
+    0xa6e749d700000000, 0xe1750d7800000000, 0xb704a40c00000000,
+    0xf096e0a300000000, 0x78265c8900000000, 0x3fb4182600000000,
+    0x684725dc00000000, 0x2fd5617300000000, 0xa765dd5900000000,
+    0xe0f799f600000000, 0x4885d77600000000, 0x0f1793d900000000,
+    0x87a72ff300000000, 0xc0356b5c00000000, 0x97c656a600000000,
+    0xd054120900000000, 0x58e4ae2300000000, 0x1f76ea8c00000000,
+    0x8e0582af00000000, 0xc997c60000000000, 0x41277a2a00000000,
+    0x06b53e8500000000, 0x5146037f00000000, 0x16d447d000000000,
+    0x9e64fbfa00000000, 0xd9f6bf5500000000, 0x7184f1d500000000,
+    0x3616b57a00000000, 0xbea6095000000000, 0xf9344dff00000000,
+    0xaec7700500000000, 0xe95534aa00000000, 0x61e5888000000000,
+    0x2677cc2f00000000, 0x7006655b00000000, 0x379421f400000000,
+    0xbf249dde00000000, 0xf8b6d97100000000, 0xaf45e48b00000000,
+    0xe8d7a02400000000, 0x60671c0e00000000, 0x27f558a100000000,
+    0x8f87162100000000, 0xc815528e00000000, 0x40a5eea400000000,
+    0x0737aa0b00000000, 0x50c497f100000000, 0x1756d35e00000000,
+    0x9fe66f7400000000, 0xd8742bdb00000000, 0x33043d9d00000000,
+    0x7496793200000000, 0xfc26c51800000000, 0xbbb481b700000000,
+    0xec47bc4d00000000, 0xabd5f8e200000000, 0x236544c800000000,
+    0x64f7006700000000, 0xcc854ee700000000, 0x8b170a4800000000,
+    0x03a7b66200000000, 0x4435f2cd00000000, 0x13c6cf3700000000,
+    0x54548b9800000000, 0xdce437b200000000, 0x9b76731d00000000,
+    0xcd07da6900000000, 0x8a959ec600000000, 0x022522ec00000000,
+    0x45b7664300000000, 0x12445bb900000000, 0x55d61f1600000000,
+    0xdd66a33c00000000, 0x9af4e79300000000, 0x3286a91300000000,
+    0x7514edbc00000000, 0xfda4519600000000, 0xba36153900000000,
+    0xedc528c300000000, 0xaa576c6c00000000, 0x22e7d04600000000,
+    0x657594e900000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59,
+    0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4,
+    0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67,
+    0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef,
+    0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97,
+    0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88,
+    0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687,
+    0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698,
+    0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0,
+    0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068,
+    0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb,
+    0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056,
+    0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016,
+    0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009,
+    0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028,
+    0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037,
+    0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a,
+    0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7,
+    0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054,
+    0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7,
+    0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af,
+    0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0,
+    0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4,
+    0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab,
+    0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3,
+    0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a,
+    0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9,
+    0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54,
+    0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09,
+    0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16,
+    0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37,
+    0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28,
+    0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e,
+    0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3,
+    0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40,
+    0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8,
+    0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0,
+    0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf,
+    0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6,
+    0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9,
+    0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1,
+    0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059,
+    0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca,
+    0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067,
+    0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031,
+    0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e,
+    0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f,
+    0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010,
+    0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d,
+    0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0,
+    0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073,
+    0xd8ac6b35},
+   {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2,
+    0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd,
+    0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696,
+    0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3,
+    0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f,
+    0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35,
+    0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5,
+    0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f,
+    0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673,
+    0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46,
+    0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d,
+    0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632,
+    0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28,
+    0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192,
+    0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c,
+    0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6,
+    0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0,
+    0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff,
+    0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4,
+    0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95,
+    0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9,
+    0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03,
+    0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7,
+    0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d,
+    0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151,
+    0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808,
+    0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343,
+    0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c,
+    0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a,
+    0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0,
+    0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e,
+    0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594,
+    0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6,
+    0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399,
+    0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2,
+    0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7,
+    0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb,
+    0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571,
+    0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289,
+    0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33,
+    0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f,
+    0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a,
+    0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461,
+    0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e,
+    0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c,
+    0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6,
+    0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918,
+    0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2,
+    0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484,
+    0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb,
+    0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0,
+    0xa140efa8},
+   {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706,
+    0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed,
+    0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289,
+    0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a,
+    0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214,
+    0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3,
+    0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3,
+    0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254,
+    0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a,
+    0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9,
+    0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad,
+    0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746,
+    0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060,
+    0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187,
+    0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef,
+    0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408,
+    0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e,
+    0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495,
+    0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1,
+    0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532,
+    0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c,
+    0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb,
+    0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb,
+    0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c,
+    0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42,
+    0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060,
+    0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04,
+    0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef,
+    0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99,
+    0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e,
+    0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16,
+    0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1,
+    0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7,
+    0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c,
+    0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38,
+    0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb,
+    0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5,
+    0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42,
+    0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62,
+    0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85,
+    0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb,
+    0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18,
+    0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c,
+    0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997,
+    0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1,
+    0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36,
+    0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e,
+    0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9,
+    0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf,
+    0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24,
+    0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040,
+    0x917cd6a1},
+   {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf,
+    0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd,
+    0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896,
+    0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9,
+    0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3,
+    0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f,
+    0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d,
+    0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1,
+    0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab,
+    0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4,
+    0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f,
+    0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d,
+    0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4,
+    0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978,
+    0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad,
+    0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621,
+    0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46,
+    0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854,
+    0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f,
+    0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a,
+    0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890,
+    0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c,
+    0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4,
+    0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238,
+    0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622,
+    0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab,
+    0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0,
+    0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2,
+    0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295,
+    0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19,
+    0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc,
+    0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140,
+    0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd,
+    0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf,
+    0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184,
+    0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb,
+    0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1,
+    0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d,
+    0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb,
+    0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257,
+    0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d,
+    0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22,
+    0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069,
+    0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b,
+    0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6,
+    0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a,
+    0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf,
+    0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33,
+    0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254,
+    0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146,
+    0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d,
+    0x18ba364e}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0x43cba687, 0xc7903cd4, 0x845b9a53, 0xcf270873,
+    0x8cecaef4, 0x08b734a7, 0x4b7c9220, 0x9e4f10e6, 0xdd84b661,
+    0x59df2c32, 0x1a148ab5, 0x51681895, 0x12a3be12, 0x96f82441,
+    0xd53382c6, 0x7d995117, 0x3e52f790, 0xba096dc3, 0xf9c2cb44,
+    0xb2be5964, 0xf175ffe3, 0x752e65b0, 0x36e5c337, 0xe3d641f1,
+    0xa01de776, 0x24467d25, 0x678ddba2, 0x2cf14982, 0x6f3aef05,
+    0xeb617556, 0xa8aad3d1, 0xfa32a32e, 0xb9f905a9, 0x3da29ffa,
+    0x7e69397d, 0x3515ab5d, 0x76de0dda, 0xf2859789, 0xb14e310e,
+    0x647db3c8, 0x27b6154f, 0xa3ed8f1c, 0xe026299b, 0xab5abbbb,
+    0xe8911d3c, 0x6cca876f, 0x2f0121e8, 0x87abf239, 0xc46054be,
+    0x403bceed, 0x03f0686a, 0x488cfa4a, 0x0b475ccd, 0x8f1cc69e,
+    0xccd76019, 0x19e4e2df, 0x5a2f4458, 0xde74de0b, 0x9dbf788c,
+    0xd6c3eaac, 0x95084c2b, 0x1153d678, 0x529870ff, 0xf465465d,
+    0xb7aee0da, 0x33f57a89, 0x703edc0e, 0x3b424e2e, 0x7889e8a9,
+    0xfcd272fa, 0xbf19d47d, 0x6a2a56bb, 0x29e1f03c, 0xadba6a6f,
+    0xee71cce8, 0xa50d5ec8, 0xe6c6f84f, 0x629d621c, 0x2156c49b,
+    0x89fc174a, 0xca37b1cd, 0x4e6c2b9e, 0x0da78d19, 0x46db1f39,
+    0x0510b9be, 0x814b23ed, 0xc280856a, 0x17b307ac, 0x5478a12b,
+    0xd0233b78, 0x93e89dff, 0xd8940fdf, 0x9b5fa958, 0x1f04330b,
+    0x5ccf958c, 0x0e57e573, 0x4d9c43f4, 0xc9c7d9a7, 0x8a0c7f20,
+    0xc170ed00, 0x82bb4b87, 0x06e0d1d4, 0x452b7753, 0x9018f595,
+    0xd3d35312, 0x5788c941, 0x14436fc6, 0x5f3ffde6, 0x1cf45b61,
+    0x98afc132, 0xdb6467b5, 0x73ceb464, 0x300512e3, 0xb45e88b0,
+    0xf7952e37, 0xbce9bc17, 0xff221a90, 0x7b7980c3, 0x38b22644,
+    0xed81a482, 0xae4a0205, 0x2a119856, 0x69da3ed1, 0x22a6acf1,
+    0x616d0a76, 0xe5369025, 0xa6fd36a2, 0xe8cb8cba, 0xab002a3d,
+    0x2f5bb06e, 0x6c9016e9, 0x27ec84c9, 0x6427224e, 0xe07cb81d,
+    0xa3b71e9a, 0x76849c5c, 0x354f3adb, 0xb114a088, 0xf2df060f,
+    0xb9a3942f, 0xfa6832a8, 0x7e33a8fb, 0x3df80e7c, 0x9552ddad,
+    0xd6997b2a, 0x52c2e179, 0x110947fe, 0x5a75d5de, 0x19be7359,
+    0x9de5e90a, 0xde2e4f8d, 0x0b1dcd4b, 0x48d66bcc, 0xcc8df19f,
+    0x8f465718, 0xc43ac538, 0x87f163bf, 0x03aaf9ec, 0x40615f6b,
+    0x12f92f94, 0x51328913, 0xd5691340, 0x96a2b5c7, 0xddde27e7,
+    0x9e158160, 0x1a4e1b33, 0x5985bdb4, 0x8cb63f72, 0xcf7d99f5,
+    0x4b2603a6, 0x08eda521, 0x43913701, 0x005a9186, 0x84010bd5,
+    0xc7caad52, 0x6f607e83, 0x2cabd804, 0xa8f04257, 0xeb3be4d0,
+    0xa04776f0, 0xe38cd077, 0x67d74a24, 0x241ceca3, 0xf12f6e65,
+    0xb2e4c8e2, 0x36bf52b1, 0x7574f436, 0x3e086616, 0x7dc3c091,
+    0xf9985ac2, 0xba53fc45, 0x1caecae7, 0x5f656c60, 0xdb3ef633,
+    0x98f550b4, 0xd389c294, 0x90426413, 0x1419fe40, 0x57d258c7,
+    0x82e1da01, 0xc12a7c86, 0x4571e6d5, 0x06ba4052, 0x4dc6d272,
+    0x0e0d74f5, 0x8a56eea6, 0xc99d4821, 0x61379bf0, 0x22fc3d77,
+    0xa6a7a724, 0xe56c01a3, 0xae109383, 0xeddb3504, 0x6980af57,
+    0x2a4b09d0, 0xff788b16, 0xbcb32d91, 0x38e8b7c2, 0x7b231145,
+    0x305f8365, 0x739425e2, 0xf7cfbfb1, 0xb4041936, 0xe69c69c9,
+    0xa557cf4e, 0x210c551d, 0x62c7f39a, 0x29bb61ba, 0x6a70c73d,
+    0xee2b5d6e, 0xade0fbe9, 0x78d3792f, 0x3b18dfa8, 0xbf4345fb,
+    0xfc88e37c, 0xb7f4715c, 0xf43fd7db, 0x70644d88, 0x33afeb0f,
+    0x9b0538de, 0xd8ce9e59, 0x5c95040a, 0x1f5ea28d, 0x542230ad,
+    0x17e9962a, 0x93b20c79, 0xd079aafe, 0x054a2838, 0x46818ebf,
+    0xc2da14ec, 0x8111b26b, 0xca6d204b, 0x89a686cc, 0x0dfd1c9f,
+    0x4e36ba18},
+   {0x00000000, 0xe1b652ef, 0x836bd405, 0x62dd86ea, 0x06d7a80b,
+    0xe761fae4, 0x85bc7c0e, 0x640a2ee1, 0x0cae5117, 0xed1803f8,
+    0x8fc58512, 0x6e73d7fd, 0x0a79f91c, 0xebcfabf3, 0x89122d19,
+    0x68a47ff6, 0x185ca32e, 0xf9eaf1c1, 0x9b37772b, 0x7a8125c4,
+    0x1e8b0b25, 0xff3d59ca, 0x9de0df20, 0x7c568dcf, 0x14f2f239,
+    0xf544a0d6, 0x9799263c, 0x762f74d3, 0x12255a32, 0xf39308dd,
+    0x914e8e37, 0x70f8dcd8, 0x30b8465d, 0xd10e14b2, 0xb3d39258,
+    0x5265c0b7, 0x366fee56, 0xd7d9bcb9, 0xb5043a53, 0x54b268bc,
+    0x3c16174a, 0xdda045a5, 0xbf7dc34f, 0x5ecb91a0, 0x3ac1bf41,
+    0xdb77edae, 0xb9aa6b44, 0x581c39ab, 0x28e4e573, 0xc952b79c,
+    0xab8f3176, 0x4a396399, 0x2e334d78, 0xcf851f97, 0xad58997d,
+    0x4ceecb92, 0x244ab464, 0xc5fce68b, 0xa7216061, 0x4697328e,
+    0x229d1c6f, 0xc32b4e80, 0xa1f6c86a, 0x40409a85, 0x60708dba,
+    0x81c6df55, 0xe31b59bf, 0x02ad0b50, 0x66a725b1, 0x8711775e,
+    0xe5ccf1b4, 0x047aa35b, 0x6cdedcad, 0x8d688e42, 0xefb508a8,
+    0x0e035a47, 0x6a0974a6, 0x8bbf2649, 0xe962a0a3, 0x08d4f24c,
+    0x782c2e94, 0x999a7c7b, 0xfb47fa91, 0x1af1a87e, 0x7efb869f,
+    0x9f4dd470, 0xfd90529a, 0x1c260075, 0x74827f83, 0x95342d6c,
+    0xf7e9ab86, 0x165ff969, 0x7255d788, 0x93e38567, 0xf13e038d,
+    0x10885162, 0x50c8cbe7, 0xb17e9908, 0xd3a31fe2, 0x32154d0d,
+    0x561f63ec, 0xb7a93103, 0xd574b7e9, 0x34c2e506, 0x5c669af0,
+    0xbdd0c81f, 0xdf0d4ef5, 0x3ebb1c1a, 0x5ab132fb, 0xbb076014,
+    0xd9dae6fe, 0x386cb411, 0x489468c9, 0xa9223a26, 0xcbffbccc,
+    0x2a49ee23, 0x4e43c0c2, 0xaff5922d, 0xcd2814c7, 0x2c9e4628,
+    0x443a39de, 0xa58c6b31, 0xc751eddb, 0x26e7bf34, 0x42ed91d5,
+    0xa35bc33a, 0xc18645d0, 0x2030173f, 0x81e66bae, 0x60503941,
+    0x028dbfab, 0xe33bed44, 0x8731c3a5, 0x6687914a, 0x045a17a0,
+    0xe5ec454f, 0x8d483ab9, 0x6cfe6856, 0x0e23eebc, 0xef95bc53,
+    0x8b9f92b2, 0x6a29c05d, 0x08f446b7, 0xe9421458, 0x99bac880,
+    0x780c9a6f, 0x1ad11c85, 0xfb674e6a, 0x9f6d608b, 0x7edb3264,
+    0x1c06b48e, 0xfdb0e661, 0x95149997, 0x74a2cb78, 0x167f4d92,
+    0xf7c91f7d, 0x93c3319c, 0x72756373, 0x10a8e599, 0xf11eb776,
+    0xb15e2df3, 0x50e87f1c, 0x3235f9f6, 0xd383ab19, 0xb78985f8,
+    0x563fd717, 0x34e251fd, 0xd5540312, 0xbdf07ce4, 0x5c462e0b,
+    0x3e9ba8e1, 0xdf2dfa0e, 0xbb27d4ef, 0x5a918600, 0x384c00ea,
+    0xd9fa5205, 0xa9028edd, 0x48b4dc32, 0x2a695ad8, 0xcbdf0837,
+    0xafd526d6, 0x4e637439, 0x2cbef2d3, 0xcd08a03c, 0xa5acdfca,
+    0x441a8d25, 0x26c70bcf, 0xc7715920, 0xa37b77c1, 0x42cd252e,
+    0x2010a3c4, 0xc1a6f12b, 0xe196e614, 0x0020b4fb, 0x62fd3211,
+    0x834b60fe, 0xe7414e1f, 0x06f71cf0, 0x642a9a1a, 0x859cc8f5,
+    0xed38b703, 0x0c8ee5ec, 0x6e536306, 0x8fe531e9, 0xebef1f08,
+    0x0a594de7, 0x6884cb0d, 0x893299e2, 0xf9ca453a, 0x187c17d5,
+    0x7aa1913f, 0x9b17c3d0, 0xff1ded31, 0x1eabbfde, 0x7c763934,
+    0x9dc06bdb, 0xf564142d, 0x14d246c2, 0x760fc028, 0x97b992c7,
+    0xf3b3bc26, 0x1205eec9, 0x70d86823, 0x916e3acc, 0xd12ea049,
+    0x3098f2a6, 0x5245744c, 0xb3f326a3, 0xd7f90842, 0x364f5aad,
+    0x5492dc47, 0xb5248ea8, 0xdd80f15e, 0x3c36a3b1, 0x5eeb255b,
+    0xbf5d77b4, 0xdb575955, 0x3ae10bba, 0x583c8d50, 0xb98adfbf,
+    0xc9720367, 0x28c45188, 0x4a19d762, 0xabaf858d, 0xcfa5ab6c,
+    0x2e13f983, 0x4cce7f69, 0xad782d86, 0xc5dc5270, 0x246a009f,
+    0x46b78675, 0xa701d49a, 0xc30bfa7b, 0x22bda894, 0x40602e7e,
+    0xa1d67c91},
+   {0x00000000, 0x5880e2d7, 0xf106b474, 0xa98656a3, 0xe20d68e9,
+    0xba8d8a3e, 0x130bdc9d, 0x4b8b3e4a, 0x851da109, 0xdd9d43de,
+    0x741b157d, 0x2c9bf7aa, 0x6710c9e0, 0x3f902b37, 0x96167d94,
+    0xce969f43, 0x0a3b4213, 0x52bba0c4, 0xfb3df667, 0xa3bd14b0,
+    0xe8362afa, 0xb0b6c82d, 0x19309e8e, 0x41b07c59, 0x8f26e31a,
+    0xd7a601cd, 0x7e20576e, 0x26a0b5b9, 0x6d2b8bf3, 0x35ab6924,
+    0x9c2d3f87, 0xc4addd50, 0x14768426, 0x4cf666f1, 0xe5703052,
+    0xbdf0d285, 0xf67beccf, 0xaefb0e18, 0x077d58bb, 0x5ffdba6c,
+    0x916b252f, 0xc9ebc7f8, 0x606d915b, 0x38ed738c, 0x73664dc6,
+    0x2be6af11, 0x8260f9b2, 0xdae01b65, 0x1e4dc635, 0x46cd24e2,
+    0xef4b7241, 0xb7cb9096, 0xfc40aedc, 0xa4c04c0b, 0x0d461aa8,
+    0x55c6f87f, 0x9b50673c, 0xc3d085eb, 0x6a56d348, 0x32d6319f,
+    0x795d0fd5, 0x21dded02, 0x885bbba1, 0xd0db5976, 0x28ec084d,
+    0x706cea9a, 0xd9eabc39, 0x816a5eee, 0xcae160a4, 0x92618273,
+    0x3be7d4d0, 0x63673607, 0xadf1a944, 0xf5714b93, 0x5cf71d30,
+    0x0477ffe7, 0x4ffcc1ad, 0x177c237a, 0xbefa75d9, 0xe67a970e,
+    0x22d74a5e, 0x7a57a889, 0xd3d1fe2a, 0x8b511cfd, 0xc0da22b7,
+    0x985ac060, 0x31dc96c3, 0x695c7414, 0xa7caeb57, 0xff4a0980,
+    0x56cc5f23, 0x0e4cbdf4, 0x45c783be, 0x1d476169, 0xb4c137ca,
+    0xec41d51d, 0x3c9a8c6b, 0x641a6ebc, 0xcd9c381f, 0x951cdac8,
+    0xde97e482, 0x86170655, 0x2f9150f6, 0x7711b221, 0xb9872d62,
+    0xe107cfb5, 0x48819916, 0x10017bc1, 0x5b8a458b, 0x030aa75c,
+    0xaa8cf1ff, 0xf20c1328, 0x36a1ce78, 0x6e212caf, 0xc7a77a0c,
+    0x9f2798db, 0xd4aca691, 0x8c2c4446, 0x25aa12e5, 0x7d2af032,
+    0xb3bc6f71, 0xeb3c8da6, 0x42badb05, 0x1a3a39d2, 0x51b10798,
+    0x0931e54f, 0xa0b7b3ec, 0xf837513b, 0x50d8119a, 0x0858f34d,
+    0xa1dea5ee, 0xf95e4739, 0xb2d57973, 0xea559ba4, 0x43d3cd07,
+    0x1b532fd0, 0xd5c5b093, 0x8d455244, 0x24c304e7, 0x7c43e630,
+    0x37c8d87a, 0x6f483aad, 0xc6ce6c0e, 0x9e4e8ed9, 0x5ae35389,
+    0x0263b15e, 0xabe5e7fd, 0xf365052a, 0xb8ee3b60, 0xe06ed9b7,
+    0x49e88f14, 0x11686dc3, 0xdffef280, 0x877e1057, 0x2ef846f4,
+    0x7678a423, 0x3df39a69, 0x657378be, 0xccf52e1d, 0x9475ccca,
+    0x44ae95bc, 0x1c2e776b, 0xb5a821c8, 0xed28c31f, 0xa6a3fd55,
+    0xfe231f82, 0x57a54921, 0x0f25abf6, 0xc1b334b5, 0x9933d662,
+    0x30b580c1, 0x68356216, 0x23be5c5c, 0x7b3ebe8b, 0xd2b8e828,
+    0x8a380aff, 0x4e95d7af, 0x16153578, 0xbf9363db, 0xe713810c,
+    0xac98bf46, 0xf4185d91, 0x5d9e0b32, 0x051ee9e5, 0xcb8876a6,
+    0x93089471, 0x3a8ec2d2, 0x620e2005, 0x29851e4f, 0x7105fc98,
+    0xd883aa3b, 0x800348ec, 0x783419d7, 0x20b4fb00, 0x8932ada3,
+    0xd1b24f74, 0x9a39713e, 0xc2b993e9, 0x6b3fc54a, 0x33bf279d,
+    0xfd29b8de, 0xa5a95a09, 0x0c2f0caa, 0x54afee7d, 0x1f24d037,
+    0x47a432e0, 0xee226443, 0xb6a28694, 0x720f5bc4, 0x2a8fb913,
+    0x8309efb0, 0xdb890d67, 0x9002332d, 0xc882d1fa, 0x61048759,
+    0x3984658e, 0xf712facd, 0xaf92181a, 0x06144eb9, 0x5e94ac6e,
+    0x151f9224, 0x4d9f70f3, 0xe4192650, 0xbc99c487, 0x6c429df1,
+    0x34c27f26, 0x9d442985, 0xc5c4cb52, 0x8e4ff518, 0xd6cf17cf,
+    0x7f49416c, 0x27c9a3bb, 0xe95f3cf8, 0xb1dfde2f, 0x1859888c,
+    0x40d96a5b, 0x0b525411, 0x53d2b6c6, 0xfa54e065, 0xa2d402b2,
+    0x6679dfe2, 0x3ef93d35, 0x977f6b96, 0xcfff8941, 0x8474b70b,
+    0xdcf455dc, 0x7572037f, 0x2df2e1a8, 0xe3647eeb, 0xbbe49c3c,
+    0x1262ca9f, 0x4ae22848, 0x01691602, 0x59e9f4d5, 0xf06fa276,
+    0xa8ef40a1},
+   {0x00000000, 0x463b6765, 0x8c76ceca, 0xca4da9af, 0x59ebed4e,
+    0x1fd08a2b, 0xd59d2384, 0x93a644e1, 0xb2d6db9d, 0xf4edbcf8,
+    0x3ea01557, 0x789b7232, 0xeb3d36d3, 0xad0651b6, 0x674bf819,
+    0x21709f7c, 0x25abc6e0, 0x6390a185, 0xa9dd082a, 0xefe66f4f,
+    0x7c402bae, 0x3a7b4ccb, 0xf036e564, 0xb60d8201, 0x977d1d7d,
+    0xd1467a18, 0x1b0bd3b7, 0x5d30b4d2, 0xce96f033, 0x88ad9756,
+    0x42e03ef9, 0x04db599c, 0x0b50fc1a, 0x4d6b9b7f, 0x872632d0,
+    0xc11d55b5, 0x52bb1154, 0x14807631, 0xdecddf9e, 0x98f6b8fb,
+    0xb9862787, 0xffbd40e2, 0x35f0e94d, 0x73cb8e28, 0xe06dcac9,
+    0xa656adac, 0x6c1b0403, 0x2a206366, 0x2efb3afa, 0x68c05d9f,
+    0xa28df430, 0xe4b69355, 0x7710d7b4, 0x312bb0d1, 0xfb66197e,
+    0xbd5d7e1b, 0x9c2de167, 0xda168602, 0x105b2fad, 0x566048c8,
+    0xc5c60c29, 0x83fd6b4c, 0x49b0c2e3, 0x0f8ba586, 0x16a0f835,
+    0x509b9f50, 0x9ad636ff, 0xdced519a, 0x4f4b157b, 0x0970721e,
+    0xc33ddbb1, 0x8506bcd4, 0xa47623a8, 0xe24d44cd, 0x2800ed62,
+    0x6e3b8a07, 0xfd9dcee6, 0xbba6a983, 0x71eb002c, 0x37d06749,
+    0x330b3ed5, 0x753059b0, 0xbf7df01f, 0xf946977a, 0x6ae0d39b,
+    0x2cdbb4fe, 0xe6961d51, 0xa0ad7a34, 0x81dde548, 0xc7e6822d,
+    0x0dab2b82, 0x4b904ce7, 0xd8360806, 0x9e0d6f63, 0x5440c6cc,
+    0x127ba1a9, 0x1df0042f, 0x5bcb634a, 0x9186cae5, 0xd7bdad80,
+    0x441be961, 0x02208e04, 0xc86d27ab, 0x8e5640ce, 0xaf26dfb2,
+    0xe91db8d7, 0x23501178, 0x656b761d, 0xf6cd32fc, 0xb0f65599,
+    0x7abbfc36, 0x3c809b53, 0x385bc2cf, 0x7e60a5aa, 0xb42d0c05,
+    0xf2166b60, 0x61b02f81, 0x278b48e4, 0xedc6e14b, 0xabfd862e,
+    0x8a8d1952, 0xccb67e37, 0x06fbd798, 0x40c0b0fd, 0xd366f41c,
+    0x955d9379, 0x5f103ad6, 0x192b5db3, 0x2c40f16b, 0x6a7b960e,
+    0xa0363fa1, 0xe60d58c4, 0x75ab1c25, 0x33907b40, 0xf9ddd2ef,
+    0xbfe6b58a, 0x9e962af6, 0xd8ad4d93, 0x12e0e43c, 0x54db8359,
+    0xc77dc7b8, 0x8146a0dd, 0x4b0b0972, 0x0d306e17, 0x09eb378b,
+    0x4fd050ee, 0x859df941, 0xc3a69e24, 0x5000dac5, 0x163bbda0,
+    0xdc76140f, 0x9a4d736a, 0xbb3dec16, 0xfd068b73, 0x374b22dc,
+    0x717045b9, 0xe2d60158, 0xa4ed663d, 0x6ea0cf92, 0x289ba8f7,
+    0x27100d71, 0x612b6a14, 0xab66c3bb, 0xed5da4de, 0x7efbe03f,
+    0x38c0875a, 0xf28d2ef5, 0xb4b64990, 0x95c6d6ec, 0xd3fdb189,
+    0x19b01826, 0x5f8b7f43, 0xcc2d3ba2, 0x8a165cc7, 0x405bf568,
+    0x0660920d, 0x02bbcb91, 0x4480acf4, 0x8ecd055b, 0xc8f6623e,
+    0x5b5026df, 0x1d6b41ba, 0xd726e815, 0x911d8f70, 0xb06d100c,
+    0xf6567769, 0x3c1bdec6, 0x7a20b9a3, 0xe986fd42, 0xafbd9a27,
+    0x65f03388, 0x23cb54ed, 0x3ae0095e, 0x7cdb6e3b, 0xb696c794,
+    0xf0ada0f1, 0x630be410, 0x25308375, 0xef7d2ada, 0xa9464dbf,
+    0x8836d2c3, 0xce0db5a6, 0x04401c09, 0x427b7b6c, 0xd1dd3f8d,
+    0x97e658e8, 0x5dabf147, 0x1b909622, 0x1f4bcfbe, 0x5970a8db,
+    0x933d0174, 0xd5066611, 0x46a022f0, 0x009b4595, 0xcad6ec3a,
+    0x8ced8b5f, 0xad9d1423, 0xeba67346, 0x21ebdae9, 0x67d0bd8c,
+    0xf476f96d, 0xb24d9e08, 0x780037a7, 0x3e3b50c2, 0x31b0f544,
+    0x778b9221, 0xbdc63b8e, 0xfbfd5ceb, 0x685b180a, 0x2e607f6f,
+    0xe42dd6c0, 0xa216b1a5, 0x83662ed9, 0xc55d49bc, 0x0f10e013,
+    0x492b8776, 0xda8dc397, 0x9cb6a4f2, 0x56fb0d5d, 0x10c06a38,
+    0x141b33a4, 0x522054c1, 0x986dfd6e, 0xde569a0b, 0x4df0deea,
+    0x0bcbb98f, 0xc1861020, 0x87bd7745, 0xa6cde839, 0xe0f68f5c,
+    0x2abb26f3, 0x6c804196, 0xff260577, 0xb91d6212, 0x7350cbbd,
+    0x356bacd8}};
+
+#endif
+
+#endif
+
+#if N == 6
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0x3db1ecdc, 0x7b63d9b8, 0x46d23564, 0xf6c7b370,
+    0xcb765fac, 0x8da46ac8, 0xb0158614, 0x36fe60a1, 0x0b4f8c7d,
+    0x4d9db919, 0x702c55c5, 0xc039d3d1, 0xfd883f0d, 0xbb5a0a69,
+    0x86ebe6b5, 0x6dfcc142, 0x504d2d9e, 0x169f18fa, 0x2b2ef426,
+    0x9b3b7232, 0xa68a9eee, 0xe058ab8a, 0xdde94756, 0x5b02a1e3,
+    0x66b34d3f, 0x2061785b, 0x1dd09487, 0xadc51293, 0x9074fe4f,
+    0xd6a6cb2b, 0xeb1727f7, 0xdbf98284, 0xe6486e58, 0xa09a5b3c,
+    0x9d2bb7e0, 0x2d3e31f4, 0x108fdd28, 0x565de84c, 0x6bec0490,
+    0xed07e225, 0xd0b60ef9, 0x96643b9d, 0xabd5d741, 0x1bc05155,
+    0x2671bd89, 0x60a388ed, 0x5d126431, 0xb60543c6, 0x8bb4af1a,
+    0xcd669a7e, 0xf0d776a2, 0x40c2f0b6, 0x7d731c6a, 0x3ba1290e,
+    0x0610c5d2, 0x80fb2367, 0xbd4acfbb, 0xfb98fadf, 0xc6291603,
+    0x763c9017, 0x4b8d7ccb, 0x0d5f49af, 0x30eea573, 0x6c820349,
+    0x5133ef95, 0x17e1daf1, 0x2a50362d, 0x9a45b039, 0xa7f45ce5,
+    0xe1266981, 0xdc97855d, 0x5a7c63e8, 0x67cd8f34, 0x211fba50,
+    0x1cae568c, 0xacbbd098, 0x910a3c44, 0xd7d80920, 0xea69e5fc,
+    0x017ec20b, 0x3ccf2ed7, 0x7a1d1bb3, 0x47acf76f, 0xf7b9717b,
+    0xca089da7, 0x8cdaa8c3, 0xb16b441f, 0x3780a2aa, 0x0a314e76,
+    0x4ce37b12, 0x715297ce, 0xc14711da, 0xfcf6fd06, 0xba24c862,
+    0x879524be, 0xb77b81cd, 0x8aca6d11, 0xcc185875, 0xf1a9b4a9,
+    0x41bc32bd, 0x7c0dde61, 0x3adfeb05, 0x076e07d9, 0x8185e16c,
+    0xbc340db0, 0xfae638d4, 0xc757d408, 0x7742521c, 0x4af3bec0,
+    0x0c218ba4, 0x31906778, 0xda87408f, 0xe736ac53, 0xa1e49937,
+    0x9c5575eb, 0x2c40f3ff, 0x11f11f23, 0x57232a47, 0x6a92c69b,
+    0xec79202e, 0xd1c8ccf2, 0x971af996, 0xaaab154a, 0x1abe935e,
+    0x270f7f82, 0x61dd4ae6, 0x5c6ca63a, 0xd9040692, 0xe4b5ea4e,
+    0xa267df2a, 0x9fd633f6, 0x2fc3b5e2, 0x1272593e, 0x54a06c5a,
+    0x69118086, 0xeffa6633, 0xd24b8aef, 0x9499bf8b, 0xa9285357,
+    0x193dd543, 0x248c399f, 0x625e0cfb, 0x5fefe027, 0xb4f8c7d0,
+    0x89492b0c, 0xcf9b1e68, 0xf22af2b4, 0x423f74a0, 0x7f8e987c,
+    0x395cad18, 0x04ed41c4, 0x8206a771, 0xbfb74bad, 0xf9657ec9,
+    0xc4d49215, 0x74c11401, 0x4970f8dd, 0x0fa2cdb9, 0x32132165,
+    0x02fd8416, 0x3f4c68ca, 0x799e5dae, 0x442fb172, 0xf43a3766,
+    0xc98bdbba, 0x8f59eede, 0xb2e80202, 0x3403e4b7, 0x09b2086b,
+    0x4f603d0f, 0x72d1d1d3, 0xc2c457c7, 0xff75bb1b, 0xb9a78e7f,
+    0x841662a3, 0x6f014554, 0x52b0a988, 0x14629cec, 0x29d37030,
+    0x99c6f624, 0xa4771af8, 0xe2a52f9c, 0xdf14c340, 0x59ff25f5,
+    0x644ec929, 0x229cfc4d, 0x1f2d1091, 0xaf389685, 0x92897a59,
+    0xd45b4f3d, 0xe9eaa3e1, 0xb58605db, 0x8837e907, 0xcee5dc63,
+    0xf35430bf, 0x4341b6ab, 0x7ef05a77, 0x38226f13, 0x059383cf,
+    0x8378657a, 0xbec989a6, 0xf81bbcc2, 0xc5aa501e, 0x75bfd60a,
+    0x480e3ad6, 0x0edc0fb2, 0x336de36e, 0xd87ac499, 0xe5cb2845,
+    0xa3191d21, 0x9ea8f1fd, 0x2ebd77e9, 0x130c9b35, 0x55deae51,
+    0x686f428d, 0xee84a438, 0xd33548e4, 0x95e77d80, 0xa856915c,
+    0x18431748, 0x25f2fb94, 0x6320cef0, 0x5e91222c, 0x6e7f875f,
+    0x53ce6b83, 0x151c5ee7, 0x28adb23b, 0x98b8342f, 0xa509d8f3,
+    0xe3dbed97, 0xde6a014b, 0x5881e7fe, 0x65300b22, 0x23e23e46,
+    0x1e53d29a, 0xae46548e, 0x93f7b852, 0xd5258d36, 0xe89461ea,
+    0x0383461d, 0x3e32aac1, 0x78e09fa5, 0x45517379, 0xf544f56d,
+    0xc8f519b1, 0x8e272cd5, 0xb396c009, 0x357d26bc, 0x08ccca60,
+    0x4e1eff04, 0x73af13d8, 0xc3ba95cc, 0xfe0b7910, 0xb8d94c74,
+    0x8568a0a8},
+   {0x00000000, 0x69790b65, 0xd2f216ca, 0xbb8b1daf, 0x7e952bd5,
+    0x17ec20b0, 0xac673d1f, 0xc51e367a, 0xfd2a57aa, 0x94535ccf,
+    0x2fd84160, 0x46a14a05, 0x83bf7c7f, 0xeac6771a, 0x514d6ab5,
+    0x383461d0, 0x2125a915, 0x485ca270, 0xf3d7bfdf, 0x9aaeb4ba,
+    0x5fb082c0, 0x36c989a5, 0x8d42940a, 0xe43b9f6f, 0xdc0ffebf,
+    0xb576f5da, 0x0efde875, 0x6784e310, 0xa29ad56a, 0xcbe3de0f,
+    0x7068c3a0, 0x1911c8c5, 0x424b522a, 0x2b32594f, 0x90b944e0,
+    0xf9c04f85, 0x3cde79ff, 0x55a7729a, 0xee2c6f35, 0x87556450,
+    0xbf610580, 0xd6180ee5, 0x6d93134a, 0x04ea182f, 0xc1f42e55,
+    0xa88d2530, 0x1306389f, 0x7a7f33fa, 0x636efb3f, 0x0a17f05a,
+    0xb19cedf5, 0xd8e5e690, 0x1dfbd0ea, 0x7482db8f, 0xcf09c620,
+    0xa670cd45, 0x9e44ac95, 0xf73da7f0, 0x4cb6ba5f, 0x25cfb13a,
+    0xe0d18740, 0x89a88c25, 0x3223918a, 0x5b5a9aef, 0x8496a454,
+    0xedefaf31, 0x5664b29e, 0x3f1db9fb, 0xfa038f81, 0x937a84e4,
+    0x28f1994b, 0x4188922e, 0x79bcf3fe, 0x10c5f89b, 0xab4ee534,
+    0xc237ee51, 0x0729d82b, 0x6e50d34e, 0xd5dbcee1, 0xbca2c584,
+    0xa5b30d41, 0xccca0624, 0x77411b8b, 0x1e3810ee, 0xdb262694,
+    0xb25f2df1, 0x09d4305e, 0x60ad3b3b, 0x58995aeb, 0x31e0518e,
+    0x8a6b4c21, 0xe3124744, 0x260c713e, 0x4f757a5b, 0xf4fe67f4,
+    0x9d876c91, 0xc6ddf67e, 0xafa4fd1b, 0x142fe0b4, 0x7d56ebd1,
+    0xb848ddab, 0xd131d6ce, 0x6abacb61, 0x03c3c004, 0x3bf7a1d4,
+    0x528eaab1, 0xe905b71e, 0x807cbc7b, 0x45628a01, 0x2c1b8164,
+    0x97909ccb, 0xfee997ae, 0xe7f85f6b, 0x8e81540e, 0x350a49a1,
+    0x5c7342c4, 0x996d74be, 0xf0147fdb, 0x4b9f6274, 0x22e66911,
+    0x1ad208c1, 0x73ab03a4, 0xc8201e0b, 0xa159156e, 0x64472314,
+    0x0d3e2871, 0xb6b535de, 0xdfcc3ebb, 0xd25c4ee9, 0xbb25458c,
+    0x00ae5823, 0x69d75346, 0xacc9653c, 0xc5b06e59, 0x7e3b73f6,
+    0x17427893, 0x2f761943, 0x460f1226, 0xfd840f89, 0x94fd04ec,
+    0x51e33296, 0x389a39f3, 0x8311245c, 0xea682f39, 0xf379e7fc,
+    0x9a00ec99, 0x218bf136, 0x48f2fa53, 0x8deccc29, 0xe495c74c,
+    0x5f1edae3, 0x3667d186, 0x0e53b056, 0x672abb33, 0xdca1a69c,
+    0xb5d8adf9, 0x70c69b83, 0x19bf90e6, 0xa2348d49, 0xcb4d862c,
+    0x90171cc3, 0xf96e17a6, 0x42e50a09, 0x2b9c016c, 0xee823716,
+    0x87fb3c73, 0x3c7021dc, 0x55092ab9, 0x6d3d4b69, 0x0444400c,
+    0xbfcf5da3, 0xd6b656c6, 0x13a860bc, 0x7ad16bd9, 0xc15a7676,
+    0xa8237d13, 0xb132b5d6, 0xd84bbeb3, 0x63c0a31c, 0x0ab9a879,
+    0xcfa79e03, 0xa6de9566, 0x1d5588c9, 0x742c83ac, 0x4c18e27c,
+    0x2561e919, 0x9eeaf4b6, 0xf793ffd3, 0x328dc9a9, 0x5bf4c2cc,
+    0xe07fdf63, 0x8906d406, 0x56caeabd, 0x3fb3e1d8, 0x8438fc77,
+    0xed41f712, 0x285fc168, 0x4126ca0d, 0xfaadd7a2, 0x93d4dcc7,
+    0xabe0bd17, 0xc299b672, 0x7912abdd, 0x106ba0b8, 0xd57596c2,
+    0xbc0c9da7, 0x07878008, 0x6efe8b6d, 0x77ef43a8, 0x1e9648cd,
+    0xa51d5562, 0xcc645e07, 0x097a687d, 0x60036318, 0xdb887eb7,
+    0xb2f175d2, 0x8ac51402, 0xe3bc1f67, 0x583702c8, 0x314e09ad,
+    0xf4503fd7, 0x9d2934b2, 0x26a2291d, 0x4fdb2278, 0x1481b897,
+    0x7df8b3f2, 0xc673ae5d, 0xaf0aa538, 0x6a149342, 0x036d9827,
+    0xb8e68588, 0xd19f8eed, 0xe9abef3d, 0x80d2e458, 0x3b59f9f7,
+    0x5220f292, 0x973ec4e8, 0xfe47cf8d, 0x45ccd222, 0x2cb5d947,
+    0x35a41182, 0x5cdd1ae7, 0xe7560748, 0x8e2f0c2d, 0x4b313a57,
+    0x22483132, 0x99c32c9d, 0xf0ba27f8, 0xc88e4628, 0xa1f74d4d,
+    0x1a7c50e2, 0x73055b87, 0xb61b6dfd, 0xdf626698, 0x64e97b37,
+    0x0d907052},
+   {0x00000000, 0x7fc99b93, 0xff933726, 0x805aacb5, 0x2457680d,
+    0x5b9ef39e, 0xdbc45f2b, 0xa40dc4b8, 0x48aed01a, 0x37674b89,
+    0xb73de73c, 0xc8f47caf, 0x6cf9b817, 0x13302384, 0x936a8f31,
+    0xeca314a2, 0x915da034, 0xee943ba7, 0x6ece9712, 0x11070c81,
+    0xb50ac839, 0xcac353aa, 0x4a99ff1f, 0x3550648c, 0xd9f3702e,
+    0xa63aebbd, 0x26604708, 0x59a9dc9b, 0xfda41823, 0x826d83b0,
+    0x02372f05, 0x7dfeb496, 0xf9ca4629, 0x8603ddba, 0x0659710f,
+    0x7990ea9c, 0xdd9d2e24, 0xa254b5b7, 0x220e1902, 0x5dc78291,
+    0xb1649633, 0xcead0da0, 0x4ef7a115, 0x313e3a86, 0x9533fe3e,
+    0xeafa65ad, 0x6aa0c918, 0x1569528b, 0x6897e61d, 0x175e7d8e,
+    0x9704d13b, 0xe8cd4aa8, 0x4cc08e10, 0x33091583, 0xb353b936,
+    0xcc9a22a5, 0x20393607, 0x5ff0ad94, 0xdfaa0121, 0xa0639ab2,
+    0x046e5e0a, 0x7ba7c599, 0xfbfd692c, 0x8434f2bf, 0x28e58a13,
+    0x572c1180, 0xd776bd35, 0xa8bf26a6, 0x0cb2e21e, 0x737b798d,
+    0xf321d538, 0x8ce84eab, 0x604b5a09, 0x1f82c19a, 0x9fd86d2f,
+    0xe011f6bc, 0x441c3204, 0x3bd5a997, 0xbb8f0522, 0xc4469eb1,
+    0xb9b82a27, 0xc671b1b4, 0x462b1d01, 0x39e28692, 0x9def422a,
+    0xe226d9b9, 0x627c750c, 0x1db5ee9f, 0xf116fa3d, 0x8edf61ae,
+    0x0e85cd1b, 0x714c5688, 0xd5419230, 0xaa8809a3, 0x2ad2a516,
+    0x551b3e85, 0xd12fcc3a, 0xaee657a9, 0x2ebcfb1c, 0x5175608f,
+    0xf578a437, 0x8ab13fa4, 0x0aeb9311, 0x75220882, 0x99811c20,
+    0xe64887b3, 0x66122b06, 0x19dbb095, 0xbdd6742d, 0xc21fefbe,
+    0x4245430b, 0x3d8cd898, 0x40726c0e, 0x3fbbf79d, 0xbfe15b28,
+    0xc028c0bb, 0x64250403, 0x1bec9f90, 0x9bb63325, 0xe47fa8b6,
+    0x08dcbc14, 0x77152787, 0xf74f8b32, 0x888610a1, 0x2c8bd419,
+    0x53424f8a, 0xd318e33f, 0xacd178ac, 0x51cb1426, 0x2e028fb5,
+    0xae582300, 0xd191b893, 0x759c7c2b, 0x0a55e7b8, 0x8a0f4b0d,
+    0xf5c6d09e, 0x1965c43c, 0x66ac5faf, 0xe6f6f31a, 0x993f6889,
+    0x3d32ac31, 0x42fb37a2, 0xc2a19b17, 0xbd680084, 0xc096b412,
+    0xbf5f2f81, 0x3f058334, 0x40cc18a7, 0xe4c1dc1f, 0x9b08478c,
+    0x1b52eb39, 0x649b70aa, 0x88386408, 0xf7f1ff9b, 0x77ab532e,
+    0x0862c8bd, 0xac6f0c05, 0xd3a69796, 0x53fc3b23, 0x2c35a0b0,
+    0xa801520f, 0xd7c8c99c, 0x57926529, 0x285bfeba, 0x8c563a02,
+    0xf39fa191, 0x73c50d24, 0x0c0c96b7, 0xe0af8215, 0x9f661986,
+    0x1f3cb533, 0x60f52ea0, 0xc4f8ea18, 0xbb31718b, 0x3b6bdd3e,
+    0x44a246ad, 0x395cf23b, 0x469569a8, 0xc6cfc51d, 0xb9065e8e,
+    0x1d0b9a36, 0x62c201a5, 0xe298ad10, 0x9d513683, 0x71f22221,
+    0x0e3bb9b2, 0x8e611507, 0xf1a88e94, 0x55a54a2c, 0x2a6cd1bf,
+    0xaa367d0a, 0xd5ffe699, 0x792e9e35, 0x06e705a6, 0x86bda913,
+    0xf9743280, 0x5d79f638, 0x22b06dab, 0xa2eac11e, 0xdd235a8d,
+    0x31804e2f, 0x4e49d5bc, 0xce137909, 0xb1dae29a, 0x15d72622,
+    0x6a1ebdb1, 0xea441104, 0x958d8a97, 0xe8733e01, 0x97baa592,
+    0x17e00927, 0x682992b4, 0xcc24560c, 0xb3edcd9f, 0x33b7612a,
+    0x4c7efab9, 0xa0ddee1b, 0xdf147588, 0x5f4ed93d, 0x208742ae,
+    0x848a8616, 0xfb431d85, 0x7b19b130, 0x04d02aa3, 0x80e4d81c,
+    0xff2d438f, 0x7f77ef3a, 0x00be74a9, 0xa4b3b011, 0xdb7a2b82,
+    0x5b208737, 0x24e91ca4, 0xc84a0806, 0xb7839395, 0x37d93f20,
+    0x4810a4b3, 0xec1d600b, 0x93d4fb98, 0x138e572d, 0x6c47ccbe,
+    0x11b97828, 0x6e70e3bb, 0xee2a4f0e, 0x91e3d49d, 0x35ee1025,
+    0x4a278bb6, 0xca7d2703, 0xb5b4bc90, 0x5917a832, 0x26de33a1,
+    0xa6849f14, 0xd94d0487, 0x7d40c03f, 0x02895bac, 0x82d3f719,
+    0xfd1a6c8a},
+   {0x00000000, 0xa396284c, 0x9c5d56d9, 0x3fcb7e95, 0xe3cbabf3,
+    0x405d83bf, 0x7f96fd2a, 0xdc00d566, 0x1ce651a7, 0xbf7079eb,
+    0x80bb077e, 0x232d2f32, 0xff2dfa54, 0x5cbbd218, 0x6370ac8d,
+    0xc0e684c1, 0x39cca34e, 0x9a5a8b02, 0xa591f597, 0x0607dddb,
+    0xda0708bd, 0x799120f1, 0x465a5e64, 0xe5cc7628, 0x252af2e9,
+    0x86bcdaa5, 0xb977a430, 0x1ae18c7c, 0xc6e1591a, 0x65777156,
+    0x5abc0fc3, 0xf92a278f, 0x7399469c, 0xd00f6ed0, 0xefc41045,
+    0x4c523809, 0x9052ed6f, 0x33c4c523, 0x0c0fbbb6, 0xaf9993fa,
+    0x6f7f173b, 0xcce93f77, 0xf32241e2, 0x50b469ae, 0x8cb4bcc8,
+    0x2f229484, 0x10e9ea11, 0xb37fc25d, 0x4a55e5d2, 0xe9c3cd9e,
+    0xd608b30b, 0x759e9b47, 0xa99e4e21, 0x0a08666d, 0x35c318f8,
+    0x965530b4, 0x56b3b475, 0xf5259c39, 0xcaeee2ac, 0x6978cae0,
+    0xb5781f86, 0x16ee37ca, 0x2925495f, 0x8ab36113, 0xe7328d38,
+    0x44a4a574, 0x7b6fdbe1, 0xd8f9f3ad, 0x04f926cb, 0xa76f0e87,
+    0x98a47012, 0x3b32585e, 0xfbd4dc9f, 0x5842f4d3, 0x67898a46,
+    0xc41fa20a, 0x181f776c, 0xbb895f20, 0x844221b5, 0x27d409f9,
+    0xdefe2e76, 0x7d68063a, 0x42a378af, 0xe13550e3, 0x3d358585,
+    0x9ea3adc9, 0xa168d35c, 0x02fefb10, 0xc2187fd1, 0x618e579d,
+    0x5e452908, 0xfdd30144, 0x21d3d422, 0x8245fc6e, 0xbd8e82fb,
+    0x1e18aab7, 0x94abcba4, 0x373de3e8, 0x08f69d7d, 0xab60b531,
+    0x77606057, 0xd4f6481b, 0xeb3d368e, 0x48ab1ec2, 0x884d9a03,
+    0x2bdbb24f, 0x1410ccda, 0xb786e496, 0x6b8631f0, 0xc81019bc,
+    0xf7db6729, 0x544d4f65, 0xad6768ea, 0x0ef140a6, 0x313a3e33,
+    0x92ac167f, 0x4eacc319, 0xed3aeb55, 0xd2f195c0, 0x7167bd8c,
+    0xb181394d, 0x12171101, 0x2ddc6f94, 0x8e4a47d8, 0x524a92be,
+    0xf1dcbaf2, 0xce17c467, 0x6d81ec2b, 0x15141c31, 0xb682347d,
+    0x89494ae8, 0x2adf62a4, 0xf6dfb7c2, 0x55499f8e, 0x6a82e11b,
+    0xc914c957, 0x09f24d96, 0xaa6465da, 0x95af1b4f, 0x36393303,
+    0xea39e665, 0x49afce29, 0x7664b0bc, 0xd5f298f0, 0x2cd8bf7f,
+    0x8f4e9733, 0xb085e9a6, 0x1313c1ea, 0xcf13148c, 0x6c853cc0,
+    0x534e4255, 0xf0d86a19, 0x303eeed8, 0x93a8c694, 0xac63b801,
+    0x0ff5904d, 0xd3f5452b, 0x70636d67, 0x4fa813f2, 0xec3e3bbe,
+    0x668d5aad, 0xc51b72e1, 0xfad00c74, 0x59462438, 0x8546f15e,
+    0x26d0d912, 0x191ba787, 0xba8d8fcb, 0x7a6b0b0a, 0xd9fd2346,
+    0xe6365dd3, 0x45a0759f, 0x99a0a0f9, 0x3a3688b5, 0x05fdf620,
+    0xa66bde6c, 0x5f41f9e3, 0xfcd7d1af, 0xc31caf3a, 0x608a8776,
+    0xbc8a5210, 0x1f1c7a5c, 0x20d704c9, 0x83412c85, 0x43a7a844,
+    0xe0318008, 0xdffafe9d, 0x7c6cd6d1, 0xa06c03b7, 0x03fa2bfb,
+    0x3c31556e, 0x9fa77d22, 0xf2269109, 0x51b0b945, 0x6e7bc7d0,
+    0xcdedef9c, 0x11ed3afa, 0xb27b12b6, 0x8db06c23, 0x2e26446f,
+    0xeec0c0ae, 0x4d56e8e2, 0x729d9677, 0xd10bbe3b, 0x0d0b6b5d,
+    0xae9d4311, 0x91563d84, 0x32c015c8, 0xcbea3247, 0x687c1a0b,
+    0x57b7649e, 0xf4214cd2, 0x282199b4, 0x8bb7b1f8, 0xb47ccf6d,
+    0x17eae721, 0xd70c63e0, 0x749a4bac, 0x4b513539, 0xe8c71d75,
+    0x34c7c813, 0x9751e05f, 0xa89a9eca, 0x0b0cb686, 0x81bfd795,
+    0x2229ffd9, 0x1de2814c, 0xbe74a900, 0x62747c66, 0xc1e2542a,
+    0xfe292abf, 0x5dbf02f3, 0x9d598632, 0x3ecfae7e, 0x0104d0eb,
+    0xa292f8a7, 0x7e922dc1, 0xdd04058d, 0xe2cf7b18, 0x41595354,
+    0xb87374db, 0x1be55c97, 0x242e2202, 0x87b80a4e, 0x5bb8df28,
+    0xf82ef764, 0xc7e589f1, 0x6473a1bd, 0xa495257c, 0x07030d30,
+    0x38c873a5, 0x9b5e5be9, 0x475e8e8f, 0xe4c8a6c3, 0xdb03d856,
+    0x7895f01a},
+   {0x00000000, 0x2a283862, 0x545070c4, 0x7e7848a6, 0xa8a0e188,
+    0x8288d9ea, 0xfcf0914c, 0xd6d8a92e, 0x8a30c551, 0xa018fd33,
+    0xde60b595, 0xf4488df7, 0x229024d9, 0x08b81cbb, 0x76c0541d,
+    0x5ce86c7f, 0xcf108ce3, 0xe538b481, 0x9b40fc27, 0xb168c445,
+    0x67b06d6b, 0x4d985509, 0x33e01daf, 0x19c825cd, 0x452049b2,
+    0x6f0871d0, 0x11703976, 0x3b580114, 0xed80a83a, 0xc7a89058,
+    0xb9d0d8fe, 0x93f8e09c, 0x45501f87, 0x6f7827e5, 0x11006f43,
+    0x3b285721, 0xedf0fe0f, 0xc7d8c66d, 0xb9a08ecb, 0x9388b6a9,
+    0xcf60dad6, 0xe548e2b4, 0x9b30aa12, 0xb1189270, 0x67c03b5e,
+    0x4de8033c, 0x33904b9a, 0x19b873f8, 0x8a409364, 0xa068ab06,
+    0xde10e3a0, 0xf438dbc2, 0x22e072ec, 0x08c84a8e, 0x76b00228,
+    0x5c983a4a, 0x00705635, 0x2a586e57, 0x542026f1, 0x7e081e93,
+    0xa8d0b7bd, 0x82f88fdf, 0xfc80c779, 0xd6a8ff1b, 0x8aa03f0e,
+    0xa088076c, 0xdef04fca, 0xf4d877a8, 0x2200de86, 0x0828e6e4,
+    0x7650ae42, 0x5c789620, 0x0090fa5f, 0x2ab8c23d, 0x54c08a9b,
+    0x7ee8b2f9, 0xa8301bd7, 0x821823b5, 0xfc606b13, 0xd6485371,
+    0x45b0b3ed, 0x6f988b8f, 0x11e0c329, 0x3bc8fb4b, 0xed105265,
+    0xc7386a07, 0xb94022a1, 0x93681ac3, 0xcf8076bc, 0xe5a84ede,
+    0x9bd00678, 0xb1f83e1a, 0x67209734, 0x4d08af56, 0x3370e7f0,
+    0x1958df92, 0xcff02089, 0xe5d818eb, 0x9ba0504d, 0xb188682f,
+    0x6750c101, 0x4d78f963, 0x3300b1c5, 0x192889a7, 0x45c0e5d8,
+    0x6fe8ddba, 0x1190951c, 0x3bb8ad7e, 0xed600450, 0xc7483c32,
+    0xb9307494, 0x93184cf6, 0x00e0ac6a, 0x2ac89408, 0x54b0dcae,
+    0x7e98e4cc, 0xa8404de2, 0x82687580, 0xfc103d26, 0xd6380544,
+    0x8ad0693b, 0xa0f85159, 0xde8019ff, 0xf4a8219d, 0x227088b3,
+    0x0858b0d1, 0x7620f877, 0x5c08c015, 0xce31785d, 0xe419403f,
+    0x9a610899, 0xb04930fb, 0x669199d5, 0x4cb9a1b7, 0x32c1e911,
+    0x18e9d173, 0x4401bd0c, 0x6e29856e, 0x1051cdc8, 0x3a79f5aa,
+    0xeca15c84, 0xc68964e6, 0xb8f12c40, 0x92d91422, 0x0121f4be,
+    0x2b09ccdc, 0x5571847a, 0x7f59bc18, 0xa9811536, 0x83a92d54,
+    0xfdd165f2, 0xd7f95d90, 0x8b1131ef, 0xa139098d, 0xdf41412b,
+    0xf5697949, 0x23b1d067, 0x0999e805, 0x77e1a0a3, 0x5dc998c1,
+    0x8b6167da, 0xa1495fb8, 0xdf31171e, 0xf5192f7c, 0x23c18652,
+    0x09e9be30, 0x7791f696, 0x5db9cef4, 0x0151a28b, 0x2b799ae9,
+    0x5501d24f, 0x7f29ea2d, 0xa9f14303, 0x83d97b61, 0xfda133c7,
+    0xd7890ba5, 0x4471eb39, 0x6e59d35b, 0x10219bfd, 0x3a09a39f,
+    0xecd10ab1, 0xc6f932d3, 0xb8817a75, 0x92a94217, 0xce412e68,
+    0xe469160a, 0x9a115eac, 0xb03966ce, 0x66e1cfe0, 0x4cc9f782,
+    0x32b1bf24, 0x18998746, 0x44914753, 0x6eb97f31, 0x10c13797,
+    0x3ae90ff5, 0xec31a6db, 0xc6199eb9, 0xb861d61f, 0x9249ee7d,
+    0xcea18202, 0xe489ba60, 0x9af1f2c6, 0xb0d9caa4, 0x6601638a,
+    0x4c295be8, 0x3251134e, 0x18792b2c, 0x8b81cbb0, 0xa1a9f3d2,
+    0xdfd1bb74, 0xf5f98316, 0x23212a38, 0x0909125a, 0x77715afc,
+    0x5d59629e, 0x01b10ee1, 0x2b993683, 0x55e17e25, 0x7fc94647,
+    0xa911ef69, 0x8339d70b, 0xfd419fad, 0xd769a7cf, 0x01c158d4,
+    0x2be960b6, 0x55912810, 0x7fb91072, 0xa961b95c, 0x8349813e,
+    0xfd31c998, 0xd719f1fa, 0x8bf19d85, 0xa1d9a5e7, 0xdfa1ed41,
+    0xf589d523, 0x23517c0d, 0x0979446f, 0x77010cc9, 0x5d2934ab,
+    0xced1d437, 0xe4f9ec55, 0x9a81a4f3, 0xb0a99c91, 0x667135bf,
+    0x4c590ddd, 0x3221457b, 0x18097d19, 0x44e11166, 0x6ec92904,
+    0x10b161a2, 0x3a9959c0, 0xec41f0ee, 0xc669c88c, 0xb811802a,
+    0x9239b848},
+   {0x00000000, 0x4713f6fb, 0x8e27edf6, 0xc9341b0d, 0xc73eddad,
+    0x802d2b56, 0x4919305b, 0x0e0ac6a0, 0x550cbd1b, 0x121f4be0,
+    0xdb2b50ed, 0x9c38a616, 0x923260b6, 0xd521964d, 0x1c158d40,
+    0x5b067bbb, 0xaa197a36, 0xed0a8ccd, 0x243e97c0, 0x632d613b,
+    0x6d27a79b, 0x2a345160, 0xe3004a6d, 0xa413bc96, 0xff15c72d,
+    0xb80631d6, 0x71322adb, 0x3621dc20, 0x382b1a80, 0x7f38ec7b,
+    0xb60cf776, 0xf11f018d, 0x8f43f22d, 0xc85004d6, 0x01641fdb,
+    0x4677e920, 0x487d2f80, 0x0f6ed97b, 0xc65ac276, 0x8149348d,
+    0xda4f4f36, 0x9d5cb9cd, 0x5468a2c0, 0x137b543b, 0x1d71929b,
+    0x5a626460, 0x93567f6d, 0xd4458996, 0x255a881b, 0x62497ee0,
+    0xab7d65ed, 0xec6e9316, 0xe26455b6, 0xa577a34d, 0x6c43b840,
+    0x2b504ebb, 0x70563500, 0x3745c3fb, 0xfe71d8f6, 0xb9622e0d,
+    0xb768e8ad, 0xf07b1e56, 0x394f055b, 0x7e5cf3a0, 0xc5f6e21b,
+    0x82e514e0, 0x4bd10fed, 0x0cc2f916, 0x02c83fb6, 0x45dbc94d,
+    0x8cefd240, 0xcbfc24bb, 0x90fa5f00, 0xd7e9a9fb, 0x1eddb2f6,
+    0x59ce440d, 0x57c482ad, 0x10d77456, 0xd9e36f5b, 0x9ef099a0,
+    0x6fef982d, 0x28fc6ed6, 0xe1c875db, 0xa6db8320, 0xa8d14580,
+    0xefc2b37b, 0x26f6a876, 0x61e55e8d, 0x3ae32536, 0x7df0d3cd,
+    0xb4c4c8c0, 0xf3d73e3b, 0xfdddf89b, 0xbace0e60, 0x73fa156d,
+    0x34e9e396, 0x4ab51036, 0x0da6e6cd, 0xc492fdc0, 0x83810b3b,
+    0x8d8bcd9b, 0xca983b60, 0x03ac206d, 0x44bfd696, 0x1fb9ad2d,
+    0x58aa5bd6, 0x919e40db, 0xd68db620, 0xd8877080, 0x9f94867b,
+    0x56a09d76, 0x11b36b8d, 0xe0ac6a00, 0xa7bf9cfb, 0x6e8b87f6,
+    0x2998710d, 0x2792b7ad, 0x60814156, 0xa9b55a5b, 0xeea6aca0,
+    0xb5a0d71b, 0xf2b321e0, 0x3b873aed, 0x7c94cc16, 0x729e0ab6,
+    0x358dfc4d, 0xfcb9e740, 0xbbaa11bb, 0x509cc277, 0x178f348c,
+    0xdebb2f81, 0x99a8d97a, 0x97a21fda, 0xd0b1e921, 0x1985f22c,
+    0x5e9604d7, 0x05907f6c, 0x42838997, 0x8bb7929a, 0xcca46461,
+    0xc2aea2c1, 0x85bd543a, 0x4c894f37, 0x0b9ab9cc, 0xfa85b841,
+    0xbd964eba, 0x74a255b7, 0x33b1a34c, 0x3dbb65ec, 0x7aa89317,
+    0xb39c881a, 0xf48f7ee1, 0xaf89055a, 0xe89af3a1, 0x21aee8ac,
+    0x66bd1e57, 0x68b7d8f7, 0x2fa42e0c, 0xe6903501, 0xa183c3fa,
+    0xdfdf305a, 0x98ccc6a1, 0x51f8ddac, 0x16eb2b57, 0x18e1edf7,
+    0x5ff21b0c, 0x96c60001, 0xd1d5f6fa, 0x8ad38d41, 0xcdc07bba,
+    0x04f460b7, 0x43e7964c, 0x4ded50ec, 0x0afea617, 0xc3cabd1a,
+    0x84d94be1, 0x75c64a6c, 0x32d5bc97, 0xfbe1a79a, 0xbcf25161,
+    0xb2f897c1, 0xf5eb613a, 0x3cdf7a37, 0x7bcc8ccc, 0x20caf777,
+    0x67d9018c, 0xaeed1a81, 0xe9feec7a, 0xe7f42ada, 0xa0e7dc21,
+    0x69d3c72c, 0x2ec031d7, 0x956a206c, 0xd279d697, 0x1b4dcd9a,
+    0x5c5e3b61, 0x5254fdc1, 0x15470b3a, 0xdc731037, 0x9b60e6cc,
+    0xc0669d77, 0x87756b8c, 0x4e417081, 0x0952867a, 0x075840da,
+    0x404bb621, 0x897fad2c, 0xce6c5bd7, 0x3f735a5a, 0x7860aca1,
+    0xb154b7ac, 0xf6474157, 0xf84d87f7, 0xbf5e710c, 0x766a6a01,
+    0x31799cfa, 0x6a7fe741, 0x2d6c11ba, 0xe4580ab7, 0xa34bfc4c,
+    0xad413aec, 0xea52cc17, 0x2366d71a, 0x647521e1, 0x1a29d241,
+    0x5d3a24ba, 0x940e3fb7, 0xd31dc94c, 0xdd170fec, 0x9a04f917,
+    0x5330e21a, 0x142314e1, 0x4f256f5a, 0x083699a1, 0xc10282ac,
+    0x86117457, 0x881bb2f7, 0xcf08440c, 0x063c5f01, 0x412fa9fa,
+    0xb030a877, 0xf7235e8c, 0x3e174581, 0x7904b37a, 0x770e75da,
+    0x301d8321, 0xf929982c, 0xbe3a6ed7, 0xe53c156c, 0xa22fe397,
+    0x6b1bf89a, 0x2c080e61, 0x2202c8c1, 0x65113e3a, 0xac252537,
+    0xeb36d3cc},
+   {0x00000000, 0xa13984ee, 0x99020f9d, 0x383b8b73, 0xe975197b,
+    0x484c9d95, 0x707716e6, 0xd14e9208, 0x099b34b7, 0xa8a2b059,
+    0x90993b2a, 0x31a0bfc4, 0xe0ee2dcc, 0x41d7a922, 0x79ec2251,
+    0xd8d5a6bf, 0x1336696e, 0xb20fed80, 0x8a3466f3, 0x2b0de21d,
+    0xfa437015, 0x5b7af4fb, 0x63417f88, 0xc278fb66, 0x1aad5dd9,
+    0xbb94d937, 0x83af5244, 0x2296d6aa, 0xf3d844a2, 0x52e1c04c,
+    0x6ada4b3f, 0xcbe3cfd1, 0x266cd2dc, 0x87555632, 0xbf6edd41,
+    0x1e5759af, 0xcf19cba7, 0x6e204f49, 0x561bc43a, 0xf72240d4,
+    0x2ff7e66b, 0x8ece6285, 0xb6f5e9f6, 0x17cc6d18, 0xc682ff10,
+    0x67bb7bfe, 0x5f80f08d, 0xfeb97463, 0x355abbb2, 0x94633f5c,
+    0xac58b42f, 0x0d6130c1, 0xdc2fa2c9, 0x7d162627, 0x452dad54,
+    0xe41429ba, 0x3cc18f05, 0x9df80beb, 0xa5c38098, 0x04fa0476,
+    0xd5b4967e, 0x748d1290, 0x4cb699e3, 0xed8f1d0d, 0x4cd9a5b8,
+    0xede02156, 0xd5dbaa25, 0x74e22ecb, 0xa5acbcc3, 0x0495382d,
+    0x3caeb35e, 0x9d9737b0, 0x4542910f, 0xe47b15e1, 0xdc409e92,
+    0x7d791a7c, 0xac378874, 0x0d0e0c9a, 0x353587e9, 0x940c0307,
+    0x5fefccd6, 0xfed64838, 0xc6edc34b, 0x67d447a5, 0xb69ad5ad,
+    0x17a35143, 0x2f98da30, 0x8ea15ede, 0x5674f861, 0xf74d7c8f,
+    0xcf76f7fc, 0x6e4f7312, 0xbf01e11a, 0x1e3865f4, 0x2603ee87,
+    0x873a6a69, 0x6ab57764, 0xcb8cf38a, 0xf3b778f9, 0x528efc17,
+    0x83c06e1f, 0x22f9eaf1, 0x1ac26182, 0xbbfbe56c, 0x632e43d3,
+    0xc217c73d, 0xfa2c4c4e, 0x5b15c8a0, 0x8a5b5aa8, 0x2b62de46,
+    0x13595535, 0xb260d1db, 0x79831e0a, 0xd8ba9ae4, 0xe0811197,
+    0x41b89579, 0x90f60771, 0x31cf839f, 0x09f408ec, 0xa8cd8c02,
+    0x70182abd, 0xd121ae53, 0xe91a2520, 0x4823a1ce, 0x996d33c6,
+    0x3854b728, 0x006f3c5b, 0xa156b8b5, 0x99b34b70, 0x388acf9e,
+    0x00b144ed, 0xa188c003, 0x70c6520b, 0xd1ffd6e5, 0xe9c45d96,
+    0x48fdd978, 0x90287fc7, 0x3111fb29, 0x092a705a, 0xa813f4b4,
+    0x795d66bc, 0xd864e252, 0xe05f6921, 0x4166edcf, 0x8a85221e,
+    0x2bbca6f0, 0x13872d83, 0xb2bea96d, 0x63f03b65, 0xc2c9bf8b,
+    0xfaf234f8, 0x5bcbb016, 0x831e16a9, 0x22279247, 0x1a1c1934,
+    0xbb259dda, 0x6a6b0fd2, 0xcb528b3c, 0xf369004f, 0x525084a1,
+    0xbfdf99ac, 0x1ee61d42, 0x26dd9631, 0x87e412df, 0x56aa80d7,
+    0xf7930439, 0xcfa88f4a, 0x6e910ba4, 0xb644ad1b, 0x177d29f5,
+    0x2f46a286, 0x8e7f2668, 0x5f31b460, 0xfe08308e, 0xc633bbfd,
+    0x670a3f13, 0xace9f0c2, 0x0dd0742c, 0x35ebff5f, 0x94d27bb1,
+    0x459ce9b9, 0xe4a56d57, 0xdc9ee624, 0x7da762ca, 0xa572c475,
+    0x044b409b, 0x3c70cbe8, 0x9d494f06, 0x4c07dd0e, 0xed3e59e0,
+    0xd505d293, 0x743c567d, 0xd56aeec8, 0x74536a26, 0x4c68e155,
+    0xed5165bb, 0x3c1ff7b3, 0x9d26735d, 0xa51df82e, 0x04247cc0,
+    0xdcf1da7f, 0x7dc85e91, 0x45f3d5e2, 0xe4ca510c, 0x3584c304,
+    0x94bd47ea, 0xac86cc99, 0x0dbf4877, 0xc65c87a6, 0x67650348,
+    0x5f5e883b, 0xfe670cd5, 0x2f299edd, 0x8e101a33, 0xb62b9140,
+    0x171215ae, 0xcfc7b311, 0x6efe37ff, 0x56c5bc8c, 0xf7fc3862,
+    0x26b2aa6a, 0x878b2e84, 0xbfb0a5f7, 0x1e892119, 0xf3063c14,
+    0x523fb8fa, 0x6a043389, 0xcb3db767, 0x1a73256f, 0xbb4aa181,
+    0x83712af2, 0x2248ae1c, 0xfa9d08a3, 0x5ba48c4d, 0x639f073e,
+    0xc2a683d0, 0x13e811d8, 0xb2d19536, 0x8aea1e45, 0x2bd39aab,
+    0xe030557a, 0x4109d194, 0x79325ae7, 0xd80bde09, 0x09454c01,
+    0xa87cc8ef, 0x9047439c, 0x317ec772, 0xe9ab61cd, 0x4892e523,
+    0x70a96e50, 0xd190eabe, 0x00de78b6, 0xa1e7fc58, 0x99dc772b,
+    0x38e5f3c5},
+   {0x00000000, 0xe81790a1, 0x0b5e2703, 0xe349b7a2, 0x16bc4e06,
+    0xfeabdea7, 0x1de26905, 0xf5f5f9a4, 0x2d789c0c, 0xc56f0cad,
+    0x2626bb0f, 0xce312bae, 0x3bc4d20a, 0xd3d342ab, 0x309af509,
+    0xd88d65a8, 0x5af13818, 0xb2e6a8b9, 0x51af1f1b, 0xb9b88fba,
+    0x4c4d761e, 0xa45ae6bf, 0x4713511d, 0xaf04c1bc, 0x7789a414,
+    0x9f9e34b5, 0x7cd78317, 0x94c013b6, 0x6135ea12, 0x89227ab3,
+    0x6a6bcd11, 0x827c5db0, 0xb5e27030, 0x5df5e091, 0xbebc5733,
+    0x56abc792, 0xa35e3e36, 0x4b49ae97, 0xa8001935, 0x40178994,
+    0x989aec3c, 0x708d7c9d, 0x93c4cb3f, 0x7bd35b9e, 0x8e26a23a,
+    0x6631329b, 0x85788539, 0x6d6f1598, 0xef134828, 0x0704d889,
+    0xe44d6f2b, 0x0c5aff8a, 0xf9af062e, 0x11b8968f, 0xf2f1212d,
+    0x1ae6b18c, 0xc26bd424, 0x2a7c4485, 0xc935f327, 0x21226386,
+    0xd4d79a22, 0x3cc00a83, 0xdf89bd21, 0x379e2d80, 0xb0b5e621,
+    0x58a27680, 0xbbebc122, 0x53fc5183, 0xa609a827, 0x4e1e3886,
+    0xad578f24, 0x45401f85, 0x9dcd7a2d, 0x75daea8c, 0x96935d2e,
+    0x7e84cd8f, 0x8b71342b, 0x6366a48a, 0x802f1328, 0x68388389,
+    0xea44de39, 0x02534e98, 0xe11af93a, 0x090d699b, 0xfcf8903f,
+    0x14ef009e, 0xf7a6b73c, 0x1fb1279d, 0xc73c4235, 0x2f2bd294,
+    0xcc626536, 0x2475f597, 0xd1800c33, 0x39979c92, 0xdade2b30,
+    0x32c9bb91, 0x05579611, 0xed4006b0, 0x0e09b112, 0xe61e21b3,
+    0x13ebd817, 0xfbfc48b6, 0x18b5ff14, 0xf0a26fb5, 0x282f0a1d,
+    0xc0389abc, 0x23712d1e, 0xcb66bdbf, 0x3e93441b, 0xd684d4ba,
+    0x35cd6318, 0xdddaf3b9, 0x5fa6ae09, 0xb7b13ea8, 0x54f8890a,
+    0xbcef19ab, 0x491ae00f, 0xa10d70ae, 0x4244c70c, 0xaa5357ad,
+    0x72de3205, 0x9ac9a2a4, 0x79801506, 0x919785a7, 0x64627c03,
+    0x8c75eca2, 0x6f3c5b00, 0x872bcba1, 0xba1aca03, 0x520d5aa2,
+    0xb144ed00, 0x59537da1, 0xaca68405, 0x44b114a4, 0xa7f8a306,
+    0x4fef33a7, 0x9762560f, 0x7f75c6ae, 0x9c3c710c, 0x742be1ad,
+    0x81de1809, 0x69c988a8, 0x8a803f0a, 0x6297afab, 0xe0ebf21b,
+    0x08fc62ba, 0xebb5d518, 0x03a245b9, 0xf657bc1d, 0x1e402cbc,
+    0xfd099b1e, 0x151e0bbf, 0xcd936e17, 0x2584feb6, 0xc6cd4914,
+    0x2edad9b5, 0xdb2f2011, 0x3338b0b0, 0xd0710712, 0x386697b3,
+    0x0ff8ba33, 0xe7ef2a92, 0x04a69d30, 0xecb10d91, 0x1944f435,
+    0xf1536494, 0x121ad336, 0xfa0d4397, 0x2280263f, 0xca97b69e,
+    0x29de013c, 0xc1c9919d, 0x343c6839, 0xdc2bf898, 0x3f624f3a,
+    0xd775df9b, 0x5509822b, 0xbd1e128a, 0x5e57a528, 0xb6403589,
+    0x43b5cc2d, 0xaba25c8c, 0x48ebeb2e, 0xa0fc7b8f, 0x78711e27,
+    0x90668e86, 0x732f3924, 0x9b38a985, 0x6ecd5021, 0x86dac080,
+    0x65937722, 0x8d84e783, 0x0aaf2c22, 0xe2b8bc83, 0x01f10b21,
+    0xe9e69b80, 0x1c136224, 0xf404f285, 0x174d4527, 0xff5ad586,
+    0x27d7b02e, 0xcfc0208f, 0x2c89972d, 0xc49e078c, 0x316bfe28,
+    0xd97c6e89, 0x3a35d92b, 0xd222498a, 0x505e143a, 0xb849849b,
+    0x5b003339, 0xb317a398, 0x46e25a3c, 0xaef5ca9d, 0x4dbc7d3f,
+    0xa5abed9e, 0x7d268836, 0x95311897, 0x7678af35, 0x9e6f3f94,
+    0x6b9ac630, 0x838d5691, 0x60c4e133, 0x88d37192, 0xbf4d5c12,
+    0x575accb3, 0xb4137b11, 0x5c04ebb0, 0xa9f11214, 0x41e682b5,
+    0xa2af3517, 0x4ab8a5b6, 0x9235c01e, 0x7a2250bf, 0x996be71d,
+    0x717c77bc, 0x84898e18, 0x6c9e1eb9, 0x8fd7a91b, 0x67c039ba,
+    0xe5bc640a, 0x0dabf4ab, 0xeee24309, 0x06f5d3a8, 0xf3002a0c,
+    0x1b17baad, 0xf85e0d0f, 0x10499dae, 0xc8c4f806, 0x20d368a7,
+    0xc39adf05, 0x2b8d4fa4, 0xde78b600, 0x366f26a1, 0xd5269103,
+    0x3d3101a2}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x0000000000000000, 0xa19017e800000000, 0x03275e0b00000000,
+    0xa2b749e300000000, 0x064ebc1600000000, 0xa7deabfe00000000,
+    0x0569e21d00000000, 0xa4f9f5f500000000, 0x0c9c782d00000000,
+    0xad0c6fc500000000, 0x0fbb262600000000, 0xae2b31ce00000000,
+    0x0ad2c43b00000000, 0xab42d3d300000000, 0x09f59a3000000000,
+    0xa8658dd800000000, 0x1838f15a00000000, 0xb9a8e6b200000000,
+    0x1b1faf5100000000, 0xba8fb8b900000000, 0x1e764d4c00000000,
+    0xbfe65aa400000000, 0x1d51134700000000, 0xbcc104af00000000,
+    0x14a4897700000000, 0xb5349e9f00000000, 0x1783d77c00000000,
+    0xb613c09400000000, 0x12ea356100000000, 0xb37a228900000000,
+    0x11cd6b6a00000000, 0xb05d7c8200000000, 0x3070e2b500000000,
+    0x91e0f55d00000000, 0x3357bcbe00000000, 0x92c7ab5600000000,
+    0x363e5ea300000000, 0x97ae494b00000000, 0x351900a800000000,
+    0x9489174000000000, 0x3cec9a9800000000, 0x9d7c8d7000000000,
+    0x3fcbc49300000000, 0x9e5bd37b00000000, 0x3aa2268e00000000,
+    0x9b32316600000000, 0x3985788500000000, 0x98156f6d00000000,
+    0x284813ef00000000, 0x89d8040700000000, 0x2b6f4de400000000,
+    0x8aff5a0c00000000, 0x2e06aff900000000, 0x8f96b81100000000,
+    0x2d21f1f200000000, 0x8cb1e61a00000000, 0x24d46bc200000000,
+    0x85447c2a00000000, 0x27f335c900000000, 0x8663222100000000,
+    0x229ad7d400000000, 0x830ac03c00000000, 0x21bd89df00000000,
+    0x802d9e3700000000, 0x21e6b5b000000000, 0x8076a25800000000,
+    0x22c1ebbb00000000, 0x8351fc5300000000, 0x27a809a600000000,
+    0x86381e4e00000000, 0x248f57ad00000000, 0x851f404500000000,
+    0x2d7acd9d00000000, 0x8ceada7500000000, 0x2e5d939600000000,
+    0x8fcd847e00000000, 0x2b34718b00000000, 0x8aa4666300000000,
+    0x28132f8000000000, 0x8983386800000000, 0x39de44ea00000000,
+    0x984e530200000000, 0x3af91ae100000000, 0x9b690d0900000000,
+    0x3f90f8fc00000000, 0x9e00ef1400000000, 0x3cb7a6f700000000,
+    0x9d27b11f00000000, 0x35423cc700000000, 0x94d22b2f00000000,
+    0x366562cc00000000, 0x97f5752400000000, 0x330c80d100000000,
+    0x929c973900000000, 0x302bdeda00000000, 0x91bbc93200000000,
+    0x1196570500000000, 0xb00640ed00000000, 0x12b1090e00000000,
+    0xb3211ee600000000, 0x17d8eb1300000000, 0xb648fcfb00000000,
+    0x14ffb51800000000, 0xb56fa2f000000000, 0x1d0a2f2800000000,
+    0xbc9a38c000000000, 0x1e2d712300000000, 0xbfbd66cb00000000,
+    0x1b44933e00000000, 0xbad484d600000000, 0x1863cd3500000000,
+    0xb9f3dadd00000000, 0x09aea65f00000000, 0xa83eb1b700000000,
+    0x0a89f85400000000, 0xab19efbc00000000, 0x0fe01a4900000000,
+    0xae700da100000000, 0x0cc7444200000000, 0xad5753aa00000000,
+    0x0532de7200000000, 0xa4a2c99a00000000, 0x0615807900000000,
+    0xa785979100000000, 0x037c626400000000, 0xa2ec758c00000000,
+    0x005b3c6f00000000, 0xa1cb2b8700000000, 0x03ca1aba00000000,
+    0xa25a0d5200000000, 0x00ed44b100000000, 0xa17d535900000000,
+    0x0584a6ac00000000, 0xa414b14400000000, 0x06a3f8a700000000,
+    0xa733ef4f00000000, 0x0f56629700000000, 0xaec6757f00000000,
+    0x0c713c9c00000000, 0xade12b7400000000, 0x0918de8100000000,
+    0xa888c96900000000, 0x0a3f808a00000000, 0xabaf976200000000,
+    0x1bf2ebe000000000, 0xba62fc0800000000, 0x18d5b5eb00000000,
+    0xb945a20300000000, 0x1dbc57f600000000, 0xbc2c401e00000000,
+    0x1e9b09fd00000000, 0xbf0b1e1500000000, 0x176e93cd00000000,
+    0xb6fe842500000000, 0x1449cdc600000000, 0xb5d9da2e00000000,
+    0x11202fdb00000000, 0xb0b0383300000000, 0x120771d000000000,
+    0xb397663800000000, 0x33baf80f00000000, 0x922aefe700000000,
+    0x309da60400000000, 0x910db1ec00000000, 0x35f4441900000000,
+    0x946453f100000000, 0x36d31a1200000000, 0x97430dfa00000000,
+    0x3f26802200000000, 0x9eb697ca00000000, 0x3c01de2900000000,
+    0x9d91c9c100000000, 0x39683c3400000000, 0x98f82bdc00000000,
+    0x3a4f623f00000000, 0x9bdf75d700000000, 0x2b82095500000000,
+    0x8a121ebd00000000, 0x28a5575e00000000, 0x893540b600000000,
+    0x2dccb54300000000, 0x8c5ca2ab00000000, 0x2eebeb4800000000,
+    0x8f7bfca000000000, 0x271e717800000000, 0x868e669000000000,
+    0x24392f7300000000, 0x85a9389b00000000, 0x2150cd6e00000000,
+    0x80c0da8600000000, 0x2277936500000000, 0x83e7848d00000000,
+    0x222caf0a00000000, 0x83bcb8e200000000, 0x210bf10100000000,
+    0x809be6e900000000, 0x2462131c00000000, 0x85f204f400000000,
+    0x27454d1700000000, 0x86d55aff00000000, 0x2eb0d72700000000,
+    0x8f20c0cf00000000, 0x2d97892c00000000, 0x8c079ec400000000,
+    0x28fe6b3100000000, 0x896e7cd900000000, 0x2bd9353a00000000,
+    0x8a4922d200000000, 0x3a145e5000000000, 0x9b8449b800000000,
+    0x3933005b00000000, 0x98a317b300000000, 0x3c5ae24600000000,
+    0x9dcaf5ae00000000, 0x3f7dbc4d00000000, 0x9eedaba500000000,
+    0x3688267d00000000, 0x9718319500000000, 0x35af787600000000,
+    0x943f6f9e00000000, 0x30c69a6b00000000, 0x91568d8300000000,
+    0x33e1c46000000000, 0x9271d38800000000, 0x125c4dbf00000000,
+    0xb3cc5a5700000000, 0x117b13b400000000, 0xb0eb045c00000000,
+    0x1412f1a900000000, 0xb582e64100000000, 0x1735afa200000000,
+    0xb6a5b84a00000000, 0x1ec0359200000000, 0xbf50227a00000000,
+    0x1de76b9900000000, 0xbc777c7100000000, 0x188e898400000000,
+    0xb91e9e6c00000000, 0x1ba9d78f00000000, 0xba39c06700000000,
+    0x0a64bce500000000, 0xabf4ab0d00000000, 0x0943e2ee00000000,
+    0xa8d3f50600000000, 0x0c2a00f300000000, 0xadba171b00000000,
+    0x0f0d5ef800000000, 0xae9d491000000000, 0x06f8c4c800000000,
+    0xa768d32000000000, 0x05df9ac300000000, 0xa44f8d2b00000000,
+    0x00b678de00000000, 0xa1266f3600000000, 0x039126d500000000,
+    0xa201313d00000000},
+   {0x0000000000000000, 0xee8439a100000000, 0x9d0f029900000000,
+    0x738b3b3800000000, 0x7b1975e900000000, 0x959d4c4800000000,
+    0xe616777000000000, 0x08924ed100000000, 0xb7349b0900000000,
+    0x59b0a2a800000000, 0x2a3b999000000000, 0xc4bfa03100000000,
+    0xcc2deee000000000, 0x22a9d74100000000, 0x5122ec7900000000,
+    0xbfa6d5d800000000, 0x6e69361300000000, 0x80ed0fb200000000,
+    0xf366348a00000000, 0x1de20d2b00000000, 0x157043fa00000000,
+    0xfbf47a5b00000000, 0x887f416300000000, 0x66fb78c200000000,
+    0xd95dad1a00000000, 0x37d994bb00000000, 0x4452af8300000000,
+    0xaad6962200000000, 0xa244d8f300000000, 0x4cc0e15200000000,
+    0x3f4bda6a00000000, 0xd1cfe3cb00000000, 0xdcd26c2600000000,
+    0x3256558700000000, 0x41dd6ebf00000000, 0xaf59571e00000000,
+    0xa7cb19cf00000000, 0x494f206e00000000, 0x3ac41b5600000000,
+    0xd44022f700000000, 0x6be6f72f00000000, 0x8562ce8e00000000,
+    0xf6e9f5b600000000, 0x186dcc1700000000, 0x10ff82c600000000,
+    0xfe7bbb6700000000, 0x8df0805f00000000, 0x6374b9fe00000000,
+    0xb2bb5a3500000000, 0x5c3f639400000000, 0x2fb458ac00000000,
+    0xc130610d00000000, 0xc9a22fdc00000000, 0x2726167d00000000,
+    0x54ad2d4500000000, 0xba2914e400000000, 0x058fc13c00000000,
+    0xeb0bf89d00000000, 0x9880c3a500000000, 0x7604fa0400000000,
+    0x7e96b4d500000000, 0x90128d7400000000, 0xe399b64c00000000,
+    0x0d1d8fed00000000, 0xb8a5d94c00000000, 0x5621e0ed00000000,
+    0x25aadbd500000000, 0xcb2ee27400000000, 0xc3bcaca500000000,
+    0x2d38950400000000, 0x5eb3ae3c00000000, 0xb037979d00000000,
+    0x0f91424500000000, 0xe1157be400000000, 0x929e40dc00000000,
+    0x7c1a797d00000000, 0x748837ac00000000, 0x9a0c0e0d00000000,
+    0xe987353500000000, 0x07030c9400000000, 0xd6ccef5f00000000,
+    0x3848d6fe00000000, 0x4bc3edc600000000, 0xa547d46700000000,
+    0xadd59ab600000000, 0x4351a31700000000, 0x30da982f00000000,
+    0xde5ea18e00000000, 0x61f8745600000000, 0x8f7c4df700000000,
+    0xfcf776cf00000000, 0x12734f6e00000000, 0x1ae101bf00000000,
+    0xf465381e00000000, 0x87ee032600000000, 0x696a3a8700000000,
+    0x6477b56a00000000, 0x8af38ccb00000000, 0xf978b7f300000000,
+    0x17fc8e5200000000, 0x1f6ec08300000000, 0xf1eaf92200000000,
+    0x8261c21a00000000, 0x6ce5fbbb00000000, 0xd3432e6300000000,
+    0x3dc717c200000000, 0x4e4c2cfa00000000, 0xa0c8155b00000000,
+    0xa85a5b8a00000000, 0x46de622b00000000, 0x3555591300000000,
+    0xdbd160b200000000, 0x0a1e837900000000, 0xe49abad800000000,
+    0x971181e000000000, 0x7995b84100000000, 0x7107f69000000000,
+    0x9f83cf3100000000, 0xec08f40900000000, 0x028ccda800000000,
+    0xbd2a187000000000, 0x53ae21d100000000, 0x20251ae900000000,
+    0xcea1234800000000, 0xc6336d9900000000, 0x28b7543800000000,
+    0x5b3c6f0000000000, 0xb5b856a100000000, 0x704bb39900000000,
+    0x9ecf8a3800000000, 0xed44b10000000000, 0x03c088a100000000,
+    0x0b52c67000000000, 0xe5d6ffd100000000, 0x965dc4e900000000,
+    0x78d9fd4800000000, 0xc77f289000000000, 0x29fb113100000000,
+    0x5a702a0900000000, 0xb4f413a800000000, 0xbc665d7900000000,
+    0x52e264d800000000, 0x21695fe000000000, 0xcfed664100000000,
+    0x1e22858a00000000, 0xf0a6bc2b00000000, 0x832d871300000000,
+    0x6da9beb200000000, 0x653bf06300000000, 0x8bbfc9c200000000,
+    0xf834f2fa00000000, 0x16b0cb5b00000000, 0xa9161e8300000000,
+    0x4792272200000000, 0x34191c1a00000000, 0xda9d25bb00000000,
+    0xd20f6b6a00000000, 0x3c8b52cb00000000, 0x4f0069f300000000,
+    0xa184505200000000, 0xac99dfbf00000000, 0x421de61e00000000,
+    0x3196dd2600000000, 0xdf12e48700000000, 0xd780aa5600000000,
+    0x390493f700000000, 0x4a8fa8cf00000000, 0xa40b916e00000000,
+    0x1bad44b600000000, 0xf5297d1700000000, 0x86a2462f00000000,
+    0x68267f8e00000000, 0x60b4315f00000000, 0x8e3008fe00000000,
+    0xfdbb33c600000000, 0x133f0a6700000000, 0xc2f0e9ac00000000,
+    0x2c74d00d00000000, 0x5fffeb3500000000, 0xb17bd29400000000,
+    0xb9e99c4500000000, 0x576da5e400000000, 0x24e69edc00000000,
+    0xca62a77d00000000, 0x75c472a500000000, 0x9b404b0400000000,
+    0xe8cb703c00000000, 0x064f499d00000000, 0x0edd074c00000000,
+    0xe0593eed00000000, 0x93d205d500000000, 0x7d563c7400000000,
+    0xc8ee6ad500000000, 0x266a537400000000, 0x55e1684c00000000,
+    0xbb6551ed00000000, 0xb3f71f3c00000000, 0x5d73269d00000000,
+    0x2ef81da500000000, 0xc07c240400000000, 0x7fdaf1dc00000000,
+    0x915ec87d00000000, 0xe2d5f34500000000, 0x0c51cae400000000,
+    0x04c3843500000000, 0xea47bd9400000000, 0x99cc86ac00000000,
+    0x7748bf0d00000000, 0xa6875cc600000000, 0x4803656700000000,
+    0x3b885e5f00000000, 0xd50c67fe00000000, 0xdd9e292f00000000,
+    0x331a108e00000000, 0x40912bb600000000, 0xae15121700000000,
+    0x11b3c7cf00000000, 0xff37fe6e00000000, 0x8cbcc55600000000,
+    0x6238fcf700000000, 0x6aaab22600000000, 0x842e8b8700000000,
+    0xf7a5b0bf00000000, 0x1921891e00000000, 0x143c06f300000000,
+    0xfab83f5200000000, 0x8933046a00000000, 0x67b73dcb00000000,
+    0x6f25731a00000000, 0x81a14abb00000000, 0xf22a718300000000,
+    0x1cae482200000000, 0xa3089dfa00000000, 0x4d8ca45b00000000,
+    0x3e079f6300000000, 0xd083a6c200000000, 0xd811e81300000000,
+    0x3695d1b200000000, 0x451eea8a00000000, 0xab9ad32b00000000,
+    0x7a5530e000000000, 0x94d1094100000000, 0xe75a327900000000,
+    0x09de0bd800000000, 0x014c450900000000, 0xefc87ca800000000,
+    0x9c43479000000000, 0x72c77e3100000000, 0xcd61abe900000000,
+    0x23e5924800000000, 0x506ea97000000000, 0xbeea90d100000000,
+    0xb678de0000000000, 0x58fce7a100000000, 0x2b77dc9900000000,
+    0xc5f3e53800000000},
+   {0x0000000000000000, 0xfbf6134700000000, 0xf6ed278e00000000,
+    0x0d1b34c900000000, 0xaddd3ec700000000, 0x562b2d8000000000,
+    0x5b30194900000000, 0xa0c60a0e00000000, 0x1bbd0c5500000000,
+    0xe04b1f1200000000, 0xed502bdb00000000, 0x16a6389c00000000,
+    0xb660329200000000, 0x4d9621d500000000, 0x408d151c00000000,
+    0xbb7b065b00000000, 0x367a19aa00000000, 0xcd8c0aed00000000,
+    0xc0973e2400000000, 0x3b612d6300000000, 0x9ba7276d00000000,
+    0x6051342a00000000, 0x6d4a00e300000000, 0x96bc13a400000000,
+    0x2dc715ff00000000, 0xd63106b800000000, 0xdb2a327100000000,
+    0x20dc213600000000, 0x801a2b3800000000, 0x7bec387f00000000,
+    0x76f70cb600000000, 0x8d011ff100000000, 0x2df2438f00000000,
+    0xd60450c800000000, 0xdb1f640100000000, 0x20e9774600000000,
+    0x802f7d4800000000, 0x7bd96e0f00000000, 0x76c25ac600000000,
+    0x8d34498100000000, 0x364f4fda00000000, 0xcdb95c9d00000000,
+    0xc0a2685400000000, 0x3b547b1300000000, 0x9b92711d00000000,
+    0x6064625a00000000, 0x6d7f569300000000, 0x968945d400000000,
+    0x1b885a2500000000, 0xe07e496200000000, 0xed657dab00000000,
+    0x16936eec00000000, 0xb65564e200000000, 0x4da377a500000000,
+    0x40b8436c00000000, 0xbb4e502b00000000, 0x0035567000000000,
+    0xfbc3453700000000, 0xf6d871fe00000000, 0x0d2e62b900000000,
+    0xade868b700000000, 0x561e7bf000000000, 0x5b054f3900000000,
+    0xa0f35c7e00000000, 0x1be2f6c500000000, 0xe014e58200000000,
+    0xed0fd14b00000000, 0x16f9c20c00000000, 0xb63fc80200000000,
+    0x4dc9db4500000000, 0x40d2ef8c00000000, 0xbb24fccb00000000,
+    0x005ffa9000000000, 0xfba9e9d700000000, 0xf6b2dd1e00000000,
+    0x0d44ce5900000000, 0xad82c45700000000, 0x5674d71000000000,
+    0x5b6fe3d900000000, 0xa099f09e00000000, 0x2d98ef6f00000000,
+    0xd66efc2800000000, 0xdb75c8e100000000, 0x2083dba600000000,
+    0x8045d1a800000000, 0x7bb3c2ef00000000, 0x76a8f62600000000,
+    0x8d5ee56100000000, 0x3625e33a00000000, 0xcdd3f07d00000000,
+    0xc0c8c4b400000000, 0x3b3ed7f300000000, 0x9bf8ddfd00000000,
+    0x600eceba00000000, 0x6d15fa7300000000, 0x96e3e93400000000,
+    0x3610b54a00000000, 0xcde6a60d00000000, 0xc0fd92c400000000,
+    0x3b0b818300000000, 0x9bcd8b8d00000000, 0x603b98ca00000000,
+    0x6d20ac0300000000, 0x96d6bf4400000000, 0x2dadb91f00000000,
+    0xd65baa5800000000, 0xdb409e9100000000, 0x20b68dd600000000,
+    0x807087d800000000, 0x7b86949f00000000, 0x769da05600000000,
+    0x8d6bb31100000000, 0x006aace000000000, 0xfb9cbfa700000000,
+    0xf6878b6e00000000, 0x0d71982900000000, 0xadb7922700000000,
+    0x5641816000000000, 0x5b5ab5a900000000, 0xa0aca6ee00000000,
+    0x1bd7a0b500000000, 0xe021b3f200000000, 0xed3a873b00000000,
+    0x16cc947c00000000, 0xb60a9e7200000000, 0x4dfc8d3500000000,
+    0x40e7b9fc00000000, 0xbb11aabb00000000, 0x77c29c5000000000,
+    0x8c348f1700000000, 0x812fbbde00000000, 0x7ad9a89900000000,
+    0xda1fa29700000000, 0x21e9b1d000000000, 0x2cf2851900000000,
+    0xd704965e00000000, 0x6c7f900500000000, 0x9789834200000000,
+    0x9a92b78b00000000, 0x6164a4cc00000000, 0xc1a2aec200000000,
+    0x3a54bd8500000000, 0x374f894c00000000, 0xccb99a0b00000000,
+    0x41b885fa00000000, 0xba4e96bd00000000, 0xb755a27400000000,
+    0x4ca3b13300000000, 0xec65bb3d00000000, 0x1793a87a00000000,
+    0x1a889cb300000000, 0xe17e8ff400000000, 0x5a0589af00000000,
+    0xa1f39ae800000000, 0xace8ae2100000000, 0x571ebd6600000000,
+    0xf7d8b76800000000, 0x0c2ea42f00000000, 0x013590e600000000,
+    0xfac383a100000000, 0x5a30dfdf00000000, 0xa1c6cc9800000000,
+    0xacddf85100000000, 0x572beb1600000000, 0xf7ede11800000000,
+    0x0c1bf25f00000000, 0x0100c69600000000, 0xfaf6d5d100000000,
+    0x418dd38a00000000, 0xba7bc0cd00000000, 0xb760f40400000000,
+    0x4c96e74300000000, 0xec50ed4d00000000, 0x17a6fe0a00000000,
+    0x1abdcac300000000, 0xe14bd98400000000, 0x6c4ac67500000000,
+    0x97bcd53200000000, 0x9aa7e1fb00000000, 0x6151f2bc00000000,
+    0xc197f8b200000000, 0x3a61ebf500000000, 0x377adf3c00000000,
+    0xcc8ccc7b00000000, 0x77f7ca2000000000, 0x8c01d96700000000,
+    0x811aedae00000000, 0x7aecfee900000000, 0xda2af4e700000000,
+    0x21dce7a000000000, 0x2cc7d36900000000, 0xd731c02e00000000,
+    0x6c206a9500000000, 0x97d679d200000000, 0x9acd4d1b00000000,
+    0x613b5e5c00000000, 0xc1fd545200000000, 0x3a0b471500000000,
+    0x371073dc00000000, 0xcce6609b00000000, 0x779d66c000000000,
+    0x8c6b758700000000, 0x8170414e00000000, 0x7a86520900000000,
+    0xda40580700000000, 0x21b64b4000000000, 0x2cad7f8900000000,
+    0xd75b6cce00000000, 0x5a5a733f00000000, 0xa1ac607800000000,
+    0xacb754b100000000, 0x574147f600000000, 0xf7874df800000000,
+    0x0c715ebf00000000, 0x016a6a7600000000, 0xfa9c793100000000,
+    0x41e77f6a00000000, 0xba116c2d00000000, 0xb70a58e400000000,
+    0x4cfc4ba300000000, 0xec3a41ad00000000, 0x17cc52ea00000000,
+    0x1ad7662300000000, 0xe121756400000000, 0x41d2291a00000000,
+    0xba243a5d00000000, 0xb73f0e9400000000, 0x4cc91dd300000000,
+    0xec0f17dd00000000, 0x17f9049a00000000, 0x1ae2305300000000,
+    0xe114231400000000, 0x5a6f254f00000000, 0xa199360800000000,
+    0xac8202c100000000, 0x5774118600000000, 0xf7b21b8800000000,
+    0x0c4408cf00000000, 0x015f3c0600000000, 0xfaa92f4100000000,
+    0x77a830b000000000, 0x8c5e23f700000000, 0x8145173e00000000,
+    0x7ab3047900000000, 0xda750e7700000000, 0x21831d3000000000,
+    0x2c9829f900000000, 0xd76e3abe00000000, 0x6c153ce500000000,
+    0x97e32fa200000000, 0x9af81b6b00000000, 0x610e082c00000000,
+    0xc1c8022200000000, 0x3a3e116500000000, 0x372525ac00000000,
+    0xccd336eb00000000},
+   {0x0000000000000000, 0x6238282a00000000, 0xc470505400000000,
+    0xa648787e00000000, 0x88e1a0a800000000, 0xead9888200000000,
+    0x4c91f0fc00000000, 0x2ea9d8d600000000, 0x51c5308a00000000,
+    0x33fd18a000000000, 0x95b560de00000000, 0xf78d48f400000000,
+    0xd924902200000000, 0xbb1cb80800000000, 0x1d54c07600000000,
+    0x7f6ce85c00000000, 0xe38c10cf00000000, 0x81b438e500000000,
+    0x27fc409b00000000, 0x45c468b100000000, 0x6b6db06700000000,
+    0x0955984d00000000, 0xaf1de03300000000, 0xcd25c81900000000,
+    0xb249204500000000, 0xd071086f00000000, 0x7639701100000000,
+    0x1401583b00000000, 0x3aa880ed00000000, 0x5890a8c700000000,
+    0xfed8d0b900000000, 0x9ce0f89300000000, 0x871f504500000000,
+    0xe527786f00000000, 0x436f001100000000, 0x2157283b00000000,
+    0x0ffef0ed00000000, 0x6dc6d8c700000000, 0xcb8ea0b900000000,
+    0xa9b6889300000000, 0xd6da60cf00000000, 0xb4e248e500000000,
+    0x12aa309b00000000, 0x709218b100000000, 0x5e3bc06700000000,
+    0x3c03e84d00000000, 0x9a4b903300000000, 0xf873b81900000000,
+    0x6493408a00000000, 0x06ab68a000000000, 0xa0e310de00000000,
+    0xc2db38f400000000, 0xec72e02200000000, 0x8e4ac80800000000,
+    0x2802b07600000000, 0x4a3a985c00000000, 0x3556700000000000,
+    0x576e582a00000000, 0xf126205400000000, 0x931e087e00000000,
+    0xbdb7d0a800000000, 0xdf8ff88200000000, 0x79c780fc00000000,
+    0x1bffa8d600000000, 0x0e3fa08a00000000, 0x6c0788a000000000,
+    0xca4ff0de00000000, 0xa877d8f400000000, 0x86de002200000000,
+    0xe4e6280800000000, 0x42ae507600000000, 0x2096785c00000000,
+    0x5ffa900000000000, 0x3dc2b82a00000000, 0x9b8ac05400000000,
+    0xf9b2e87e00000000, 0xd71b30a800000000, 0xb523188200000000,
+    0x136b60fc00000000, 0x715348d600000000, 0xedb3b04500000000,
+    0x8f8b986f00000000, 0x29c3e01100000000, 0x4bfbc83b00000000,
+    0x655210ed00000000, 0x076a38c700000000, 0xa12240b900000000,
+    0xc31a689300000000, 0xbc7680cf00000000, 0xde4ea8e500000000,
+    0x7806d09b00000000, 0x1a3ef8b100000000, 0x3497206700000000,
+    0x56af084d00000000, 0xf0e7703300000000, 0x92df581900000000,
+    0x8920f0cf00000000, 0xeb18d8e500000000, 0x4d50a09b00000000,
+    0x2f6888b100000000, 0x01c1506700000000, 0x63f9784d00000000,
+    0xc5b1003300000000, 0xa789281900000000, 0xd8e5c04500000000,
+    0xbadde86f00000000, 0x1c95901100000000, 0x7eadb83b00000000,
+    0x500460ed00000000, 0x323c48c700000000, 0x947430b900000000,
+    0xf64c189300000000, 0x6aace00000000000, 0x0894c82a00000000,
+    0xaedcb05400000000, 0xcce4987e00000000, 0xe24d40a800000000,
+    0x8075688200000000, 0x263d10fc00000000, 0x440538d600000000,
+    0x3b69d08a00000000, 0x5951f8a000000000, 0xff1980de00000000,
+    0x9d21a8f400000000, 0xb388702200000000, 0xd1b0580800000000,
+    0x77f8207600000000, 0x15c0085c00000000, 0x5d7831ce00000000,
+    0x3f4019e400000000, 0x9908619a00000000, 0xfb3049b000000000,
+    0xd599916600000000, 0xb7a1b94c00000000, 0x11e9c13200000000,
+    0x73d1e91800000000, 0x0cbd014400000000, 0x6e85296e00000000,
+    0xc8cd511000000000, 0xaaf5793a00000000, 0x845ca1ec00000000,
+    0xe66489c600000000, 0x402cf1b800000000, 0x2214d99200000000,
+    0xbef4210100000000, 0xdccc092b00000000, 0x7a84715500000000,
+    0x18bc597f00000000, 0x361581a900000000, 0x542da98300000000,
+    0xf265d1fd00000000, 0x905df9d700000000, 0xef31118b00000000,
+    0x8d0939a100000000, 0x2b4141df00000000, 0x497969f500000000,
+    0x67d0b12300000000, 0x05e8990900000000, 0xa3a0e17700000000,
+    0xc198c95d00000000, 0xda67618b00000000, 0xb85f49a100000000,
+    0x1e1731df00000000, 0x7c2f19f500000000, 0x5286c12300000000,
+    0x30bee90900000000, 0x96f6917700000000, 0xf4ceb95d00000000,
+    0x8ba2510100000000, 0xe99a792b00000000, 0x4fd2015500000000,
+    0x2dea297f00000000, 0x0343f1a900000000, 0x617bd98300000000,
+    0xc733a1fd00000000, 0xa50b89d700000000, 0x39eb714400000000,
+    0x5bd3596e00000000, 0xfd9b211000000000, 0x9fa3093a00000000,
+    0xb10ad1ec00000000, 0xd332f9c600000000, 0x757a81b800000000,
+    0x1742a99200000000, 0x682e41ce00000000, 0x0a1669e400000000,
+    0xac5e119a00000000, 0xce6639b000000000, 0xe0cfe16600000000,
+    0x82f7c94c00000000, 0x24bfb13200000000, 0x4687991800000000,
+    0x5347914400000000, 0x317fb96e00000000, 0x9737c11000000000,
+    0xf50fe93a00000000, 0xdba631ec00000000, 0xb99e19c600000000,
+    0x1fd661b800000000, 0x7dee499200000000, 0x0282a1ce00000000,
+    0x60ba89e400000000, 0xc6f2f19a00000000, 0xa4cad9b000000000,
+    0x8a63016600000000, 0xe85b294c00000000, 0x4e13513200000000,
+    0x2c2b791800000000, 0xb0cb818b00000000, 0xd2f3a9a100000000,
+    0x74bbd1df00000000, 0x1683f9f500000000, 0x382a212300000000,
+    0x5a12090900000000, 0xfc5a717700000000, 0x9e62595d00000000,
+    0xe10eb10100000000, 0x8336992b00000000, 0x257ee15500000000,
+    0x4746c97f00000000, 0x69ef11a900000000, 0x0bd7398300000000,
+    0xad9f41fd00000000, 0xcfa769d700000000, 0xd458c10100000000,
+    0xb660e92b00000000, 0x1028915500000000, 0x7210b97f00000000,
+    0x5cb961a900000000, 0x3e81498300000000, 0x98c931fd00000000,
+    0xfaf119d700000000, 0x859df18b00000000, 0xe7a5d9a100000000,
+    0x41eda1df00000000, 0x23d589f500000000, 0x0d7c512300000000,
+    0x6f44790900000000, 0xc90c017700000000, 0xab34295d00000000,
+    0x37d4d1ce00000000, 0x55ecf9e400000000, 0xf3a4819a00000000,
+    0x919ca9b000000000, 0xbf35716600000000, 0xdd0d594c00000000,
+    0x7b45213200000000, 0x197d091800000000, 0x6611e14400000000,
+    0x0429c96e00000000, 0xa261b11000000000, 0xc059993a00000000,
+    0xeef041ec00000000, 0x8cc869c600000000, 0x2a8011b800000000,
+    0x48b8399200000000},
+   {0x0000000000000000, 0x4c2896a300000000, 0xd9565d9c00000000,
+    0x957ecb3f00000000, 0xf3abcbe300000000, 0xbf835d4000000000,
+    0x2afd967f00000000, 0x66d500dc00000000, 0xa751e61c00000000,
+    0xeb7970bf00000000, 0x7e07bb8000000000, 0x322f2d2300000000,
+    0x54fa2dff00000000, 0x18d2bb5c00000000, 0x8dac706300000000,
+    0xc184e6c000000000, 0x4ea3cc3900000000, 0x028b5a9a00000000,
+    0x97f591a500000000, 0xdbdd070600000000, 0xbd0807da00000000,
+    0xf120917900000000, 0x645e5a4600000000, 0x2876cce500000000,
+    0xe9f22a2500000000, 0xa5dabc8600000000, 0x30a477b900000000,
+    0x7c8ce11a00000000, 0x1a59e1c600000000, 0x5671776500000000,
+    0xc30fbc5a00000000, 0x8f272af900000000, 0x9c46997300000000,
+    0xd06e0fd000000000, 0x4510c4ef00000000, 0x0938524c00000000,
+    0x6fed529000000000, 0x23c5c43300000000, 0xb6bb0f0c00000000,
+    0xfa9399af00000000, 0x3b177f6f00000000, 0x773fe9cc00000000,
+    0xe24122f300000000, 0xae69b45000000000, 0xc8bcb48c00000000,
+    0x8494222f00000000, 0x11eae91000000000, 0x5dc27fb300000000,
+    0xd2e5554a00000000, 0x9ecdc3e900000000, 0x0bb308d600000000,
+    0x479b9e7500000000, 0x214e9ea900000000, 0x6d66080a00000000,
+    0xf818c33500000000, 0xb430559600000000, 0x75b4b35600000000,
+    0x399c25f500000000, 0xace2eeca00000000, 0xe0ca786900000000,
+    0x861f78b500000000, 0xca37ee1600000000, 0x5f49252900000000,
+    0x1361b38a00000000, 0x388d32e700000000, 0x74a5a44400000000,
+    0xe1db6f7b00000000, 0xadf3f9d800000000, 0xcb26f90400000000,
+    0x870e6fa700000000, 0x1270a49800000000, 0x5e58323b00000000,
+    0x9fdcd4fb00000000, 0xd3f4425800000000, 0x468a896700000000,
+    0x0aa21fc400000000, 0x6c771f1800000000, 0x205f89bb00000000,
+    0xb521428400000000, 0xf909d42700000000, 0x762efede00000000,
+    0x3a06687d00000000, 0xaf78a34200000000, 0xe35035e100000000,
+    0x8585353d00000000, 0xc9ada39e00000000, 0x5cd368a100000000,
+    0x10fbfe0200000000, 0xd17f18c200000000, 0x9d578e6100000000,
+    0x0829455e00000000, 0x4401d3fd00000000, 0x22d4d32100000000,
+    0x6efc458200000000, 0xfb828ebd00000000, 0xb7aa181e00000000,
+    0xa4cbab9400000000, 0xe8e33d3700000000, 0x7d9df60800000000,
+    0x31b560ab00000000, 0x5760607700000000, 0x1b48f6d400000000,
+    0x8e363deb00000000, 0xc21eab4800000000, 0x039a4d8800000000,
+    0x4fb2db2b00000000, 0xdacc101400000000, 0x96e486b700000000,
+    0xf031866b00000000, 0xbc1910c800000000, 0x2967dbf700000000,
+    0x654f4d5400000000, 0xea6867ad00000000, 0xa640f10e00000000,
+    0x333e3a3100000000, 0x7f16ac9200000000, 0x19c3ac4e00000000,
+    0x55eb3aed00000000, 0xc095f1d200000000, 0x8cbd677100000000,
+    0x4d3981b100000000, 0x0111171200000000, 0x946fdc2d00000000,
+    0xd8474a8e00000000, 0xbe924a5200000000, 0xf2badcf100000000,
+    0x67c417ce00000000, 0x2bec816d00000000, 0x311c141500000000,
+    0x7d3482b600000000, 0xe84a498900000000, 0xa462df2a00000000,
+    0xc2b7dff600000000, 0x8e9f495500000000, 0x1be1826a00000000,
+    0x57c914c900000000, 0x964df20900000000, 0xda6564aa00000000,
+    0x4f1baf9500000000, 0x0333393600000000, 0x65e639ea00000000,
+    0x29ceaf4900000000, 0xbcb0647600000000, 0xf098f2d500000000,
+    0x7fbfd82c00000000, 0x33974e8f00000000, 0xa6e985b000000000,
+    0xeac1131300000000, 0x8c1413cf00000000, 0xc03c856c00000000,
+    0x55424e5300000000, 0x196ad8f000000000, 0xd8ee3e3000000000,
+    0x94c6a89300000000, 0x01b863ac00000000, 0x4d90f50f00000000,
+    0x2b45f5d300000000, 0x676d637000000000, 0xf213a84f00000000,
+    0xbe3b3eec00000000, 0xad5a8d6600000000, 0xe1721bc500000000,
+    0x740cd0fa00000000, 0x3824465900000000, 0x5ef1468500000000,
+    0x12d9d02600000000, 0x87a71b1900000000, 0xcb8f8dba00000000,
+    0x0a0b6b7a00000000, 0x4623fdd900000000, 0xd35d36e600000000,
+    0x9f75a04500000000, 0xf9a0a09900000000, 0xb588363a00000000,
+    0x20f6fd0500000000, 0x6cde6ba600000000, 0xe3f9415f00000000,
+    0xafd1d7fc00000000, 0x3aaf1cc300000000, 0x76878a6000000000,
+    0x10528abc00000000, 0x5c7a1c1f00000000, 0xc904d72000000000,
+    0x852c418300000000, 0x44a8a74300000000, 0x088031e000000000,
+    0x9dfefadf00000000, 0xd1d66c7c00000000, 0xb7036ca000000000,
+    0xfb2bfa0300000000, 0x6e55313c00000000, 0x227da79f00000000,
+    0x099126f200000000, 0x45b9b05100000000, 0xd0c77b6e00000000,
+    0x9cefedcd00000000, 0xfa3aed1100000000, 0xb6127bb200000000,
+    0x236cb08d00000000, 0x6f44262e00000000, 0xaec0c0ee00000000,
+    0xe2e8564d00000000, 0x77969d7200000000, 0x3bbe0bd100000000,
+    0x5d6b0b0d00000000, 0x11439dae00000000, 0x843d569100000000,
+    0xc815c03200000000, 0x4732eacb00000000, 0x0b1a7c6800000000,
+    0x9e64b75700000000, 0xd24c21f400000000, 0xb499212800000000,
+    0xf8b1b78b00000000, 0x6dcf7cb400000000, 0x21e7ea1700000000,
+    0xe0630cd700000000, 0xac4b9a7400000000, 0x3935514b00000000,
+    0x751dc7e800000000, 0x13c8c73400000000, 0x5fe0519700000000,
+    0xca9e9aa800000000, 0x86b60c0b00000000, 0x95d7bf8100000000,
+    0xd9ff292200000000, 0x4c81e21d00000000, 0x00a974be00000000,
+    0x667c746200000000, 0x2a54e2c100000000, 0xbf2a29fe00000000,
+    0xf302bf5d00000000, 0x3286599d00000000, 0x7eaecf3e00000000,
+    0xebd0040100000000, 0xa7f892a200000000, 0xc12d927e00000000,
+    0x8d0504dd00000000, 0x187bcfe200000000, 0x5453594100000000,
+    0xdb7473b800000000, 0x975ce51b00000000, 0x02222e2400000000,
+    0x4e0ab88700000000, 0x28dfb85b00000000, 0x64f72ef800000000,
+    0xf189e5c700000000, 0xbda1736400000000, 0x7c2595a400000000,
+    0x300d030700000000, 0xa573c83800000000, 0xe95b5e9b00000000,
+    0x8f8e5e4700000000, 0xc3a6c8e400000000, 0x56d803db00000000,
+    0x1af0957800000000},
+   {0x0000000000000000, 0x939bc97f00000000, 0x263793ff00000000,
+    0xb5ac5a8000000000, 0x0d68572400000000, 0x9ef39e5b00000000,
+    0x2b5fc4db00000000, 0xb8c40da400000000, 0x1ad0ae4800000000,
+    0x894b673700000000, 0x3ce73db700000000, 0xaf7cf4c800000000,
+    0x17b8f96c00000000, 0x8423301300000000, 0x318f6a9300000000,
+    0xa214a3ec00000000, 0x34a05d9100000000, 0xa73b94ee00000000,
+    0x1297ce6e00000000, 0x810c071100000000, 0x39c80ab500000000,
+    0xaa53c3ca00000000, 0x1fff994a00000000, 0x8c64503500000000,
+    0x2e70f3d900000000, 0xbdeb3aa600000000, 0x0847602600000000,
+    0x9bdca95900000000, 0x2318a4fd00000000, 0xb0836d8200000000,
+    0x052f370200000000, 0x96b4fe7d00000000, 0x2946caf900000000,
+    0xbadd038600000000, 0x0f71590600000000, 0x9cea907900000000,
+    0x242e9ddd00000000, 0xb7b554a200000000, 0x02190e2200000000,
+    0x9182c75d00000000, 0x339664b100000000, 0xa00dadce00000000,
+    0x15a1f74e00000000, 0x863a3e3100000000, 0x3efe339500000000,
+    0xad65faea00000000, 0x18c9a06a00000000, 0x8b52691500000000,
+    0x1de6976800000000, 0x8e7d5e1700000000, 0x3bd1049700000000,
+    0xa84acde800000000, 0x108ec04c00000000, 0x8315093300000000,
+    0x36b953b300000000, 0xa5229acc00000000, 0x0736392000000000,
+    0x94adf05f00000000, 0x2101aadf00000000, 0xb29a63a000000000,
+    0x0a5e6e0400000000, 0x99c5a77b00000000, 0x2c69fdfb00000000,
+    0xbff2348400000000, 0x138ae52800000000, 0x80112c5700000000,
+    0x35bd76d700000000, 0xa626bfa800000000, 0x1ee2b20c00000000,
+    0x8d797b7300000000, 0x38d521f300000000, 0xab4ee88c00000000,
+    0x095a4b6000000000, 0x9ac1821f00000000, 0x2f6dd89f00000000,
+    0xbcf611e000000000, 0x04321c4400000000, 0x97a9d53b00000000,
+    0x22058fbb00000000, 0xb19e46c400000000, 0x272ab8b900000000,
+    0xb4b171c600000000, 0x011d2b4600000000, 0x9286e23900000000,
+    0x2a42ef9d00000000, 0xb9d926e200000000, 0x0c757c6200000000,
+    0x9feeb51d00000000, 0x3dfa16f100000000, 0xae61df8e00000000,
+    0x1bcd850e00000000, 0x88564c7100000000, 0x309241d500000000,
+    0xa30988aa00000000, 0x16a5d22a00000000, 0x853e1b5500000000,
+    0x3acc2fd100000000, 0xa957e6ae00000000, 0x1cfbbc2e00000000,
+    0x8f60755100000000, 0x37a478f500000000, 0xa43fb18a00000000,
+    0x1193eb0a00000000, 0x8208227500000000, 0x201c819900000000,
+    0xb38748e600000000, 0x062b126600000000, 0x95b0db1900000000,
+    0x2d74d6bd00000000, 0xbeef1fc200000000, 0x0b43454200000000,
+    0x98d88c3d00000000, 0x0e6c724000000000, 0x9df7bb3f00000000,
+    0x285be1bf00000000, 0xbbc028c000000000, 0x0304256400000000,
+    0x909fec1b00000000, 0x2533b69b00000000, 0xb6a87fe400000000,
+    0x14bcdc0800000000, 0x8727157700000000, 0x328b4ff700000000,
+    0xa110868800000000, 0x19d48b2c00000000, 0x8a4f425300000000,
+    0x3fe318d300000000, 0xac78d1ac00000000, 0x2614cb5100000000,
+    0xb58f022e00000000, 0x002358ae00000000, 0x93b891d100000000,
+    0x2b7c9c7500000000, 0xb8e7550a00000000, 0x0d4b0f8a00000000,
+    0x9ed0c6f500000000, 0x3cc4651900000000, 0xaf5fac6600000000,
+    0x1af3f6e600000000, 0x89683f9900000000, 0x31ac323d00000000,
+    0xa237fb4200000000, 0x179ba1c200000000, 0x840068bd00000000,
+    0x12b496c000000000, 0x812f5fbf00000000, 0x3483053f00000000,
+    0xa718cc4000000000, 0x1fdcc1e400000000, 0x8c47089b00000000,
+    0x39eb521b00000000, 0xaa709b6400000000, 0x0864388800000000,
+    0x9bfff1f700000000, 0x2e53ab7700000000, 0xbdc8620800000000,
+    0x050c6fac00000000, 0x9697a6d300000000, 0x233bfc5300000000,
+    0xb0a0352c00000000, 0x0f5201a800000000, 0x9cc9c8d700000000,
+    0x2965925700000000, 0xbafe5b2800000000, 0x023a568c00000000,
+    0x91a19ff300000000, 0x240dc57300000000, 0xb7960c0c00000000,
+    0x1582afe000000000, 0x8619669f00000000, 0x33b53c1f00000000,
+    0xa02ef56000000000, 0x18eaf8c400000000, 0x8b7131bb00000000,
+    0x3edd6b3b00000000, 0xad46a24400000000, 0x3bf25c3900000000,
+    0xa869954600000000, 0x1dc5cfc600000000, 0x8e5e06b900000000,
+    0x369a0b1d00000000, 0xa501c26200000000, 0x10ad98e200000000,
+    0x8336519d00000000, 0x2122f27100000000, 0xb2b93b0e00000000,
+    0x0715618e00000000, 0x948ea8f100000000, 0x2c4aa55500000000,
+    0xbfd16c2a00000000, 0x0a7d36aa00000000, 0x99e6ffd500000000,
+    0x359e2e7900000000, 0xa605e70600000000, 0x13a9bd8600000000,
+    0x803274f900000000, 0x38f6795d00000000, 0xab6db02200000000,
+    0x1ec1eaa200000000, 0x8d5a23dd00000000, 0x2f4e803100000000,
+    0xbcd5494e00000000, 0x097913ce00000000, 0x9ae2dab100000000,
+    0x2226d71500000000, 0xb1bd1e6a00000000, 0x041144ea00000000,
+    0x978a8d9500000000, 0x013e73e800000000, 0x92a5ba9700000000,
+    0x2709e01700000000, 0xb492296800000000, 0x0c5624cc00000000,
+    0x9fcdedb300000000, 0x2a61b73300000000, 0xb9fa7e4c00000000,
+    0x1beedda000000000, 0x887514df00000000, 0x3dd94e5f00000000,
+    0xae42872000000000, 0x16868a8400000000, 0x851d43fb00000000,
+    0x30b1197b00000000, 0xa32ad00400000000, 0x1cd8e48000000000,
+    0x8f432dff00000000, 0x3aef777f00000000, 0xa974be0000000000,
+    0x11b0b3a400000000, 0x822b7adb00000000, 0x3787205b00000000,
+    0xa41ce92400000000, 0x06084ac800000000, 0x959383b700000000,
+    0x203fd93700000000, 0xb3a4104800000000, 0x0b601dec00000000,
+    0x98fbd49300000000, 0x2d578e1300000000, 0xbecc476c00000000,
+    0x2878b91100000000, 0xbbe3706e00000000, 0x0e4f2aee00000000,
+    0x9dd4e39100000000, 0x2510ee3500000000, 0xb68b274a00000000,
+    0x03277dca00000000, 0x90bcb4b500000000, 0x32a8175900000000,
+    0xa133de2600000000, 0x149f84a600000000, 0x87044dd900000000,
+    0x3fc0407d00000000, 0xac5b890200000000, 0x19f7d38200000000,
+    0x8a6c1afd00000000},
+   {0x0000000000000000, 0x650b796900000000, 0xca16f2d200000000,
+    0xaf1d8bbb00000000, 0xd52b957e00000000, 0xb020ec1700000000,
+    0x1f3d67ac00000000, 0x7a361ec500000000, 0xaa572afd00000000,
+    0xcf5c539400000000, 0x6041d82f00000000, 0x054aa14600000000,
+    0x7f7cbf8300000000, 0x1a77c6ea00000000, 0xb56a4d5100000000,
+    0xd061343800000000, 0x15a9252100000000, 0x70a25c4800000000,
+    0xdfbfd7f300000000, 0xbab4ae9a00000000, 0xc082b05f00000000,
+    0xa589c93600000000, 0x0a94428d00000000, 0x6f9f3be400000000,
+    0xbffe0fdc00000000, 0xdaf576b500000000, 0x75e8fd0e00000000,
+    0x10e3846700000000, 0x6ad59aa200000000, 0x0fdee3cb00000000,
+    0xa0c3687000000000, 0xc5c8111900000000, 0x2a524b4200000000,
+    0x4f59322b00000000, 0xe044b99000000000, 0x854fc0f900000000,
+    0xff79de3c00000000, 0x9a72a75500000000, 0x356f2cee00000000,
+    0x5064558700000000, 0x800561bf00000000, 0xe50e18d600000000,
+    0x4a13936d00000000, 0x2f18ea0400000000, 0x552ef4c100000000,
+    0x30258da800000000, 0x9f38061300000000, 0xfa337f7a00000000,
+    0x3ffb6e6300000000, 0x5af0170a00000000, 0xf5ed9cb100000000,
+    0x90e6e5d800000000, 0xead0fb1d00000000, 0x8fdb827400000000,
+    0x20c609cf00000000, 0x45cd70a600000000, 0x95ac449e00000000,
+    0xf0a73df700000000, 0x5fbab64c00000000, 0x3ab1cf2500000000,
+    0x4087d1e000000000, 0x258ca88900000000, 0x8a91233200000000,
+    0xef9a5a5b00000000, 0x54a4968400000000, 0x31afefed00000000,
+    0x9eb2645600000000, 0xfbb91d3f00000000, 0x818f03fa00000000,
+    0xe4847a9300000000, 0x4b99f12800000000, 0x2e92884100000000,
+    0xfef3bc7900000000, 0x9bf8c51000000000, 0x34e54eab00000000,
+    0x51ee37c200000000, 0x2bd8290700000000, 0x4ed3506e00000000,
+    0xe1cedbd500000000, 0x84c5a2bc00000000, 0x410db3a500000000,
+    0x2406cacc00000000, 0x8b1b417700000000, 0xee10381e00000000,
+    0x942626db00000000, 0xf12d5fb200000000, 0x5e30d40900000000,
+    0x3b3bad6000000000, 0xeb5a995800000000, 0x8e51e03100000000,
+    0x214c6b8a00000000, 0x444712e300000000, 0x3e710c2600000000,
+    0x5b7a754f00000000, 0xf467fef400000000, 0x916c879d00000000,
+    0x7ef6ddc600000000, 0x1bfda4af00000000, 0xb4e02f1400000000,
+    0xd1eb567d00000000, 0xabdd48b800000000, 0xced631d100000000,
+    0x61cbba6a00000000, 0x04c0c30300000000, 0xd4a1f73b00000000,
+    0xb1aa8e5200000000, 0x1eb705e900000000, 0x7bbc7c8000000000,
+    0x018a624500000000, 0x64811b2c00000000, 0xcb9c909700000000,
+    0xae97e9fe00000000, 0x6b5ff8e700000000, 0x0e54818e00000000,
+    0xa1490a3500000000, 0xc442735c00000000, 0xbe746d9900000000,
+    0xdb7f14f000000000, 0x74629f4b00000000, 0x1169e62200000000,
+    0xc108d21a00000000, 0xa403ab7300000000, 0x0b1e20c800000000,
+    0x6e1559a100000000, 0x1423476400000000, 0x71283e0d00000000,
+    0xde35b5b600000000, 0xbb3eccdf00000000, 0xe94e5cd200000000,
+    0x8c4525bb00000000, 0x2358ae0000000000, 0x4653d76900000000,
+    0x3c65c9ac00000000, 0x596eb0c500000000, 0xf6733b7e00000000,
+    0x9378421700000000, 0x4319762f00000000, 0x26120f4600000000,
+    0x890f84fd00000000, 0xec04fd9400000000, 0x9632e35100000000,
+    0xf3399a3800000000, 0x5c24118300000000, 0x392f68ea00000000,
+    0xfce779f300000000, 0x99ec009a00000000, 0x36f18b2100000000,
+    0x53faf24800000000, 0x29ccec8d00000000, 0x4cc795e400000000,
+    0xe3da1e5f00000000, 0x86d1673600000000, 0x56b0530e00000000,
+    0x33bb2a6700000000, 0x9ca6a1dc00000000, 0xf9add8b500000000,
+    0x839bc67000000000, 0xe690bf1900000000, 0x498d34a200000000,
+    0x2c864dcb00000000, 0xc31c179000000000, 0xa6176ef900000000,
+    0x090ae54200000000, 0x6c019c2b00000000, 0x163782ee00000000,
+    0x733cfb8700000000, 0xdc21703c00000000, 0xb92a095500000000,
+    0x694b3d6d00000000, 0x0c40440400000000, 0xa35dcfbf00000000,
+    0xc656b6d600000000, 0xbc60a81300000000, 0xd96bd17a00000000,
+    0x76765ac100000000, 0x137d23a800000000, 0xd6b532b100000000,
+    0xb3be4bd800000000, 0x1ca3c06300000000, 0x79a8b90a00000000,
+    0x039ea7cf00000000, 0x6695dea600000000, 0xc988551d00000000,
+    0xac832c7400000000, 0x7ce2184c00000000, 0x19e9612500000000,
+    0xb6f4ea9e00000000, 0xd3ff93f700000000, 0xa9c98d3200000000,
+    0xccc2f45b00000000, 0x63df7fe000000000, 0x06d4068900000000,
+    0xbdeaca5600000000, 0xd8e1b33f00000000, 0x77fc388400000000,
+    0x12f741ed00000000, 0x68c15f2800000000, 0x0dca264100000000,
+    0xa2d7adfa00000000, 0xc7dcd49300000000, 0x17bde0ab00000000,
+    0x72b699c200000000, 0xddab127900000000, 0xb8a06b1000000000,
+    0xc29675d500000000, 0xa79d0cbc00000000, 0x0880870700000000,
+    0x6d8bfe6e00000000, 0xa843ef7700000000, 0xcd48961e00000000,
+    0x62551da500000000, 0x075e64cc00000000, 0x7d687a0900000000,
+    0x1863036000000000, 0xb77e88db00000000, 0xd275f1b200000000,
+    0x0214c58a00000000, 0x671fbce300000000, 0xc802375800000000,
+    0xad094e3100000000, 0xd73f50f400000000, 0xb234299d00000000,
+    0x1d29a22600000000, 0x7822db4f00000000, 0x97b8811400000000,
+    0xf2b3f87d00000000, 0x5dae73c600000000, 0x38a50aaf00000000,
+    0x4293146a00000000, 0x27986d0300000000, 0x8885e6b800000000,
+    0xed8e9fd100000000, 0x3defabe900000000, 0x58e4d28000000000,
+    0xf7f9593b00000000, 0x92f2205200000000, 0xe8c43e9700000000,
+    0x8dcf47fe00000000, 0x22d2cc4500000000, 0x47d9b52c00000000,
+    0x8211a43500000000, 0xe71add5c00000000, 0x480756e700000000,
+    0x2d0c2f8e00000000, 0x573a314b00000000, 0x3231482200000000,
+    0x9d2cc39900000000, 0xf827baf000000000, 0x28468ec800000000,
+    0x4d4df7a100000000, 0xe2507c1a00000000, 0x875b057300000000,
+    0xfd6d1bb600000000, 0x986662df00000000, 0x377be96400000000,
+    0x5270900d00000000},
+   {0x0000000000000000, 0xdcecb13d00000000, 0xb8d9637b00000000,
+    0x6435d24600000000, 0x70b3c7f600000000, 0xac5f76cb00000000,
+    0xc86aa48d00000000, 0x148615b000000000, 0xa160fe3600000000,
+    0x7d8c4f0b00000000, 0x19b99d4d00000000, 0xc5552c7000000000,
+    0xd1d339c000000000, 0x0d3f88fd00000000, 0x690a5abb00000000,
+    0xb5e6eb8600000000, 0x42c1fc6d00000000, 0x9e2d4d5000000000,
+    0xfa189f1600000000, 0x26f42e2b00000000, 0x32723b9b00000000,
+    0xee9e8aa600000000, 0x8aab58e000000000, 0x5647e9dd00000000,
+    0xe3a1025b00000000, 0x3f4db36600000000, 0x5b78612000000000,
+    0x8794d01d00000000, 0x9312c5ad00000000, 0x4ffe749000000000,
+    0x2bcba6d600000000, 0xf72717eb00000000, 0x8482f9db00000000,
+    0x586e48e600000000, 0x3c5b9aa000000000, 0xe0b72b9d00000000,
+    0xf4313e2d00000000, 0x28dd8f1000000000, 0x4ce85d5600000000,
+    0x9004ec6b00000000, 0x25e207ed00000000, 0xf90eb6d000000000,
+    0x9d3b649600000000, 0x41d7d5ab00000000, 0x5551c01b00000000,
+    0x89bd712600000000, 0xed88a36000000000, 0x3164125d00000000,
+    0xc64305b600000000, 0x1aafb48b00000000, 0x7e9a66cd00000000,
+    0xa276d7f000000000, 0xb6f0c24000000000, 0x6a1c737d00000000,
+    0x0e29a13b00000000, 0xd2c5100600000000, 0x6723fb8000000000,
+    0xbbcf4abd00000000, 0xdffa98fb00000000, 0x031629c600000000,
+    0x17903c7600000000, 0xcb7c8d4b00000000, 0xaf495f0d00000000,
+    0x73a5ee3000000000, 0x4903826c00000000, 0x95ef335100000000,
+    0xf1dae11700000000, 0x2d36502a00000000, 0x39b0459a00000000,
+    0xe55cf4a700000000, 0x816926e100000000, 0x5d8597dc00000000,
+    0xe8637c5a00000000, 0x348fcd6700000000, 0x50ba1f2100000000,
+    0x8c56ae1c00000000, 0x98d0bbac00000000, 0x443c0a9100000000,
+    0x2009d8d700000000, 0xfce569ea00000000, 0x0bc27e0100000000,
+    0xd72ecf3c00000000, 0xb31b1d7a00000000, 0x6ff7ac4700000000,
+    0x7b71b9f700000000, 0xa79d08ca00000000, 0xc3a8da8c00000000,
+    0x1f446bb100000000, 0xaaa2803700000000, 0x764e310a00000000,
+    0x127be34c00000000, 0xce97527100000000, 0xda1147c100000000,
+    0x06fdf6fc00000000, 0x62c824ba00000000, 0xbe24958700000000,
+    0xcd817bb700000000, 0x116dca8a00000000, 0x755818cc00000000,
+    0xa9b4a9f100000000, 0xbd32bc4100000000, 0x61de0d7c00000000,
+    0x05ebdf3a00000000, 0xd9076e0700000000, 0x6ce1858100000000,
+    0xb00d34bc00000000, 0xd438e6fa00000000, 0x08d457c700000000,
+    0x1c52427700000000, 0xc0bef34a00000000, 0xa48b210c00000000,
+    0x7867903100000000, 0x8f4087da00000000, 0x53ac36e700000000,
+    0x3799e4a100000000, 0xeb75559c00000000, 0xfff3402c00000000,
+    0x231ff11100000000, 0x472a235700000000, 0x9bc6926a00000000,
+    0x2e2079ec00000000, 0xf2ccc8d100000000, 0x96f91a9700000000,
+    0x4a15abaa00000000, 0x5e93be1a00000000, 0x827f0f2700000000,
+    0xe64add6100000000, 0x3aa66c5c00000000, 0x920604d900000000,
+    0x4eeab5e400000000, 0x2adf67a200000000, 0xf633d69f00000000,
+    0xe2b5c32f00000000, 0x3e59721200000000, 0x5a6ca05400000000,
+    0x8680116900000000, 0x3366faef00000000, 0xef8a4bd200000000,
+    0x8bbf999400000000, 0x575328a900000000, 0x43d53d1900000000,
+    0x9f398c2400000000, 0xfb0c5e6200000000, 0x27e0ef5f00000000,
+    0xd0c7f8b400000000, 0x0c2b498900000000, 0x681e9bcf00000000,
+    0xb4f22af200000000, 0xa0743f4200000000, 0x7c988e7f00000000,
+    0x18ad5c3900000000, 0xc441ed0400000000, 0x71a7068200000000,
+    0xad4bb7bf00000000, 0xc97e65f900000000, 0x1592d4c400000000,
+    0x0114c17400000000, 0xddf8704900000000, 0xb9cda20f00000000,
+    0x6521133200000000, 0x1684fd0200000000, 0xca684c3f00000000,
+    0xae5d9e7900000000, 0x72b12f4400000000, 0x66373af400000000,
+    0xbadb8bc900000000, 0xdeee598f00000000, 0x0202e8b200000000,
+    0xb7e4033400000000, 0x6b08b20900000000, 0x0f3d604f00000000,
+    0xd3d1d17200000000, 0xc757c4c200000000, 0x1bbb75ff00000000,
+    0x7f8ea7b900000000, 0xa362168400000000, 0x5445016f00000000,
+    0x88a9b05200000000, 0xec9c621400000000, 0x3070d32900000000,
+    0x24f6c69900000000, 0xf81a77a400000000, 0x9c2fa5e200000000,
+    0x40c314df00000000, 0xf525ff5900000000, 0x29c94e6400000000,
+    0x4dfc9c2200000000, 0x91102d1f00000000, 0x859638af00000000,
+    0x597a899200000000, 0x3d4f5bd400000000, 0xe1a3eae900000000,
+    0xdb0586b500000000, 0x07e9378800000000, 0x63dce5ce00000000,
+    0xbf3054f300000000, 0xabb6414300000000, 0x775af07e00000000,
+    0x136f223800000000, 0xcf83930500000000, 0x7a65788300000000,
+    0xa689c9be00000000, 0xc2bc1bf800000000, 0x1e50aac500000000,
+    0x0ad6bf7500000000, 0xd63a0e4800000000, 0xb20fdc0e00000000,
+    0x6ee36d3300000000, 0x99c47ad800000000, 0x4528cbe500000000,
+    0x211d19a300000000, 0xfdf1a89e00000000, 0xe977bd2e00000000,
+    0x359b0c1300000000, 0x51aede5500000000, 0x8d426f6800000000,
+    0x38a484ee00000000, 0xe44835d300000000, 0x807de79500000000,
+    0x5c9156a800000000, 0x4817431800000000, 0x94fbf22500000000,
+    0xf0ce206300000000, 0x2c22915e00000000, 0x5f877f6e00000000,
+    0x836bce5300000000, 0xe75e1c1500000000, 0x3bb2ad2800000000,
+    0x2f34b89800000000, 0xf3d809a500000000, 0x97eddbe300000000,
+    0x4b016ade00000000, 0xfee7815800000000, 0x220b306500000000,
+    0x463ee22300000000, 0x9ad2531e00000000, 0x8e5446ae00000000,
+    0x52b8f79300000000, 0x368d25d500000000, 0xea6194e800000000,
+    0x1d46830300000000, 0xc1aa323e00000000, 0xa59fe07800000000,
+    0x7973514500000000, 0x6df544f500000000, 0xb119f5c800000000,
+    0xd52c278e00000000, 0x09c096b300000000, 0xbc267d3500000000,
+    0x60cacc0800000000, 0x04ff1e4e00000000, 0xd813af7300000000,
+    0xcc95bac300000000, 0x10790bfe00000000, 0x744cd9b800000000,
+    0xa8a0688500000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+   {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f,
+    0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999,
+    0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee,
+    0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615,
+    0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383,
+    0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb,
+    0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275,
+    0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d,
+    0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b,
+    0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460,
+    0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317,
+    0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1,
+    0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5,
+    0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd,
+    0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04,
+    0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c,
+    0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7,
+    0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11,
+    0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66,
+    0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7,
+    0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871,
+    0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309,
+    0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd,
+    0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85,
+    0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913,
+    0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d,
+    0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a,
+    0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc,
+    0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57,
+    0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f,
+    0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6,
+    0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e,
+    0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f,
+    0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289,
+    0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe,
+    0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05,
+    0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893,
+    0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb,
+    0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0,
+    0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8,
+    0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e,
+    0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5,
+    0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2,
+    0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574,
+    0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5,
+    0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add,
+    0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114,
+    0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c,
+    0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7,
+    0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701,
+    0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076,
+    0x09cd8551},
+   {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193,
+    0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2,
+    0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c,
+    0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71,
+    0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a,
+    0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d,
+    0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71,
+    0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436,
+    0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d,
+    0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000,
+    0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae,
+    0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf,
+    0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930,
+    0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277,
+    0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff,
+    0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8,
+    0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef,
+    0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e,
+    0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20,
+    0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95,
+    0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e,
+    0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9,
+    0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d,
+    0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a,
+    0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151,
+    0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4,
+    0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a,
+    0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b,
+    0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c,
+    0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b,
+    0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3,
+    0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4,
+    0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b,
+    0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a,
+    0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4,
+    0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189,
+    0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92,
+    0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5,
+    0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9,
+    0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe,
+    0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5,
+    0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8,
+    0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66,
+    0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707,
+    0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8,
+    0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f,
+    0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707,
+    0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40,
+    0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017,
+    0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876,
+    0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8,
+    0x7bc97a0c},
+   {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300,
+    0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0,
+    0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80,
+    0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701,
+    0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41,
+    0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81,
+    0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43,
+    0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83,
+    0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3,
+    0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42,
+    0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202,
+    0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2,
+    0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7,
+    0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407,
+    0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47,
+    0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87,
+    0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86,
+    0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46,
+    0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506,
+    0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44,
+    0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704,
+    0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4,
+    0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5,
+    0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505,
+    0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45,
+    0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f,
+    0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f,
+    0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f,
+    0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e,
+    0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e,
+    0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e,
+    0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce,
+    0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c,
+    0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc,
+    0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c,
+    0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d,
+    0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d,
+    0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d,
+    0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88,
+    0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48,
+    0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708,
+    0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89,
+    0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9,
+    0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309,
+    0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb,
+    0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b,
+    0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b,
+    0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b,
+    0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a,
+    0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a,
+    0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a,
+    0x7851a2ca},
+   {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb,
+    0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8,
+    0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0,
+    0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f,
+    0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a,
+    0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf,
+    0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5,
+    0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380,
+    0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815,
+    0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa,
+    0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2,
+    0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1,
+    0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1,
+    0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4,
+    0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa,
+    0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df,
+    0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6,
+    0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5,
+    0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad,
+    0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca,
+    0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f,
+    0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a,
+    0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8,
+    0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d,
+    0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708,
+    0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d,
+    0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865,
+    0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636,
+    0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f,
+    0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a,
+    0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744,
+    0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061,
+    0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0,
+    0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293,
+    0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb,
+    0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874,
+    0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1,
+    0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4,
+    0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f,
+    0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a,
+    0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f,
+    0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120,
+    0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778,
+    0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b,
+    0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a,
+    0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af,
+    0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81,
+    0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4,
+    0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd,
+    0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e,
+    0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6,
+    0x566b6848}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+   {0x00000000, 0x9e83da9f, 0x7d01c4e4, 0xe3821e7b, 0xbb04f912,
+    0x2587238d, 0xc6053df6, 0x5886e769, 0x7609f225, 0xe88a28ba,
+    0x0b0836c1, 0x958bec5e, 0xcd0d0b37, 0x538ed1a8, 0xb00ccfd3,
+    0x2e8f154c, 0xec12e44b, 0x72913ed4, 0x911320af, 0x0f90fa30,
+    0x57161d59, 0xc995c7c6, 0x2a17d9bd, 0xb4940322, 0x9a1b166e,
+    0x0498ccf1, 0xe71ad28a, 0x79990815, 0x211fef7c, 0xbf9c35e3,
+    0x5c1e2b98, 0xc29df107, 0xd825c897, 0x46a61208, 0xa5240c73,
+    0x3ba7d6ec, 0x63213185, 0xfda2eb1a, 0x1e20f561, 0x80a32ffe,
+    0xae2c3ab2, 0x30afe02d, 0xd32dfe56, 0x4dae24c9, 0x1528c3a0,
+    0x8bab193f, 0x68290744, 0xf6aadddb, 0x34372cdc, 0xaab4f643,
+    0x4936e838, 0xd7b532a7, 0x8f33d5ce, 0x11b00f51, 0xf232112a,
+    0x6cb1cbb5, 0x423edef9, 0xdcbd0466, 0x3f3f1a1d, 0xa1bcc082,
+    0xf93a27eb, 0x67b9fd74, 0x843be30f, 0x1ab83990, 0xf14de1f4,
+    0x6fce3b6b, 0x8c4c2510, 0x12cfff8f, 0x4a4918e6, 0xd4cac279,
+    0x3748dc02, 0xa9cb069d, 0x874413d1, 0x19c7c94e, 0xfa45d735,
+    0x64c60daa, 0x3c40eac3, 0xa2c3305c, 0x41412e27, 0xdfc2f4b8,
+    0x1d5f05bf, 0x83dcdf20, 0x605ec15b, 0xfedd1bc4, 0xa65bfcad,
+    0x38d82632, 0xdb5a3849, 0x45d9e2d6, 0x6b56f79a, 0xf5d52d05,
+    0x1657337e, 0x88d4e9e1, 0xd0520e88, 0x4ed1d417, 0xad53ca6c,
+    0x33d010f3, 0x29682963, 0xb7ebf3fc, 0x5469ed87, 0xcaea3718,
+    0x926cd071, 0x0cef0aee, 0xef6d1495, 0x71eece0a, 0x5f61db46,
+    0xc1e201d9, 0x22601fa2, 0xbce3c53d, 0xe4652254, 0x7ae6f8cb,
+    0x9964e6b0, 0x07e73c2f, 0xc57acd28, 0x5bf917b7, 0xb87b09cc,
+    0x26f8d353, 0x7e7e343a, 0xe0fdeea5, 0x037ff0de, 0x9dfc2a41,
+    0xb3733f0d, 0x2df0e592, 0xce72fbe9, 0x50f12176, 0x0877c61f,
+    0x96f41c80, 0x757602fb, 0xebf5d864, 0xa39db332, 0x3d1e69ad,
+    0xde9c77d6, 0x401fad49, 0x18994a20, 0x861a90bf, 0x65988ec4,
+    0xfb1b545b, 0xd5944117, 0x4b179b88, 0xa89585f3, 0x36165f6c,
+    0x6e90b805, 0xf013629a, 0x13917ce1, 0x8d12a67e, 0x4f8f5779,
+    0xd10c8de6, 0x328e939d, 0xac0d4902, 0xf48bae6b, 0x6a0874f4,
+    0x898a6a8f, 0x1709b010, 0x3986a55c, 0xa7057fc3, 0x448761b8,
+    0xda04bb27, 0x82825c4e, 0x1c0186d1, 0xff8398aa, 0x61004235,
+    0x7bb87ba5, 0xe53ba13a, 0x06b9bf41, 0x983a65de, 0xc0bc82b7,
+    0x5e3f5828, 0xbdbd4653, 0x233e9ccc, 0x0db18980, 0x9332531f,
+    0x70b04d64, 0xee3397fb, 0xb6b57092, 0x2836aa0d, 0xcbb4b476,
+    0x55376ee9, 0x97aa9fee, 0x09294571, 0xeaab5b0a, 0x74288195,
+    0x2cae66fc, 0xb22dbc63, 0x51afa218, 0xcf2c7887, 0xe1a36dcb,
+    0x7f20b754, 0x9ca2a92f, 0x022173b0, 0x5aa794d9, 0xc4244e46,
+    0x27a6503d, 0xb9258aa2, 0x52d052c6, 0xcc538859, 0x2fd19622,
+    0xb1524cbd, 0xe9d4abd4, 0x7757714b, 0x94d56f30, 0x0a56b5af,
+    0x24d9a0e3, 0xba5a7a7c, 0x59d86407, 0xc75bbe98, 0x9fdd59f1,
+    0x015e836e, 0xe2dc9d15, 0x7c5f478a, 0xbec2b68d, 0x20416c12,
+    0xc3c37269, 0x5d40a8f6, 0x05c64f9f, 0x9b459500, 0x78c78b7b,
+    0xe64451e4, 0xc8cb44a8, 0x56489e37, 0xb5ca804c, 0x2b495ad3,
+    0x73cfbdba, 0xed4c6725, 0x0ece795e, 0x904da3c1, 0x8af59a51,
+    0x147640ce, 0xf7f45eb5, 0x6977842a, 0x31f16343, 0xaf72b9dc,
+    0x4cf0a7a7, 0xd2737d38, 0xfcfc6874, 0x627fb2eb, 0x81fdac90,
+    0x1f7e760f, 0x47f89166, 0xd97b4bf9, 0x3af95582, 0xa47a8f1d,
+    0x66e77e1a, 0xf864a485, 0x1be6bafe, 0x85656061, 0xdde38708,
+    0x43605d97, 0xa0e243ec, 0x3e619973, 0x10ee8c3f, 0x8e6d56a0,
+    0x6def48db, 0xf36c9244, 0xabea752d, 0x3569afb2, 0xd6ebb1c9,
+    0x48686b56},
+   {0x00000000, 0xc0642817, 0x80c9502e, 0x40ad7839, 0x0093a15c,
+    0xc0f7894b, 0x805af172, 0x403ed965, 0x002643b9, 0xc0426bae,
+    0x80ef1397, 0x408b3b80, 0x00b5e2e5, 0xc0d1caf2, 0x807cb2cb,
+    0x40189adc, 0x414af7a9, 0x812edfbe, 0xc183a787, 0x01e78f90,
+    0x41d956f5, 0x81bd7ee2, 0xc11006db, 0x01742ecc, 0x416cb410,
+    0x81089c07, 0xc1a5e43e, 0x01c1cc29, 0x41ff154c, 0x819b3d5b,
+    0xc1364562, 0x01526d75, 0xc3929f88, 0x03f6b79f, 0x435bcfa6,
+    0x833fe7b1, 0xc3013ed4, 0x036516c3, 0x43c86efa, 0x83ac46ed,
+    0xc3b4dc31, 0x03d0f426, 0x437d8c1f, 0x8319a408, 0xc3277d6d,
+    0x0343557a, 0x43ee2d43, 0x838a0554, 0x82d86821, 0x42bc4036,
+    0x0211380f, 0xc2751018, 0x824bc97d, 0x422fe16a, 0x02829953,
+    0xc2e6b144, 0x82fe2b98, 0x429a038f, 0x02377bb6, 0xc25353a1,
+    0x826d8ac4, 0x4209a2d3, 0x02a4daea, 0xc2c0f2fd, 0xc7234eca,
+    0x074766dd, 0x47ea1ee4, 0x878e36f3, 0xc7b0ef96, 0x07d4c781,
+    0x4779bfb8, 0x871d97af, 0xc7050d73, 0x07612564, 0x47cc5d5d,
+    0x87a8754a, 0xc796ac2f, 0x07f28438, 0x475ffc01, 0x873bd416,
+    0x8669b963, 0x460d9174, 0x06a0e94d, 0xc6c4c15a, 0x86fa183f,
+    0x469e3028, 0x06334811, 0xc6576006, 0x864ffada, 0x462bd2cd,
+    0x0686aaf4, 0xc6e282e3, 0x86dc5b86, 0x46b87391, 0x06150ba8,
+    0xc67123bf, 0x04b1d142, 0xc4d5f955, 0x8478816c, 0x441ca97b,
+    0x0422701e, 0xc4465809, 0x84eb2030, 0x448f0827, 0x049792fb,
+    0xc4f3baec, 0x845ec2d5, 0x443aeac2, 0x040433a7, 0xc4601bb0,
+    0x84cd6389, 0x44a94b9e, 0x45fb26eb, 0x859f0efc, 0xc53276c5,
+    0x05565ed2, 0x456887b7, 0x850cafa0, 0xc5a1d799, 0x05c5ff8e,
+    0x45dd6552, 0x85b94d45, 0xc514357c, 0x05701d6b, 0x454ec40e,
+    0x852aec19, 0xc5879420, 0x05e3bc37, 0xcf41ed4f, 0x0f25c558,
+    0x4f88bd61, 0x8fec9576, 0xcfd24c13, 0x0fb66404, 0x4f1b1c3d,
+    0x8f7f342a, 0xcf67aef6, 0x0f0386e1, 0x4faefed8, 0x8fcad6cf,
+    0xcff40faa, 0x0f9027bd, 0x4f3d5f84, 0x8f597793, 0x8e0b1ae6,
+    0x4e6f32f1, 0x0ec24ac8, 0xcea662df, 0x8e98bbba, 0x4efc93ad,
+    0x0e51eb94, 0xce35c383, 0x8e2d595f, 0x4e497148, 0x0ee40971,
+    0xce802166, 0x8ebef803, 0x4edad014, 0x0e77a82d, 0xce13803a,
+    0x0cd372c7, 0xccb75ad0, 0x8c1a22e9, 0x4c7e0afe, 0x0c40d39b,
+    0xcc24fb8c, 0x8c8983b5, 0x4cedaba2, 0x0cf5317e, 0xcc911969,
+    0x8c3c6150, 0x4c584947, 0x0c669022, 0xcc02b835, 0x8cafc00c,
+    0x4ccbe81b, 0x4d99856e, 0x8dfdad79, 0xcd50d540, 0x0d34fd57,
+    0x4d0a2432, 0x8d6e0c25, 0xcdc3741c, 0x0da75c0b, 0x4dbfc6d7,
+    0x8ddbeec0, 0xcd7696f9, 0x0d12beee, 0x4d2c678b, 0x8d484f9c,
+    0xcde537a5, 0x0d811fb2, 0x0862a385, 0xc8068b92, 0x88abf3ab,
+    0x48cfdbbc, 0x08f102d9, 0xc8952ace, 0x883852f7, 0x485c7ae0,
+    0x0844e03c, 0xc820c82b, 0x888db012, 0x48e99805, 0x08d74160,
+    0xc8b36977, 0x881e114e, 0x487a3959, 0x4928542c, 0x894c7c3b,
+    0xc9e10402, 0x09852c15, 0x49bbf570, 0x89dfdd67, 0xc972a55e,
+    0x09168d49, 0x490e1795, 0x896a3f82, 0xc9c747bb, 0x09a36fac,
+    0x499db6c9, 0x89f99ede, 0xc954e6e7, 0x0930cef0, 0xcbf03c0d,
+    0x0b94141a, 0x4b396c23, 0x8b5d4434, 0xcb639d51, 0x0b07b546,
+    0x4baacd7f, 0x8bcee568, 0xcbd67fb4, 0x0bb257a3, 0x4b1f2f9a,
+    0x8b7b078d, 0xcb45dee8, 0x0b21f6ff, 0x4b8c8ec6, 0x8be8a6d1,
+    0x8abacba4, 0x4adee3b3, 0x0a739b8a, 0xca17b39d, 0x8a296af8,
+    0x4a4d42ef, 0x0ae03ad6, 0xca8412c1, 0x8a9c881d, 0x4af8a00a,
+    0x0a55d833, 0xca31f024, 0x8a0f2941, 0x4a6b0156, 0x0ac6796f,
+    0xcaa25178},
+   {0x00000000, 0xd4ea739b, 0xe9d396ed, 0x3d39e576, 0x93a15c00,
+    0x474b2f9b, 0x7a72caed, 0xae98b976, 0x2643b900, 0xf2a9ca9b,
+    0xcf902fed, 0x1b7a5c76, 0xb5e2e500, 0x6108969b, 0x5c3173ed,
+    0x88db0076, 0x4c867201, 0x986c019a, 0xa555e4ec, 0x71bf9777,
+    0xdf272e01, 0x0bcd5d9a, 0x36f4b8ec, 0xe21ecb77, 0x6ac5cb01,
+    0xbe2fb89a, 0x83165dec, 0x57fc2e77, 0xf9649701, 0x2d8ee49a,
+    0x10b701ec, 0xc45d7277, 0x980ce502, 0x4ce69699, 0x71df73ef,
+    0xa5350074, 0x0badb902, 0xdf47ca99, 0xe27e2fef, 0x36945c74,
+    0xbe4f5c02, 0x6aa52f99, 0x579ccaef, 0x8376b974, 0x2dee0002,
+    0xf9047399, 0xc43d96ef, 0x10d7e574, 0xd48a9703, 0x0060e498,
+    0x3d5901ee, 0xe9b37275, 0x472bcb03, 0x93c1b898, 0xaef85dee,
+    0x7a122e75, 0xf2c92e03, 0x26235d98, 0x1b1ab8ee, 0xcff0cb75,
+    0x61687203, 0xb5820198, 0x88bbe4ee, 0x5c519775, 0x3019ca05,
+    0xe4f3b99e, 0xd9ca5ce8, 0x0d202f73, 0xa3b89605, 0x7752e59e,
+    0x4a6b00e8, 0x9e817373, 0x165a7305, 0xc2b0009e, 0xff89e5e8,
+    0x2b639673, 0x85fb2f05, 0x51115c9e, 0x6c28b9e8, 0xb8c2ca73,
+    0x7c9fb804, 0xa875cb9f, 0x954c2ee9, 0x41a65d72, 0xef3ee404,
+    0x3bd4979f, 0x06ed72e9, 0xd2070172, 0x5adc0104, 0x8e36729f,
+    0xb30f97e9, 0x67e5e472, 0xc97d5d04, 0x1d972e9f, 0x20aecbe9,
+    0xf444b872, 0xa8152f07, 0x7cff5c9c, 0x41c6b9ea, 0x952cca71,
+    0x3bb47307, 0xef5e009c, 0xd267e5ea, 0x068d9671, 0x8e569607,
+    0x5abce59c, 0x678500ea, 0xb36f7371, 0x1df7ca07, 0xc91db99c,
+    0xf4245cea, 0x20ce2f71, 0xe4935d06, 0x30792e9d, 0x0d40cbeb,
+    0xd9aab870, 0x77320106, 0xa3d8729d, 0x9ee197eb, 0x4a0be470,
+    0xc2d0e406, 0x163a979d, 0x2b0372eb, 0xffe90170, 0x5171b806,
+    0x859bcb9d, 0xb8a22eeb, 0x6c485d70, 0x6032940b, 0xb4d8e790,
+    0x89e102e6, 0x5d0b717d, 0xf393c80b, 0x2779bb90, 0x1a405ee6,
+    0xceaa2d7d, 0x46712d0b, 0x929b5e90, 0xafa2bbe6, 0x7b48c87d,
+    0xd5d0710b, 0x013a0290, 0x3c03e7e6, 0xe8e9947d, 0x2cb4e60a,
+    0xf85e9591, 0xc56770e7, 0x118d037c, 0xbf15ba0a, 0x6bffc991,
+    0x56c62ce7, 0x822c5f7c, 0x0af75f0a, 0xde1d2c91, 0xe324c9e7,
+    0x37ceba7c, 0x9956030a, 0x4dbc7091, 0x708595e7, 0xa46fe67c,
+    0xf83e7109, 0x2cd40292, 0x11ede7e4, 0xc507947f, 0x6b9f2d09,
+    0xbf755e92, 0x824cbbe4, 0x56a6c87f, 0xde7dc809, 0x0a97bb92,
+    0x37ae5ee4, 0xe3442d7f, 0x4ddc9409, 0x9936e792, 0xa40f02e4,
+    0x70e5717f, 0xb4b80308, 0x60527093, 0x5d6b95e5, 0x8981e67e,
+    0x27195f08, 0xf3f32c93, 0xcecac9e5, 0x1a20ba7e, 0x92fbba08,
+    0x4611c993, 0x7b282ce5, 0xafc25f7e, 0x015ae608, 0xd5b09593,
+    0xe88970e5, 0x3c63037e, 0x502b5e0e, 0x84c12d95, 0xb9f8c8e3,
+    0x6d12bb78, 0xc38a020e, 0x17607195, 0x2a5994e3, 0xfeb3e778,
+    0x7668e70e, 0xa2829495, 0x9fbb71e3, 0x4b510278, 0xe5c9bb0e,
+    0x3123c895, 0x0c1a2de3, 0xd8f05e78, 0x1cad2c0f, 0xc8475f94,
+    0xf57ebae2, 0x2194c979, 0x8f0c700f, 0x5be60394, 0x66dfe6e2,
+    0xb2359579, 0x3aee950f, 0xee04e694, 0xd33d03e2, 0x07d77079,
+    0xa94fc90f, 0x7da5ba94, 0x409c5fe2, 0x94762c79, 0xc827bb0c,
+    0x1ccdc897, 0x21f42de1, 0xf51e5e7a, 0x5b86e70c, 0x8f6c9497,
+    0xb25571e1, 0x66bf027a, 0xee64020c, 0x3a8e7197, 0x07b794e1,
+    0xd35de77a, 0x7dc55e0c, 0xa92f2d97, 0x9416c8e1, 0x40fcbb7a,
+    0x84a1c90d, 0x504bba96, 0x6d725fe0, 0xb9982c7b, 0x1700950d,
+    0xc3eae696, 0xfed303e0, 0x2a39707b, 0xa2e2700d, 0x76080396,
+    0x4b31e6e0, 0x9fdb957b, 0x31432c0d, 0xe5a95f96, 0xd890bae0,
+    0x0c7ac97b},
+   {0x00000000, 0x27652581, 0x0fcc3bd9, 0x28a91e58, 0x5f9e0669,
+    0x78fb23e8, 0x50523db0, 0x77371831, 0xbe3c0dd2, 0x99592853,
+    0xb1f0360b, 0x9695138a, 0xe1a20bbb, 0xc6c72e3a, 0xee6e3062,
+    0xc90b15e3, 0x3d7f6b7f, 0x1a1a4efe, 0x32b350a6, 0x15d67527,
+    0x62e16d16, 0x45844897, 0x6d2d56cf, 0x4a48734e, 0x834366ad,
+    0xa426432c, 0x8c8f5d74, 0xabea78f5, 0xdcdd60c4, 0xfbb84545,
+    0xd3115b1d, 0xf4747e9c, 0x7afed6fe, 0x5d9bf37f, 0x7532ed27,
+    0x5257c8a6, 0x2560d097, 0x0205f516, 0x2aaceb4e, 0x0dc9cecf,
+    0xc4c2db2c, 0xe3a7fead, 0xcb0ee0f5, 0xec6bc574, 0x9b5cdd45,
+    0xbc39f8c4, 0x9490e69c, 0xb3f5c31d, 0x4781bd81, 0x60e49800,
+    0x484d8658, 0x6f28a3d9, 0x181fbbe8, 0x3f7a9e69, 0x17d38031,
+    0x30b6a5b0, 0xf9bdb053, 0xded895d2, 0xf6718b8a, 0xd114ae0b,
+    0xa623b63a, 0x814693bb, 0xa9ef8de3, 0x8e8aa862, 0xb5fadc26,
+    0x929ff9a7, 0xba36e7ff, 0x9d53c27e, 0xea64da4f, 0xcd01ffce,
+    0xe5a8e196, 0xc2cdc417, 0x0bc6d1f4, 0x2ca3f475, 0x040aea2d,
+    0x236fcfac, 0x5458d79d, 0x733df21c, 0x5b94ec44, 0x7cf1c9c5,
+    0x8885b759, 0xafe092d8, 0x87498c80, 0xa02ca901, 0xd71bb130,
+    0xf07e94b1, 0xd8d78ae9, 0xffb2af68, 0x36b9ba8b, 0x11dc9f0a,
+    0x39758152, 0x1e10a4d3, 0x6927bce2, 0x4e429963, 0x66eb873b,
+    0x418ea2ba, 0xcf040ad8, 0xe8612f59, 0xc0c83101, 0xe7ad1480,
+    0x909a0cb1, 0xb7ff2930, 0x9f563768, 0xb83312e9, 0x7138070a,
+    0x565d228b, 0x7ef43cd3, 0x59911952, 0x2ea60163, 0x09c324e2,
+    0x216a3aba, 0x060f1f3b, 0xf27b61a7, 0xd51e4426, 0xfdb75a7e,
+    0xdad27fff, 0xade567ce, 0x8a80424f, 0xa2295c17, 0x854c7996,
+    0x4c476c75, 0x6b2249f4, 0x438b57ac, 0x64ee722d, 0x13d96a1c,
+    0x34bc4f9d, 0x1c1551c5, 0x3b707444, 0x6af5b94d, 0x4d909ccc,
+    0x65398294, 0x425ca715, 0x356bbf24, 0x120e9aa5, 0x3aa784fd,
+    0x1dc2a17c, 0xd4c9b49f, 0xf3ac911e, 0xdb058f46, 0xfc60aac7,
+    0x8b57b2f6, 0xac329777, 0x849b892f, 0xa3feacae, 0x578ad232,
+    0x70eff7b3, 0x5846e9eb, 0x7f23cc6a, 0x0814d45b, 0x2f71f1da,
+    0x07d8ef82, 0x20bdca03, 0xe9b6dfe0, 0xced3fa61, 0xe67ae439,
+    0xc11fc1b8, 0xb628d989, 0x914dfc08, 0xb9e4e250, 0x9e81c7d1,
+    0x100b6fb3, 0x376e4a32, 0x1fc7546a, 0x38a271eb, 0x4f9569da,
+    0x68f04c5b, 0x40595203, 0x673c7782, 0xae376261, 0x895247e0,
+    0xa1fb59b8, 0x869e7c39, 0xf1a96408, 0xd6cc4189, 0xfe655fd1,
+    0xd9007a50, 0x2d7404cc, 0x0a11214d, 0x22b83f15, 0x05dd1a94,
+    0x72ea02a5, 0x558f2724, 0x7d26397c, 0x5a431cfd, 0x9348091e,
+    0xb42d2c9f, 0x9c8432c7, 0xbbe11746, 0xccd60f77, 0xebb32af6,
+    0xc31a34ae, 0xe47f112f, 0xdf0f656b, 0xf86a40ea, 0xd0c35eb2,
+    0xf7a67b33, 0x80916302, 0xa7f44683, 0x8f5d58db, 0xa8387d5a,
+    0x613368b9, 0x46564d38, 0x6eff5360, 0x499a76e1, 0x3ead6ed0,
+    0x19c84b51, 0x31615509, 0x16047088, 0xe2700e14, 0xc5152b95,
+    0xedbc35cd, 0xcad9104c, 0xbdee087d, 0x9a8b2dfc, 0xb22233a4,
+    0x95471625, 0x5c4c03c6, 0x7b292647, 0x5380381f, 0x74e51d9e,
+    0x03d205af, 0x24b7202e, 0x0c1e3e76, 0x2b7b1bf7, 0xa5f1b395,
+    0x82949614, 0xaa3d884c, 0x8d58adcd, 0xfa6fb5fc, 0xdd0a907d,
+    0xf5a38e25, 0xd2c6aba4, 0x1bcdbe47, 0x3ca89bc6, 0x1401859e,
+    0x3364a01f, 0x4453b82e, 0x63369daf, 0x4b9f83f7, 0x6cfaa676,
+    0x988ed8ea, 0xbfebfd6b, 0x9742e333, 0xb027c6b2, 0xc710de83,
+    0xe075fb02, 0xc8dce55a, 0xefb9c0db, 0x26b2d538, 0x01d7f0b9,
+    0x297eeee1, 0x0e1bcb60, 0x792cd351, 0x5e49f6d0, 0x76e0e888,
+    0x5185cd09}};
+
+#endif
+
+#endif
+
+#endif
+
+local const z_crc_t FAR x2n_table[] = {
+    0x40000000, 0x20000000, 0x08000000, 0x00800000, 0x00008000,
+    0xedb88320, 0xb1e6b092, 0xa06a2517, 0xed627dae, 0x88d14467,
+    0xd7bbfe6a, 0xec447f11, 0x8e7ea170, 0x6427800e, 0x4d47bae0,
+    0x09fe548f, 0x83852d0f, 0x30362f1a, 0x7b5a9cc3, 0x31fec169,
+    0x9fec022a, 0x6c8dedc4, 0x15d6874d, 0x5fde7a4e, 0xbad90e37,
+    0x2e4e5eef, 0x4eaba214, 0xa8a472c0, 0x429a969e, 0x148d302a,
+    0xc40ba6d0, 0xc4e22c3c};
diff --git a/libs/zlib/deflate.c b/libs/zlib/deflate.c
index 1ec761448..012ea8148 100644
--- a/libs/zlib/deflate.c
+++ b/libs/zlib/deflate.c
@@ -1,5 +1,5 @@
 /* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+ * Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -52,7 +52,7 @@
 #include "deflate.h"
 
 const char deflate_copyright[] =
-   " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler ";
+   " deflate 1.3.1 Copyright 1995-2024 Jean-loup Gailly and Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -60,9 +60,6 @@ const char deflate_copyright[] =
   copyright string in the executable of your product.
  */
 
-/* ===========================================================================
- *  Function prototypes.
- */
 typedef enum {
     need_more,      /* block not completed, need more input or more output */
     block_done,     /* block flush performed */
@@ -70,35 +67,16 @@ typedef enum {
     finish_done     /* finish done, accept no more input or output */
 } block_state;
 
-typedef block_state (*compress_func) OF((deflate_state *s, int flush));
+typedef block_state (*compress_func)(deflate_state *s, int flush);
 /* Compression function. Returns the block state after the call. */
 
-local int deflateStateCheck      OF((z_streamp strm));
-local void slide_hash     OF((deflate_state *s));
-local void fill_window    OF((deflate_state *s));
-local block_state deflate_stored OF((deflate_state *s, int flush));
-local block_state deflate_fast   OF((deflate_state *s, int flush));
+local block_state deflate_stored(deflate_state *s, int flush);
+local block_state deflate_fast(deflate_state *s, int flush);
 #ifndef FASTEST
-local block_state deflate_slow   OF((deflate_state *s, int flush));
-#endif
-local block_state deflate_rle    OF((deflate_state *s, int flush));
-local block_state deflate_huff   OF((deflate_state *s, int flush));
-local void lm_init        OF((deflate_state *s));
-local void putShortMSB    OF((deflate_state *s, uInt b));
-local void flush_pending  OF((z_streamp strm));
-local unsigned read_buf   OF((z_streamp strm, Bytef *buf, unsigned size));
-#ifdef ASMV
-#  pragma message("Assembler code may have bugs -- use at your own risk")
-      void match_init OF((void)); /* asm code initialization */
-      uInt longest_match  OF((deflate_state *s, IPos cur_match));
-#else
-local uInt longest_match  OF((deflate_state *s, IPos cur_match));
-#endif
-
-#ifdef ZLIB_DEBUG
-local  void check_match OF((deflate_state *s, IPos start, IPos match,
-                            int length));
+local block_state deflate_slow(deflate_state *s, int flush);
 #endif
+local block_state deflate_rle(deflate_state *s, int flush);
+local block_state deflate_huff(deflate_state *s, int flush);
 
 /* ===========================================================================
  * Local data
@@ -160,7 +138,7 @@ local const config configuration_table[10] = {
  *    characters, so that a running hash key can be computed from the previous
  *    key instead of complete recalculation each time.
  */
-#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
+#define UPDATE_HASH(s,h,c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask)
 
 
 /* ===========================================================================
@@ -190,17 +168,23 @@ local const config configuration_table[10] = {
  * prev[] will be initialized on the fly.
  */
 #define CLEAR_HASH(s) \
-    s->head[s->hash_size-1] = NIL; \
-    zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
+    do { \
+        s->head[s->hash_size - 1] = NIL; \
+        zmemzero((Bytef *)s->head, \
+                 (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \
+    } while (0)
 
 /* ===========================================================================
  * Slide the hash table when sliding the window down (could be avoided with 32
  * bit values at the expense of memory usage). We slide even when level == 0 to
  * keep the hash table consistent if we switch back to level > 0 later.
  */
-local void slide_hash(s)
-    deflate_state *s;
-{
+#if defined(__has_feature)
+#  if __has_feature(memory_sanitizer)
+     __attribute__((no_sanitize("memory")))
+#  endif
+#endif
+local void slide_hash(deflate_state *s) {
     unsigned n, m;
     Posf *p;
     uInt wsize = s->w_size;
@@ -224,39 +208,181 @@ local void slide_hash(s)
 #endif
 }
 
+/* ===========================================================================
+ * Read a new buffer from the current input stream, update the adler32
+ * and total number of bytes read.  All deflate() input goes through
+ * this function so some applications may wish to modify it to avoid
+ * allocating a large strm->next_in buffer and copying from it.
+ * (See also flush_pending()).
+ */
+local unsigned read_buf(z_streamp strm, Bytef *buf, unsigned size) {
+    unsigned len = strm->avail_in;
+
+    if (len > size) len = size;
+    if (len == 0) return 0;
+
+    strm->avail_in  -= len;
+
+    zmemcpy(buf, strm->next_in, len);
+    if (strm->state->wrap == 1) {
+        strm->adler = adler32(strm->adler, buf, len);
+    }
+#ifdef GZIP
+    else if (strm->state->wrap == 2) {
+        strm->adler = crc32(strm->adler, buf, len);
+    }
+#endif
+    strm->next_in  += len;
+    strm->total_in += len;
+
+    return len;
+}
+
+/* ===========================================================================
+ * Fill the window when the lookahead becomes insufficient.
+ * Updates strstart and lookahead.
+ *
+ * IN assertion: lookahead < MIN_LOOKAHEAD
+ * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
+ *    At least one byte has been read, or avail_in == 0; reads are
+ *    performed for at least two bytes (required for the zip translate_eol
+ *    option -- not supported here).
+ */
+local void fill_window(deflate_state *s) {
+    unsigned n;
+    unsigned more;    /* Amount of free space at the end of the window. */
+    uInt wsize = s->w_size;
+
+    Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
+
+    do {
+        more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
+
+        /* Deal with !@#$% 64K limit: */
+        if (sizeof(int) <= 2) {
+            if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
+                more = wsize;
+
+            } else if (more == (unsigned)(-1)) {
+                /* Very unlikely, but possible on 16 bit machine if
+                 * strstart == 0 && lookahead == 1 (input done a byte at time)
+                 */
+                more--;
+            }
+        }
+
+        /* If the window is almost full and there is insufficient lookahead,
+         * move the upper half to the lower one to make room in the upper half.
+         */
+        if (s->strstart >= wsize + MAX_DIST(s)) {
+
+            zmemcpy(s->window, s->window + wsize, (unsigned)wsize - more);
+            s->match_start -= wsize;
+            s->strstart    -= wsize; /* we now have strstart >= MAX_DIST */
+            s->block_start -= (long) wsize;
+            if (s->insert > s->strstart)
+                s->insert = s->strstart;
+            slide_hash(s);
+            more += wsize;
+        }
+        if (s->strm->avail_in == 0) break;
+
+        /* If there was no sliding:
+         *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
+         *    more == window_size - lookahead - strstart
+         * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
+         * => more >= window_size - 2*WSIZE + 2
+         * In the BIG_MEM or MMAP case (not yet supported),
+         *   window_size == input_size + MIN_LOOKAHEAD  &&
+         *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
+         * Otherwise, window_size == 2*WSIZE so more >= 2.
+         * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
+         */
+        Assert(more >= 2, "more < 2");
+
+        n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more);
+        s->lookahead += n;
+
+        /* Initialize the hash value now that we have some input: */
+        if (s->lookahead + s->insert >= MIN_MATCH) {
+            uInt str = s->strstart - s->insert;
+            s->ins_h = s->window[str];
+            UPDATE_HASH(s, s->ins_h, s->window[str + 1]);
+#if MIN_MATCH != 3
+            Call UPDATE_HASH() MIN_MATCH-3 more times
+#endif
+            while (s->insert) {
+                UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]);
+#ifndef FASTEST
+                s->prev[str & s->w_mask] = s->head[s->ins_h];
+#endif
+                s->head[s->ins_h] = (Pos)str;
+                str++;
+                s->insert--;
+                if (s->lookahead + s->insert < MIN_MATCH)
+                    break;
+            }
+        }
+        /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
+         * but this is not important since only literal bytes will be emitted.
+         */
+
+    } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
+
+    /* If the WIN_INIT bytes after the end of the current data have never been
+     * written, then zero those bytes in order to avoid memory check reports of
+     * the use of uninitialized (or uninitialised as Julian writes) bytes by
+     * the longest match routines.  Update the high water mark for the next
+     * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
+     * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
+     */
+    if (s->high_water < s->window_size) {
+        ulg curr = s->strstart + (ulg)(s->lookahead);
+        ulg init;
+
+        if (s->high_water < curr) {
+            /* Previous high water mark below current data -- zero WIN_INIT
+             * bytes or up to end of window, whichever is less.
+             */
+            init = s->window_size - curr;
+            if (init > WIN_INIT)
+                init = WIN_INIT;
+            zmemzero(s->window + curr, (unsigned)init);
+            s->high_water = curr + init;
+        }
+        else if (s->high_water < (ulg)curr + WIN_INIT) {
+            /* High water mark at or above current data, but below current data
+             * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
+             * to end of window, whichever is less.
+             */
+            init = (ulg)curr + WIN_INIT - s->high_water;
+            if (init > s->window_size - s->high_water)
+                init = s->window_size - s->high_water;
+            zmemzero(s->window + s->high_water, (unsigned)init);
+            s->high_water += init;
+        }
+    }
+
+    Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+           "not enough room for search");
+}
+
 /* ========================================================================= */
-int ZEXPORT deflateInit_(strm, level, version, stream_size)
-    z_streamp strm;
-    int level;
-    const char *version;
-    int stream_size;
-{
+int ZEXPORT deflateInit_(z_streamp strm, int level, const char *version,
+                         int stream_size) {
     return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
                          Z_DEFAULT_STRATEGY, version, stream_size);
     /* To do: ignore strm->next_in if we use it as window */
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
-                  version, stream_size)
-    z_streamp strm;
-    int  level;
-    int  method;
-    int  windowBits;
-    int  memLevel;
-    int  strategy;
-    const char *version;
-    int stream_size;
-{
+int ZEXPORT deflateInit2_(z_streamp strm, int level, int method,
+                          int windowBits, int memLevel, int strategy,
+                          const char *version, int stream_size) {
     deflate_state *s;
     int wrap = 1;
     static const char my_version[] = ZLIB_VERSION;
 
-    ushf *overlay;
-    /* We overlay pending_buf and d_buf+l_buf. This works since the average
-     * output size for (length,distance) codes is <= 24 bits.
-     */
-
     if (version == Z_NULL || version[0] != my_version[0] ||
         stream_size != sizeof(z_stream)) {
         return Z_VERSION_ERROR;
@@ -287,6 +413,8 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
 
     if (windowBits < 0) { /* suppress zlib wrapper */
         wrap = 0;
+        if (windowBits < -15)
+            return Z_STREAM_ERROR;
         windowBits = -windowBits;
     }
 #ifdef GZIP
@@ -316,7 +444,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
     s->hash_bits = (uInt)memLevel + 7;
     s->hash_size = 1 << s->hash_bits;
     s->hash_mask = s->hash_size - 1;
-    s->hash_shift =  ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
+    s->hash_shift =  ((s->hash_bits + MIN_MATCH-1) / MIN_MATCH);
 
     s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
     s->prev   = (Posf *)  ZALLOC(strm, s->w_size, sizeof(Pos));
@@ -326,9 +454,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
 
     s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
 
-    overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
-    s->pending_buf = (uchf *) overlay;
-    s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
+    /* We overlay pending_buf and sym_buf. This works since the average size
+     * for length/distance pairs over any compressed block is assured to be 31
+     * bits or less.
+     *
+     * Analysis: The longest fixed codes are a length code of 8 bits plus 5
+     * extra bits, for lengths 131 to 257. The longest fixed distance codes are
+     * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest
+     * possible fixed-codes length/distance pair is then 31 bits total.
+     *
+     * sym_buf starts one-fourth of the way into pending_buf. So there are
+     * three bytes in sym_buf for every four bytes in pending_buf. Each symbol
+     * in sym_buf is three bytes -- two for the distance and one for the
+     * literal/length. As each symbol is consumed, the pointer to the next
+     * sym_buf value to read moves forward three bytes. From that symbol, up to
+     * 31 bits are written to pending_buf. The closest the written pending_buf
+     * bits gets to the next sym_buf symbol to read is just before the last
+     * code is written. At that time, 31*(n - 2) bits have been written, just
+     * after 24*(n - 2) bits have been consumed from sym_buf. sym_buf starts at
+     * 8*n bits into pending_buf. (Note that the symbol buffer fills when n - 1
+     * symbols are written.) The closest the writing gets to what is unread is
+     * then n + 14 bits. Here n is lit_bufsize, which is 16384 by default, and
+     * can range from 128 to 32768.
+     *
+     * Therefore, at a minimum, there are 142 bits of space between what is
+     * written and what is read in the overlain buffers, so the symbols cannot
+     * be overwritten by the compressed data. That space is actually 139 bits,
+     * due to the three-bit fixed-code block header.
+     *
+     * That covers the case where either Z_FIXED is specified, forcing fixed
+     * codes, or when the use of fixed codes is chosen, because that choice
+     * results in a smaller compressed block than dynamic codes. That latter
+     * condition then assures that the above analysis also covers all dynamic
+     * blocks. A dynamic-code block will only be chosen to be emitted if it has
+     * fewer bits than a fixed-code block would for the same set of symbols.
+     * Therefore its average symbol length is assured to be less than 31. So
+     * the compressed data for a dynamic block also cannot overwrite the
+     * symbols from which it is being constructed.
+     */
+
+    s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, LIT_BUFS);
+    s->pending_buf_size = (ulg)s->lit_bufsize * 4;
 
     if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
         s->pending_buf == Z_NULL) {
@@ -337,8 +503,18 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
         deflateEnd (strm);
         return Z_MEM_ERROR;
     }
-    s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
-    s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
+#ifdef LIT_MEM
+    s->d_buf = (ushf *)(s->pending_buf + (s->lit_bufsize << 1));
+    s->l_buf = s->pending_buf + (s->lit_bufsize << 2);
+    s->sym_end = s->lit_bufsize - 1;
+#else
+    s->sym_buf = s->pending_buf + s->lit_bufsize;
+    s->sym_end = (s->lit_bufsize - 1) * 3;
+#endif
+    /* We avoid equality with lit_bufsize*3 because of wraparound at 64K
+     * on 16 bit machines and because stored blocks are restricted to
+     * 64K-1 bytes.
+     */
 
     s->level = level;
     s->strategy = strategy;
@@ -350,9 +526,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
 /* =========================================================================
  * Check for a valid deflate stream state. Return 0 if ok, 1 if not.
  */
-local int deflateStateCheck (strm)
-    z_streamp strm;
-{
+local int deflateStateCheck(z_streamp strm) {
     deflate_state *s;
     if (strm == Z_NULL ||
         strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0)
@@ -373,11 +547,8 @@ local int deflateStateCheck (strm)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
-    z_streamp strm;
-    const Bytef *dictionary;
-    uInt  dictLength;
-{
+int ZEXPORT deflateSetDictionary(z_streamp strm, const Bytef *dictionary,
+                                 uInt  dictLength) {
     deflate_state *s;
     uInt str, n;
     int wrap;
@@ -442,11 +613,8 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength)
-    z_streamp strm;
-    Bytef *dictionary;
-    uInt  *dictLength;
-{
+int ZEXPORT deflateGetDictionary(z_streamp strm, Bytef *dictionary,
+                                 uInt *dictLength) {
     deflate_state *s;
     uInt len;
 
@@ -464,9 +632,7 @@ int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateResetKeep (strm)
-    z_streamp strm;
-{
+int ZEXPORT deflateResetKeep(z_streamp strm) {
     deflate_state *s;
 
     if (deflateStateCheck(strm)) {
@@ -488,23 +654,45 @@ int ZEXPORT deflateResetKeep (strm)
 #ifdef GZIP
         s->wrap == 2 ? GZIP_STATE :
 #endif
-        s->wrap ? INIT_STATE : BUSY_STATE;
+        INIT_STATE;
     strm->adler =
 #ifdef GZIP
         s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
 #endif
         adler32(0L, Z_NULL, 0);
-    s->last_flush = Z_NO_FLUSH;
+    s->last_flush = -2;
 
     _tr_init(s);
 
     return Z_OK;
 }
 
+/* ===========================================================================
+ * Initialize the "longest match" routines for a new zlib stream
+ */
+local void lm_init(deflate_state *s) {
+    s->window_size = (ulg)2L*s->w_size;
+
+    CLEAR_HASH(s);
+
+    /* Set the default configuration parameters:
+     */
+    s->max_lazy_match   = configuration_table[s->level].max_lazy;
+    s->good_match       = configuration_table[s->level].good_length;
+    s->nice_match       = configuration_table[s->level].nice_length;
+    s->max_chain_length = configuration_table[s->level].max_chain;
+
+    s->strstart = 0;
+    s->block_start = 0L;
+    s->lookahead = 0;
+    s->insert = 0;
+    s->match_length = s->prev_length = MIN_MATCH-1;
+    s->match_available = 0;
+    s->ins_h = 0;
+}
+
 /* ========================================================================= */
-int ZEXPORT deflateReset (strm)
-    z_streamp strm;
-{
+int ZEXPORT deflateReset(z_streamp strm) {
     int ret;
 
     ret = deflateResetKeep(strm);
@@ -514,10 +702,7 @@ int ZEXPORT deflateReset (strm)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateSetHeader (strm, head)
-    z_streamp strm;
-    gz_headerp head;
-{
+int ZEXPORT deflateSetHeader(z_streamp strm, gz_headerp head) {
     if (deflateStateCheck(strm) || strm->state->wrap != 2)
         return Z_STREAM_ERROR;
     strm->state->gzhead = head;
@@ -525,11 +710,7 @@ int ZEXPORT deflateSetHeader (strm, head)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflatePending (strm, pending, bits)
-    unsigned *pending;
-    int *bits;
-    z_streamp strm;
-{
+int ZEXPORT deflatePending(z_streamp strm, unsigned *pending, int *bits) {
     if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
     if (pending != Z_NULL)
         *pending = strm->state->pending;
@@ -539,18 +720,21 @@ int ZEXPORT deflatePending (strm, pending, bits)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflatePrime (strm, bits, value)
-    z_streamp strm;
-    int bits;
-    int value;
-{
+int ZEXPORT deflatePrime(z_streamp strm, int bits, int value) {
     deflate_state *s;
     int put;
 
     if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
     s = strm->state;
-    if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
+#ifdef LIT_MEM
+    if (bits < 0 || bits > 16 ||
+        (uchf *)s->d_buf < s->pending_out + ((Buf_size + 7) >> 3))
+        return Z_BUF_ERROR;
+#else
+    if (bits < 0 || bits > 16 ||
+        s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3))
         return Z_BUF_ERROR;
+#endif
     do {
         put = Buf_size - s->bi_valid;
         if (put > bits)
@@ -565,11 +749,7 @@ int ZEXPORT deflatePrime (strm, bits, value)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateParams(strm, level, strategy)
-    z_streamp strm;
-    int level;
-    int strategy;
-{
+int ZEXPORT deflateParams(z_streamp strm, int level, int strategy) {
     deflate_state *s;
     compress_func func;
 
@@ -587,12 +767,12 @@ int ZEXPORT deflateParams(strm, level, strategy)
     func = configuration_table[s->level].func;
 
     if ((strategy != s->strategy || func != configuration_table[level].func) &&
-        s->high_water) {
+        s->last_flush != -2) {
         /* Flush the last buffer: */
         int err = deflate(strm, Z_BLOCK);
         if (err == Z_STREAM_ERROR)
             return err;
-        if (strm->avail_out == 0)
+        if (strm->avail_in || (s->strstart - s->block_start) + s->lookahead)
             return Z_BUF_ERROR;
     }
     if (s->level != level) {
@@ -614,13 +794,8 @@ int ZEXPORT deflateParams(strm, level, strategy)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain)
-    z_streamp strm;
-    int good_length;
-    int max_lazy;
-    int nice_length;
-    int max_chain;
-{
+int ZEXPORT deflateTune(z_streamp strm, int good_length, int max_lazy,
+                        int nice_length, int max_chain) {
     deflate_state *s;
 
     if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -633,36 +808,47 @@ int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain)
 }
 
 /* =========================================================================
- * For the default windowBits of 15 and memLevel of 8, this function returns
- * a close to exact, as well as small, upper bound on the compressed size.
- * They are coded as constants here for a reason--if the #define's are
- * changed, then this function needs to be changed as well.  The return
- * value for 15 and 8 only works for those exact settings.
+ * For the default windowBits of 15 and memLevel of 8, this function returns a
+ * close to exact, as well as small, upper bound on the compressed size. This
+ * is an expansion of ~0.03%, plus a small constant.
+ *
+ * For any setting other than those defaults for windowBits and memLevel, one
+ * of two worst case bounds is returned. This is at most an expansion of ~4% or
+ * ~13%, plus a small constant.
+ *
+ * Both the 0.03% and 4% derive from the overhead of stored blocks. The first
+ * one is for stored blocks of 16383 bytes (memLevel == 8), whereas the second
+ * is for stored blocks of 127 bytes (the worst case memLevel == 1). The
+ * expansion results from five bytes of header for each stored block.
  *
- * For any setting other than those defaults for windowBits and memLevel,
- * the value returned is a conservative worst case for the maximum expansion
- * resulting from using fixed blocks instead of stored blocks, which deflate
- * can emit on compressed data for some combinations of the parameters.
+ * The larger expansion of 13% results from a window size less than or equal to
+ * the symbols buffer size (windowBits <= memLevel + 7). In that case some of
+ * the data being compressed may have slid out of the sliding window, impeding
+ * a stored block from being emitted. Then the only choice is a fixed or
+ * dynamic block, where a fixed block limits the maximum expansion to 9 bits
+ * per 8-bit byte, plus 10 bits for every block. The smallest block size for
+ * which this can occur is 255 (memLevel == 2).
  *
- * This function could be more sophisticated to provide closer upper bounds for
- * every combination of windowBits and memLevel.  But even the conservative
- * upper bound of about 14% expansion does not seem onerous for output buffer
- * allocation.
+ * Shifts are used to approximate divisions, for speed.
  */
-uLong ZEXPORT deflateBound(strm, sourceLen)
-    z_streamp strm;
-    uLong sourceLen;
-{
+uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) {
     deflate_state *s;
-    uLong complen, wraplen;
+    uLong fixedlen, storelen, wraplen;
 
-    /* conservative upper bound for compressed data */
-    complen = sourceLen +
-              ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;
+    /* upper bound for fixed blocks with 9-bit literals and length 255
+       (memLevel == 2, which is the lowest that may not use stored blocks) --
+       ~13% overhead plus a small constant */
+    fixedlen = sourceLen + (sourceLen >> 3) + (sourceLen >> 8) +
+               (sourceLen >> 9) + 4;
 
-    /* if can't get parameters, return conservative bound plus zlib wrapper */
+    /* upper bound for stored blocks with length 127 (memLevel == 1) --
+       ~4% overhead plus a small constant */
+    storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) +
+               (sourceLen >> 11) + 7;
+
+    /* if can't get parameters, return larger bound plus a zlib wrapper */
     if (deflateStateCheck(strm))
-        return complen + 6;
+        return (fixedlen > storelen ? fixedlen : storelen) + 6;
 
     /* compute wrapper length */
     s = strm->state;
@@ -699,11 +885,13 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
         wraplen = 6;
     }
 
-    /* if not default parameters, return conservative bound */
+    /* if not default parameters, return one of the conservative bounds */
     if (s->w_bits != 15 || s->hash_bits != 8 + 7)
-        return complen + wraplen;
+        return (s->w_bits <= s->hash_bits && s->level ? fixedlen : storelen) +
+               wraplen;
 
-    /* default settings: return tight bound for that case */
+    /* default settings: return tight bound for that case -- ~0.03% overhead
+       plus a small constant */
     return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
            (sourceLen >> 25) + 13 - 6 + wraplen;
 }
@@ -713,10 +901,7 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
  * IN assertion: the stream state is correct and there is enough room in
  * pending_buf.
  */
-local void putShortMSB (s, b)
-    deflate_state *s;
-    uInt b;
-{
+local void putShortMSB(deflate_state *s, uInt b) {
     put_byte(s, (Byte)(b >> 8));
     put_byte(s, (Byte)(b & 0xff));
 }
@@ -727,9 +912,7 @@ local void putShortMSB (s, b)
  * applications may wish to modify it to avoid allocating a large
  * strm->next_out buffer and copying into it. (See also read_buf()).
  */
-local void flush_pending(strm)
-    z_streamp strm;
-{
+local void flush_pending(z_streamp strm) {
     unsigned len;
     deflate_state *s = strm->state;
 
@@ -760,10 +943,7 @@ local void flush_pending(strm)
     } while (0)
 
 /* ========================================================================= */
-int ZEXPORT deflate (strm, flush)
-    z_streamp strm;
-    int flush;
-{
+int ZEXPORT deflate(z_streamp strm, int flush) {
     int old_flush; /* value of flush param for previous deflate call */
     deflate_state *s;
 
@@ -811,9 +991,11 @@ int ZEXPORT deflate (strm, flush)
     }
 
     /* Write the header */
+    if (s->status == INIT_STATE && s->wrap == 0)
+        s->status = BUSY_STATE;
     if (s->status == INIT_STATE) {
         /* zlib header */
-        uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
+        uInt header = (Z_DEFLATED + ((s->w_bits - 8) << 4)) << 8;
         uInt level_flags;
 
         if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2)
@@ -1073,9 +1255,7 @@ int ZEXPORT deflate (strm, flush)
 }
 
 /* ========================================================================= */
-int ZEXPORT deflateEnd (strm)
-    z_streamp strm;
-{
+int ZEXPORT deflateEnd(z_streamp strm) {
     int status;
 
     if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -1099,16 +1279,14 @@ int ZEXPORT deflateEnd (strm)
  * To simplify the source, this is not supported for 16-bit MSDOS (which
  * doesn't have enough memory anyway to duplicate compression states).
  */
-int ZEXPORT deflateCopy (dest, source)
-    z_streamp dest;
-    z_streamp source;
-{
+int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) {
 #ifdef MAXSEG_64K
+    (void)dest;
+    (void)source;
     return Z_STREAM_ERROR;
 #else
     deflate_state *ds;
     deflate_state *ss;
-    ushf *overlay;
 
 
     if (deflateStateCheck(source) || dest == Z_NULL) {
@@ -1128,8 +1306,7 @@ int ZEXPORT deflateCopy (dest, source)
     ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
     ds->prev   = (Posf *)  ZALLOC(dest, ds->w_size, sizeof(Pos));
     ds->head   = (Posf *)  ZALLOC(dest, ds->hash_size, sizeof(Pos));
-    overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
-    ds->pending_buf = (uchf *) overlay;
+    ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, LIT_BUFS);
 
     if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
         ds->pending_buf == Z_NULL) {
@@ -1140,11 +1317,15 @@ int ZEXPORT deflateCopy (dest, source)
     zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte));
     zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos));
     zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos));
-    zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
+    zmemcpy(ds->pending_buf, ss->pending_buf, ds->lit_bufsize * LIT_BUFS);
 
     ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
-    ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
-    ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
+#ifdef LIT_MEM
+    ds->d_buf = (ushf *)(ds->pending_buf + (ds->lit_bufsize << 1));
+    ds->l_buf = ds->pending_buf + (ds->lit_bufsize << 2);
+#else
+    ds->sym_buf = ds->pending_buf + ds->lit_bufsize;
+#endif
 
     ds->l_desc.dyn_tree = ds->dyn_ltree;
     ds->d_desc.dyn_tree = ds->dyn_dtree;
@@ -1154,71 +1335,6 @@ int ZEXPORT deflateCopy (dest, source)
 #endif /* MAXSEG_64K */
 }
 
-/* ===========================================================================
- * Read a new buffer from the current input stream, update the adler32
- * and total number of bytes read.  All deflate() input goes through
- * this function so some applications may wish to modify it to avoid
- * allocating a large strm->next_in buffer and copying from it.
- * (See also flush_pending()).
- */
-local unsigned read_buf(strm, buf, size)
-    z_streamp strm;
-    Bytef *buf;
-    unsigned size;
-{
-    unsigned len = strm->avail_in;
-
-    if (len > size) len = size;
-    if (len == 0) return 0;
-
-    strm->avail_in  -= len;
-
-    zmemcpy(buf, strm->next_in, len);
-    if (strm->state->wrap == 1) {
-        strm->adler = adler32(strm->adler, buf, len);
-    }
-#ifdef GZIP
-    else if (strm->state->wrap == 2) {
-        strm->adler = crc32(strm->adler, buf, len);
-    }
-#endif
-    strm->next_in  += len;
-    strm->total_in += len;
-
-    return len;
-}
-
-/* ===========================================================================
- * Initialize the "longest match" routines for a new zlib stream
- */
-local void lm_init (s)
-    deflate_state *s;
-{
-    s->window_size = (ulg)2L*s->w_size;
-
-    CLEAR_HASH(s);
-
-    /* Set the default configuration parameters:
-     */
-    s->max_lazy_match   = configuration_table[s->level].max_lazy;
-    s->good_match       = configuration_table[s->level].good_length;
-    s->nice_match       = configuration_table[s->level].nice_length;
-    s->max_chain_length = configuration_table[s->level].max_chain;
-
-    s->strstart = 0;
-    s->block_start = 0L;
-    s->lookahead = 0;
-    s->insert = 0;
-    s->match_length = s->prev_length = MIN_MATCH-1;
-    s->match_available = 0;
-    s->ins_h = 0;
-#ifndef FASTEST
-#ifdef ASMV
-    match_init(); /* initialize the asm code */
-#endif
-#endif
-}
-
 #ifndef FASTEST
 /* ===========================================================================
  * Set match_start to the longest match starting at the given string and
@@ -1229,14 +1345,7 @@ local void lm_init (s)
  *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
  * OUT assertion: the match length is not greater than s->lookahead.
  */
-#ifndef ASMV
-/* For 80x86 and 680x0, an optimized version will be provided in match.asm or
- * match.S. The code will be functionally equivalent.
- */
-local uInt longest_match(s, cur_match)
-    deflate_state *s;
-    IPos cur_match;                             /* current match */
-{
+local uInt longest_match(deflate_state *s, IPos cur_match) {
     unsigned chain_length = s->max_chain_length;/* max hash chain length */
     register Bytef *scan = s->window + s->strstart; /* current string */
     register Bytef *match;                      /* matched string */
@@ -1257,10 +1366,10 @@ local uInt longest_match(s, cur_match)
      */
     register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1;
     register ush scan_start = *(ushf*)scan;
-    register ush scan_end   = *(ushf*)(scan+best_len-1);
+    register ush scan_end   = *(ushf*)(scan + best_len - 1);
 #else
     register Bytef *strend = s->window + s->strstart + MAX_MATCH;
-    register Byte scan_end1  = scan[best_len-1];
+    register Byte scan_end1  = scan[best_len - 1];
     register Byte scan_end   = scan[best_len];
 #endif
 
@@ -1278,7 +1387,8 @@ local uInt longest_match(s, cur_match)
      */
     if ((uInt)nice_match > s->lookahead) nice_match = (int)s->lookahead;
 
-    Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+    Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+           "need lookahead");
 
     do {
         Assert(cur_match < s->strstart, "no future");
@@ -1296,43 +1406,44 @@ local uInt longest_match(s, cur_match)
         /* This code assumes sizeof(unsigned short) == 2. Do not use
          * UNALIGNED_OK if your compiler uses a different size.
          */
-        if (*(ushf*)(match+best_len-1) != scan_end ||
+        if (*(ushf*)(match + best_len - 1) != scan_end ||
             *(ushf*)match != scan_start) continue;
 
         /* It is not necessary to compare scan[2] and match[2] since they are
          * always equal when the other bytes match, given that the hash keys
          * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at
-         * strstart+3, +5, ... up to strstart+257. We check for insufficient
+         * strstart + 3, + 5, up to strstart + 257. We check for insufficient
          * lookahead only every 4th comparison; the 128th check will be made
-         * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is
+         * at strstart + 257. If MAX_MATCH-2 is not a multiple of 8, it is
          * necessary to put more guard bytes at the end of the window, or
          * to check more often for insufficient lookahead.
          */
         Assert(scan[2] == match[2], "scan[2]?");
         scan++, match++;
         do {
-        } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
-                 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
+        } while (*(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
+                 *(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
+                 *(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
+                 *(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
                  scan < strend);
         /* The funny "do {}" generates better code on most compilers */
 
-        /* Here, scan <= window+strstart+257 */
-        Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+        /* Here, scan <= window + strstart + 257 */
+        Assert(scan <= s->window + (unsigned)(s->window_size - 1),
+               "wild scan");
         if (*scan == *match) scan++;
 
-        len = (MAX_MATCH - 1) - (int)(strend-scan);
+        len = (MAX_MATCH - 1) - (int)(strend - scan);
         scan = strend - (MAX_MATCH-1);
 
 #else /* UNALIGNED_OK */
 
-        if (match[best_len]   != scan_end  ||
-            match[best_len-1] != scan_end1 ||
-            *match            != *scan     ||
-            *++match          != scan[1])      continue;
+        if (match[best_len]     != scan_end  ||
+            match[best_len - 1] != scan_end1 ||
+            *match              != *scan     ||
+            *++match            != scan[1])      continue;
 
-        /* The check at best_len-1 can be removed because it will be made
+        /* The check at best_len - 1 can be removed because it will be made
          * again later. (This heuristic is not always a win.)
          * It is not necessary to compare scan[2] and match[2] since they
          * are always equal when the other bytes match, given that
@@ -1342,7 +1453,7 @@ local uInt longest_match(s, cur_match)
         Assert(*scan == *match, "match[2]?");
 
         /* We check for insufficient lookahead only every 8th comparison;
-         * the 256th check will be made at strstart+258.
+         * the 256th check will be made at strstart + 258.
          */
         do {
         } while (*++scan == *++match && *++scan == *++match &&
@@ -1351,7 +1462,8 @@ local uInt longest_match(s, cur_match)
                  *++scan == *++match && *++scan == *++match &&
                  scan < strend);
 
-        Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+        Assert(scan <= s->window + (unsigned)(s->window_size - 1),
+               "wild scan");
 
         len = MAX_MATCH - (int)(strend - scan);
         scan = strend - MAX_MATCH;
@@ -1363,9 +1475,9 @@ local uInt longest_match(s, cur_match)
             best_len = len;
             if (len >= nice_match) break;
 #ifdef UNALIGNED_OK
-            scan_end = *(ushf*)(scan+best_len-1);
+            scan_end = *(ushf*)(scan + best_len - 1);
 #else
-            scan_end1  = scan[best_len-1];
+            scan_end1  = scan[best_len - 1];
             scan_end   = scan[best_len];
 #endif
         }
@@ -1375,17 +1487,13 @@ local uInt longest_match(s, cur_match)
     if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
     return s->lookahead;
 }
-#endif /* ASMV */
 
 #else /* FASTEST */
 
 /* ---------------------------------------------------------------------------
  * Optimized version for FASTEST only
  */
-local uInt longest_match(s, cur_match)
-    deflate_state *s;
-    IPos cur_match;                             /* current match */
-{
+local uInt longest_match(deflate_state *s, IPos cur_match) {
     register Bytef *scan = s->window + s->strstart; /* current string */
     register Bytef *match;                       /* matched string */
     register int len;                           /* length of current match */
@@ -1396,7 +1504,8 @@ local uInt longest_match(s, cur_match)
      */
     Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
 
-    Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
+    Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
+           "need lookahead");
 
     Assert(cur_match < s->strstart, "no future");
 
@@ -1406,7 +1515,7 @@ local uInt longest_match(s, cur_match)
      */
     if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1;
 
-    /* The check at best_len-1 can be removed because it will be made
+    /* The check at best_len - 1 can be removed because it will be made
      * again later. (This heuristic is not always a win.)
      * It is not necessary to compare scan[2] and match[2] since they
      * are always equal when the other bytes match, given that
@@ -1416,7 +1525,7 @@ local uInt longest_match(s, cur_match)
     Assert(*scan == *match, "match[2]?");
 
     /* We check for insufficient lookahead only every 8th comparison;
-     * the 256th check will be made at strstart+258.
+     * the 256th check will be made at strstart + 258.
      */
     do {
     } while (*++scan == *++match && *++scan == *++match &&
@@ -1425,7 +1534,7 @@ local uInt longest_match(s, cur_match)
              *++scan == *++match && *++scan == *++match &&
              scan < strend);
 
-    Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
+    Assert(scan <= s->window + (unsigned)(s->window_size - 1), "wild scan");
 
     len = MAX_MATCH - (int)(strend - scan);
 
@@ -1445,23 +1554,27 @@ local uInt longest_match(s, cur_match)
 /* ===========================================================================
  * Check that the match at match_start is indeed a match.
  */
-local void check_match(s, start, match, length)
-    deflate_state *s;
-    IPos start, match;
-    int length;
-{
+local void check_match(deflate_state *s, IPos start, IPos match, int length) {
     /* check that the match is indeed a match */
-    if (zmemcmp(s->window + match,
-                s->window + start, length) != EQUAL) {
-        fprintf(stderr, " start %u, match %u, length %d\n",
-                start, match, length);
+    Bytef *back = s->window + (int)match, *here = s->window + start;
+    IPos len = length;
+    if (match == (IPos)-1) {
+        /* match starts one byte before the current window -- just compare the
+           subsequent length-1 bytes */
+        back++;
+        here++;
+        len--;
+    }
+    if (zmemcmp(back, here, len) != EQUAL) {
+        fprintf(stderr, " start %u, match %d, length %d\n",
+                start, (int)match, length);
         do {
-            fprintf(stderr, "%c%c", s->window[match++], s->window[start++]);
-        } while (--length != 0);
+            fprintf(stderr, "(%02x %02x)", *back++, *here++);
+        } while (--len != 0);
         z_error("invalid match");
     }
     if (z_verbose > 1) {
-        fprintf(stderr,"\\[%d,%d]", start-match, length);
+        fprintf(stderr,"\\[%d,%d]", start - match, length);
         do { putc(s->window[start++], stderr); } while (--length != 0);
     }
 }
@@ -1469,135 +1582,6 @@ local void check_match(s, start, match, length)
 #  define check_match(s, start, match, length)
 #endif /* ZLIB_DEBUG */
 
-/* ===========================================================================
- * Fill the window when the lookahead becomes insufficient.
- * Updates strstart and lookahead.
- *
- * IN assertion: lookahead < MIN_LOOKAHEAD
- * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
- *    At least one byte has been read, or avail_in == 0; reads are
- *    performed for at least two bytes (required for the zip translate_eol
- *    option -- not supported here).
- */
-local void fill_window(s)
-    deflate_state *s;
-{
-    unsigned n;
-    unsigned more;    /* Amount of free space at the end of the window. */
-    uInt wsize = s->w_size;
-
-    Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");
-
-    do {
-        more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart);
-
-        /* Deal with !@#$% 64K limit: */
-        if (sizeof(int) <= 2) {
-            if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
-                more = wsize;
-
-            } else if (more == (unsigned)(-1)) {
-                /* Very unlikely, but possible on 16 bit machine if
-                 * strstart == 0 && lookahead == 1 (input done a byte at time)
-                 */
-                more--;
-            }
-        }
-
-        /* If the window is almost full and there is insufficient lookahead,
-         * move the upper half to the lower one to make room in the upper half.
-         */
-        if (s->strstart >= wsize+MAX_DIST(s)) {
-
-            zmemcpy(s->window, s->window+wsize, (unsigned)wsize - more);
-            s->match_start -= wsize;
-            s->strstart    -= wsize; /* we now have strstart >= MAX_DIST */
-            s->block_start -= (long) wsize;
-            slide_hash(s);
-            more += wsize;
-        }
-        if (s->strm->avail_in == 0) break;
-
-        /* If there was no sliding:
-         *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
-         *    more == window_size - lookahead - strstart
-         * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
-         * => more >= window_size - 2*WSIZE + 2
-         * In the BIG_MEM or MMAP case (not yet supported),
-         *   window_size == input_size + MIN_LOOKAHEAD  &&
-         *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
-         * Otherwise, window_size == 2*WSIZE so more >= 2.
-         * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
-         */
-        Assert(more >= 2, "more < 2");
-
-        n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more);
-        s->lookahead += n;
-
-        /* Initialize the hash value now that we have some input: */
-        if (s->lookahead + s->insert >= MIN_MATCH) {
-            uInt str = s->strstart - s->insert;
-            s->ins_h = s->window[str];
-            UPDATE_HASH(s, s->ins_h, s->window[str + 1]);
-#if MIN_MATCH != 3
-            Call UPDATE_HASH() MIN_MATCH-3 more times
-#endif
-            while (s->insert) {
-                UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]);
-#ifndef FASTEST
-                s->prev[str & s->w_mask] = s->head[s->ins_h];
-#endif
-                s->head[s->ins_h] = (Pos)str;
-                str++;
-                s->insert--;
-                if (s->lookahead + s->insert < MIN_MATCH)
-                    break;
-            }
-        }
-        /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
-         * but this is not important since only literal bytes will be emitted.
-         */
-
-    } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0);
-
-    /* If the WIN_INIT bytes after the end of the current data have never been
-     * written, then zero those bytes in order to avoid memory check reports of
-     * the use of uninitialized (or uninitialised as Julian writes) bytes by
-     * the longest match routines.  Update the high water mark for the next
-     * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
-     * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
-     */
-    if (s->high_water < s->window_size) {
-        ulg curr = s->strstart + (ulg)(s->lookahead);
-        ulg init;
-
-        if (s->high_water < curr) {
-            /* Previous high water mark below current data -- zero WIN_INIT
-             * bytes or up to end of window, whichever is less.
-             */
-            init = s->window_size - curr;
-            if (init > WIN_INIT)
-                init = WIN_INIT;
-            zmemzero(s->window + curr, (unsigned)init);
-            s->high_water = curr + init;
-        }
-        else if (s->high_water < (ulg)curr + WIN_INIT) {
-            /* High water mark at or above current data, but below current data
-             * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
-             * to end of window, whichever is less.
-             */
-            init = (ulg)curr + WIN_INIT - s->high_water;
-            if (init > s->window_size - s->high_water)
-                init = s->window_size - s->high_water;
-            zmemzero(s->window + s->high_water, (unsigned)init);
-            s->high_water += init;
-        }
-    }
-
-    Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
-           "not enough room for search");
-}
-
 /* ===========================================================================
  * Flush the current block, with given end-of-file flag.
  * IN assertion: strstart is set to the end of the current match.
@@ -1638,12 +1622,9 @@ local void fill_window(s)
  *
  * deflate_stored() is written to minimize the number of times an input byte is
  * copied. It is most efficient with large input and output buffers, which
- * maximizes the opportunites to have a single copy from next_in to next_out.
+ * maximizes the opportunities to have a single copy from next_in to next_out.
  */
-local block_state deflate_stored(s, flush)
-    deflate_state *s;
-    int flush;
-{
+local block_state deflate_stored(deflate_state *s, int flush) {
     /* Smallest worthy block size when not flushing or finishing. By default
      * this is 32K. This can be as small as 507 bytes for memLevel == 1. For
      * large input and output buffers, the stored block size will be larger.
@@ -1742,6 +1723,7 @@ local block_state deflate_stored(s, flush)
             s->matches = 2;         /* clear hash */
             zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);
             s->strstart = s->w_size;
+            s->insert = s->strstart;
         }
         else {
             if (s->window_size - s->strstart <= used) {
@@ -1750,12 +1732,14 @@ local block_state deflate_stored(s, flush)
                 zmemcpy(s->window, s->window + s->w_size, s->strstart);
                 if (s->matches < 2)
                     s->matches++;   /* add a pending slide_hash() */
+                if (s->insert > s->strstart)
+                    s->insert = s->strstart;
             }
             zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);
             s->strstart += used;
+            s->insert += MIN(used, s->w_size - s->insert);
         }
         s->block_start = s->strstart;
-        s->insert += MIN(used, s->w_size - s->insert);
     }
     if (s->high_water < s->strstart)
         s->high_water = s->strstart;
@@ -1770,7 +1754,7 @@ local block_state deflate_stored(s, flush)
         return block_done;
 
     /* Fill the window with any remaining input. */
-    have = s->window_size - s->strstart - 1;
+    have = s->window_size - s->strstart;
     if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) {
         /* Slide the window down. */
         s->block_start -= s->w_size;
@@ -1779,12 +1763,15 @@ local block_state deflate_stored(s, flush)
         if (s->matches < 2)
             s->matches++;           /* add a pending slide_hash() */
         have += s->w_size;          /* more space now */
+        if (s->insert > s->strstart)
+            s->insert = s->strstart;
     }
     if (have > s->strm->avail_in)
         have = s->strm->avail_in;
     if (have) {
         read_buf(s->strm, s->window + s->strstart, have);
         s->strstart += have;
+        s->insert += MIN(have, s->w_size - s->insert);
     }
     if (s->high_water < s->strstart)
         s->high_water = s->strstart;
@@ -1821,10 +1808,7 @@ local block_state deflate_stored(s, flush)
  * new strings in the dictionary only for unmatched strings or for short
  * matches. It is used only for the fast compression options.
  */
-local block_state deflate_fast(s, flush)
-    deflate_state *s;
-    int flush;
-{
+local block_state deflate_fast(deflate_state *s, int flush) {
     IPos hash_head;       /* head of the hash chain */
     int bflush;           /* set if current block must be flushed */
 
@@ -1842,7 +1826,7 @@ local block_state deflate_fast(s, flush)
             if (s->lookahead == 0) break; /* flush the current block */
         }
 
-        /* Insert the string window[strstart .. strstart+2] in the
+        /* Insert the string window[strstart .. strstart + 2] in the
          * dictionary, and set hash_head to the head of the hash chain:
          */
         hash_head = NIL;
@@ -1890,7 +1874,7 @@ local block_state deflate_fast(s, flush)
                 s->strstart += s->match_length;
                 s->match_length = 0;
                 s->ins_h = s->window[s->strstart];
-                UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
+                UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]);
 #if MIN_MATCH != 3
                 Call UPDATE_HASH() MIN_MATCH-3 more times
 #endif
@@ -1901,7 +1885,7 @@ local block_state deflate_fast(s, flush)
         } else {
             /* No match, output a literal byte */
             Tracevv((stderr,"%c", s->window[s->strstart]));
-            _tr_tally_lit (s, s->window[s->strstart], bflush);
+            _tr_tally_lit(s, s->window[s->strstart], bflush);
             s->lookahead--;
             s->strstart++;
         }
@@ -1912,7 +1896,7 @@ local block_state deflate_fast(s, flush)
         FLUSH_BLOCK(s, 1);
         return finish_done;
     }
-    if (s->last_lit)
+    if (s->sym_next)
         FLUSH_BLOCK(s, 0);
     return block_done;
 }
@@ -1923,10 +1907,7 @@ local block_state deflate_fast(s, flush)
  * evaluation for matches: a match is finally adopted only if there is
  * no better match at the next window position.
  */
-local block_state deflate_slow(s, flush)
-    deflate_state *s;
-    int flush;
-{
+local block_state deflate_slow(deflate_state *s, int flush) {
     IPos hash_head;          /* head of hash chain */
     int bflush;              /* set if current block must be flushed */
 
@@ -1945,7 +1926,7 @@ local block_state deflate_slow(s, flush)
             if (s->lookahead == 0) break; /* flush the current block */
         }
 
-        /* Insert the string window[strstart .. strstart+2] in the
+        /* Insert the string window[strstart .. strstart + 2] in the
          * dictionary, and set hash_head to the head of the hash chain:
          */
         hash_head = NIL;
@@ -1987,17 +1968,17 @@ local block_state deflate_slow(s, flush)
             uInt max_insert = s->strstart + s->lookahead - MIN_MATCH;
             /* Do not insert strings in hash table beyond this. */
 
-            check_match(s, s->strstart-1, s->prev_match, s->prev_length);
+            check_match(s, s->strstart - 1, s->prev_match, s->prev_length);
 
-            _tr_tally_dist(s, s->strstart -1 - s->prev_match,
+            _tr_tally_dist(s, s->strstart - 1 - s->prev_match,
                            s->prev_length - MIN_MATCH, bflush);
 
             /* Insert in hash table all strings up to the end of the match.
-             * strstart-1 and strstart are already inserted. If there is not
+             * strstart - 1 and strstart are already inserted. If there is not
              * enough lookahead, the last two strings are not inserted in
              * the hash table.
              */
-            s->lookahead -= s->prev_length-1;
+            s->lookahead -= s->prev_length - 1;
             s->prev_length -= 2;
             do {
                 if (++s->strstart <= max_insert) {
@@ -2015,8 +1996,8 @@ local block_state deflate_slow(s, flush)
              * single literal. If there was a match but the current match
              * is longer, truncate the previous match to a single literal.
              */
-            Tracevv((stderr,"%c", s->window[s->strstart-1]));
-            _tr_tally_lit(s, s->window[s->strstart-1], bflush);
+            Tracevv((stderr,"%c", s->window[s->strstart - 1]));
+            _tr_tally_lit(s, s->window[s->strstart - 1], bflush);
             if (bflush) {
                 FLUSH_BLOCK_ONLY(s, 0);
             }
@@ -2034,8 +2015,8 @@ local block_state deflate_slow(s, flush)
     }
     Assert (flush != Z_NO_FLUSH, "no flush?");
     if (s->match_available) {
-        Tracevv((stderr,"%c", s->window[s->strstart-1]));
-        _tr_tally_lit(s, s->window[s->strstart-1], bflush);
+        Tracevv((stderr,"%c", s->window[s->strstart - 1]));
+        _tr_tally_lit(s, s->window[s->strstart - 1], bflush);
         s->match_available = 0;
     }
     s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1;
@@ -2043,7 +2024,7 @@ local block_state deflate_slow(s, flush)
         FLUSH_BLOCK(s, 1);
         return finish_done;
     }
-    if (s->last_lit)
+    if (s->sym_next)
         FLUSH_BLOCK(s, 0);
     return block_done;
 }
@@ -2054,10 +2035,7 @@ local block_state deflate_slow(s, flush)
  * one.  Do not maintain a hash table.  (It will be regenerated if this run of
  * deflate switches away from Z_RLE.)
  */
-local block_state deflate_rle(s, flush)
-    deflate_state *s;
-    int flush;
-{
+local block_state deflate_rle(deflate_state *s, int flush) {
     int bflush;             /* set if current block must be flushed */
     uInt prev;              /* byte at distance one to match */
     Bytef *scan, *strend;   /* scan goes up to strend for length of run */
@@ -2092,7 +2070,8 @@ local block_state deflate_rle(s, flush)
                 if (s->match_length > s->lookahead)
                     s->match_length = s->lookahead;
             }
-            Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
+            Assert(scan <= s->window + (uInt)(s->window_size - 1),
+                   "wild scan");
         }
 
         /* Emit match if have run of MIN_MATCH or longer, else emit literal */
@@ -2107,7 +2086,7 @@ local block_state deflate_rle(s, flush)
         } else {
             /* No match, output a literal byte */
             Tracevv((stderr,"%c", s->window[s->strstart]));
-            _tr_tally_lit (s, s->window[s->strstart], bflush);
+            _tr_tally_lit(s, s->window[s->strstart], bflush);
             s->lookahead--;
             s->strstart++;
         }
@@ -2118,7 +2097,7 @@ local block_state deflate_rle(s, flush)
         FLUSH_BLOCK(s, 1);
         return finish_done;
     }
-    if (s->last_lit)
+    if (s->sym_next)
         FLUSH_BLOCK(s, 0);
     return block_done;
 }
@@ -2127,10 +2106,7 @@ local block_state deflate_rle(s, flush)
  * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
  * (It will be regenerated if this run of deflate switches away from Huffman.)
  */
-local block_state deflate_huff(s, flush)
-    deflate_state *s;
-    int flush;
-{
+local block_state deflate_huff(deflate_state *s, int flush) {
     int bflush;             /* set if current block must be flushed */
 
     for (;;) {
@@ -2147,7 +2123,7 @@ local block_state deflate_huff(s, flush)
         /* Output a literal byte */
         s->match_length = 0;
         Tracevv((stderr,"%c", s->window[s->strstart]));
-        _tr_tally_lit (s, s->window[s->strstart], bflush);
+        _tr_tally_lit(s, s->window[s->strstart], bflush);
         s->lookahead--;
         s->strstart++;
         if (bflush) FLUSH_BLOCK(s, 0);
@@ -2157,7 +2133,7 @@ local block_state deflate_huff(s, flush)
         FLUSH_BLOCK(s, 1);
         return finish_done;
     }
-    if (s->last_lit)
+    if (s->sym_next)
         FLUSH_BLOCK(s, 0);
     return block_done;
 }
diff --git a/libs/zlib/deflate.h b/libs/zlib/deflate.h
index 23ecdd312..300c6ada6 100644
--- a/libs/zlib/deflate.h
+++ b/libs/zlib/deflate.h
@@ -1,5 +1,5 @@
 /* deflate.h -- internal compression state
- * Copyright (C) 1995-2016 Jean-loup Gailly
+ * Copyright (C) 1995-2024 Jean-loup Gailly
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -23,6 +23,10 @@
 #  define GZIP
 #endif
 
+/* define LIT_MEM to slightly increase the speed of deflate (order 1% to 2%) at
+   the cost of a larger memory footprint */
+/* #define LIT_MEM */
+
 /* ===========================================================================
  * Internal compression state.
  */
@@ -217,7 +221,14 @@ typedef struct internal_state {
     /* Depth of each subtree used as tie breaker for trees of equal frequency
      */
 
-    uchf *l_buf;          /* buffer for literals or lengths */
+#ifdef LIT_MEM
+#   define LIT_BUFS 5
+    ushf *d_buf;          /* buffer for distances */
+    uchf *l_buf;          /* buffer for literals/lengths */
+#else
+#   define LIT_BUFS 4
+    uchf *sym_buf;        /* buffer for distances and literals/lengths */
+#endif
 
     uInt  lit_bufsize;
     /* Size of match buffer for literals/lengths.  There are 4 reasons for
@@ -239,13 +250,8 @@ typedef struct internal_state {
      *   - I can't count above 4
      */
 
-    uInt last_lit;      /* running index in l_buf */
-
-    ushf *d_buf;
-    /* Buffer for distances. To simplify the code, d_buf and l_buf have
-     * the same number of elements. To use different lengths, an extra flag
-     * array would be necessary.
-     */
+    uInt sym_next;      /* running index in symbol buffer */
+    uInt sym_end;       /* symbol table full when sym_next reaches this */
 
     ulg opt_len;        /* bit length of current block with optimal trees */
     ulg static_len;     /* bit length of current block with static trees */
@@ -296,14 +302,14 @@ typedef struct internal_state {
    memory checker errors from longest match routines */
 
         /* in trees.c */
-void ZLIB_INTERNAL _tr_init OF((deflate_state *s));
-int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
-void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf,
-                        ulg stored_len, int last));
-void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s));
-void ZLIB_INTERNAL _tr_align OF((deflate_state *s));
-void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
-                        ulg stored_len, int last));
+void ZLIB_INTERNAL _tr_init(deflate_state *s);
+int ZLIB_INTERNAL _tr_tally(deflate_state *s, unsigned dist, unsigned lc);
+void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf,
+                                   ulg stored_len, int last);
+void ZLIB_INTERNAL _tr_flush_bits(deflate_state *s);
+void ZLIB_INTERNAL _tr_align(deflate_state *s);
+void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf,
+                                    ulg stored_len, int last);
 
 #define d_code(dist) \
    ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
@@ -323,23 +329,45 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
   extern const uch ZLIB_INTERNAL _dist_code[];
 #endif
 
+#ifdef LIT_MEM
+# define _tr_tally_lit(s, c, flush) \
+  { uch cc = (c); \
+    s->d_buf[s->sym_next] = 0; \
+    s->l_buf[s->sym_next++] = cc; \
+    s->dyn_ltree[cc].Freq++; \
+    flush = (s->sym_next == s->sym_end); \
+   }
+# define _tr_tally_dist(s, distance, length, flush) \
+  { uch len = (uch)(length); \
+    ush dist = (ush)(distance); \
+    s->d_buf[s->sym_next] = dist; \
+    s->l_buf[s->sym_next++] = len; \
+    dist--; \
+    s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
+    s->dyn_dtree[d_code(dist)].Freq++; \
+    flush = (s->sym_next == s->sym_end); \
+  }
+#else
 # define _tr_tally_lit(s, c, flush) \
   { uch cc = (c); \
-    s->d_buf[s->last_lit] = 0; \
-    s->l_buf[s->last_lit++] = cc; \
+    s->sym_buf[s->sym_next++] = 0; \
+    s->sym_buf[s->sym_next++] = 0; \
+    s->sym_buf[s->sym_next++] = cc; \
     s->dyn_ltree[cc].Freq++; \
-    flush = (s->last_lit == s->lit_bufsize-1); \
+    flush = (s->sym_next == s->sym_end); \
    }
 # define _tr_tally_dist(s, distance, length, flush) \
   { uch len = (uch)(length); \
     ush dist = (ush)(distance); \
-    s->d_buf[s->last_lit] = dist; \
-    s->l_buf[s->last_lit++] = len; \
+    s->sym_buf[s->sym_next++] = (uch)dist; \
+    s->sym_buf[s->sym_next++] = (uch)(dist >> 8); \
+    s->sym_buf[s->sym_next++] = len; \
     dist--; \
     s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
     s->dyn_dtree[d_code(dist)].Freq++; \
-    flush = (s->last_lit == s->lit_bufsize-1); \
+    flush = (s->sym_next == s->sym_end); \
   }
+#endif
 #else
 # define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
 # define _tr_tally_dist(s, distance, length, flush) \
diff --git a/libs/zlib/doc/algorithm.txt b/libs/zlib/doc/algorithm.txt
index c97f49502..029e5a313 100644
--- a/libs/zlib/doc/algorithm.txt
+++ b/libs/zlib/doc/algorithm.txt
@@ -77,7 +77,7 @@ table took no time (and if you had infinite memory), then there would only
 be a first level table to cover all the way to the longest code.  However,
 building the table ends up taking a lot longer for more bits since short
 codes are replicated many times in such a table.  What inflate() does is
-simply to make the number of bits in the first table a variable, and  then
+simply to make the number of bits in the first table a variable, and then
 to set that variable for the maximum speed.
 
 For inflate, which has 286 possible codes for the literal/length tree, the size
diff --git a/libs/zlib/doc/crc-doc.1.0.pdf b/libs/zlib/doc/crc-doc.1.0.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d6942ecc09a3f8b2d7e4b6fbecc5955121e8e7cf
GIT binary patch
literal 776142
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%0A!*@!_1l*<YBVf{H~DQ(4q^
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%0ARD|WAUa-^)bZn#
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
V5+;7X1ek&DTuxKd)ZR?){{RQYd_MpH

literal 0
HcmV?d00001

diff --git a/libs/zlib/doc/txtvsbin.txt b/libs/zlib/doc/txtvsbin.txt
index 3d0f0634f..2a901eaa6 100644
--- a/libs/zlib/doc/txtvsbin.txt
+++ b/libs/zlib/doc/txtvsbin.txt
@@ -38,15 +38,15 @@ The Algorithm
 
 The algorithm works by dividing the set of bytecodes [0..255] into three
 categories:
-- The white list of textual bytecodes:
+- The allow list of textual bytecodes:
   9 (TAB), 10 (LF), 13 (CR), 32 (SPACE) to 255.
 - The gray list of tolerated bytecodes:
   7 (BEL), 8 (BS), 11 (VT), 12 (FF), 26 (SUB), 27 (ESC).
-- The black list of undesired, non-textual bytecodes:
+- The block list of undesired, non-textual bytecodes:
   0 (NUL) to 6, 14 to 31.
 
-If a file contains at least one byte that belongs to the white list and
-no byte that belongs to the black list, then the file is categorized as
+If a file contains at least one byte that belongs to the allow list and
+no byte that belongs to the block list, then the file is categorized as
 plain text; otherwise, it is categorized as binary.  (The boundary case,
 when the file is empty, automatically falls into the latter category.)
 
@@ -84,9 +84,9 @@ consistent results, regardless what alphabet encoding is being used.
 results on a text encoded, say, using ISO-8859-16 versus UTF-8.)
 
 There is an extra category of plain text files that are "polluted" with
-one or more black-listed codes, either by mistake or by peculiar design
+one or more block-listed codes, either by mistake or by peculiar design
 considerations.  In such cases, a scheme that tolerates a small fraction
-of black-listed codes would provide an increased recall (i.e. more true
+of block-listed codes would provide an increased recall (i.e. more true
 positives).  This, however, incurs a reduced precision overall, since
 false positives are more likely to appear in binary files that contain
 large chunks of textual data.  Furthermore, "polluted" plain text should
diff --git a/libs/zlib/examples/README.examples b/libs/zlib/examples/README.examples
index 56a31714e..e3a4b88bb 100644
--- a/libs/zlib/examples/README.examples
+++ b/libs/zlib/examples/README.examples
@@ -34,6 +34,10 @@ gzlog.h
       and deflateSetDictionary()
     - illustrates use of a gzip header extra field
 
+gznorm.c
+    normalize a gzip file by combining members into a single member
+    - demonstrates how to concatenate deflate streams using Z_BLOCK
+
 zlib_how.html
     painfully comprehensive description of zpipe.c (see below)
     - describes in excruciating detail the use of deflate() and inflate()
@@ -44,6 +48,7 @@ zpipe.c
     - deeply commented in zlib_how.html (see above)
 
 zran.c
+zran.h
     index a zlib or gzip stream and randomly access it
     - illustrates the use of Z_BLOCK, inflatePrime(), and
       inflateSetDictionary() to provide random access
diff --git a/libs/zlib/examples/enough.c b/libs/zlib/examples/enough.c
index b99114430..8a3cade49 100644
--- a/libs/zlib/examples/enough.c
+++ b/libs/zlib/examples/enough.c
@@ -1,7 +1,7 @@
 /* enough.c -- determine the maximum size of inflate's Huffman code tables over
- * all possible valid and complete Huffman codes, subject to a length limit.
- * Copyright (C) 2007, 2008, 2012 Mark Adler
- * Version 1.4  18 August 2012  Mark Adler
+ * all possible valid and complete prefix codes, subject to a length limit.
+ * Copyright (C) 2007, 2008, 2012, 2018 Mark Adler
+ * Version 1.5  5 August 2018  Mark Adler
  */
 
 /* Version history:
@@ -17,101 +17,107 @@
    1.4  18 Aug 2012  Avoid shifts more than bits in type (caused endless loop!)
                      Clean up comparisons of different types
                      Clean up code indentation
+   1.5   5 Aug 2018  Clean up code style, formatting, and comments
+                     Show all the codes for the maximum, and only the maximum
  */
 
 /*
-   Examine all possible Huffman codes for a given number of symbols and a
-   maximum code length in bits to determine the maximum table size for zilb's
-   inflate.  Only complete Huffman codes are counted.
+   Examine all possible prefix codes for a given number of symbols and a
+   maximum code length in bits to determine the maximum table size for zlib's
+   inflate. Only complete prefix codes are counted.
 
    Two codes are considered distinct if the vectors of the number of codes per
-   length are not identical.  So permutations of the symbol assignments result
+   length are not identical. So permutations of the symbol assignments result
    in the same code for the counting, as do permutations of the assignments of
    the bit values to the codes (i.e. only canonical codes are counted).
 
    We build a code from shorter to longer lengths, determining how many symbols
-   are coded at each length.  At each step, we have how many symbols remain to
+   are coded at each length. At each step, we have how many symbols remain to
    be coded, what the last code length used was, and how many bit patterns of
    that length remain unused. Then we add one to the code length and double the
-   number of unused patterns to graduate to the next code length.  We then
+   number of unused patterns to graduate to the next code length. We then
    assign all portions of the remaining symbols to that code length that
-   preserve the properties of a correct and eventually complete code.  Those
+   preserve the properties of a correct and eventually complete code. Those
    properties are: we cannot use more bit patterns than are available; and when
-   all the symbols are used, there are exactly zero possible bit patterns
-   remaining.
+   all the symbols are used, there are exactly zero possible bit patterns left
+   unused.
 
    The inflate Huffman decoding algorithm uses two-level lookup tables for
-   speed.  There is a single first-level table to decode codes up to root bits
-   in length (root == 9 in the current inflate implementation).  The table
-   has 1 << root entries and is indexed by the next root bits of input.  Codes
-   shorter than root bits have replicated table entries, so that the correct
-   entry is pointed to regardless of the bits that follow the short code.  If
-   the code is longer than root bits, then the table entry points to a second-
-   level table.  The size of that table is determined by the longest code with
-   that root-bit prefix.  If that longest code has length len, then the table
-   has size 1 << (len - root), to index the remaining bits in that set of
-   codes.  Each subsequent root-bit prefix then has its own sub-table.  The
-   total number of table entries required by the code is calculated
-   incrementally as the number of codes at each bit length is populated.  When
-   all of the codes are shorter than root bits, then root is reduced to the
-   longest code length, resulting in a single, smaller, one-level table.
+   speed. There is a single first-level table to decode codes up to root bits
+   in length (root == 9 for literal/length codes and root == 6 for distance
+   codes, in the current inflate implementation). The base table has 1 << root
+   entries and is indexed by the next root bits of input. Codes shorter than
+   root bits have replicated table entries, so that the correct entry is
+   pointed to regardless of the bits that follow the short code. If the code is
+   longer than root bits, then the table entry points to a second-level table.
+   The size of that table is determined by the longest code with that root-bit
+   prefix. If that longest code has length len, then the table has size 1 <<
+   (len - root), to index the remaining bits in that set of codes. Each
+   subsequent root-bit prefix then has its own sub-table. The total number of
+   table entries required by the code is calculated incrementally as the number
+   of codes at each bit length is populated. When all of the codes are shorter
+   than root bits, then root is reduced to the longest code length, resulting
+   in a single, smaller, one-level table.
 
    The inflate algorithm also provides for small values of root (relative to
    the log2 of the number of symbols), where the shortest code has more bits
-   than root.  In that case, root is increased to the length of the shortest
-   code.  This program, by design, does not handle that case, so it is verified
-   that the number of symbols is less than 2^(root + 1).
+   than root. In that case, root is increased to the length of the shortest
+   code. This program, by design, does not handle that case, so it is verified
+   that the number of symbols is less than 1 << (root + 1).
 
    In order to speed up the examination (by about ten orders of magnitude for
    the default arguments), the intermediate states in the build-up of a code
-   are remembered and previously visited branches are pruned.  The memory
+   are remembered and previously visited branches are pruned. The memory
    required for this will increase rapidly with the total number of symbols and
-   the maximum code length in bits.  However this is a very small price to pay
+   the maximum code length in bits. However this is a very small price to pay
    for the vast speedup.
 
-   First, all of the possible Huffman codes are counted, and reachable
+   First, all of the possible prefix codes are counted, and reachable
    intermediate states are noted by a non-zero count in a saved-results array.
    Second, the intermediate states that lead to (root + 1) bit or longer codes
    are used to look at all sub-codes from those junctures for their inflate
-   memory usage.  (The amount of memory used is not affected by the number of
+   memory usage. (The amount of memory used is not affected by the number of
    codes of root bits or less in length.)  Third, the visited states in the
    construction of those sub-codes and the associated calculation of the table
    size is recalled in order to avoid recalculating from the same juncture.
    Beginning the code examination at (root + 1) bit codes, which is enabled by
    identifying the reachable nodes, accounts for about six of the orders of
-   magnitude of improvement for the default arguments.  About another four
-   orders of magnitude come from not revisiting previous states.  Out of
-   approximately 2x10^16 possible Huffman codes, only about 2x10^6 sub-codes
+   magnitude of improvement for the default arguments. About another four
+   orders of magnitude come from not revisiting previous states. Out of
+   approximately 2x10^16 possible prefix codes, only about 2x10^6 sub-codes
    need to be examined to cover all of the possible table memory usage cases
    for the default arguments of 286 symbols limited to 15-bit codes.
 
-   Note that an unsigned long long type is used for counting.  It is quite easy
-   to exceed the capacity of an eight-byte integer with a large number of
-   symbols and a large maximum code length, so multiple-precision arithmetic
-   would need to replace the unsigned long long arithmetic in that case.  This
-   program will abort if an overflow occurs.  The big_t type identifies where
-   the counting takes place.
-
-   An unsigned long long type is also used for calculating the number of
-   possible codes remaining at the maximum length.  This limits the maximum
-   code length to the number of bits in a long long minus the number of bits
-   needed to represent the symbols in a flat code.  The code_t type identifies
-   where the bit pattern counting takes place.
+   Note that the uintmax_t type is used for counting. It is quite easy to
+   exceed the capacity of an eight-byte integer with a large number of symbols
+   and a large maximum code length, so multiple-precision arithmetic would need
+   to replace the integer arithmetic in that case. This program will abort if
+   an overflow occurs. The big_t type identifies where the counting takes
+   place.
+
+   The uintmax_t type is also used for calculating the number of possible codes
+   remaining at the maximum length. This limits the maximum code length to the
+   number of bits in a long long minus the number of bits needed to represent
+   the symbols in a flat code. The code_t type identifies where the bit-pattern
+   counting takes place.
  */
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
+#include <stdint.h>
 #include <assert.h>
 
 #define local static
 
-/* special data types */
-typedef unsigned long long big_t;   /* type for code counting */
-typedef unsigned long long code_t;  /* type for bit pattern counting */
-struct tab {                        /* type for been here check */
-    size_t len;         /* length of bit vector in char's */
-    char *vec;          /* allocated bit vector */
+// Special data types.
+typedef uintmax_t big_t;    // type for code counting
+#define PRIbig "ju"         // printf format for big_t
+typedef uintmax_t code_t;   // type for bit pattern counting
+struct tab {                // type for been-here check
+    size_t len;             // allocated length of bit vector in octets
+    char *vec;              // allocated bit vector
 };
 
 /* The array for saving results, num[], is indexed with this triplet:
@@ -126,447 +132,466 @@ struct tab {                        /* type for been here check */
       left: 2..syms - 1, but only the evens (so syms == 8 -> 2, 4, 6)
       len: 1..max - 1 (max == maximum code length in bits)
 
-   syms == 2 is not saved since that immediately leads to a single code.  left
+   syms == 2 is not saved since that immediately leads to a single code. left
    must be even, since it represents the number of available bit patterns at
-   the current length, which is double the number at the previous length.
-   left ends at syms-1 since left == syms immediately results in a single code.
+   the current length, which is double the number at the previous length. left
+   ends at syms-1 since left == syms immediately results in a single code.
    (left > sym is not allowed since that would result in an incomplete code.)
    len is less than max, since the code completes immediately when len == max.
 
-   The offset into the array is calculated for the three indices with the
-   first one (syms) being outermost, and the last one (len) being innermost.
-   We build the array with length max-1 lists for the len index, with syms-3
-   of those for each symbol.  There are totsym-2 of those, with each one
-   varying in length as a function of sym.  See the calculation of index in
-   count() for the index, and the calculation of size in main() for the size
-   of the array.
+   The offset into the array is calculated for the three indices with the first
+   one (syms) being outermost, and the last one (len) being innermost. We build
+   the array with length max-1 lists for the len index, with syms-3 of those
+   for each symbol. There are totsym-2 of those, with each one varying in
+   length as a function of sym. See the calculation of index in map() for the
+   index, and the calculation of size in main() for the size of the array.
 
    For the deflate example of 286 symbols limited to 15-bit codes, the array
-   has 284,284 entries, taking up 2.17 MB for an 8-byte big_t.  More than
-   half of the space allocated for saved results is actually used -- not all
-   possible triplets are reached in the generation of valid Huffman codes.
+   has 284,284 entries, taking up 2.17 MB for an 8-byte big_t. More than half
+   of the space allocated for saved results is actually used -- not all
+   possible triplets are reached in the generation of valid prefix codes.
  */
 
 /* The array for tracking visited states, done[], is itself indexed identically
    to the num[] array as described above for the (syms, left, len) triplet.
    Each element in the array is further indexed by the (mem, rem) doublet,
    where mem is the amount of inflate table space used so far, and rem is the
-   remaining unused entries in the current inflate sub-table.  Each indexed
+   remaining unused entries in the current inflate sub-table. Each indexed
    element is simply one bit indicating whether the state has been visited or
-   not.  Since the ranges for mem and rem are not known a priori, each bit
+   not. Since the ranges for mem and rem are not known a priori, each bit
    vector is of a variable size, and grows as needed to accommodate the visited
-   states.  mem and rem are used to calculate a single index in a triangular
-   array.  Since the range of mem is expected in the default case to be about
+   states. mem and rem are used to calculate a single index in a triangular
+   array. Since the range of mem is expected in the default case to be about
    ten times larger than the range of rem, the array is skewed to reduce the
-   memory usage, with eight times the range for mem than for rem.  See the
-   calculations for offset and bit in beenhere() for the details.
+   memory usage, with eight times the range for mem than for rem. See the
+   calculations for offset and bit in been_here() for the details.
 
    For the deflate example of 286 symbols limited to 15-bit codes, the bit
-   vectors grow to total approximately 21 MB, in addition to the 4.3 MB done[]
-   array itself.
+   vectors grow to total 5.5 MB, in addition to the 4.3 MB done array itself.
  */
 
-/* Globals to avoid propagating constants or constant pointers recursively */
-local int max;          /* maximum allowed bit length for the codes */
-local int root;         /* size of base code table in bits */
-local int large;        /* largest code table so far */
-local size_t size;      /* number of elements in num and done */
-local int *code;        /* number of symbols assigned to each bit length */
-local big_t *num;       /* saved results array for code counting */
-local struct tab *done; /* states already evaluated array */
-
-/* Index function for num[] and done[] */
-#define INDEX(i,j,k) (((size_t)((i-1)>>1)*((i-2)>>1)+(j>>1)-1)*(max-1)+k-1)
-
-/* Free allocated space.  Uses globals code, num, and done. */
-local void cleanup(void)
-{
-    size_t n;
-
-    if (done != NULL) {
-        for (n = 0; n < size; n++)
-            if (done[n].len)
-                free(done[n].vec);
-        free(done);
+// Type for a variable-length, allocated string.
+typedef struct {
+    char *str;          // pointer to allocated string
+    size_t size;        // size of allocation
+    size_t len;         // length of string, not including terminating zero
+} string_t;
+
+// Clear a string_t.
+local void string_clear(string_t *s) {
+    s->str[0] = 0;
+    s->len = 0;
+}
+
+// Initialize a string_t.
+local void string_init(string_t *s) {
+    s->size = 16;
+    s->str = malloc(s->size);
+    assert(s->str != NULL && "out of memory");
+    string_clear(s);
+}
+
+// Release the allocation of a string_t.
+local void string_free(string_t *s) {
+    free(s->str);
+    s->str = NULL;
+    s->size = 0;
+    s->len = 0;
+}
+
+// Save the results of printf with fmt and the subsequent argument list to s.
+// Each call appends to s. The allocated space for s is increased as needed.
+local void string_printf(string_t *s, char *fmt, ...) {
+    va_list ap;
+    va_start(ap, fmt);
+    size_t len = s->len;
+    int ret = vsnprintf(s->str + len, s->size - len, fmt, ap);
+    assert(ret >= 0 && "out of memory");
+    s->len += ret;
+    if (s->size < s->len + 1) {
+        do {
+            s->size <<= 1;
+            assert(s->size != 0 && "overflow");
+        } while (s->size < s->len + 1);
+        s->str = realloc(s->str, s->size);
+        assert(s->str != NULL && "out of memory");
+        vsnprintf(s->str + len, s->size - len, fmt, ap);
     }
-    if (num != NULL)
-        free(num);
-    if (code != NULL)
-        free(code);
+    va_end(ap);
 }
 
-/* Return the number of possible Huffman codes using bit patterns of lengths
-   len through max inclusive, coding syms symbols, with left bit patterns of
-   length len unused -- return -1 if there is an overflow in the counting.
-   Keep a record of previous results in num to prevent repeating the same
-   calculation.  Uses the globals max and num. */
-local big_t count(int syms, int len, int left)
-{
-    big_t sum;          /* number of possible codes from this juncture */
-    big_t got;          /* value returned from count() */
-    int least;          /* least number of syms to use at this juncture */
-    int most;           /* most number of syms to use at this juncture */
-    int use;            /* number of bit patterns to use in next call */
-    size_t index;       /* index of this case in *num */
-
-    /* see if only one possible code */
+// Globals to avoid propagating constants or constant pointers recursively.
+struct {
+    int max;            // maximum allowed bit length for the codes
+    int root;           // size of base code table in bits
+    int large;          // largest code table so far
+    size_t size;        // number of elements in num and done
+    big_t tot;          // total number of codes with maximum tables size
+    string_t out;       // display of subcodes for maximum tables size
+    int *code;          // number of symbols assigned to each bit length
+    big_t *num;         // saved results array for code counting
+    struct tab *done;   // states already evaluated array
+} g;
+
+// Index function for num[] and done[].
+local inline size_t map(int syms, int left, int len) {
+    return ((size_t)((syms - 1) >> 1) * ((syms - 2) >> 1) +
+            (left >> 1) - 1) * (g.max - 1) +
+           len - 1;
+}
+
+// Free allocated space in globals.
+local void cleanup(void) {
+    if (g.done != NULL) {
+        for (size_t n = 0; n < g.size; n++)
+            if (g.done[n].len)
+                free(g.done[n].vec);
+        g.size = 0;
+        free(g.done);   g.done = NULL;
+    }
+    free(g.num);    g.num = NULL;
+    free(g.code);   g.code = NULL;
+    string_free(&g.out);
+}
+
+// Return the number of possible prefix codes using bit patterns of lengths len
+// through max inclusive, coding syms symbols, with left bit patterns of length
+// len unused -- return -1 if there is an overflow in the counting. Keep a
+// record of previous results in num to prevent repeating the same calculation.
+local big_t count(int syms, int left, int len) {
+    // see if only one possible code
     if (syms == left)
         return 1;
 
-    /* note and verify the expected state */
-    assert(syms > left && left > 0 && len < max);
+    // note and verify the expected state
+    assert(syms > left && left > 0 && len < g.max);
 
-    /* see if we've done this one already */
-    index = INDEX(syms, left, len);
-    got = num[index];
+    // see if we've done this one already
+    size_t index = map(syms, left, len);
+    big_t got = g.num[index];
     if (got)
-        return got;         /* we have -- return the saved result */
+        return got;         // we have -- return the saved result
 
-    /* we need to use at least this many bit patterns so that the code won't be
-       incomplete at the next length (more bit patterns than symbols) */
-    least = (left << 1) - syms;
+    // we need to use at least this many bit patterns so that the code won't be
+    // incomplete at the next length (more bit patterns than symbols)
+    int least = (left << 1) - syms;
     if (least < 0)
         least = 0;
 
-    /* we can use at most this many bit patterns, lest there not be enough
-       available for the remaining symbols at the maximum length (if there were
-       no limit to the code length, this would become: most = left - 1) */
-    most = (((code_t)left << (max - len)) - syms) /
-            (((code_t)1 << (max - len)) - 1);
+    // we can use at most this many bit patterns, lest there not be enough
+    // available for the remaining symbols at the maximum length (if there were
+    // no limit to the code length, this would become: most = left - 1)
+    int most = (((code_t)left << (g.max - len)) - syms) /
+               (((code_t)1 << (g.max - len)) - 1);
 
-    /* count all possible codes from this juncture and add them up */
-    sum = 0;
-    for (use = least; use <= most; use++) {
-        got = count(syms - use, len + 1, (left - use) << 1);
+    // count all possible codes from this juncture and add them up
+    big_t sum = 0;
+    for (int use = least; use <= most; use++) {
+        got = count(syms - use, (left - use) << 1, len + 1);
         sum += got;
-        if (got == (big_t)0 - 1 || sum < got)   /* overflow */
-            return (big_t)0 - 1;
+        if (got == (big_t)-1 || sum < got)      // overflow
+            return (big_t)-1;
     }
 
-    /* verify that all recursive calls are productive */
+    // verify that all recursive calls are productive
     assert(sum != 0);
 
-    /* save the result and return it */
-    num[index] = sum;
+    // save the result and return it
+    g.num[index] = sum;
     return sum;
 }
 
-/* Return true if we've been here before, set to true if not.  Set a bit in a
-   bit vector to indicate visiting this state.  Each (syms,len,left) state
-   has a variable size bit vector indexed by (mem,rem).  The bit vector is
-   lengthened if needed to allow setting the (mem,rem) bit. */
-local int beenhere(int syms, int len, int left, int mem, int rem)
-{
-    size_t index;       /* index for this state's bit vector */
-    size_t offset;      /* offset in this state's bit vector */
-    int bit;            /* mask for this state's bit */
-    size_t length;      /* length of the bit vector in bytes */
-    char *vector;       /* new or enlarged bit vector */
-
-    /* point to vector for (syms,left,len), bit in vector for (mem,rem) */
-    index = INDEX(syms, left, len);
-    mem -= 1 << root;
-    offset = (mem >> 3) + rem;
+// Return true if we've been here before, set to true if not. Set a bit in a
+// bit vector to indicate visiting this state. Each (syms,len,left) state has a
+// variable size bit vector indexed by (mem,rem). The bit vector is lengthened
+// as needed to allow setting the (mem,rem) bit.
+local int been_here(int syms, int left, int len, int mem, int rem) {
+    // point to vector for (syms,left,len), bit in vector for (mem,rem)
+    size_t index = map(syms, left, len);
+    mem -= 1 << g.root;             // mem always includes the root table
+    mem >>= 1;                      // mem and rem are always even
+    rem >>= 1;
+    size_t offset = (mem >> 3) + rem;
     offset = ((offset * (offset + 1)) >> 1) + rem;
-    bit = 1 << (mem & 7);
+    int bit = 1 << (mem & 7);
 
-    /* see if we've been here */
-    length = done[index].len;
-    if (offset < length && (done[index].vec[offset] & bit) != 0)
-        return 1;       /* done this! */
+    // see if we've been here
+    size_t length = g.done[index].len;
+    if (offset < length && (g.done[index].vec[offset] & bit) != 0)
+        return 1;       // done this!
 
-    /* we haven't been here before -- set the bit to show we have now */
+    // we haven't been here before -- set the bit to show we have now
 
-    /* see if we need to lengthen the vector in order to set the bit */
+    // see if we need to lengthen the vector in order to set the bit
     if (length <= offset) {
-        /* if we have one already, enlarge it, zero out the appended space */
+        // if we have one already, enlarge it, zero out the appended space
+        char *vector;
         if (length) {
             do {
                 length <<= 1;
             } while (length <= offset);
-            vector = realloc(done[index].vec, length);
-            if (vector != NULL)
-                memset(vector + done[index].len, 0, length - done[index].len);
+            vector = realloc(g.done[index].vec, length);
+            assert(vector != NULL && "out of memory");
+            memset(vector + g.done[index].len, 0, length - g.done[index].len);
         }
 
-        /* otherwise we need to make a new vector and zero it out */
+        // otherwise we need to make a new vector and zero it out
         else {
-            length = 1 << (len - root);
+            length = 16;
             while (length <= offset)
                 length <<= 1;
-            vector = calloc(length, sizeof(char));
-        }
-
-        /* in either case, bail if we can't get the memory */
-        if (vector == NULL) {
-            fputs("abort: unable to allocate enough memory\n", stderr);
-            cleanup();
-            exit(1);
+            vector = calloc(length, 1);
+            assert(vector != NULL && "out of memory");
         }
 
-        /* install the new vector */
-        done[index].len = length;
-        done[index].vec = vector;
+        // install the new vector
+        g.done[index].len = length;
+        g.done[index].vec = vector;
     }
 
-    /* set the bit */
-    done[index].vec[offset] |= bit;
+    // set the bit
+    g.done[index].vec[offset] |= bit;
     return 0;
 }
 
-/* Examine all possible codes from the given node (syms, len, left).  Compute
-   the amount of memory required to build inflate's decoding tables, where the
-   number of code structures used so far is mem, and the number remaining in
-   the current sub-table is rem.  Uses the globals max, code, root, large, and
-   done. */
-local void examine(int syms, int len, int left, int mem, int rem)
-{
-    int least;          /* least number of syms to use at this juncture */
-    int most;           /* most number of syms to use at this juncture */
-    int use;            /* number of bit patterns to use in next call */
-
-    /* see if we have a complete code */
+// Examine all possible codes from the given node (syms, len, left). Compute
+// the amount of memory required to build inflate's decoding tables, where the
+// number of code structures used so far is mem, and the number remaining in
+// the current sub-table is rem.
+local void examine(int syms, int left, int len, int mem, int rem) {
+    // see if we have a complete code
     if (syms == left) {
-        /* set the last code entry */
-        code[len] = left;
+        // set the last code entry
+        g.code[len] = left;
 
-        /* complete computation of memory used by this code */
+        // complete computation of memory used by this code
         while (rem < left) {
             left -= rem;
-            rem = 1 << (len - root);
+            rem = 1 << (len - g.root);
             mem += rem;
         }
         assert(rem == left);
 
-        /* if this is a new maximum, show the entries used and the sub-code */
-        if (mem > large) {
-            large = mem;
-            printf("max %d: ", mem);
-            for (use = root + 1; use <= max; use++)
-                if (code[use])
-                    printf("%d[%d] ", code[use], use);
-            putchar('\n');
-            fflush(stdout);
+        // if this is at the maximum, show the sub-code
+        if (mem >= g.large) {
+            // if this is a new maximum, update the maximum and clear out the
+            // printed sub-codes from the previous maximum
+            if (mem > g.large) {
+                g.large = mem;
+                string_clear(&g.out);
+            }
+
+            // compute the starting state for this sub-code
+            syms = 0;
+            left = 1 << g.max;
+            for (int bits = g.max; bits > g.root; bits--) {
+                syms += g.code[bits];
+                left -= g.code[bits];
+                assert((left & 1) == 0);
+                left >>= 1;
+            }
+
+            // print the starting state and the resulting sub-code to g.out
+            string_printf(&g.out, "<%u, %u, %u>:",
+                          syms, g.root + 1, ((1 << g.root) - left) << 1);
+            for (int bits = g.root + 1; bits <= g.max; bits++)
+                if (g.code[bits])
+                    string_printf(&g.out, " %d[%d]", g.code[bits], bits);
+            string_printf(&g.out, "\n");
         }
 
-        /* remove entries as we drop back down in the recursion */
-        code[len] = 0;
+        // remove entries as we drop back down in the recursion
+        g.code[len] = 0;
         return;
     }
 
-    /* prune the tree if we can */
-    if (beenhere(syms, len, left, mem, rem))
+    // prune the tree if we can
+    if (been_here(syms, left, len, mem, rem))
         return;
 
-    /* we need to use at least this many bit patterns so that the code won't be
-       incomplete at the next length (more bit patterns than symbols) */
-    least = (left << 1) - syms;
+    // we need to use at least this many bit patterns so that the code won't be
+    // incomplete at the next length (more bit patterns than symbols)
+    int least = (left << 1) - syms;
     if (least < 0)
         least = 0;
 
-    /* we can use at most this many bit patterns, lest there not be enough
-       available for the remaining symbols at the maximum length (if there were
-       no limit to the code length, this would become: most = left - 1) */
-    most = (((code_t)left << (max - len)) - syms) /
-            (((code_t)1 << (max - len)) - 1);
+    // we can use at most this many bit patterns, lest there not be enough
+    // available for the remaining symbols at the maximum length (if there were
+    // no limit to the code length, this would become: most = left - 1)
+    int most = (((code_t)left << (g.max - len)) - syms) /
+               (((code_t)1 << (g.max - len)) - 1);
 
-    /* occupy least table spaces, creating new sub-tables as needed */
-    use = least;
+    // occupy least table spaces, creating new sub-tables as needed
+    int use = least;
     while (rem < use) {
         use -= rem;
-        rem = 1 << (len - root);
+        rem = 1 << (len - g.root);
         mem += rem;
     }
     rem -= use;
 
-    /* examine codes from here, updating table space as we go */
+    // examine codes from here, updating table space as we go
     for (use = least; use <= most; use++) {
-        code[len] = use;
-        examine(syms - use, len + 1, (left - use) << 1,
-                mem + (rem ? 1 << (len - root) : 0), rem << 1);
+        g.code[len] = use;
+        examine(syms - use, (left - use) << 1, len + 1,
+                mem + (rem ? 1 << (len - g.root) : 0), rem << 1);
         if (rem == 0) {
-            rem = 1 << (len - root);
+            rem = 1 << (len - g.root);
             mem += rem;
         }
         rem--;
     }
 
-    /* remove entries as we drop back down in the recursion */
-    code[len] = 0;
+    // remove entries as we drop back down in the recursion
+    g.code[len] = 0;
 }
 
-/* Look at all sub-codes starting with root + 1 bits.  Look at only the valid
-   intermediate code states (syms, left, len).  For each completed code,
-   calculate the amount of memory required by inflate to build the decoding
-   tables. Find the maximum amount of memory required and show the code that
-   requires that maximum.  Uses the globals max, root, and num. */
-local void enough(int syms)
-{
-    int n;              /* number of remaing symbols for this node */
-    int left;           /* number of unused bit patterns at this length */
-    size_t index;       /* index of this case in *num */
-
-    /* clear code */
-    for (n = 0; n <= max; n++)
-        code[n] = 0;
-
-    /* look at all (root + 1) bit and longer codes */
-    large = 1 << root;              /* base table */
-    if (root < max)                 /* otherwise, there's only a base table */
-        for (n = 3; n <= syms; n++)
-            for (left = 2; left < n; left += 2)
-            {
-                /* look at all reachable (root + 1) bit nodes, and the
-                   resulting codes (complete at root + 2 or more) */
-                index = INDEX(n, left, root + 1);
-                if (root + 1 < max && num[index])       /* reachable node */
-                    examine(n, root + 1, left, 1 << root, 0);
-
-                /* also look at root bit codes with completions at root + 1
-                   bits (not saved in num, since complete), just in case */
-                if (num[index - 1] && n <= left << 1)
-                    examine((n - left) << 1, root + 1, (n - left) << 1,
-                            1 << root, 0);
+// Look at all sub-codes starting with root + 1 bits. Look at only the valid
+// intermediate code states (syms, left, len). For each completed code,
+// calculate the amount of memory required by inflate to build the decoding
+// tables. Find the maximum amount of memory required and show the codes that
+// require that maximum.
+local void enough(int syms) {
+    // clear code
+    for (int n = 0; n <= g.max; n++)
+        g.code[n] = 0;
+
+    // look at all (root + 1) bit and longer codes
+    string_clear(&g.out);           // empty saved results
+    g.large = 1 << g.root;          // base table
+    if (g.root < g.max)             // otherwise, there's only a base table
+        for (int n = 3; n <= syms; n++)
+            for (int left = 2; left < n; left += 2) {
+                // look at all reachable (root + 1) bit nodes, and the
+                // resulting codes (complete at root + 2 or more)
+                size_t index = map(n, left, g.root + 1);
+                if (g.root + 1 < g.max && g.num[index]) // reachable node
+                    examine(n, left, g.root + 1, 1 << g.root, 0);
+
+                // also look at root bit codes with completions at root + 1
+                // bits (not saved in num, since complete), just in case
+                if (g.num[index - 1] && n <= left << 1)
+                    examine((n - left) << 1, (n - left) << 1, g.root + 1,
+                            1 << g.root, 0);
             }
 
-    /* done */
-    printf("done: maximum of %d table entries\n", large);
+    // done
+    printf("maximum of %d table entries for root = %d\n", g.large, g.root);
+    fputs(g.out.str, stdout);
 }
 
-/*
-   Examine and show the total number of possible Huffman codes for a given
-   maximum number of symbols, initial root table size, and maximum code length
-   in bits -- those are the command arguments in that order.  The default
-   values are 286, 9, and 15 respectively, for the deflate literal/length code.
-   The possible codes are counted for each number of coded symbols from two to
-   the maximum.  The counts for each of those and the total number of codes are
-   shown.  The maximum number of inflate table entires is then calculated
-   across all possible codes.  Each new maximum number of table entries and the
-   associated sub-code (starting at root + 1 == 10 bits) is shown.
-
-   To count and examine Huffman codes that are not length-limited, provide a
-   maximum length equal to the number of symbols minus one.
-
-   For the deflate literal/length code, use "enough".  For the deflate distance
-   code, use "enough 30 6".
-
-   This uses the %llu printf format to print big_t numbers, which assumes that
-   big_t is an unsigned long long.  If the big_t type is changed (for example
-   to a multiple precision type), the method of printing will also need to be
-   updated.
- */
-int main(int argc, char **argv)
-{
-    int syms;           /* total number of symbols to code */
-    int n;              /* number of symbols to code for this run */
-    big_t got;          /* return value of count() */
-    big_t sum;          /* accumulated number of codes over n */
-    code_t word;        /* for counting bits in code_t */
-
-    /* set up globals for cleanup() */
-    code = NULL;
-    num = NULL;
-    done = NULL;
-
-    /* get arguments -- default to the deflate literal/length code */
-    syms = 286;
-    root = 9;
-    max = 15;
+// Examine and show the total number of possible prefix codes for a given
+// maximum number of symbols, initial root table size, and maximum code length
+// in bits -- those are the command arguments in that order. The default values
+// are 286, 9, and 15 respectively, for the deflate literal/length code. The
+// possible codes are counted for each number of coded symbols from two to the
+// maximum. The counts for each of those and the total number of codes are
+// shown. The maximum number of inflate table entries is then calculated across
+// all possible codes. Each new maximum number of table entries and the
+// associated sub-code (starting at root + 1 == 10 bits) is shown.
+//
+// To count and examine prefix codes that are not length-limited, provide a
+// maximum length equal to the number of symbols minus one.
+//
+// For the deflate literal/length code, use "enough". For the deflate distance
+// code, use "enough 30 6".
+int main(int argc, char **argv) {
+    // set up globals for cleanup()
+    g.code = NULL;
+    g.num = NULL;
+    g.done = NULL;
+    string_init(&g.out);
+
+    // get arguments -- default to the deflate literal/length code
+    int syms = 286;
+    g.root = 9;
+    g.max = 15;
     if (argc > 1) {
         syms = atoi(argv[1]);
         if (argc > 2) {
-            root = atoi(argv[2]);
+            g.root = atoi(argv[2]);
             if (argc > 3)
-                max = atoi(argv[3]);
+                g.max = atoi(argv[3]);
         }
     }
-    if (argc > 4 || syms < 2 || root < 1 || max < 1) {
+    if (argc > 4 || syms < 2 || g.root < 1 || g.max < 1) {
         fputs("invalid arguments, need: [sym >= 2 [root >= 1 [max >= 1]]]\n",
               stderr);
         return 1;
     }
 
-    /* if not restricting the code length, the longest is syms - 1 */
-    if (max > syms - 1)
-        max = syms - 1;
+    // if not restricting the code length, the longest is syms - 1
+    if (g.max > syms - 1)
+        g.max = syms - 1;
 
-    /* determine the number of bits in a code_t */
-    for (n = 0, word = 1; word; n++, word <<= 1)
-        ;
+    // determine the number of bits in a code_t
+    int bits = 0;
+    for (code_t word = 1; word; word <<= 1)
+        bits++;
 
-    /* make sure that the calculation of most will not overflow */
-    if (max > n || (code_t)(syms - 2) >= (((code_t)0 - 1) >> (max - 1))) {
+    // make sure that the calculation of most will not overflow
+    if (g.max > bits || (code_t)(syms - 2) >= ((code_t)-1 >> (g.max - 1))) {
         fputs("abort: code length too long for internal types\n", stderr);
         return 1;
     }
 
-    /* reject impossible code requests */
-    if ((code_t)(syms - 1) > ((code_t)1 << max) - 1) {
+    // reject impossible code requests
+    if ((code_t)(syms - 1) > ((code_t)1 << g.max) - 1) {
         fprintf(stderr, "%d symbols cannot be coded in %d bits\n",
-                syms, max);
+                syms, g.max);
         return 1;
     }
 
-    /* allocate code vector */
-    code = calloc(max + 1, sizeof(int));
-    if (code == NULL) {
-        fputs("abort: unable to allocate enough memory\n", stderr);
-        return 1;
-    }
+    // allocate code vector
+    g.code = calloc(g.max + 1, sizeof(int));
+    assert(g.code != NULL && "out of memory");
 
-    /* determine size of saved results array, checking for overflows,
-       allocate and clear the array (set all to zero with calloc()) */
-    if (syms == 2)              /* iff max == 1 */
-        num = NULL;             /* won't be saving any results */
+    // determine size of saved results array, checking for overflows,
+    // allocate and clear the array (set all to zero with calloc())
+    if (syms == 2)              // iff max == 1
+        g.num = NULL;           // won't be saving any results
     else {
-        size = syms >> 1;
-        if (size > ((size_t)0 - 1) / (n = (syms - 1) >> 1) ||
-                (size *= n, size > ((size_t)0 - 1) / (n = max - 1)) ||
-                (size *= n, size > ((size_t)0 - 1) / sizeof(big_t)) ||
-                (num = calloc(size, sizeof(big_t))) == NULL) {
-            fputs("abort: unable to allocate enough memory\n", stderr);
-            cleanup();
-            return 1;
-        }
+        g.size = syms >> 1;
+        int n = (syms - 1) >> 1;
+        assert(g.size <= (size_t)-1 / n && "overflow");
+        g.size *= n;
+        n = g.max - 1;
+        assert(g.size <= (size_t)-1 / n && "overflow");
+        g.size *= n;
+        g.num = calloc(g.size, sizeof(big_t));
+        assert(g.num != NULL && "out of memory");
     }
 
-    /* count possible codes for all numbers of symbols, add up counts */
-    sum = 0;
-    for (n = 2; n <= syms; n++) {
-        got = count(n, 1, 2);
+    // count possible codes for all numbers of symbols, add up counts
+    big_t sum = 0;
+    for (int n = 2; n <= syms; n++) {
+        big_t got = count(n, 2, 1);
         sum += got;
-        if (got == (big_t)0 - 1 || sum < got) {     /* overflow */
-            fputs("abort: can't count that high!\n", stderr);
-            cleanup();
-            return 1;
-        }
-        printf("%llu %d-codes\n", got, n);
+        assert(got != (big_t)-1 && sum >= got && "overflow");
     }
-    printf("%llu total codes for 2 to %d symbols", sum, syms);
-    if (max < syms - 1)
-        printf(" (%d-bit length limit)\n", max);
+    printf("%"PRIbig" total codes for 2 to %d symbols", sum, syms);
+    if (g.max < syms - 1)
+        printf(" (%d-bit length limit)\n", g.max);
     else
         puts(" (no length limit)");
 
-    /* allocate and clear done array for beenhere() */
+    // allocate and clear done array for been_here()
     if (syms == 2)
-        done = NULL;
-    else if (size > ((size_t)0 - 1) / sizeof(struct tab) ||
-             (done = calloc(size, sizeof(struct tab))) == NULL) {
-        fputs("abort: unable to allocate enough memory\n", stderr);
-        cleanup();
-        return 1;
+        g.done = NULL;
+    else {
+        g.done = calloc(g.size, sizeof(struct tab));
+        assert(g.done != NULL && "out of memory");
     }
 
-    /* find and show maximum inflate table usage */
-    if (root > max)                 /* reduce root to max length */
-        root = max;
-    if ((code_t)syms < ((code_t)1 << (root + 1)))
+    // find and show maximum inflate table usage
+    if (g.root > g.max)             // reduce root to max length
+        g.root = g.max;
+    if ((code_t)syms < ((code_t)1 << (g.root + 1)))
         enough(syms);
     else
-        puts("cannot handle minimum code lengths > root");
+        fputs("cannot handle minimum code lengths > root", stderr);
 
-    /* done */
+    // done
     cleanup();
     return 0;
 }
diff --git a/libs/zlib/examples/fitblk.c b/libs/zlib/examples/fitblk.c
index c61de5c99..723dc0028 100644
--- a/libs/zlib/examples/fitblk.c
+++ b/libs/zlib/examples/fitblk.c
@@ -17,7 +17,7 @@
    data in order to determine how much of that input will compress to
    nearly the requested output block size.  The first pass generates
    enough deflate blocks to produce output to fill the requested
-   output size plus a specfied excess amount (see the EXCESS define
+   output size plus a specified excess amount (see the EXCESS define
    below).  The last deflate block may go quite a bit past that, but
    is discarded.  The second pass decompresses and recompresses just
    the compressed data that fit in the requested plus excess sized
@@ -109,7 +109,7 @@ local int recompress(z_streamp inf, z_streamp def)
         if (ret == Z_MEM_ERROR)
             return ret;
 
-        /* compress what was decompresed until done or no room */
+        /* compress what was decompressed until done or no room */
         def->avail_in = RAWLEN - inf->avail_out;
         def->next_in = raw;
         if (inf->avail_out != 0)
@@ -198,7 +198,7 @@ int main(int argc, char **argv)
     if (ret == Z_MEM_ERROR)
         quit("out of memory");
 
-    /* set up for next reocmpression */
+    /* set up for next recompression */
     ret = inflateReset(&inf);
     assert(ret != Z_STREAM_ERROR);
     ret = deflateReset(&def);
diff --git a/libs/zlib/examples/gun.c b/libs/zlib/examples/gun.c
index be44fa51f..bea5497e5 100644
--- a/libs/zlib/examples/gun.c
+++ b/libs/zlib/examples/gun.c
@@ -43,7 +43,7 @@
    gun will also decompress files made by Unix compress, which uses LZW
    compression.  These files are automatically detected by virtue of their
    magic header bytes.  Since the end of Unix compress stream is marked by the
-   end-of-file, they cannot be concantenated.  If a Unix compress stream is
+   end-of-file, they cannot be concatenated.  If a Unix compress stream is
    encountered in an input file, it is the last stream in that file.
 
    Like gunzip and uncompress, the file attributes of the original compressed
diff --git a/libs/zlib/examples/gzappend.c b/libs/zlib/examples/gzappend.c
index 662dec379..23e93cf68 100644
--- a/libs/zlib/examples/gzappend.c
+++ b/libs/zlib/examples/gzappend.c
@@ -33,7 +33,7 @@
  *                      - Add L to constants in lseek() calls
  *                      - Remove some debugging information in error messages
  *                      - Use new data_type definition for zlib 1.2.1
- *                      - Simplfy and unify file operations
+ *                      - Simplify and unify file operations
  *                      - Finish off gzip file in gztack()
  *                      - Use deflatePrime() instead of adding empty blocks
  *                      - Keep gzip file clean on appended file read errors
@@ -54,7 +54,7 @@
    block boundary to facilitate locating and modifying the last block bit at
    the start of the final deflate block.  Also whether using Z_BLOCK or not,
    another required feature of zlib 1.2.x is that inflate() now provides the
-   number of unusued bits in the last input byte used.  gzappend will not work
+   number of unused bits in the last input byte used.  gzappend will not work
    with versions of zlib earlier than 1.2.1.
 
    gzappend first decompresses the gzip file internally, discarding all but
@@ -137,7 +137,7 @@ local void rotate(unsigned char *list, unsigned len, unsigned rot)
     /* do simple left shift by one */
     if (rot == 1) {
         tmp = *list;
-        memcpy(list, list + 1, len - 1);
+        memmove(list, list + 1, len - 1);
         *last = tmp;
         return;
     }
diff --git a/libs/zlib/examples/gzlog.c b/libs/zlib/examples/gzlog.c
index b8c29274e..da1b02e73 100644
--- a/libs/zlib/examples/gzlog.c
+++ b/libs/zlib/examples/gzlog.c
@@ -1,8 +1,8 @@
 /*
  * gzlog.c
- * Copyright (C) 2004, 2008, 2012, 2016 Mark Adler, all rights reserved
+ * Copyright (C) 2004, 2008, 2012, 2016, 2019 Mark Adler, all rights reserved
  * For conditions of distribution and use, see copyright notice in gzlog.h
- * version 2.2, 14 Aug 2012
+ * version 2.3, 25 May 2019
  */
 
 /*
@@ -212,8 +212,8 @@
      to the appropriate recovery below.  If there is no foo.add file, provide
      a zero data length to the recovery.  In that case, the append recovery
      restores the foo.gz to the previous compressed + uncompressed data state.
-     For the the compress recovery, a missing foo.add file results in foo.gz
-     being restored to the previous compressed-only data state.
+     For the compress recovery, a missing foo.add file results in foo.gz being
+     restored to the previous compressed-only data state.
    - Append recovery:
      - Pick up append at + step above
    - Compress recovery:
@@ -756,12 +756,14 @@ local int log_recover(struct log *log, int op)
                 return -2;
             }
             if ((fd = open(log->path, O_RDONLY, 0)) < 0) {
+                free(data);
                 log_log(log, op, ".add file read failure");
                 return -1;
             }
             ret = (size_t)read(fd, data, len) != len;
             close(fd);
             if (ret) {
+                free(data);
                 log_log(log, op, ".add file read failure");
                 return -1;
             }
diff --git a/libs/zlib/examples/gzlog.h b/libs/zlib/examples/gzlog.h
index 86f0cecba..4f0510955 100644
--- a/libs/zlib/examples/gzlog.h
+++ b/libs/zlib/examples/gzlog.h
@@ -40,7 +40,7 @@
    its new size at that time.  After each write operation, the log file is a
    valid gzip file that can decompressed to recover what was written.
 
-   The gzlog operations can be interupted at any point due to an application or
+   The gzlog operations can be interrupted at any point due to an application or
    system crash, and the log file will be recovered the next time the log is
    opened with gzlog_open().
  */
diff --git a/libs/zlib/examples/gznorm.c b/libs/zlib/examples/gznorm.c
new file mode 100644
index 000000000..68e0a0f29
--- /dev/null
+++ b/libs/zlib/examples/gznorm.c
@@ -0,0 +1,470 @@
+/* gznorm.c -- normalize a gzip stream
+ * Copyright (C) 2018 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ * Version 1.0  7 Oct 2018  Mark Adler */
+
+// gznorm takes a gzip stream, potentially containing multiple members, and
+// converts it to a gzip stream with a single member. In addition the gzip
+// header is normalized, removing the file name and time stamp, and setting the
+// other header contents (XFL, OS) to fixed values. gznorm does not recompress
+// the data, so it is fast, but no advantage is gained from the history that
+// could be available across member boundaries.
+
+#include <stdio.h>      // fread, fwrite, putc, fflush, ferror, fprintf,
+                        // vsnprintf, stdout, stderr, NULL, FILE
+#include <stdlib.h>     // malloc, free
+#include <string.h>     // strerror
+#include <errno.h>      // errno
+#include <stdarg.h>     // va_list, va_start, va_end
+#include "zlib.h"       // inflateInit2, inflate, inflateReset, inflateEnd,
+                        // z_stream, z_off_t, crc32_combine, Z_NULL, Z_BLOCK,
+                        // Z_OK, Z_STREAM_END, Z_BUF_ERROR, Z_DATA_ERROR,
+                        // Z_MEM_ERROR
+
+#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
+#  include <fcntl.h>
+#  include <io.h>
+#  define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
+#else
+#  define SET_BINARY_MODE(file)
+#endif
+
+#define local static
+
+// printf to an allocated string. Return the string, or NULL if the printf or
+// allocation fails.
+local char *aprintf(char *fmt, ...) {
+    // Get the length of the result of the printf.
+    va_list args;
+    va_start(args, fmt);
+    int len = vsnprintf(NULL, 0, fmt, args);
+    va_end(args);
+    if (len < 0)
+        return NULL;
+
+    // Allocate the required space and printf to it.
+    char *str = malloc(len + 1);
+    if (str == NULL)
+        return NULL;
+    va_start(args, fmt);
+    vsnprintf(str, len + 1, fmt, args);
+    va_end(args);
+    return str;
+}
+
+// Return with an error, putting an allocated error message in *err. Doing an
+// inflateEnd() on an already ended state, or one with state set to Z_NULL, is
+// permitted.
+#define BYE(...) \
+    do { \
+        inflateEnd(&strm); \
+        *err = aprintf(__VA_ARGS__); \
+        return 1; \
+    } while (0)
+
+// Chunk size for buffered reads and for decompression. Twice this many bytes
+// will be allocated on the stack by gzip_normalize(). Must fit in an unsigned.
+#define CHUNK 16384
+
+// Read a gzip stream from in and write an equivalent normalized gzip stream to
+// out. If given no input, an empty gzip stream will be written. If successful,
+// 0 is returned, and *err is set to NULL. On error, 1 is returned, where the
+// details of the error are returned in *err, a pointer to an allocated string.
+//
+// The input may be a stream with multiple gzip members, which is converted to
+// a single gzip member on the output. Each gzip member is decompressed at the
+// level of deflate blocks. This enables clearing the last-block bit, shifting
+// the compressed data to concatenate to the previous member's compressed data,
+// which can end at an arbitrary bit boundary, and identifying stored blocks in
+// order to resynchronize those to byte boundaries. The deflate compressed data
+// is terminated with a 10-bit empty fixed block. If any members on the input
+// end with a 10-bit empty fixed block, then that block is excised from the
+// stream. This avoids appending empty fixed blocks for every normalization,
+// and assures that gzip_normalize applied a second time will not change the
+// input. The pad bits after stored block headers and after the final deflate
+// block are all forced to zeros.
+local int gzip_normalize(FILE *in, FILE *out, char **err) {
+    // initialize the inflate engine to process a gzip member
+    z_stream strm;
+    strm.zalloc = Z_NULL;
+    strm.zfree = Z_NULL;
+    strm.opaque = Z_NULL;
+    strm.avail_in = 0;
+    strm.next_in = Z_NULL;
+    if (inflateInit2(&strm, 15 + 16) != Z_OK)
+        BYE("out of memory");
+
+    // State while processing the input gzip stream.
+    enum {              // BETWEEN -> HEAD -> BLOCK -> TAIL -> BETWEEN -> ...
+        BETWEEN,        // between gzip members (must end in this state)
+        HEAD,           // reading a gzip header
+        BLOCK,          // reading deflate blocks
+        TAIL            // reading a gzip trailer
+    } state = BETWEEN;              // current component being processed
+    unsigned long crc = 0;          // accumulated CRC of uncompressed data
+    unsigned long len = 0;          // accumulated length of uncompressed data
+    unsigned long buf = 0;          // deflate stream bit buffer of num bits
+    int num = 0;                    // number of bits in buf (at bottom)
+
+    // Write a canonical gzip header (no mod time, file name, comment, extra
+    // block, or extra flags, and OS is marked as unknown).
+    fwrite("\x1f\x8b\x08\0\0\0\0\0\0\xff", 1, 10, out);
+
+    // Process the gzip stream from in until reaching the end of the input,
+    // encountering invalid input, or experiencing an i/o error.
+    int more;                       // true if not at the end of the input
+    do {
+        // State inside this loop.
+        unsigned char *put;         // next input buffer location to process
+        int prev;                   // number of bits from previous block in
+                                    // the bit buffer, or -1 if not at the
+                                    // start of a block
+        unsigned long long memb;    // uncompressed length of member
+        size_t tail;                // number of trailer bytes read (0..8)
+        unsigned long part;         // accumulated trailer component
+
+        // Get the next chunk of input from in.
+        unsigned char dat[CHUNK];
+        strm.avail_in = fread(dat, 1, CHUNK, in);
+        if (strm.avail_in == 0)
+            break;
+        more = strm.avail_in == CHUNK;
+        strm.next_in = put = dat;
+
+        // Run that chunk of input through the inflate engine to exhaustion.
+        do {
+            // At this point it is assured that strm.avail_in > 0.
+
+            // Inflate until the end of a gzip component (header, deflate
+            // block, trailer) is reached, or until all of the chunk is
+            // consumed. The resulting decompressed data is discarded, though
+            // the total size of the decompressed data in each member is
+            // tracked, for the calculation of the total CRC.
+            do {
+                // inflate and handle any errors
+                unsigned char scrap[CHUNK];
+                strm.avail_out = CHUNK;
+                strm.next_out = scrap;
+                int ret = inflate(&strm, Z_BLOCK);
+                if (ret == Z_MEM_ERROR)
+                    BYE("out of memory");
+                if (ret == Z_DATA_ERROR)
+                    BYE("input invalid: %s", strm.msg);
+                if (ret != Z_OK && ret != Z_BUF_ERROR && ret != Z_STREAM_END)
+                    BYE("internal error");
+
+                // Update the number of uncompressed bytes generated in this
+                // member. The actual count (not modulo 2^32) is required to
+                // correctly compute the total CRC.
+                unsigned got = CHUNK - strm.avail_out;
+                memb += got;
+                if (memb < got)
+                    BYE("overflow error");
+
+                // Continue to process this chunk until it is consumed, or
+                // until the end of a component (header, deflate block, or
+                // trailer) is reached.
+            } while (strm.avail_out == 0 && (strm.data_type & 0x80) == 0);
+
+            // Since strm.avail_in was > 0 for the inflate call, some input was
+            // just consumed. It is therefore assured that put < strm.next_in.
+
+            // Disposition the consumed component or part of a component.
+            switch (state) {
+                case BETWEEN:
+                    state = HEAD;
+                    // Fall through to HEAD when some or all of the header is
+                    // processed.
+
+                case HEAD:
+                    // Discard the header.
+                    if (strm.data_type & 0x80) {
+                        // End of header reached -- deflate blocks follow.
+                        put = strm.next_in;
+                        prev = num;
+                        memb = 0;
+                        state = BLOCK;
+                    }
+                    break;
+
+                case BLOCK:
+                    // Copy the deflate stream to the output, but with the
+                    // last-block-bit cleared. Re-synchronize stored block
+                    // headers to the output byte boundaries. The bytes at
+                    // put..strm.next_in-1 is the compressed data that has been
+                    // processed and is ready to be copied to the output.
+
+                    // At this point, it is assured that new compressed data is
+                    // available, i.e., put < strm.next_in. If prev is -1, then
+                    // that compressed data starts in the middle of a deflate
+                    // block. If prev is not -1, then the bits in the bit
+                    // buffer, possibly combined with the bits in *put, contain
+                    // the three-bit header of the new deflate block. In that
+                    // case, prev is the number of bits from the previous block
+                    // that remain in the bit buffer. Since num is the number
+                    // of bits in the bit buffer, we have that num - prev is
+                    // the number of bits from the new block currently in the
+                    // bit buffer.
+
+                    // If strm.data_type & 0xc0 is 0x80, then the last byte of
+                    // the available compressed data includes the last bits of
+                    // the end of a deflate block. In that case, that last byte
+                    // also has strm.data_type & 0x1f bits of the next deflate
+                    // block, in the range 0..7. If strm.data_type & 0xc0 is
+                    // 0xc0, then the last byte of the compressed data is the
+                    // end of the deflate stream, followed by strm.data_type &
+                    // 0x1f pad bits, also in the range 0..7.
+
+                    // Set bits to the number of bits not yet consumed from the
+                    // last byte. If we are at the end of the block, bits is
+                    // either the number of bits in the last byte belonging to
+                    // the next block, or the number of pad bits after the
+                    // final block. In either of those cases, bits is in the
+                    // range 0..7.
+                    ;                   // (required due to C syntax oddity)
+                    int bits = strm.data_type & 0x1f;
+
+                    if (prev != -1) {
+                        // We are at the start of a new block. Clear the last
+                        // block bit, and check for special cases. If it is a
+                        // stored block, then emit the header and pad to the
+                        // next byte boundary. If it is a final, empty fixed
+                        // block, then excise it.
+
+                        // Some or all of the three header bits for this block
+                        // may already be in the bit buffer. Load any remaining
+                        // header bits into the bit buffer.
+                        if (num - prev < 3) {
+                            buf += (unsigned long)*put++ << num;
+                            num += 8;
+                        }
+
+                        // Set last to have a 1 in the position of the last
+                        // block bit in the bit buffer.
+                        unsigned long last = (unsigned long)1 << prev;
+
+                        if (((buf >> prev) & 7) == 3) {
+                            // This is a final fixed block. Load at least ten
+                            // bits from this block, including the header, into
+                            // the bit buffer. We already have at least three,
+                            // so at most one more byte needs to be loaded.
+                            if (num - prev < 10) {
+                                if (put == strm.next_in)
+                                    // Need to go get and process more input.
+                                    // We'll end up back here to finish this.
+                                    break;
+                                buf += (unsigned long)*put++ << num;
+                                num += 8;
+                            }
+                            if (((buf >> prev) & 0x3ff) == 3) {
+                                // That final fixed block is empty. Delete it
+                                // to avoid adding an empty block every time a
+                                // gzip stream is normalized.
+                                num = prev;
+                                buf &= last - 1;    // zero the pad bits
+                            }
+                        }
+                        else if (((buf >> prev) & 6) == 0) {
+                            // This is a stored block. Flush to the next
+                            // byte boundary after the three-bit header.
+                            num = (prev + 10) & ~7;
+                            buf &= last - 1;        // zero the pad bits
+                        }
+
+                        // Clear the last block bit.
+                        buf &= ~last;
+
+                        // Write out complete bytes in the bit buffer.
+                        while (num >= 8) {
+                            putc(buf, out);
+                            buf >>= 8;
+                            num -= 8;
+                        }
+
+                        // If no more bytes left to process, then we have
+                        // consumed the byte that had bits from the next block.
+                        if (put == strm.next_in)
+                            bits = 0;
+                    }
+
+                    // We are done handling the deflate block header. Now copy
+                    // all or almost all of the remaining compressed data that
+                    // has been processed so far. Don't copy one byte at the
+                    // end if it contains bits from the next deflate block or
+                    // pad bits at the end of a deflate block.
+
+                    // mix is 1 if we are at the end of a deflate block, and if
+                    // some of the bits in the last byte follow this block. mix
+                    // is 0 if we are in the middle of a deflate block, if the
+                    // deflate block ended on a byte boundary, or if all of the
+                    // compressed data processed so far has been consumed.
+                    int mix = (strm.data_type & 0x80) && bits;
+
+                    // Copy all of the processed compressed data to the output,
+                    // except for the last byte if it contains bits from the
+                    // next deflate block or pad bits at the end of the deflate
+                    // stream. Copy the data after shifting in num bits from
+                    // buf in front of it, leaving num bits from the end of the
+                    // compressed data in buf when done.
+                    unsigned char *end = strm.next_in - mix;
+                    if (put < end) {
+                        if (num)
+                            // Insert num bits from buf before the data being
+                            // copied.
+                            do {
+                                buf += (unsigned)(*put++) << num;
+                                putc(buf, out);
+                                buf >>= 8;
+                            } while (put < end);
+                        else {
+                            // No shifting needed -- write directly.
+                            fwrite(put, 1, end - put, out);
+                            put = end;
+                        }
+                    }
+
+                    // Process the last processed byte if it wasn't written.
+                    if (mix) {
+                        // Load the last byte into the bit buffer.
+                        buf += (unsigned)(*put++) << num;
+                        num += 8;
+
+                        if (strm.data_type & 0x40) {
+                            // We are at the end of the deflate stream and
+                            // there are bits pad bits. Discard the pad bits
+                            // and write a byte to the output, if available.
+                            // Leave the num bits left over in buf to prepend
+                            // to the next deflate stream.
+                            num -= bits;
+                            if (num >= 8) {
+                                putc(buf, out);
+                                num -= 8;
+                                buf >>= 8;
+                            }
+
+                            // Force the pad bits in the bit buffer to zeros.
+                            buf &= ((unsigned long)1 << num) - 1;
+
+                            // Don't need to set prev here since going to TAIL.
+                        }
+                        else
+                            // At the end of an internal deflate block. Leave
+                            // the last byte in the bit buffer to examine on
+                            // the next entry to BLOCK, when more bits from the
+                            // next block will be available.
+                            prev = num - bits;      // number of bits in buffer
+                                                    // from current block
+                    }
+
+                    // Don't have a byte left over, so we are in the middle of
+                    // a deflate block, or the deflate block ended on a byte
+                    // boundary. Set prev appropriately for the next entry into
+                    // BLOCK.
+                    else if (strm.data_type & 0x80)
+                        // The block ended on a byte boundary, so no header
+                        // bits are in the bit buffer.
+                        prev = num;
+                    else
+                        // In the middle of a deflate block, so no header here.
+                        prev = -1;
+
+                    // Check for the end of the deflate stream.
+                    if ((strm.data_type & 0xc0) == 0xc0) {
+                        // That ends the deflate stream on the input side, the
+                        // pad bits were discarded, and any remaining bits from
+                        // the last block in the stream are saved in the bit
+                        // buffer to prepend to the next stream. Process the
+                        // gzip trailer next.
+                        tail = 0;
+                        part = 0;
+                        state = TAIL;
+                    }
+                    break;
+
+                case TAIL:
+                    // Accumulate available trailer bytes to update the total
+                    // CRC and the total uncompressed length.
+                    do {
+                        part = (part >> 8) + ((unsigned long)(*put++) << 24);
+                        tail++;
+                        if (tail == 4) {
+                            // Update the total CRC.
+                            z_off_t len2 = memb;
+                            if (len2 < 0 || (unsigned long long)len2 != memb)
+                                BYE("overflow error");
+                            crc = crc ? crc32_combine(crc, part, len2) : part;
+                            part = 0;
+                        }
+                        else if (tail == 8) {
+                            // Update the total uncompressed length. (It's ok
+                            // if this sum is done modulo 2^32.)
+                            len += part;
+
+                            // At the end of a member. Set up to inflate an
+                            // immediately following gzip member. (If we made
+                            // it this far, then the trailer was valid.)
+                            if (inflateReset(&strm) != Z_OK)
+                                BYE("internal error");
+                            state = BETWEEN;
+                            break;
+                        }
+                    } while (put < strm.next_in);
+                    break;
+            }
+
+            // Process the input buffer until completely consumed.
+        } while (strm.avail_in > 0);
+
+        // Process input until end of file, invalid input, or i/o error.
+    } while (more);
+
+    // Done with the inflate engine.
+    inflateEnd(&strm);
+
+    // Verify the validity of the input.
+    if (state != BETWEEN)
+        BYE("input invalid: incomplete gzip stream");
+
+    // Write the remaining deflate stream bits, followed by a terminating
+    // deflate fixed block.
+    buf += (unsigned long)3 << num;
+    putc(buf, out);
+    putc(buf >> 8, out);
+    if (num > 6)
+        putc(0, out);
+
+    // Write the gzip trailer, which is the CRC and the uncompressed length
+    // modulo 2^32, both in little-endian order.
+    putc(crc, out);
+    putc(crc >> 8, out);
+    putc(crc >> 16, out);
+    putc(crc >> 24, out);
+    putc(len, out);
+    putc(len >> 8, out);
+    putc(len >> 16, out);
+    putc(len >> 24, out);
+    fflush(out);
+
+    // Check for any i/o errors.
+    if (ferror(in) || ferror(out))
+        BYE("i/o error: %s", strerror(errno));
+
+    // All good!
+    *err = NULL;
+    return 0;
+}
+
+// Normalize the gzip stream on stdin, writing the result to stdout.
+int main(void) {
+    // Avoid end-of-line conversions on evil operating systems.
+    SET_BINARY_MODE(stdin);
+    SET_BINARY_MODE(stdout);
+
+    // Normalize from stdin to stdout, returning 1 on error, 0 if ok.
+    char *err;
+    int ret = gzip_normalize(stdin, stdout, &err);
+    if (ret)
+        fprintf(stderr, "gznorm error: %s\n", err);
+    free(err);
+    return ret;
+}
diff --git a/libs/zlib/examples/zlib_how.html b/libs/zlib/examples/zlib_how.html
index 444ff1c9a..43271b988 100644
--- a/libs/zlib/examples/zlib_how.html
+++ b/libs/zlib/examples/zlib_how.html
@@ -1,10 +1,10 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
-  "http://www.w3.org/TR/REC-html40/loose.dtd">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+  "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>zlib Usage Example</title>
-<!--  Copyright (c) 2004, 2005 Mark Adler.  -->
+<!--  Copyright (c) 2004-2023 Mark Adler.  -->
 </head>
 <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#00A000">
 <h2 align="center"> zlib Usage Example </h2>
@@ -17,7 +17,7 @@ from an input file to an output file using <tt>deflate()</tt> and <tt>inflate()<
 annotations are interspersed between lines of the code.  So please read between the lines.
 We hope this helps explain some of the intricacies of <em>zlib</em>.
 <p>
-Without further adieu, here is the program <a href="zpipe.c"><tt>zpipe.c</tt></a>:
+Without further ado, here is the program <a href="zpipe.c"><tt>zpipe.c</tt></a>:
 <pre><b>
 /* zpipe.c: example of proper use of zlib's inflate() and deflate()
    Not copyrighted -- provided to the public domain
@@ -155,13 +155,11 @@ before we fall out of the loop at the bottom.
 </b></pre>
 We start off by reading data from the input file.  The number of bytes read is put directly
 into <tt>avail_in</tt>, and a pointer to those bytes is put into <tt>next_in</tt>.  We also
-check to see if end-of-file on the input has been reached.  If we are at the end of file, then <tt>flush</tt> is set to the
+check to see if end-of-file on the input has been reached using feof().
+If we are at the end of file, then <tt>flush</tt> is set to the
 <em>zlib</em> constant <tt>Z_FINISH</tt>, which is later passed to <tt>deflate()</tt> to
-indicate that this is the last chunk of input data to compress.  We need to use <tt>feof()</tt>
-to check for end-of-file as opposed to seeing if fewer than <tt>CHUNK</tt> bytes have been read.  The
-reason is that if the input file length is an exact multiple of <tt>CHUNK</tt>, we will miss
-the fact that we got to the end-of-file, and not know to tell <tt>deflate()</tt> to finish
-up the compressed stream.  If we are not yet at the end of the input, then the <em>zlib</em>
+indicate that this is the last chunk of input data to compress.
+If we are not yet at the end of the input, then the <em>zlib</em>
 constant <tt>Z_NO_FLUSH</tt> will be passed to <tt>deflate</tt> to indicate that we are still
 in the middle of the uncompressed data.
 <p>
@@ -540,6 +538,12 @@ int main(int argc, char **argv)
 }
 </b></pre>
 <hr>
-<i>Copyright (c) 2004, 2005 by Mark Adler<br>Last modified 11 December 2005</i>
+<i>Last modified 24 January 2023<br>
+Copyright &#169; 2004-2023 Mark Adler</i><br>
+<a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">
+<img alt="Creative Commons License" style="border-width:0"
+src="https://i.creativecommons.org/l/by-nd/4.0/88x31.png"></a>
+<a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">
+Creative Commons Attribution-NoDerivatives 4.0 International License</a>.
 </body>
 </html>
diff --git a/libs/zlib/examples/zran.c b/libs/zlib/examples/zran.c
index 4fec6594a..d3135955b 100644
--- a/libs/zlib/examples/zran.c
+++ b/libs/zlib/examples/zran.c
@@ -1,383 +1,503 @@
-/* zran.c -- example of zlib/gzip stream indexing and random access
- * Copyright (C) 2005, 2012 Mark Adler
+/* zran.c -- example of deflate stream indexing and random access
+ * Copyright (C) 2005, 2012, 2018, 2023 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
-   Version 1.1  29 Sep 2012  Mark Adler */
+ * Version 1.4  13 Apr 2023  Mark Adler */
 
 /* Version History:
  1.0  29 May 2005  First version
  1.1  29 Sep 2012  Fix memory reallocation error
+ 1.2  14 Oct 2018  Handle gzip streams with multiple members
+                   Add a header file to facilitate usage in applications
+ 1.3  18 Feb 2023  Permit raw deflate streams as well as zlib and gzip
+                   Permit crossing gzip member boundaries when extracting
+                   Support a size_t size when extracting (was an int)
+                   Do a binary search over the index for an access point
+                   Expose the access point type to enable save and load
+ 1.4  13 Apr 2023  Add a NOPRIME define to not use inflatePrime()
  */
 
-/* Illustrate the use of Z_BLOCK, inflatePrime(), and inflateSetDictionary()
-   for random access of a compressed file.  A file containing a zlib or gzip
-   stream is provided on the command line.  The compressed stream is decoded in
-   its entirety, and an index built with access points about every SPAN bytes
-   in the uncompressed output.  The compressed file is left open, and can then
-   be read randomly, having to decompress on the average SPAN/2 uncompressed
-   bytes before getting to the desired block of data.
-
-   An access point can be created at the start of any deflate block, by saving
-   the starting file offset and bit of that block, and the 32K bytes of
-   uncompressed data that precede that block.  Also the uncompressed offset of
-   that block is saved to provide a referece for locating a desired starting
-   point in the uncompressed stream.  build_index() works by decompressing the
-   input zlib or gzip stream a block at a time, and at the end of each block
-   deciding if enough uncompressed data has gone by to justify the creation of
-   a new access point.  If so, that point is saved in a data structure that
-   grows as needed to accommodate the points.
-
-   To use the index, an offset in the uncompressed data is provided, for which
-   the latest access point at or preceding that offset is located in the index.
-   The input file is positioned to the specified location in the index, and if
-   necessary the first few bits of the compressed data is read from the file.
-   inflate is initialized with those bits and the 32K of uncompressed data, and
-   the decompression then proceeds until the desired offset in the file is
-   reached.  Then the decompression continues to read the desired uncompressed
-   data from the file.
-
-   Another approach would be to generate the index on demand.  In that case,
-   requests for random access reads from the compressed data would try to use
-   the index, but if a read far enough past the end of the index is required,
-   then further index entries would be generated and added.
-
-   There is some fair bit of overhead to starting inflation for the random
-   access, mainly copying the 32K byte dictionary.  So if small pieces of the
-   file are being accessed, it would make sense to implement a cache to hold
-   some lookahead and avoid many calls to extract() for small lengths.
-
-   Another way to build an index would be to use inflateCopy().  That would
-   not be constrained to have access points at block boundaries, but requires
-   more memory per access point, and also cannot be saved to file due to the
-   use of pointers in the state.  The approach here allows for storage of the
-   index in a file.
- */
+// Illustrate the use of Z_BLOCK, inflatePrime(), and inflateSetDictionary()
+// for random access of a compressed file. A file containing a raw deflate
+// stream is provided on the command line. The compressed stream is decoded in
+// its entirety, and an index built with access points about every SPAN bytes
+// in the uncompressed output. The compressed file is left open, and can then
+// be read randomly, having to decompress on the average SPAN/2 uncompressed
+// bytes before getting to the desired block of data.
+//
+// An access point can be created at the start of any deflate block, by saving
+// the starting file offset and bit of that block, and the 32K bytes of
+// uncompressed data that precede that block. Also the uncompressed offset of
+// that block is saved to provide a reference for locating a desired starting
+// point in the uncompressed stream. deflate_index_build() decompresses the
+// input raw deflate stream a block at a time, and at the end of each block
+// decides if enough uncompressed data has gone by to justify the creation of a
+// new access point. If so, that point is saved in a data structure that grows
+// as needed to accommodate the points.
+//
+// To use the index, an offset in the uncompressed data is provided, for which
+// the latest access point at or preceding that offset is located in the index.
+// The input file is positioned to the specified location in the index, and if
+// necessary the first few bits of the compressed data is read from the file.
+// inflate is initialized with those bits and the 32K of uncompressed data, and
+// decompression then proceeds until the desired offset in the file is reached.
+// Then decompression continues to read the requested uncompressed data from
+// the file.
+//
+// There is some fair bit of overhead to starting inflation for the random
+// access, mainly copying the 32K byte dictionary. If small pieces of the file
+// are being accessed, it would make sense to implement a cache to hold some
+// lookahead to avoid many calls to deflate_index_extract() for small lengths.
+//
+// Another way to build an index would be to use inflateCopy(). That would not
+// be constrained to have access points at block boundaries, but would require
+// more memory per access point, and could not be saved to a file due to the
+// use of pointers in the state. The approach here allows for storage of the
+// index in a file.
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <limits.h>
 #include "zlib.h"
+#include "zran.h"
+
+#define WINSIZE 32768U      // sliding window size
+#define CHUNK 16384         // file input buffer size
 
-#define local static
-
-#define SPAN 1048576L       /* desired distance between access points */
-#define WINSIZE 32768U      /* sliding window size */
-#define CHUNK 16384         /* file input buffer size */
-
-/* access point entry */
-struct point {
-    off_t out;          /* corresponding offset in uncompressed data */
-    off_t in;           /* offset in input file of first full byte */
-    int bits;           /* number of bits (1-7) from byte at in - 1, or 0 */
-    unsigned char window[WINSIZE];  /* preceding 32K of uncompressed data */
-};
-
-/* access point list */
-struct access {
-    int have;           /* number of list entries filled in */
-    int size;           /* number of list entries allocated */
-    struct point *list; /* allocated list */
-};
-
-/* Deallocate an index built by build_index() */
-local void free_index(struct access *index)
-{
+// See comments in zran.h.
+void deflate_index_free(struct deflate_index *index) {
     if (index != NULL) {
         free(index->list);
         free(index);
     }
 }
 
-/* Add an entry to the access point list.  If out of memory, deallocate the
-   existing list and return NULL. */
-local struct access *addpoint(struct access *index, int bits,
-    off_t in, off_t out, unsigned left, unsigned char *window)
-{
-    struct point *next;
-
-    /* if list is empty, create it (start with eight points) */
+// Add an access point to the list. If out of memory, deallocate the existing
+// list and return NULL. index->mode is temporarily the allocated number of
+// access points, until it is time for deflate_index_build() to return. Then
+// index->mode is set to the mode of inflation.
+static struct deflate_index *add_point(struct deflate_index *index, int bits,
+                                       off_t in, off_t out, unsigned left,
+                                       unsigned char *window) {
     if (index == NULL) {
-        index = malloc(sizeof(struct access));
-        if (index == NULL) return NULL;
-        index->list = malloc(sizeof(struct point) << 3);
+        // The list is empty. Create it, starting with eight access points.
+        index = malloc(sizeof(struct deflate_index));
+        if (index == NULL)
+            return NULL;
+        index->have = 0;
+        index->mode = 8;
+        index->list = malloc(sizeof(point_t) * index->mode);
         if (index->list == NULL) {
             free(index);
             return NULL;
         }
-        index->size = 8;
-        index->have = 0;
     }
 
-    /* if list is full, make it bigger */
-    else if (index->have == index->size) {
-        index->size <<= 1;
-        next = realloc(index->list, sizeof(struct point) * index->size);
+    else if (index->have == index->mode) {
+        // The list is full. Make it bigger.
+        index->mode <<= 1;
+        point_t *next = realloc(index->list, sizeof(point_t) * index->mode);
         if (next == NULL) {
-            free_index(index);
+            deflate_index_free(index);
             return NULL;
         }
         index->list = next;
     }
 
-    /* fill in entry and increment how many we have */
-    next = index->list + index->have;
-    next->bits = bits;
-    next->in = in;
+    // Fill in the access point and increment how many we have.
+    point_t *next = (point_t *)(index->list) + index->have++;
+    if (index->have < 0) {
+        // Overflowed the int!
+        deflate_index_free(index);
+        return NULL;
+    }
     next->out = out;
+    next->in = in;
+    next->bits = bits;
     if (left)
         memcpy(next->window, window + WINSIZE - left, left);
     if (left < WINSIZE)
         memcpy(next->window + left, window, WINSIZE - left);
-    index->have++;
 
-    /* return list, possibly reallocated */
+    // Return the index, which may have been newly allocated or destroyed.
     return index;
 }
 
-/* Make one entire pass through the compressed stream and build an index, with
-   access points about every span bytes of uncompressed output -- span is
-   chosen to balance the speed of random access against the memory requirements
-   of the list, about 32K bytes per access point.  Note that data after the end
-   of the first zlib or gzip stream in the file is ignored.  build_index()
-   returns the number of access points on success (>= 1), Z_MEM_ERROR for out
-   of memory, Z_DATA_ERROR for an error in the input file, or Z_ERRNO for a
-   file read error.  On success, *built points to the resulting index. */
-local int build_index(FILE *in, off_t span, struct access **built)
-{
-    int ret;
-    off_t totin, totout;        /* our own total counters to avoid 4GB limit */
-    off_t last;                 /* totout value of last access point */
-    struct access *index;       /* access points being generated */
-    z_stream strm;
-    unsigned char input[CHUNK];
-    unsigned char window[WINSIZE];
-
-    /* initialize inflate */
-    strm.zalloc = Z_NULL;
-    strm.zfree = Z_NULL;
-    strm.opaque = Z_NULL;
-    strm.avail_in = 0;
-    strm.next_in = Z_NULL;
-    ret = inflateInit2(&strm, 47);      /* automatic zlib or gzip decoding */
-    if (ret != Z_OK)
-        return ret;
-
-    /* inflate the input, maintain a sliding window, and build an index -- this
-       also validates the integrity of the compressed data using the check
-       information at the end of the gzip or zlib stream */
-    totin = totout = last = 0;
-    index = NULL;               /* will be allocated by first addpoint() */
-    strm.avail_out = 0;
+// Decompression modes. These are the inflateInit2() windowBits parameter.
+#define RAW -15
+#define ZLIB 15
+#define GZIP 31
+
+// See comments in zran.h.
+int deflate_index_build(FILE *in, off_t span, struct deflate_index **built) {
+    // Set up inflation state.
+    z_stream strm = {0};        // inflate engine (gets fired up later)
+    unsigned char buf[CHUNK];   // input buffer
+    unsigned char win[WINSIZE] = {0};   // output sliding window
+    off_t totin = 0;            // total bytes read from input
+    off_t totout = 0;           // total bytes uncompressed
+    int mode = 0;               // mode: RAW, ZLIB, or GZIP (0 => not set yet)
+
+    // Decompress from in, generating access points along the way.
+    int ret;                    // the return value from zlib, or Z_ERRNO
+    off_t last;                 // last access point uncompressed offset
+    struct deflate_index *index = NULL;     // list of access points
     do {
-        /* get some compressed data from input file */
-        strm.avail_in = fread(input, 1, CHUNK, in);
-        if (ferror(in)) {
-            ret = Z_ERRNO;
-            goto build_index_error;
-        }
+        // Assure available input, at least until reaching EOF.
         if (strm.avail_in == 0) {
-            ret = Z_DATA_ERROR;
-            goto build_index_error;
-        }
-        strm.next_in = input;
-
-        /* process all of that, or until end of stream */
-        do {
-            /* reset sliding window if necessary */
-            if (strm.avail_out == 0) {
-                strm.avail_out = WINSIZE;
-                strm.next_out = window;
-            }
-
-            /* inflate until out of input, output, or at end of block --
-               update the total input and output counters */
+            strm.avail_in = fread(buf, 1, sizeof(buf), in);
             totin += strm.avail_in;
-            totout += strm.avail_out;
-            ret = inflate(&strm, Z_BLOCK);      /* return at end of block */
-            totin -= strm.avail_in;
-            totout -= strm.avail_out;
-            if (ret == Z_NEED_DICT)
-                ret = Z_DATA_ERROR;
-            if (ret == Z_MEM_ERROR || ret == Z_DATA_ERROR)
-                goto build_index_error;
-            if (ret == Z_STREAM_END)
+            strm.next_in = buf;
+            if (strm.avail_in < sizeof(buf) && ferror(in)) {
+                ret = Z_ERRNO;
                 break;
+            }
 
-            /* if at end of block, consider adding an index entry (note that if
-               data_type indicates an end-of-block, then all of the
-               uncompressed data from that block has been delivered, and none
-               of the compressed data after that block has been consumed,
-               except for up to seven bits) -- the totout == 0 provides an
-               entry point after the zlib or gzip header, and assures that the
-               index always has at least one access point; we avoid creating an
-               access point after the last block by checking bit 6 of data_type
-             */
-            if ((strm.data_type & 128) && !(strm.data_type & 64) &&
-                (totout == 0 || totout - last > span)) {
-                index = addpoint(index, strm.data_type & 7, totin,
-                                 totout, strm.avail_out, window);
-                if (index == NULL) {
-                    ret = Z_MEM_ERROR;
-                    goto build_index_error;
-                }
-                last = totout;
+            if (mode == 0) {
+                // At the start of the input -- determine the type. Assume raw
+                // if it is neither zlib nor gzip. This could in theory result
+                // in a false positive for zlib, but in practice the fill bits
+                // after a stored block are always zeros, so a raw stream won't
+                // start with an 8 in the low nybble.
+                mode = strm.avail_in == 0 ? RAW :       // empty -- will fail
+                       (strm.next_in[0] & 0xf) == 8 ? ZLIB :
+                       strm.next_in[0] == 0x1f ? GZIP :
+                       /* else */ RAW;
+                ret = inflateInit2(&strm, mode);
+                if (ret != Z_OK)
+                    break;
             }
-        } while (strm.avail_in != 0);
-    } while (ret != Z_STREAM_END);
+        }
 
-    /* clean up and return index (release unused entries in list) */
-    (void)inflateEnd(&strm);
-    index->list = realloc(index->list, sizeof(struct point) * index->have);
-    index->size = index->have;
+        // Assure available output. This rotates the output through, for use as
+        // a sliding window on the uncompressed data.
+        if (strm.avail_out == 0) {
+            strm.avail_out = sizeof(win);
+            strm.next_out = win;
+        }
+
+        if (mode == RAW && index == NULL)
+            // We skip the inflate() call at the start of raw deflate data in
+            // order generate an access point there. Set data_type to imitate
+            // the end of a header.
+            strm.data_type = 0x80;
+        else {
+            // Inflate and update the number of uncompressed bytes.
+            unsigned before = strm.avail_out;
+            ret = inflate(&strm, Z_BLOCK);
+            totout += before - strm.avail_out;
+        }
+
+        if ((strm.data_type & 0xc0) == 0x80 &&
+            (index == NULL || totout - last >= span)) {
+            // We are at the end of a header or a non-last deflate block, so we
+            // can add an access point here. Furthermore, we are either at the
+            // very start for the first access point, or there has been span or
+            // more uncompressed bytes since the last access point, so we want
+            // to add an access point here.
+            index = add_point(index, strm.data_type & 7, totin - strm.avail_in,
+                              totout, strm.avail_out, win);
+            if (index == NULL) {
+                ret = Z_MEM_ERROR;
+                break;
+            }
+            last = totout;
+        }
+
+        if (ret == Z_STREAM_END && mode == GZIP &&
+            (strm.avail_in || ungetc(getc(in), in) != EOF))
+            // There is more input after the end of a gzip member. Reset the
+            // inflate state to read another gzip member. On success, this will
+            // set ret to Z_OK to continue decompressing.
+            ret = inflateReset2(&strm, GZIP);
+
+        // Keep going until Z_STREAM_END or error. If the compressed data ends
+        // prematurely without a file read error, Z_BUF_ERROR is returned.
+    } while (ret == Z_OK);
+    inflateEnd(&strm);
+
+    if (ret != Z_STREAM_END) {
+        // An error was encountered. Discard the index and return a negative
+        // error code.
+        deflate_index_free(index);
+        return ret == Z_NEED_DICT ? Z_DATA_ERROR : ret;
+    }
+
+    // Shrink the index to only the occupied access points and return it.
+    index->mode = mode;
+    index->length = totout;
+    point_t *list = realloc(index->list, sizeof(point_t) * index->have);
+    if (list == NULL) {
+        // Seems like a realloc() to make something smaller should always work,
+        // but just in case.
+        deflate_index_free(index);
+        return Z_MEM_ERROR;
+    }
+    index->list = list;
     *built = index;
-    return index->size;
-
-    /* return error */
-  build_index_error:
-    (void)inflateEnd(&strm);
-    if (index != NULL)
-        free_index(index);
-    return ret;
+    return index->have;
 }
 
-/* Use the index to read len bytes from offset into buf, return bytes read or
-   negative for error (Z_DATA_ERROR or Z_MEM_ERROR).  If data is requested past
-   the end of the uncompressed data, then extract() will return a value less
-   than len, indicating how much as actually read into buf.  This function
-   should not return a data error unless the file was modified since the index
-   was generated.  extract() may also return Z_ERRNO if there is an error on
-   reading or seeking the input file. */
-local int extract(FILE *in, struct access *index, off_t offset,
-                  unsigned char *buf, int len)
-{
-    int ret, skip;
-    z_stream strm;
-    struct point *here;
-    unsigned char input[CHUNK];
-    unsigned char discard[WINSIZE];
+#ifdef NOPRIME
+// Support zlib versions before 1.2.3 (July 2005), or incomplete zlib clones
+// that do not have inflatePrime().
+
+#  define INFLATEPRIME inflatePreface
+
+// Append the low bits bits of value to in[] at bit position *have, updating
+// *have. value must be zero above its low bits bits. bits must be positive.
+// This assumes that any bits above the *have bits in the last byte are zeros.
+// That assumption is preserved on return, as any bits above *have + bits in
+// the last byte written will be set to zeros.
+static inline void append_bits(unsigned value, int bits,
+                               unsigned char *in, int *have) {
+    in += *have >> 3;           // where the first bits from value will go
+    int k = *have & 7;          // the number of bits already there
+    *have += bits;
+    if (k)
+        *in |= value << k;      // write value above the low k bits
+    else
+        *in = value;
+    k = 8 - k;                  // the number of bits just appended
+    while (bits > k) {
+        value >>= k;            // drop the bits appended
+        bits -= k;
+        k = 8;                  // now at a byte boundary
+        *++in = value;
+    }
+}
+
+// Insert enough bits in the form of empty deflate blocks in front of the
+// low bits bits of value, in order to bring the sequence to a byte boundary.
+// Then feed that to inflate(). This does what inflatePrime() does, except that
+// a negative value of bits is not supported. bits must be in 0..16. If the
+// arguments are invalid, Z_STREAM_ERROR is returned. Otherwise the return
+// value from inflate() is returned.
+static int inflatePreface(z_stream *strm, int bits, int value) {
+    // Check input.
+    if (strm == Z_NULL || bits < 0 || bits > 16)
+        return Z_STREAM_ERROR;
+    if (bits == 0)
+        return Z_OK;
+    value &= (2 << (bits - 1)) - 1;
+
+    // An empty dynamic block with an odd number of bits (95). The high bit of
+    // the last byte is unused.
+    static const unsigned char dyn[] = {
+        4, 0xe0, 0x81, 8, 0, 0, 0, 0, 0x20, 0xa8, 0xab, 0x1f
+    };
+    const int dynlen = 95;          // number of bits in the block
+
+    // Build an input buffer for inflate that is a multiple of eight bits in
+    // length, and that ends with the low bits bits of value.
+    unsigned char in[(dynlen + 3 * 10 + 16 + 7) / 8];
+    int have = 0;
+    if (bits & 1) {
+        // Insert an empty dynamic block to get to an odd number of bits, so
+        // when bits bits from value are appended, we are at an even number of
+        // bits.
+        memcpy(in, dyn, sizeof(dyn));
+        have = dynlen;
+    }
+    while ((have + bits) & 7)
+        // Insert empty fixed blocks until appending bits bits would put us on
+        // a byte boundary. This will insert at most three fixed blocks.
+        append_bits(2, 10, in, &have);
+
+    // Append the bits bits from value, which takes us to a byte boundary.
+    append_bits(value, bits, in, &have);
+
+    // Deliver the input to inflate(). There is no output space provided, but
+    // inflate() can't get stuck waiting on output not ingesting all of the
+    // provided input. The reason is that there will be at most 16 bits of
+    // input from value after the empty deflate blocks (which themselves
+    // generate no output). At least ten bits are needed to generate the first
+    // output byte from a fixed block. The last two bytes of the buffer have to
+    // be ingested in order to get ten bits, which is the most that value can
+    // occupy.
+    strm->avail_in = have >> 3;
+    strm->next_in = in;
+    strm->avail_out = 0;
+    strm->next_out = in;                // not used, but can't be NULL
+    return inflate(strm, Z_NO_FLUSH);
+}
 
-    /* proceed only if something reasonable to do */
-    if (len < 0)
+#else
+#  define INFLATEPRIME inflatePrime
+#endif
+
+// See comments in zran.h.
+ptrdiff_t deflate_index_extract(FILE *in, struct deflate_index *index,
+                                off_t offset, unsigned char *buf, size_t len) {
+    // Do a quick sanity check on the index.
+    if (index == NULL || index->have < 1 || index->list[0].out != 0)
+        return Z_STREAM_ERROR;
+
+    // If nothing to extract, return zero bytes extracted.
+    if (len == 0 || offset < 0 || offset >= index->length)
         return 0;
 
-    /* find where in stream to start */
-    here = index->list;
-    ret = index->have;
-    while (--ret && here[1].out <= offset)
-        here++;
-
-    /* initialize file and inflate state to start there */
-    strm.zalloc = Z_NULL;
-    strm.zfree = Z_NULL;
-    strm.opaque = Z_NULL;
-    strm.avail_in = 0;
-    strm.next_in = Z_NULL;
-    ret = inflateInit2(&strm, -15);         /* raw inflate */
+    // Find the access point closest to but not after offset.
+    int lo = -1, hi = index->have;
+    point_t *point = index->list;
+    while (hi - lo > 1) {
+        int mid = (lo + hi) >> 1;
+        if (offset < point[mid].out)
+            hi = mid;
+        else
+            lo = mid;
+    }
+    point += lo;
+
+    // Initialize the input file and prime the inflate engine to start there.
+    int ret = fseeko(in, point->in - (point->bits ? 1 : 0), SEEK_SET);
+    if (ret == -1)
+        return Z_ERRNO;
+    int ch = 0;
+    if (point->bits && (ch = getc(in)) == EOF)
+        return ferror(in) ? Z_ERRNO : Z_BUF_ERROR;
+    z_stream strm = {0};
+    ret = inflateInit2(&strm, RAW);
     if (ret != Z_OK)
         return ret;
-    ret = fseeko(in, here->in - (here->bits ? 1 : 0), SEEK_SET);
-    if (ret == -1)
-        goto extract_ret;
-    if (here->bits) {
-        ret = getc(in);
-        if (ret == -1) {
-            ret = ferror(in) ? Z_ERRNO : Z_DATA_ERROR;
-            goto extract_ret;
-        }
-        (void)inflatePrime(&strm, here->bits, ret >> (8 - here->bits));
-    }
-    (void)inflateSetDictionary(&strm, here->window, WINSIZE);
+    if (point->bits)
+        INFLATEPRIME(&strm, point->bits, ch >> (8 - point->bits));
+    inflateSetDictionary(&strm, point->window, WINSIZE);
 
-    /* skip uncompressed bytes until offset reached, then satisfy request */
-    offset -= here->out;
-    strm.avail_in = 0;
-    skip = 1;                               /* while skipping to offset */
+    // Skip uncompressed bytes until offset reached, then satisfy request.
+    unsigned char input[CHUNK];
+    unsigned char discard[WINSIZE];
+    offset -= point->out;       // number of bytes to skip to get to offset
+    size_t left = len;          // number of bytes left to read after offset
     do {
-        /* define where to put uncompressed data, and how much */
-        if (offset == 0 && skip) {          /* at offset now */
-            strm.avail_out = len;
-            strm.next_out = buf;
-            skip = 0;                       /* only do this once */
-        }
-        if (offset > WINSIZE) {             /* skip WINSIZE bytes */
-            strm.avail_out = WINSIZE;
+        if (offset) {
+            // Discard up to offset uncompressed bytes.
+            strm.avail_out = offset < WINSIZE ? (unsigned)offset : WINSIZE;
             strm.next_out = discard;
-            offset -= WINSIZE;
         }
-        else if (offset != 0) {             /* last skip */
-            strm.avail_out = (unsigned)offset;
-            strm.next_out = discard;
-            offset = 0;
+        else {
+            // Uncompress up to left bytes into buf.
+            strm.avail_out = left < UINT_MAX ? (unsigned)left : UINT_MAX;
+            strm.next_out = buf + len - left;
         }
 
-        /* uncompress until avail_out filled, or end of stream */
-        do {
-            if (strm.avail_in == 0) {
-                strm.avail_in = fread(input, 1, CHUNK, in);
-                if (ferror(in)) {
-                    ret = Z_ERRNO;
-                    goto extract_ret;
-                }
-                if (strm.avail_in == 0) {
-                    ret = Z_DATA_ERROR;
-                    goto extract_ret;
-                }
-                strm.next_in = input;
-            }
-            ret = inflate(&strm, Z_NO_FLUSH);       /* normal inflate */
-            if (ret == Z_NEED_DICT)
-                ret = Z_DATA_ERROR;
-            if (ret == Z_MEM_ERROR || ret == Z_DATA_ERROR)
-                goto extract_ret;
-            if (ret == Z_STREAM_END)
+        // Uncompress, setting got to the number of bytes uncompressed.
+        if (strm.avail_in == 0) {
+            // Assure available input.
+            strm.avail_in = fread(input, 1, CHUNK, in);
+            if (strm.avail_in < CHUNK && ferror(in)) {
+                ret = Z_ERRNO;
                 break;
-        } while (strm.avail_out != 0);
-
-        /* if reach end of stream, then don't keep trying to get more */
-        if (ret == Z_STREAM_END)
-            break;
+            }
+            strm.next_in = input;
+        }
+        unsigned got = strm.avail_out;
+        ret = inflate(&strm, Z_NO_FLUSH);
+        got -= strm.avail_out;
+
+        // Update the appropriate count.
+        if (offset)
+            offset -= got;
+        else
+            left -= got;
+
+        // If we're at the end of a gzip member and there's more to read,
+        // continue to the next gzip member.
+        if (ret == Z_STREAM_END && index->mode == GZIP) {
+            // Discard the gzip trailer.
+            unsigned drop = 8;              // length of gzip trailer
+            if (strm.avail_in >= drop) {
+                strm.avail_in -= drop;
+                strm.next_in += drop;
+            }
+            else {
+                // Read and discard the remainder of the gzip trailer.
+                drop -= strm.avail_in;
+                strm.avail_in = 0;
+                do {
+                    if (getc(in) == EOF)
+                        // The input does not have a complete trailer.
+                        return ferror(in) ? Z_ERRNO : Z_BUF_ERROR;
+                } while (--drop);
+            }
 
-        /* do until offset reached and requested data read, or stream ends */
-    } while (skip);
+            if (strm.avail_in || ungetc(getc(in), in) != EOF) {
+                // There's more after the gzip trailer. Use inflate to skip the
+                // gzip header and resume the raw inflate there.
+                inflateReset2(&strm, GZIP);
+                do {
+                    if (strm.avail_in == 0) {
+                        strm.avail_in = fread(input, 1, CHUNK, in);
+                        if (strm.avail_in < CHUNK && ferror(in)) {
+                            ret = Z_ERRNO;
+                            break;
+                        }
+                        strm.next_in = input;
+                    }
+                    strm.avail_out = WINSIZE;
+                    strm.next_out = discard;
+                    ret = inflate(&strm, Z_BLOCK);  // stop at end of header
+                } while (ret == Z_OK && (strm.data_type & 0x80) == 0);
+                if (ret != Z_OK)
+                    break;
+                inflateReset2(&strm, RAW);
+            }
+        }
 
-    /* compute number of uncompressed bytes read after offset */
-    ret = skip ? 0 : len - strm.avail_out;
+        // Continue until we have the requested data, the deflate data has
+        // ended, or an error is encountered.
+    } while (ret == Z_OK && left);
+    inflateEnd(&strm);
 
-    /* clean up and return bytes read or error */
-  extract_ret:
-    (void)inflateEnd(&strm);
-    return ret;
+    // Return the number of uncompressed bytes read into buf, or the error.
+    return ret == Z_OK || ret == Z_STREAM_END ? len - left : ret;
 }
 
-/* Demonstrate the use of build_index() and extract() by processing the file
-   provided on the command line, and the extracting 16K from about 2/3rds of
-   the way through the uncompressed output, and writing that to stdout. */
-int main(int argc, char **argv)
-{
-    int len;
-    off_t offset;
-    FILE *in;
-    struct access *index = NULL;
-    unsigned char buf[CHUNK];
-
-    /* open input file */
-    if (argc != 2) {
-        fprintf(stderr, "usage: zran file.gz\n");
+#ifdef TEST
+
+#define SPAN 1048576L       // desired distance between access points
+#define LEN 16384           // number of bytes to extract
+
+// Demonstrate the use of deflate_index_build() and deflate_index_extract() by
+// processing the file provided on the command line, and extracting LEN bytes
+// from 2/3rds of the way through the uncompressed output, writing that to
+// stdout. An offset can be provided as the second argument, in which case the
+// data is extracted from there instead.
+int main(int argc, char **argv) {
+    // Open the input file.
+    if (argc < 2 || argc > 3) {
+        fprintf(stderr, "usage: zran file.raw [offset]\n");
         return 1;
     }
-    in = fopen(argv[1], "rb");
+    FILE *in = fopen(argv[1], "rb");
     if (in == NULL) {
         fprintf(stderr, "zran: could not open %s for reading\n", argv[1]);
         return 1;
     }
 
-    /* build index */
-    len = build_index(in, SPAN, &index);
+    // Get optional offset.
+    off_t offset = -1;
+    if (argc == 3) {
+        char *end;
+        offset = strtoll(argv[2], &end, 10);
+        if (*end || offset < 0) {
+            fprintf(stderr, "zran: %s is not a valid offset\n", argv[2]);
+            return 1;
+        }
+    }
+
+    // Build index.
+    struct deflate_index *index = NULL;
+    int len = deflate_index_build(in, SPAN, &index);
     if (len < 0) {
         fclose(in);
         switch (len) {
         case Z_MEM_ERROR:
             fprintf(stderr, "zran: out of memory\n");
             break;
+        case Z_BUF_ERROR:
+            fprintf(stderr, "zran: %s ended prematurely\n", argv[1]);
+            break;
         case Z_DATA_ERROR:
             fprintf(stderr, "zran: compressed data error in %s\n", argv[1]);
             break;
@@ -391,19 +511,23 @@ int main(int argc, char **argv)
     }
     fprintf(stderr, "zran: built index with %d access points\n", len);
 
-    /* use index by reading some bytes from an arbitrary offset */
-    offset = (index->list[index->have - 1].out << 1) / 3;
-    len = extract(in, index, offset, buf, CHUNK);
-    if (len < 0)
+    // Use index by reading some bytes from an arbitrary offset.
+    unsigned char buf[LEN];
+    if (offset == -1)
+        offset = ((index->length + 1) << 1) / 3;
+    ptrdiff_t got = deflate_index_extract(in, index, offset, buf, LEN);
+    if (got < 0)
         fprintf(stderr, "zran: extraction failed: %s error\n",
-                len == Z_MEM_ERROR ? "out of memory" : "input corrupted");
+                got == Z_MEM_ERROR ? "out of memory" : "input corrupted");
     else {
-        fwrite(buf, 1, len, stdout);
-        fprintf(stderr, "zran: extracted %d bytes at %llu\n", len, offset);
+        fwrite(buf, 1, got, stdout);
+        fprintf(stderr, "zran: extracted %ld bytes at %lld\n", got, offset);
     }
 
-    /* clean up and exit */
-    free_index(index);
+    // Clean up and exit.
+    deflate_index_free(index);
     fclose(in);
     return 0;
 }
+
+#endif
diff --git a/libs/zlib/examples/zran.h b/libs/zlib/examples/zran.h
new file mode 100644
index 000000000..ebf780d0c
--- /dev/null
+++ b/libs/zlib/examples/zran.h
@@ -0,0 +1,51 @@
+/* zran.h -- example of deflated stream indexing and random access
+ * Copyright (C) 2005, 2012, 2018, 2023 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ * Version 1.3  18 Feb 2023  Mark Adler */
+
+#include <stdio.h>
+#include "zlib.h"
+
+// Access point.
+typedef struct point {
+    off_t out;          // offset in uncompressed data
+    off_t in;           // offset in compressed file of first full byte
+    int bits;           // 0, or number of bits (1-7) from byte at in-1
+    unsigned char window[32768];    // preceding 32K of uncompressed data
+} point_t;
+
+// Access point list.
+struct deflate_index {
+    int have;           // number of access points in list
+    int mode;           // -15 for raw, 15 for zlib, or 31 for gzip
+    off_t length;       // total length of uncompressed data
+    point_t *list;      // allocated list of access points
+};
+
+// Make one pass through a zlib, gzip, or raw deflate compressed stream and
+// build an index, with access points about every span bytes of uncompressed
+// output. gzip files with multiple members are fully indexed. span should be
+// chosen to balance the speed of random access against the memory requirements
+// of the list, which is about 32K bytes per access point. The return value is
+// the number of access points on success (>= 1), Z_MEM_ERROR for out of
+// memory, Z_BUF_ERROR for a premature end of input, Z_DATA_ERROR for a format
+// or verification error in the input file, or Z_ERRNO for a file read error.
+// On success, *built points to the resulting index.
+int deflate_index_build(FILE *in, off_t span, struct deflate_index **built);
+
+// Use the index to read len bytes from offset into buf. Return the number of
+// bytes read or a negative error code. If data is requested past the end of
+// the uncompressed data, then deflate_index_extract() will return a value less
+// than len, indicating how much was actually read into buf. If given a valid
+// index, this function should not return an error unless the file was modified
+// somehow since the index was generated, given that deflate_index_build() had
+// validated all of the input. If nevertheless there is a failure, Z_BUF_ERROR
+// is returned if the compressed data ends prematurely, Z_DATA_ERROR if the
+// deflate compressed data is not valid, Z_MEM_ERROR if out of memory,
+// Z_STREAM_ERROR if the index is not valid, or Z_ERRNO if there is an error
+// reading or seeking on the input file.
+ptrdiff_t deflate_index_extract(FILE *in, struct deflate_index *index,
+                                off_t offset, unsigned char *buf, size_t len);
+
+// Deallocate an index built by deflate_index_build().
+void deflate_index_free(struct deflate_index *index);
diff --git a/libs/zlib/gzclose.c b/libs/zlib/gzclose.c
index caeb99a31..48d6a86f0 100644
--- a/libs/zlib/gzclose.c
+++ b/libs/zlib/gzclose.c
@@ -8,9 +8,7 @@
 /* gzclose() is in a separate file so that it is linked in only if it is used.
    That way the other gzclose functions can be used instead to avoid linking in
    unneeded compression or decompression routines. */
-int ZEXPORT gzclose(file)
-    gzFile file;
-{
+int ZEXPORT gzclose(gzFile file) {
 #ifndef NO_GZCOMPRESS
     gz_statep state;
 
diff --git a/libs/zlib/gzguts.h b/libs/zlib/gzguts.h
index 990a4d251..eba72085b 100644
--- a/libs/zlib/gzguts.h
+++ b/libs/zlib/gzguts.h
@@ -1,5 +1,5 @@
 /* gzguts.h -- zlib internal header definitions for gz* operations
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
+ * Copyright (C) 2004-2024 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -7,9 +7,8 @@
 #  ifndef _LARGEFILE_SOURCE
 #    define _LARGEFILE_SOURCE 1
 #  endif
-#  ifdef _FILE_OFFSET_BITS
-#    undef _FILE_OFFSET_BITS
-#  endif
+#  undef _FILE_OFFSET_BITS
+#  undef _TIME_BITS
 #endif
 
 #ifdef HAVE_HIDDEN
@@ -39,7 +38,7 @@
 #  include <io.h>
 #endif
 
-#if defined(_WIN32) || defined(__CYGWIN__)
+#if defined(_WIN32)
 #  define WIDECHAR
 #endif
 
@@ -119,8 +118,8 @@
 
 /* gz* functions always use library allocation functions */
 #ifndef STDC
-  extern voidp  malloc OF((uInt size));
-  extern void   free   OF((voidpf ptr));
+  extern voidp  malloc(uInt size);
+  extern void   free(voidpf ptr);
 #endif
 
 /* get errno and strerror definition */
@@ -138,10 +137,10 @@
 
 /* provide prototypes for these when building zlib without LFS */
 #if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0
-    ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-    ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
-    ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
-    ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
+    ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *);
+    ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int);
+    ZEXTERN z_off64_t ZEXPORT gztell64(gzFile);
+    ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile);
 #endif
 
 /* default memLevel */
@@ -190,6 +189,7 @@ typedef struct {
         /* just for writing */
     int level;              /* compression level */
     int strategy;           /* compression strategy */
+    int reset;              /* true if a reset is pending after a Z_FINISH */
         /* seek request */
     z_off64_t skip;         /* amount to skip (already rewound if backwards) */
     int seek;               /* true if seek request pending */
@@ -202,17 +202,13 @@ typedef struct {
 typedef gz_state FAR *gz_statep;
 
 /* shared functions */
-void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *));
+void ZLIB_INTERNAL gz_error(gz_statep, int, const char *);
 #if defined UNDER_CE
-char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error));
+char ZLIB_INTERNAL *gz_strwinerror(DWORD error);
 #endif
 
 /* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
    value -- needed when comparing unsigned to z_off64_t, which is signed
    (possible z_off64_t types off_t, off64_t, and long are all signed) */
-#ifdef INT_MAX
-#  define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
-#else
-unsigned ZLIB_INTERNAL gz_intmax OF((void));
-#  define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
-#endif
+unsigned ZLIB_INTERNAL gz_intmax(void);
+#define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
diff --git a/libs/zlib/gzlib.c b/libs/zlib/gzlib.c
index 4105e6aff..983153cc8 100644
--- a/libs/zlib/gzlib.c
+++ b/libs/zlib/gzlib.c
@@ -1,11 +1,11 @@
 /* gzlib.c -- zlib functions common to reading and writing gzip files
- * Copyright (C) 2004-2017 Mark Adler
+ * Copyright (C) 2004-2024 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
 #include "gzguts.h"
 
-#if defined(_WIN32) && !defined(__BORLANDC__) && !defined(__MINGW32__)
+#if defined(_WIN32) && !defined(__BORLANDC__)
 #  define LSEEK _lseeki64
 #else
 #if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
@@ -15,10 +15,6 @@
 #endif
 #endif
 
-/* Local functions */
-local void gz_reset OF((gz_statep));
-local gzFile gz_open OF((const void *, int, const char *));
-
 #if defined UNDER_CE
 
 /* Map the Windows error number in ERROR to a locale-dependent error message
@@ -30,9 +26,7 @@ local gzFile gz_open OF((const void *, int, const char *));
 
    The gz_strwinerror function does not change the current setting of
    GetLastError. */
-char ZLIB_INTERNAL *gz_strwinerror (error)
-     DWORD error;
-{
+char ZLIB_INTERNAL *gz_strwinerror(DWORD error) {
     static char buf[1024];
 
     wchar_t *msgbuf;
@@ -72,15 +66,15 @@ char ZLIB_INTERNAL *gz_strwinerror (error)
 #endif /* UNDER_CE */
 
 /* Reset gzip file state */
-local void gz_reset(state)
-    gz_statep state;
-{
+local void gz_reset(gz_statep state) {
     state->x.have = 0;              /* no output data available */
     if (state->mode == GZ_READ) {   /* for reading ... */
         state->eof = 0;             /* not at end of file */
         state->past = 0;            /* have not read past end yet */
         state->how = LOOK;          /* look for gzip header */
     }
+    else                            /* for writing ... */
+        state->reset = 0;           /* no deflateReset pending */
     state->seek = 0;                /* no seek request pending */
     gz_error(state, Z_OK, NULL);    /* clear error */
     state->x.pos = 0;               /* no uncompressed data yet */
@@ -88,11 +82,7 @@ local void gz_reset(state)
 }
 
 /* Open a gzip file either by name or file descriptor. */
-local gzFile gz_open(path, fd, mode)
-    const void *path;
-    int fd;
-    const char *mode;
-{
+local gzFile gz_open(const void *path, int fd, const char *mode) {
     gz_statep state;
     z_size_t len;
     int oflag;
@@ -267,26 +257,17 @@ local gzFile gz_open(path, fd, mode)
 }
 
 /* -- see zlib.h -- */
-gzFile ZEXPORT gzopen(path, mode)
-    const char *path;
-    const char *mode;
-{
+gzFile ZEXPORT gzopen(const char *path, const char *mode) {
     return gz_open(path, -1, mode);
 }
 
 /* -- see zlib.h -- */
-gzFile ZEXPORT gzopen64(path, mode)
-    const char *path;
-    const char *mode;
-{
+gzFile ZEXPORT gzopen64(const char *path, const char *mode) {
     return gz_open(path, -1, mode);
 }
 
 /* -- see zlib.h -- */
-gzFile ZEXPORT gzdopen(fd, mode)
-    int fd;
-    const char *mode;
-{
+gzFile ZEXPORT gzdopen(int fd, const char *mode) {
     char *path;         /* identifier for error messages */
     gzFile gz;
 
@@ -304,19 +285,13 @@ gzFile ZEXPORT gzdopen(fd, mode)
 
 /* -- see zlib.h -- */
 #ifdef WIDECHAR
-gzFile ZEXPORT gzopen_w(path, mode)
-    const wchar_t *path;
-    const char *mode;
-{
+gzFile ZEXPORT gzopen_w(const wchar_t *path, const char *mode) {
     return gz_open(path, -2, mode);
 }
 #endif
 
 /* -- see zlib.h -- */
-int ZEXPORT gzbuffer(file, size)
-    gzFile file;
-    unsigned size;
-{
+int ZEXPORT gzbuffer(gzFile file, unsigned size) {
     gz_statep state;
 
     /* get internal structure and check integrity */
@@ -333,16 +308,14 @@ int ZEXPORT gzbuffer(file, size)
     /* check and set requested size */
     if ((size << 1) < size)
         return -1;              /* need to be able to double it */
-    if (size < 2)
-        size = 2;               /* need two bytes to check magic header */
+    if (size < 8)
+        size = 8;               /* needed to behave well with flushing */
     state->want = size;
     return 0;
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzrewind(file)
-    gzFile file;
-{
+int ZEXPORT gzrewind(gzFile file) {
     gz_statep state;
 
     /* get internal structure */
@@ -363,11 +336,7 @@ int ZEXPORT gzrewind(file)
 }
 
 /* -- see zlib.h -- */
-z_off64_t ZEXPORT gzseek64(file, offset, whence)
-    gzFile file;
-    z_off64_t offset;
-    int whence;
-{
+z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) {
     unsigned n;
     z_off64_t ret;
     gz_statep state;
@@ -397,7 +366,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
     /* if within raw area while reading, just go there */
     if (state->mode == GZ_READ && state->how == COPY &&
             state->x.pos + offset >= 0) {
-        ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR);
+        ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
         if (ret == -1)
             return -1;
         state->x.have = 0;
@@ -440,11 +409,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
 }
 
 /* -- see zlib.h -- */
-z_off_t ZEXPORT gzseek(file, offset, whence)
-    gzFile file;
-    z_off_t offset;
-    int whence;
-{
+z_off_t ZEXPORT gzseek(gzFile file, z_off_t offset, int whence) {
     z_off64_t ret;
 
     ret = gzseek64(file, (z_off64_t)offset, whence);
@@ -452,9 +417,7 @@ z_off_t ZEXPORT gzseek(file, offset, whence)
 }
 
 /* -- see zlib.h -- */
-z_off64_t ZEXPORT gztell64(file)
-    gzFile file;
-{
+z_off64_t ZEXPORT gztell64(gzFile file) {
     gz_statep state;
 
     /* get internal structure and check integrity */
@@ -469,9 +432,7 @@ z_off64_t ZEXPORT gztell64(file)
 }
 
 /* -- see zlib.h -- */
-z_off_t ZEXPORT gztell(file)
-    gzFile file;
-{
+z_off_t ZEXPORT gztell(gzFile file) {
     z_off64_t ret;
 
     ret = gztell64(file);
@@ -479,9 +440,7 @@ z_off_t ZEXPORT gztell(file)
 }
 
 /* -- see zlib.h -- */
-z_off64_t ZEXPORT gzoffset64(file)
-    gzFile file;
-{
+z_off64_t ZEXPORT gzoffset64(gzFile file) {
     z_off64_t offset;
     gz_statep state;
 
@@ -502,9 +461,7 @@ z_off64_t ZEXPORT gzoffset64(file)
 }
 
 /* -- see zlib.h -- */
-z_off_t ZEXPORT gzoffset(file)
-    gzFile file;
-{
+z_off_t ZEXPORT gzoffset(gzFile file) {
     z_off64_t ret;
 
     ret = gzoffset64(file);
@@ -512,9 +469,7 @@ z_off_t ZEXPORT gzoffset(file)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzeof(file)
-    gzFile file;
-{
+int ZEXPORT gzeof(gzFile file) {
     gz_statep state;
 
     /* get internal structure and check integrity */
@@ -529,10 +484,7 @@ int ZEXPORT gzeof(file)
 }
 
 /* -- see zlib.h -- */
-const char * ZEXPORT gzerror(file, errnum)
-    gzFile file;
-    int *errnum;
-{
+const char * ZEXPORT gzerror(gzFile file, int *errnum) {
     gz_statep state;
 
     /* get internal structure and check integrity */
@@ -550,9 +502,7 @@ const char * ZEXPORT gzerror(file, errnum)
 }
 
 /* -- see zlib.h -- */
-void ZEXPORT gzclearerr(file)
-    gzFile file;
-{
+void ZEXPORT gzclearerr(gzFile file) {
     gz_statep state;
 
     /* get internal structure and check integrity */
@@ -576,11 +526,7 @@ void ZEXPORT gzclearerr(file)
    memory).  Simply save the error message as a static string.  If there is an
    allocation failure constructing the error message, then convert the error to
    out of memory. */
-void ZLIB_INTERNAL gz_error(state, err, msg)
-    gz_statep state;
-    int err;
-    const char *msg;
-{
+void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) {
     /* free previously allocated message and clear */
     if (state->msg != NULL) {
         if (state->err != Z_MEM_ERROR)
@@ -617,21 +563,20 @@ void ZLIB_INTERNAL gz_error(state, err, msg)
 #endif
 }
 
-#ifndef INT_MAX
 /* portably return maximum value for an int (when limits.h presumed not
    available) -- we need to do this to cover cases where 2's complement not
    used, since C standard permits 1's complement and sign-bit representations,
    otherwise we could just use ((unsigned)-1) >> 1 */
-unsigned ZLIB_INTERNAL gz_intmax()
-{
-    unsigned p, q;
-
-    p = 1;
+unsigned ZLIB_INTERNAL gz_intmax(void) {
+#ifdef INT_MAX
+    return INT_MAX;
+#else
+    unsigned p = 1, q;
     do {
         q = p;
         p <<= 1;
         p++;
     } while (p > q);
     return q >> 1;
-}
 #endif
+}
diff --git a/libs/zlib/gzread.c b/libs/zlib/gzread.c
index 956b91ea7..4168cbc88 100644
--- a/libs/zlib/gzread.c
+++ b/libs/zlib/gzread.c
@@ -1,29 +1,16 @@
 /* gzread.c -- zlib functions for reading gzip files
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
+ * Copyright (C) 2004-2017 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
 #include "gzguts.h"
 
-/* Local functions */
-local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *));
-local int gz_avail OF((gz_statep));
-local int gz_look OF((gz_statep));
-local int gz_decomp OF((gz_statep));
-local int gz_fetch OF((gz_statep));
-local int gz_skip OF((gz_statep, z_off64_t));
-local z_size_t gz_read OF((gz_statep, voidp, z_size_t));
-
 /* Use read() to load a buffer -- return -1 on error, otherwise 0.  Read from
    state->fd, and update state->eof, state->err, and state->msg as appropriate.
    This function needs to loop on read(), since read() is not guaranteed to
    read the number of bytes requested, depending on the type of descriptor. */
-local int gz_load(state, buf, len, have)
-    gz_statep state;
-    unsigned char *buf;
-    unsigned len;
-    unsigned *have;
-{
+local int gz_load(gz_statep state, unsigned char *buf, unsigned len,
+                  unsigned *have) {
     int ret;
     unsigned get, max = ((unsigned)-1 >> 2) + 1;
 
@@ -53,9 +40,7 @@ local int gz_load(state, buf, len, have)
    If strm->avail_in != 0, then the current data is moved to the beginning of
    the input buffer, and then the remainder of the buffer is loaded with the
    available data from the input file. */
-local int gz_avail(state)
-    gz_statep state;
-{
+local int gz_avail(gz_statep state) {
     unsigned got;
     z_streamp strm = &(state->strm);
 
@@ -88,9 +73,7 @@ local int gz_avail(state)
    case, all further file reads will be directly to either the output buffer or
    a user buffer.  If decompressing, the inflate state will be initialized.
    gz_look() will return 0 on success or -1 on failure. */
-local int gz_look(state)
-    gz_statep state;
-{
+local int gz_look(gz_statep state) {
     z_streamp strm = &(state->strm);
 
     /* allocate read buffers and inflate memory */
@@ -157,11 +140,9 @@ local int gz_look(state)
        the output buffer is larger than the input buffer, which also assures
        space for gzungetc() */
     state->x.next = state->out;
-    if (strm->avail_in) {
-        memcpy(state->x.next, strm->next_in, strm->avail_in);
-        state->x.have = strm->avail_in;
-        strm->avail_in = 0;
-    }
+    memcpy(state->x.next, strm->next_in, strm->avail_in);
+    state->x.have = strm->avail_in;
+    strm->avail_in = 0;
     state->how = COPY;
     state->direct = 1;
     return 0;
@@ -172,9 +153,7 @@ local int gz_look(state)
    data.  If the gzip stream completes, state->how is reset to LOOK to look for
    the next gzip stream or raw data, once state->x.have is depleted.  Returns 0
    on success, -1 on failure. */
-local int gz_decomp(state)
-    gz_statep state;
-{
+local int gz_decomp(gz_statep state) {
     int ret = Z_OK;
     unsigned had;
     z_streamp strm = &(state->strm);
@@ -226,9 +205,7 @@ local int gz_decomp(state)
    looked for to determine whether to copy or decompress.  Returns -1 on error,
    otherwise 0.  gz_fetch() will leave state->how as COPY or GZIP unless the
    end of the input file has been reached and all data has been processed.  */
-local int gz_fetch(state)
-    gz_statep state;
-{
+local int gz_fetch(gz_statep state) {
     z_streamp strm = &(state->strm);
 
     do {
@@ -256,10 +233,7 @@ local int gz_fetch(state)
 }
 
 /* Skip len uncompressed bytes of output.  Return -1 on error, 0 on success. */
-local int gz_skip(state, len)
-    gz_statep state;
-    z_off64_t len;
-{
+local int gz_skip(gz_statep state, z_off64_t len) {
     unsigned n;
 
     /* skip over len bytes or reach end-of-file, whichever comes first */
@@ -291,11 +265,7 @@ local int gz_skip(state, len)
    input.  Return the number of bytes read.  If zero is returned, either the
    end of file was reached, or there was an error.  state->err must be
    consulted in that case to determine which. */
-local z_size_t gz_read(state, buf, len)
-    gz_statep state;
-    voidp buf;
-    z_size_t len;
-{
+local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) {
     z_size_t got;
     unsigned n;
 
@@ -314,9 +284,9 @@ local z_size_t gz_read(state, buf, len)
     got = 0;
     do {
         /* set n to the maximum amount of len that fits in an unsigned int */
-        n = -1;
+        n = (unsigned)-1;
         if (n > len)
-            n = len;
+            n = (unsigned)len;
 
         /* first just try copying data from the output buffer */
         if (state->x.have) {
@@ -372,11 +342,7 @@ local z_size_t gz_read(state, buf, len)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzread(file, buf, len)
-    gzFile file;
-    voidp buf;
-    unsigned len;
-{
+int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) {
     gz_statep state;
 
     /* get internal structure */
@@ -397,7 +363,7 @@ int ZEXPORT gzread(file, buf, len)
     }
 
     /* read len or fewer bytes to buf */
-    len = gz_read(state, buf, len);
+    len = (unsigned)gz_read(state, buf, len);
 
     /* check for an error */
     if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR)
@@ -408,12 +374,7 @@ int ZEXPORT gzread(file, buf, len)
 }
 
 /* -- see zlib.h -- */
-z_size_t ZEXPORT gzfread(buf, size, nitems, file)
-    voidp buf;
-    z_size_t size;
-    z_size_t nitems;
-    gzFile file;
-{
+z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file) {
     z_size_t len;
     gz_statep state;
 
@@ -444,10 +405,7 @@ z_size_t ZEXPORT gzfread(buf, size, nitems, file)
 #else
 #  undef gzgetc
 #endif
-int ZEXPORT gzgetc(file)
-    gzFile file;
-{
-    int ret;
+int ZEXPORT gzgetc(gzFile file) {
     unsigned char buf[1];
     gz_statep state;
 
@@ -469,21 +427,15 @@ int ZEXPORT gzgetc(file)
     }
 
     /* nothing there -- try gz_read() */
-    ret = gz_read(state, buf, 1);
-    return ret < 1 ? -1 : buf[0];
+    return gz_read(state, buf, 1) < 1 ? -1 : buf[0];
 }
 
-int ZEXPORT gzgetc_(file)
-gzFile file;
-{
+int ZEXPORT gzgetc_(gzFile file) {
     return gzgetc(file);
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzungetc(c, file)
-    int c;
-    gzFile file;
-{
+int ZEXPORT gzungetc(int c, gzFile file) {
     gz_statep state;
 
     /* get internal structure */
@@ -491,6 +443,10 @@ int ZEXPORT gzungetc(c, file)
         return -1;
     state = (gz_statep)file;
 
+    /* in case this was just opened, set up the input buffer */
+    if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0)
+        (void)gz_look(state);
+
     /* check that we're reading and that there's no (serious) error */
     if (state->mode != GZ_READ ||
         (state->err != Z_OK && state->err != Z_BUF_ERROR))
@@ -540,11 +496,7 @@ int ZEXPORT gzungetc(c, file)
 }
 
 /* -- see zlib.h -- */
-char * ZEXPORT gzgets(file, buf, len)
-    gzFile file;
-    char *buf;
-    int len;
-{
+char * ZEXPORT gzgets(gzFile file, char *buf, int len) {
     unsigned left, n;
     char *str;
     unsigned char *eol;
@@ -604,9 +556,7 @@ char * ZEXPORT gzgets(file, buf, len)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzdirect(file)
-    gzFile file;
-{
+int ZEXPORT gzdirect(gzFile file) {
     gz_statep state;
 
     /* get internal structure */
@@ -624,9 +574,7 @@ int ZEXPORT gzdirect(file)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzclose_r(file)
-    gzFile file;
-{
+int ZEXPORT gzclose_r(gzFile file) {
     int ret, err;
     gz_statep state;
 
diff --git a/libs/zlib/gzwrite.c b/libs/zlib/gzwrite.c
index c7b5651d7..435b4621b 100644
--- a/libs/zlib/gzwrite.c
+++ b/libs/zlib/gzwrite.c
@@ -1,22 +1,14 @@
 /* gzwrite.c -- zlib functions for writing gzip files
- * Copyright (C) 2004-2017 Mark Adler
+ * Copyright (C) 2004-2019 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
 #include "gzguts.h"
 
-/* Local functions */
-local int gz_init OF((gz_statep));
-local int gz_comp OF((gz_statep, int));
-local int gz_zero OF((gz_statep, z_off64_t));
-local z_size_t gz_write OF((gz_statep, voidpc, z_size_t));
-
 /* Initialize state for writing a gzip file.  Mark initialization by setting
    state->size to non-zero.  Return -1 on a memory allocation failure, or 0 on
    success. */
-local int gz_init(state)
-    gz_statep state;
-{
+local int gz_init(gz_statep state) {
     int ret;
     z_streamp strm = &(state->strm);
 
@@ -70,10 +62,7 @@ local int gz_init(state)
    deflate() flush value.  If flush is Z_FINISH, then the deflate() state is
    reset to start a new gzip stream.  If gz->direct is true, then simply write
    to the output file without compressing, and ignore flush. */
-local int gz_comp(state, flush)
-    gz_statep state;
-    int flush;
-{
+local int gz_comp(gz_statep state, int flush) {
     int ret, writ;
     unsigned have, put, max = ((unsigned)-1 >> 2) + 1;
     z_streamp strm = &(state->strm);
@@ -97,6 +86,15 @@ local int gz_comp(state, flush)
         return 0;
     }
 
+    /* check for a pending reset */
+    if (state->reset) {
+        /* don't start a new gzip member unless there is data to write */
+        if (strm->avail_in == 0)
+            return 0;
+        deflateReset(strm);
+        state->reset = 0;
+    }
+
     /* run deflate() on provided input until it produces no more output */
     ret = Z_OK;
     do {
@@ -134,7 +132,7 @@ local int gz_comp(state, flush)
 
     /* if that completed a deflate stream, allow another to start */
     if (flush == Z_FINISH)
-        deflateReset(strm);
+        state->reset = 1;
 
     /* all done, no errors */
     return 0;
@@ -142,10 +140,7 @@ local int gz_comp(state, flush)
 
 /* Compress len zeros to output.  Return -1 on a write error or memory
    allocation failure by gz_comp(), or 0 on success. */
-local int gz_zero(state, len)
-    gz_statep state;
-    z_off64_t len;
-{
+local int gz_zero(gz_statep state, z_off64_t len) {
     int first;
     unsigned n;
     z_streamp strm = &(state->strm);
@@ -175,11 +170,7 @@ local int gz_zero(state, len)
 
 /* Write len bytes from buf to file.  Return the number of bytes written.  If
    the returned value is less than len, then there was an error. */
-local z_size_t gz_write(state, buf, len)
-    gz_statep state;
-    voidpc buf;
-    z_size_t len;
-{
+local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) {
     z_size_t put = len;
 
     /* if len is zero, avoid unnecessary operations */
@@ -209,7 +200,7 @@ local z_size_t gz_write(state, buf, len)
                               state->in);
             copy = state->size - have;
             if (copy > len)
-                copy = len;
+                copy = (unsigned)len;
             memcpy(state->in + have, buf, copy);
             state->strm.avail_in += copy;
             state->x.pos += copy;
@@ -229,7 +220,7 @@ local z_size_t gz_write(state, buf, len)
         do {
             unsigned n = (unsigned)-1;
             if (n > len)
-                n = len;
+                n = (unsigned)len;
             state->strm.avail_in = n;
             state->x.pos += n;
             if (gz_comp(state, Z_NO_FLUSH) == -1)
@@ -243,11 +234,7 @@ local z_size_t gz_write(state, buf, len)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzwrite(file, buf, len)
-    gzFile file;
-    voidpc buf;
-    unsigned len;
-{
+int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len) {
     gz_statep state;
 
     /* get internal structure */
@@ -271,12 +258,8 @@ int ZEXPORT gzwrite(file, buf, len)
 }
 
 /* -- see zlib.h -- */
-z_size_t ZEXPORT gzfwrite(buf, size, nitems, file)
-    voidpc buf;
-    z_size_t size;
-    z_size_t nitems;
-    gzFile file;
-{
+z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, z_size_t nitems,
+                          gzFile file) {
     z_size_t len;
     gz_statep state;
 
@@ -301,10 +284,7 @@ z_size_t ZEXPORT gzfwrite(buf, size, nitems, file)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzputc(file, c)
-    gzFile file;
-    int c;
-{
+int ZEXPORT gzputc(gzFile file, int c) {
     unsigned have;
     unsigned char buf[1];
     gz_statep state;
@@ -349,12 +329,8 @@ int ZEXPORT gzputc(file, c)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzputs(file, str)
-    gzFile file;
-    const char *str;
-{
-    int ret;
-    z_size_t len;
+int ZEXPORT gzputs(gzFile file, const char *s) {
+    z_size_t len, put;
     gz_statep state;
 
     /* get internal structure */
@@ -367,17 +343,20 @@ int ZEXPORT gzputs(file, str)
         return -1;
 
     /* write string */
-    len = strlen(str);
-    ret = gz_write(state, str, len);
-    return ret == 0 && len != 0 ? -1 : ret;
+    len = strlen(s);
+    if ((int)len < 0 || (unsigned)len != len) {
+        gz_error(state, Z_STREAM_ERROR, "string length does not fit in int");
+        return -1;
+    }
+    put = gz_write(state, s, len);
+    return put < len ? -1 : (int)len;
 }
 
 #if defined(STDC) || defined(Z_HAVE_STDARG_H)
 #include <stdarg.h>
 
 /* -- see zlib.h -- */
-int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)
-{
+int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) {
     int len;
     unsigned left;
     char *next;
@@ -441,15 +420,14 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)
         strm->avail_in = state->size;
         if (gz_comp(state, Z_NO_FLUSH) == -1)
             return state->err;
-        memcpy(state->in, state->in + state->size, left);
+        memmove(state->in, state->in + state->size, left);
         strm->next_in = state->in;
         strm->avail_in = left;
     }
     return len;
 }
 
-int ZEXPORTVA gzprintf(gzFile file, const char *format, ...)
-{
+int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) {
     va_list va;
     int ret;
 
@@ -462,13 +440,10 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, ...)
 #else /* !STDC && !Z_HAVE_STDARG_H */
 
 /* -- see zlib.h -- */
-int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
-                       a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
-    gzFile file;
-    const char *format;
-    int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
-        a11, a12, a13, a14, a15, a16, a17, a18, a19, a20;
-{
+int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3,
+                       int a4, int a5, int a6, int a7, int a8, int a9, int a10,
+                       int a11, int a12, int a13, int a14, int a15, int a16,
+                       int a17, int a18, int a19, int a20) {
     unsigned len, left;
     char *next;
     gz_statep state;
@@ -540,7 +515,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
         strm->avail_in = state->size;
         if (gz_comp(state, Z_NO_FLUSH) == -1)
             return state->err;
-        memcpy(state->in, state->in + state->size, left);
+        memmove(state->in, state->in + state->size, left);
         strm->next_in = state->in;
         strm->avail_in = left;
     }
@@ -550,10 +525,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
 #endif
 
 /* -- see zlib.h -- */
-int ZEXPORT gzflush(file, flush)
-    gzFile file;
-    int flush;
-{
+int ZEXPORT gzflush(gzFile file, int flush) {
     gz_statep state;
 
     /* get internal structure */
@@ -582,11 +554,7 @@ int ZEXPORT gzflush(file, flush)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzsetparams(file, level, strategy)
-    gzFile file;
-    int level;
-    int strategy;
-{
+int ZEXPORT gzsetparams(gzFile file, int level, int strategy) {
     gz_statep state;
     z_streamp strm;
 
@@ -597,7 +565,7 @@ int ZEXPORT gzsetparams(file, level, strategy)
     strm = &(state->strm);
 
     /* check that we're writing and that there's no error */
-    if (state->mode != GZ_WRITE || state->err != Z_OK)
+    if (state->mode != GZ_WRITE || state->err != Z_OK || state->direct)
         return Z_STREAM_ERROR;
 
     /* if no change is requested, then do nothing */
@@ -624,9 +592,7 @@ int ZEXPORT gzsetparams(file, level, strategy)
 }
 
 /* -- see zlib.h -- */
-int ZEXPORT gzclose_w(file)
-    gzFile file;
-{
+int ZEXPORT gzclose_w(gzFile file) {
     int ret = Z_OK;
     gz_statep state;
 
diff --git a/libs/zlib/infback.c b/libs/zlib/infback.c
index 59679ecbf..e7b25b307 100644
--- a/libs/zlib/infback.c
+++ b/libs/zlib/infback.c
@@ -1,5 +1,5 @@
 /* infback.c -- inflate using a call-back interface
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -15,9 +15,6 @@
 #include "inflate.h"
 #include "inffast.h"
 
-/* function prototypes */
-local void fixedtables OF((struct inflate_state FAR *state));
-
 /*
    strm provides memory allocation functions in zalloc and zfree, or
    Z_NULL to use the library memory allocation functions.
@@ -25,13 +22,9 @@ local void fixedtables OF((struct inflate_state FAR *state));
    windowBits is in the range 8..15, and window is a user-supplied
    window and output buffer that is 2**windowBits bytes.
  */
-int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size)
-z_streamp strm;
-int windowBits;
-unsigned char FAR *window;
-const char *version;
-int stream_size;
-{
+int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits,
+                             unsigned char FAR *window, const char *version,
+                             int stream_size) {
     struct inflate_state FAR *state;
 
     if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
@@ -66,6 +59,7 @@ int stream_size;
     state->window = window;
     state->wnext = 0;
     state->whave = 0;
+    state->sane = 1;
     return Z_OK;
 }
 
@@ -79,9 +73,7 @@ int stream_size;
    used for threaded applications, since the rewriting of the tables and virgin
    may not be thread-safe.
  */
-local void fixedtables(state)
-struct inflate_state FAR *state;
-{
+local void fixedtables(struct inflate_state FAR *state) {
 #ifdef BUILDFIXED
     static int virgin = 1;
     static code *lenfix, *distfix;
@@ -247,13 +239,8 @@ struct inflate_state FAR *state;
    inflateBack() can also return Z_STREAM_ERROR if the input parameters
    are not correct, i.e. strm is Z_NULL or the state was not initialized.
  */
-int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc)
-z_streamp strm;
-in_func in;
-void FAR *in_desc;
-out_func out;
-void FAR *out_desc;
-{
+int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc,
+                        out_func out, void FAR *out_desc) {
     struct inflate_state FAR *state;
     z_const unsigned char FAR *next;    /* next input */
     unsigned char FAR *put;     /* next output */
@@ -477,6 +464,7 @@ void FAR *out_desc;
             }
             Tracev((stderr, "inflate:       codes ok\n"));
             state->mode = LEN;
+                /* fallthrough */
 
         case LEN:
             /* use inflate_fast() if we have enough input and output */
@@ -604,33 +592,33 @@ void FAR *out_desc;
             break;
 
         case DONE:
-            /* inflate stream terminated properly -- write leftover output */
+            /* inflate stream terminated properly */
             ret = Z_STREAM_END;
-            if (left < state->wsize) {
-                if (out(out_desc, state->window, state->wsize - left))
-                    ret = Z_BUF_ERROR;
-            }
             goto inf_leave;
 
         case BAD:
             ret = Z_DATA_ERROR;
             goto inf_leave;
 
-        default:                /* can't happen, but makes compilers happy */
+        default:
+            /* can't happen, but makes compilers happy */
             ret = Z_STREAM_ERROR;
             goto inf_leave;
         }
 
-    /* Return unused input */
+    /* Write leftover output and return unused input */
   inf_leave:
+    if (left < state->wsize) {
+        if (out(out_desc, state->window, state->wsize - left) &&
+            ret == Z_STREAM_END)
+            ret = Z_BUF_ERROR;
+    }
     strm->next_in = next;
     strm->avail_in = have;
     return ret;
 }
 
-int ZEXPORT inflateBackEnd(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateBackEnd(z_streamp strm) {
     if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
         return Z_STREAM_ERROR;
     ZFREE(strm, strm->state);
diff --git a/libs/zlib/inffast.c b/libs/zlib/inffast.c
index 0dbd1dbc0..9354676e7 100644
--- a/libs/zlib/inffast.c
+++ b/libs/zlib/inffast.c
@@ -47,10 +47,7 @@
       requires strm->avail_out >= 258 for each loop to avoid checking for
       output space.
  */
-void ZLIB_INTERNAL inflate_fast(strm, start)
-z_streamp strm;
-unsigned start;         /* inflate()'s starting value for strm->avail_out */
-{
+void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) {
     struct inflate_state FAR *state;
     z_const unsigned char FAR *in;      /* local strm->next_in */
     z_const unsigned char FAR *last;    /* have enough input while in < last */
@@ -70,7 +67,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
     code const FAR *dcode;      /* local strm->distcode */
     unsigned lmask;             /* mask for first level of length codes */
     unsigned dmask;             /* mask for first level of distance codes */
-    code here;                  /* retrieved table entry */
+    code const *here;           /* retrieved table entry */
     unsigned op;                /* code bits, operation, extra bits, or */
                                 /*  window position, window bytes to copy */
     unsigned len;               /* match length, unused bytes */
@@ -107,20 +104,20 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
             hold += (unsigned long)(*in++) << bits;
             bits += 8;
         }
-        here = lcode[hold & lmask];
+        here = lcode + (hold & lmask);
       dolen:
-        op = (unsigned)(here.bits);
+        op = (unsigned)(here->bits);
         hold >>= op;
         bits -= op;
-        op = (unsigned)(here.op);
+        op = (unsigned)(here->op);
         if (op == 0) {                          /* literal */
-            Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+            Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ?
                     "inflate:         literal '%c'\n" :
-                    "inflate:         literal 0x%02x\n", here.val));
-            *out++ = (unsigned char)(here.val);
+                    "inflate:         literal 0x%02x\n", here->val));
+            *out++ = (unsigned char)(here->val);
         }
         else if (op & 16) {                     /* length base */
-            len = (unsigned)(here.val);
+            len = (unsigned)(here->val);
             op &= 15;                           /* number of extra bits */
             if (op) {
                 if (bits < op) {
@@ -138,14 +135,14 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
                 hold += (unsigned long)(*in++) << bits;
                 bits += 8;
             }
-            here = dcode[hold & dmask];
+            here = dcode + (hold & dmask);
           dodist:
-            op = (unsigned)(here.bits);
+            op = (unsigned)(here->bits);
             hold >>= op;
             bits -= op;
-            op = (unsigned)(here.op);
+            op = (unsigned)(here->op);
             if (op & 16) {                      /* distance base */
-                dist = (unsigned)(here.val);
+                dist = (unsigned)(here->val);
                 op &= 15;                       /* number of extra bits */
                 if (bits < op) {
                     hold += (unsigned long)(*in++) << bits;
@@ -264,7 +261,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
                 }
             }
             else if ((op & 64) == 0) {          /* 2nd level distance code */
-                here = dcode[here.val + (hold & ((1U << op) - 1))];
+                here = dcode + here->val + (hold & ((1U << op) - 1));
                 goto dodist;
             }
             else {
@@ -274,7 +271,7 @@ unsigned start;         /* inflate()'s starting value for strm->avail_out */
             }
         }
         else if ((op & 64) == 0) {              /* 2nd level length code */
-            here = lcode[here.val + (hold & ((1U << op) - 1))];
+            here = lcode + here->val + (hold & ((1U << op) - 1));
             goto dolen;
         }
         else if (op & 32) {                     /* end-of-block */
diff --git a/libs/zlib/inffast.h b/libs/zlib/inffast.h
index e5c1aa4ca..49c6d156c 100644
--- a/libs/zlib/inffast.h
+++ b/libs/zlib/inffast.h
@@ -8,4 +8,4 @@
    subject to change. Applications should only use zlib.h.
  */
 
-void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start));
+void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start);
diff --git a/libs/zlib/inflate.c b/libs/zlib/inflate.c
index ac333e8c2..94ecff015 100644
--- a/libs/zlib/inflate.c
+++ b/libs/zlib/inflate.c
@@ -1,5 +1,5 @@
 /* inflate.c -- zlib decompression
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -91,20 +91,7 @@
 #  endif
 #endif
 
-/* function prototypes */
-local int inflateStateCheck OF((z_streamp strm));
-local void fixedtables OF((struct inflate_state FAR *state));
-local int updatewindow OF((z_streamp strm, const unsigned char FAR *end,
-                           unsigned copy));
-#ifdef BUILDFIXED
-   void makefixed OF((void));
-#endif
-local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf,
-                              unsigned len));
-
-local int inflateStateCheck(strm)
-z_streamp strm;
-{
+local int inflateStateCheck(z_streamp strm) {
     struct inflate_state FAR *state;
     if (strm == Z_NULL ||
         strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0)
@@ -116,9 +103,7 @@ z_streamp strm;
     return 0;
 }
 
-int ZEXPORT inflateResetKeep(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateResetKeep(z_streamp strm) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -130,6 +115,7 @@ z_streamp strm;
     state->mode = HEAD;
     state->last = 0;
     state->havedict = 0;
+    state->flags = -1;
     state->dmax = 32768U;
     state->head = Z_NULL;
     state->hold = 0;
@@ -141,9 +127,7 @@ z_streamp strm;
     return Z_OK;
 }
 
-int ZEXPORT inflateReset(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateReset(z_streamp strm) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -154,10 +138,7 @@ z_streamp strm;
     return inflateResetKeep(strm);
 }
 
-int ZEXPORT inflateReset2(strm, windowBits)
-z_streamp strm;
-int windowBits;
-{
+int ZEXPORT inflateReset2(z_streamp strm, int windowBits) {
     int wrap;
     struct inflate_state FAR *state;
 
@@ -167,6 +148,8 @@ int windowBits;
 
     /* extract wrap request from windowBits parameter */
     if (windowBits < 0) {
+        if (windowBits < -15)
+            return Z_STREAM_ERROR;
         wrap = 0;
         windowBits = -windowBits;
     }
@@ -192,12 +175,8 @@ int windowBits;
     return inflateReset(strm);
 }
 
-int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
-z_streamp strm;
-int windowBits;
-const char *version;
-int stream_size;
-{
+int ZEXPORT inflateInit2_(z_streamp strm, int windowBits,
+                          const char *version, int stream_size) {
     int ret;
     struct inflate_state FAR *state;
 
@@ -236,22 +215,17 @@ int stream_size;
     return ret;
 }
 
-int ZEXPORT inflateInit_(strm, version, stream_size)
-z_streamp strm;
-const char *version;
-int stream_size;
-{
+int ZEXPORT inflateInit_(z_streamp strm, const char *version,
+                         int stream_size) {
     return inflateInit2_(strm, DEF_WBITS, version, stream_size);
 }
 
-int ZEXPORT inflatePrime(strm, bits, value)
-z_streamp strm;
-int bits;
-int value;
-{
+int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
+    if (bits == 0)
+        return Z_OK;
     state = (struct inflate_state FAR *)strm->state;
     if (bits < 0) {
         state->hold = 0;
@@ -275,9 +249,7 @@ int value;
    used for threaded applications, since the rewriting of the tables and virgin
    may not be thread-safe.
  */
-local void fixedtables(state)
-struct inflate_state FAR *state;
-{
+local void fixedtables(struct inflate_state FAR *state) {
 #ifdef BUILDFIXED
     static int virgin = 1;
     static code *lenfix, *distfix;
@@ -339,7 +311,7 @@ struct inflate_state FAR *state;
 
     a.out > inffixed.h
  */
-void makefixed()
+void makefixed(void)
 {
     unsigned low, size;
     struct inflate_state state;
@@ -393,11 +365,7 @@ void makefixed()
    output will fall in the output data, making match copies simpler and faster.
    The advantage may be dependent on the size of the processor's data caches.
  */
-local int updatewindow(strm, end, copy)
-z_streamp strm;
-const Bytef *end;
-unsigned copy;
-{
+local int updatewindow(z_streamp strm, const Bytef *end, unsigned copy) {
     struct inflate_state FAR *state;
     unsigned dist;
 
@@ -447,10 +415,10 @@ unsigned copy;
 
 /* check function to use adler32() for zlib or crc32() for gzip */
 #ifdef GUNZIP
-#  define UPDATE(check, buf, len) \
+#  define UPDATE_CHECK(check, buf, len) \
     (state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
 #else
-#  define UPDATE(check, buf, len) adler32(check, buf, len)
+#  define UPDATE_CHECK(check, buf, len) adler32(check, buf, len)
 #endif
 
 /* check macros for header crc */
@@ -619,10 +587,7 @@ unsigned copy;
    will return Z_BUF_ERROR if it has not reached the end of the stream.
  */
 
-int ZEXPORT inflate(strm, flush)
-z_streamp strm;
-int flush;
-{
+int ZEXPORT inflate(z_streamp strm, int flush) {
     struct inflate_state FAR *state;
     z_const unsigned char FAR *next;    /* next input */
     unsigned char FAR *put;     /* next output */
@@ -670,7 +635,6 @@ int flush;
                 state->mode = FLAGS;
                 break;
             }
-            state->flags = 0;           /* expect zlib header */
             if (state->head != Z_NULL)
                 state->head->done = -1;
             if (!(state->wrap & 1) ||   /* check if zlib header allowed */
@@ -697,6 +661,7 @@ int flush;
                 break;
             }
             state->dmax = 1U << len;
+            state->flags = 0;               /* indicate zlib header */
             Tracev((stderr, "inflate:   zlib header ok\n"));
             strm->adler = state->check = adler32(0L, Z_NULL, 0);
             state->mode = hold & 0x200 ? DICTID : TYPE;
@@ -722,6 +687,7 @@ int flush;
                 CRC2(state->check, hold);
             INITBITS();
             state->mode = TIME;
+                /* fallthrough */
         case TIME:
             NEEDBITS(32);
             if (state->head != Z_NULL)
@@ -730,6 +696,7 @@ int flush;
                 CRC4(state->check, hold);
             INITBITS();
             state->mode = OS;
+                /* fallthrough */
         case OS:
             NEEDBITS(16);
             if (state->head != Z_NULL) {
@@ -740,6 +707,7 @@ int flush;
                 CRC2(state->check, hold);
             INITBITS();
             state->mode = EXLEN;
+                /* fallthrough */
         case EXLEN:
             if (state->flags & 0x0400) {
                 NEEDBITS(16);
@@ -753,14 +721,16 @@ int flush;
             else if (state->head != Z_NULL)
                 state->head->extra = Z_NULL;
             state->mode = EXTRA;
+                /* fallthrough */
         case EXTRA:
             if (state->flags & 0x0400) {
                 copy = state->length;
                 if (copy > have) copy = have;
                 if (copy) {
                     if (state->head != Z_NULL &&
-                        state->head->extra != Z_NULL) {
-                        len = state->head->extra_len - state->length;
+                        state->head->extra != Z_NULL &&
+                        (len = state->head->extra_len - state->length) <
+                            state->head->extra_max) {
                         zmemcpy(state->head->extra + len, next,
                                 len + copy > state->head->extra_max ?
                                 state->head->extra_max - len : copy);
@@ -775,6 +745,7 @@ int flush;
             }
             state->length = 0;
             state->mode = NAME;
+                /* fallthrough */
         case NAME:
             if (state->flags & 0x0800) {
                 if (have == 0) goto inf_leave;
@@ -796,6 +767,7 @@ int flush;
                 state->head->name = Z_NULL;
             state->length = 0;
             state->mode = COMMENT;
+                /* fallthrough */
         case COMMENT:
             if (state->flags & 0x1000) {
                 if (have == 0) goto inf_leave;
@@ -816,6 +788,7 @@ int flush;
             else if (state->head != Z_NULL)
                 state->head->comment = Z_NULL;
             state->mode = HCRC;
+                /* fallthrough */
         case HCRC:
             if (state->flags & 0x0200) {
                 NEEDBITS(16);
@@ -839,6 +812,7 @@ int flush;
             strm->adler = state->check = ZSWAP32(hold);
             INITBITS();
             state->mode = DICT;
+                /* fallthrough */
         case DICT:
             if (state->havedict == 0) {
                 RESTORE();
@@ -846,8 +820,10 @@ int flush;
             }
             strm->adler = state->check = adler32(0L, Z_NULL, 0);
             state->mode = TYPE;
+                /* fallthrough */
         case TYPE:
             if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave;
+                /* fallthrough */
         case TYPEDO:
             if (state->last) {
                 BYTEBITS();
@@ -898,8 +874,10 @@ int flush;
             INITBITS();
             state->mode = COPY_;
             if (flush == Z_TREES) goto inf_leave;
+                /* fallthrough */
         case COPY_:
             state->mode = COPY;
+                /* fallthrough */
         case COPY:
             copy = state->length;
             if (copy) {
@@ -935,6 +913,7 @@ int flush;
             Tracev((stderr, "inflate:       table sizes ok\n"));
             state->have = 0;
             state->mode = LENLENS;
+                /* fallthrough */
         case LENLENS:
             while (state->have < state->ncode) {
                 NEEDBITS(3);
@@ -956,6 +935,7 @@ int flush;
             Tracev((stderr, "inflate:       code lengths ok\n"));
             state->have = 0;
             state->mode = CODELENS;
+                /* fallthrough */
         case CODELENS:
             while (state->have < state->nlen + state->ndist) {
                 for (;;) {
@@ -1039,8 +1019,10 @@ int flush;
             Tracev((stderr, "inflate:       codes ok\n"));
             state->mode = LEN_;
             if (flush == Z_TREES) goto inf_leave;
+                /* fallthrough */
         case LEN_:
             state->mode = LEN;
+                /* fallthrough */
         case LEN:
             if (have >= 6 && left >= 258) {
                 RESTORE();
@@ -1090,6 +1072,7 @@ int flush;
             }
             state->extra = (unsigned)(here.op) & 15;
             state->mode = LENEXT;
+                /* fallthrough */
         case LENEXT:
             if (state->extra) {
                 NEEDBITS(state->extra);
@@ -1100,6 +1083,7 @@ int flush;
             Tracevv((stderr, "inflate:         length %u\n", state->length));
             state->was = state->length;
             state->mode = DIST;
+                /* fallthrough */
         case DIST:
             for (;;) {
                 here = state->distcode[BITS(state->distbits)];
@@ -1127,6 +1111,7 @@ int flush;
             state->offset = (unsigned)here.val;
             state->extra = (unsigned)(here.op) & 15;
             state->mode = DISTEXT;
+                /* fallthrough */
         case DISTEXT:
             if (state->extra) {
                 NEEDBITS(state->extra);
@@ -1143,6 +1128,7 @@ int flush;
 #endif
             Tracevv((stderr, "inflate:         distance %u\n", state->offset));
             state->mode = MATCH;
+                /* fallthrough */
         case MATCH:
             if (left == 0) goto inf_leave;
             copy = out - left;
@@ -1202,7 +1188,7 @@ int flush;
                 state->total += out;
                 if ((state->wrap & 4) && out)
                     strm->adler = state->check =
-                        UPDATE(state->check, put - out, out);
+                        UPDATE_CHECK(state->check, put - out, out);
                 out = left;
                 if ((state->wrap & 4) && (
 #ifdef GUNZIP
@@ -1218,10 +1204,11 @@ int flush;
             }
 #ifdef GUNZIP
             state->mode = LENGTH;
+                /* fallthrough */
         case LENGTH:
             if (state->wrap && state->flags) {
                 NEEDBITS(32);
-                if (hold != (state->total & 0xffffffffUL)) {
+                if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) {
                     strm->msg = (char *)"incorrect length check";
                     state->mode = BAD;
                     break;
@@ -1231,6 +1218,7 @@ int flush;
             }
 #endif
             state->mode = DONE;
+                /* fallthrough */
         case DONE:
             ret = Z_STREAM_END;
             goto inf_leave;
@@ -1240,6 +1228,7 @@ int flush;
         case MEM:
             return Z_MEM_ERROR;
         case SYNC:
+                /* fallthrough */
         default:
             return Z_STREAM_ERROR;
         }
@@ -1265,7 +1254,7 @@ int flush;
     state->total += out;
     if ((state->wrap & 4) && out)
         strm->adler = state->check =
-            UPDATE(state->check, strm->next_out - out, out);
+            UPDATE_CHECK(state->check, strm->next_out - out, out);
     strm->data_type = (int)state->bits + (state->last ? 64 : 0) +
                       (state->mode == TYPE ? 128 : 0) +
                       (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0);
@@ -1274,9 +1263,7 @@ int flush;
     return ret;
 }
 
-int ZEXPORT inflateEnd(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateEnd(z_streamp strm) {
     struct inflate_state FAR *state;
     if (inflateStateCheck(strm))
         return Z_STREAM_ERROR;
@@ -1288,11 +1275,8 @@ z_streamp strm;
     return Z_OK;
 }
 
-int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength)
-z_streamp strm;
-Bytef *dictionary;
-uInt *dictLength;
-{
+int ZEXPORT inflateGetDictionary(z_streamp strm, Bytef *dictionary,
+                                 uInt *dictLength) {
     struct inflate_state FAR *state;
 
     /* check state */
@@ -1311,11 +1295,8 @@ uInt *dictLength;
     return Z_OK;
 }
 
-int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength)
-z_streamp strm;
-const Bytef *dictionary;
-uInt dictLength;
-{
+int ZEXPORT inflateSetDictionary(z_streamp strm, const Bytef *dictionary,
+                                 uInt dictLength) {
     struct inflate_state FAR *state;
     unsigned long dictid;
     int ret;
@@ -1346,10 +1327,7 @@ uInt dictLength;
     return Z_OK;
 }
 
-int ZEXPORT inflateGetHeader(strm, head)
-z_streamp strm;
-gz_headerp head;
-{
+int ZEXPORT inflateGetHeader(z_streamp strm, gz_headerp head) {
     struct inflate_state FAR *state;
 
     /* check state */
@@ -1374,11 +1352,8 @@ gz_headerp head;
    called again with more data and the *have state.  *have is initialized to
    zero for the first call.
  */
-local unsigned syncsearch(have, buf, len)
-unsigned FAR *have;
-const unsigned char FAR *buf;
-unsigned len;
-{
+local unsigned syncsearch(unsigned FAR *have, const unsigned char FAR *buf,
+                          unsigned len) {
     unsigned got;
     unsigned next;
 
@@ -1397,10 +1372,9 @@ unsigned len;
     return next;
 }
 
-int ZEXPORT inflateSync(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateSync(z_streamp strm) {
     unsigned len;               /* number of bytes to look at or looked at */
+    int flags;                  /* temporary to save header status */
     unsigned long in, out;      /* temporary to save total_in and total_out */
     unsigned char buf[4];       /* to restore bit buffer to byte string */
     struct inflate_state FAR *state;
@@ -1413,7 +1387,7 @@ z_streamp strm;
     /* if first time, start search in bit buffer */
     if (state->mode != SYNC) {
         state->mode = SYNC;
-        state->hold <<= state->bits & 7;
+        state->hold >>= state->bits & 7;
         state->bits -= state->bits & 7;
         len = 0;
         while (state->bits >= 8) {
@@ -1433,9 +1407,15 @@ z_streamp strm;
 
     /* return no joy or set up to restart inflate() on a new block */
     if (state->have != 4) return Z_DATA_ERROR;
+    if (state->flags == -1)
+        state->wrap = 0;    /* if no header yet, treat as raw */
+    else
+        state->wrap &= ~4;  /* no point in computing a check value now */
+    flags = state->flags;
     in = strm->total_in;  out = strm->total_out;
     inflateReset(strm);
     strm->total_in = in;  strm->total_out = out;
+    state->flags = flags;
     state->mode = TYPE;
     return Z_OK;
 }
@@ -1448,9 +1428,7 @@ z_streamp strm;
    block. When decompressing, PPP checks that at the end of input packet,
    inflate is waiting for these length bytes.
  */
-int ZEXPORT inflateSyncPoint(strm)
-z_streamp strm;
-{
+int ZEXPORT inflateSyncPoint(z_streamp strm) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -1458,10 +1436,7 @@ z_streamp strm;
     return state->mode == STORED && state->bits == 0;
 }
 
-int ZEXPORT inflateCopy(dest, source)
-z_streamp dest;
-z_streamp source;
-{
+int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) {
     struct inflate_state FAR *state;
     struct inflate_state FAR *copy;
     unsigned char FAR *window;
@@ -1505,10 +1480,7 @@ z_streamp source;
     return Z_OK;
 }
 
-int ZEXPORT inflateUndermine(strm, subvert)
-z_streamp strm;
-int subvert;
-{
+int ZEXPORT inflateUndermine(z_streamp strm, int subvert) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
@@ -1523,24 +1495,19 @@ int subvert;
 #endif
 }
 
-int ZEXPORT inflateValidate(strm, check)
-z_streamp strm;
-int check;
-{
+int ZEXPORT inflateValidate(z_streamp strm, int check) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
     state = (struct inflate_state FAR *)strm->state;
-    if (check)
+    if (check && state->wrap)
         state->wrap |= 4;
     else
         state->wrap &= ~4;
     return Z_OK;
 }
 
-long ZEXPORT inflateMark(strm)
-z_streamp strm;
-{
+long ZEXPORT inflateMark(z_streamp strm) {
     struct inflate_state FAR *state;
 
     if (inflateStateCheck(strm))
@@ -1551,9 +1518,7 @@ z_streamp strm;
             (state->mode == MATCH ? state->was - state->length : 0));
 }
 
-unsigned long ZEXPORT inflateCodesUsed(strm)
-z_streamp strm;
-{
+unsigned long ZEXPORT inflateCodesUsed(z_streamp strm) {
     struct inflate_state FAR *state;
     if (inflateStateCheck(strm)) return (unsigned long)-1;
     state = (struct inflate_state FAR *)strm->state;
diff --git a/libs/zlib/inflate.h b/libs/zlib/inflate.h
index a46cce6b6..f127b6b1f 100644
--- a/libs/zlib/inflate.h
+++ b/libs/zlib/inflate.h
@@ -1,5 +1,5 @@
 /* inflate.h -- internal inflate state definition
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2019 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -86,7 +86,8 @@ struct inflate_state {
     int wrap;                   /* bit 0 true for zlib, bit 1 true for gzip,
                                    bit 2 true to validate check value */
     int havedict;               /* true if dictionary provided */
-    int flags;                  /* gzip header method and flags (0 if zlib) */
+    int flags;                  /* gzip header method and flags, 0 if zlib, or
+                                   -1 if raw or no header yet */
     unsigned dmax;              /* zlib header max distance (INFLATE_STRICT) */
     unsigned long check;        /* protected copy of check value */
     unsigned long total;        /* protected copy of output count */
diff --git a/libs/zlib/inftrees.c b/libs/zlib/inftrees.c
index 2ea08fc13..98cfe1644 100644
--- a/libs/zlib/inftrees.c
+++ b/libs/zlib/inftrees.c
@@ -1,5 +1,5 @@
 /* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2017 Mark Adler
+ * Copyright (C) 1995-2024 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -9,7 +9,7 @@
 #define MAXBITS 15
 
 const char inflate_copyright[] =
-   " inflate 1.2.11 Copyright 1995-2017 Mark Adler ";
+   " inflate 1.3.1 Copyright 1995-2024 Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -29,14 +29,9 @@ const char inflate_copyright[] =
    table index bits.  It will differ if the request is greater than the
    longest code or if it is less than the shortest code.
  */
-int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work)
-codetype type;
-unsigned short FAR *lens;
-unsigned codes;
-code FAR * FAR *table;
-unsigned FAR *bits;
-unsigned short FAR *work;
-{
+int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens,
+                                unsigned codes, code FAR * FAR *table,
+                                unsigned FAR *bits, unsigned short FAR *work) {
     unsigned len;               /* a code's length in bits */
     unsigned sym;               /* index of code symbols */
     unsigned min, max;          /* minimum and maximum code lengths */
@@ -62,7 +57,7 @@ unsigned short FAR *work;
         35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
     static const unsigned short lext[31] = { /* Length codes 257..285 extra */
         16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
-        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202};
+        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 203, 77};
     static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
         257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
diff --git a/libs/zlib/inftrees.h b/libs/zlib/inftrees.h
index baa53a0b1..396f74b5d 100644
--- a/libs/zlib/inftrees.h
+++ b/libs/zlib/inftrees.h
@@ -38,11 +38,11 @@ typedef struct {
 /* Maximum size of the dynamic table.  The maximum number of code structures is
    1444, which is the sum of 852 for literal/length codes and 592 for distance
    codes.  These values were found by exhaustive searches using the program
-   examples/enough.c found in the zlib distribtution.  The arguments to that
+   examples/enough.c found in the zlib distribution.  The arguments to that
    program are the number of symbols, the initial root table size, and the
    maximum bit length of a code.  "enough 286 9 15" for literal/length codes
-   returns returns 852, and "enough 30 6 15" for distance codes returns 592.
-   The initial root table size (9 or 6) is found in the fifth argument of the
+   returns 852, and "enough 30 6 15" for distance codes returns 592. The
+   initial root table size (9 or 6) is found in the fifth argument of the
    inflate_table() calls in inflate.c and infback.c.  If the root table size is
    changed, then these maximum sizes would be need to be recalculated and
    updated. */
@@ -57,6 +57,6 @@ typedef enum {
     DISTS
 } codetype;
 
-int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens,
-                             unsigned codes, code FAR * FAR *table,
-                             unsigned FAR *bits, unsigned short FAR *work));
+int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens,
+                                unsigned codes, code FAR * FAR *table,
+                                unsigned FAR *bits, unsigned short FAR *work);
diff --git a/libs/zlib/make_vms.com b/libs/zlib/make_vms.com
index 65e9d0cbc..4dc8a8913 100644
--- a/libs/zlib/make_vms.com
+++ b/libs/zlib/make_vms.com
@@ -14,9 +14,9 @@ $! 0.02 20061008 Adapt to new Makefile.in
 $! 0.03 20091224 Add support for large file check
 $! 0.04 20100110 Add new gzclose, gzlib, gzread, gzwrite
 $! 0.05 20100221 Exchange zlibdefs.h by zconf.h.in
-$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new exmples
+$! 0.06 20120111 Fix missing amiss_err, update zconf_h.in, fix new examples
 $!               subdir path, update module search in makefile.in
-$! 0.07 20120115 Triggered by work done by Alexey Chupahin completly redesigned
+$! 0.07 20120115 Triggered by work done by Alexey Chupahin completely redesigned
 $!               shared image creation
 $! 0.08 20120219 Make it work on VAX again, pre-load missing symbols to shared
 $!               image
diff --git a/libs/zlib/old/as400/bndsrc b/libs/zlib/old/as400/bndsrc
deleted file mode 100644
index 9cf94bb35..000000000
--- a/libs/zlib/old/as400/bndsrc
+++ /dev/null
@@ -1,132 +0,0 @@
-STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('ZLIB')
-
-/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
-/*   Version 1.1.3 entry points.                                    */
-/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
-
-/********************************************************************/
-/*   *MODULE      ADLER32      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("adler32")
-
-/********************************************************************/
-/*   *MODULE      COMPRESS     ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("compress")
-  EXPORT SYMBOL("compress2")
-
-/********************************************************************/
-/*   *MODULE      CRC32        ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("crc32")
-  EXPORT SYMBOL("get_crc_table")
-
-/********************************************************************/
-/*   *MODULE      DEFLATE      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("deflate")
-  EXPORT SYMBOL("deflateEnd")
-  EXPORT SYMBOL("deflateSetDictionary")
-  EXPORT SYMBOL("deflateCopy")
-  EXPORT SYMBOL("deflateReset")
-  EXPORT SYMBOL("deflateParams")
-  EXPORT SYMBOL("deflatePrime")
-  EXPORT SYMBOL("deflateInit_")
-  EXPORT SYMBOL("deflateInit2_")
-
-/********************************************************************/
-/*   *MODULE      GZIO         ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("gzopen")
-  EXPORT SYMBOL("gzdopen")
-  EXPORT SYMBOL("gzsetparams")
-  EXPORT SYMBOL("gzread")
-  EXPORT SYMBOL("gzwrite")
-  EXPORT SYMBOL("gzprintf")
-  EXPORT SYMBOL("gzputs")
-  EXPORT SYMBOL("gzgets")
-  EXPORT SYMBOL("gzputc")
-  EXPORT SYMBOL("gzgetc")
-  EXPORT SYMBOL("gzflush")
-  EXPORT SYMBOL("gzseek")
-  EXPORT SYMBOL("gzrewind")
-  EXPORT SYMBOL("gztell")
-  EXPORT SYMBOL("gzeof")
-  EXPORT SYMBOL("gzclose")
-  EXPORT SYMBOL("gzerror")
-
-/********************************************************************/
-/*   *MODULE      INFLATE      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("inflate")
-  EXPORT SYMBOL("inflateEnd")
-  EXPORT SYMBOL("inflateSetDictionary")
-  EXPORT SYMBOL("inflateSync")
-  EXPORT SYMBOL("inflateReset")
-  EXPORT SYMBOL("inflateInit_")
-  EXPORT SYMBOL("inflateInit2_")
-  EXPORT SYMBOL("inflateSyncPoint")
-
-/********************************************************************/
-/*   *MODULE      UNCOMPR      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("uncompress")
-
-/********************************************************************/
-/*   *MODULE      ZUTIL        ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("zlibVersion")
-  EXPORT SYMBOL("zError")
-
-/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
-/*   Version 1.2.1 additional entry points.                         */
-/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
-
-/********************************************************************/
-/*   *MODULE      COMPRESS     ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("compressBound")
-
-/********************************************************************/
-/*   *MODULE      DEFLATE      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("deflateBound")
-
-/********************************************************************/
-/*   *MODULE      GZIO         ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("gzungetc")
-  EXPORT SYMBOL("gzclearerr")
-
-/********************************************************************/
-/*   *MODULE      INFBACK      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("inflateBack")
-  EXPORT SYMBOL("inflateBackEnd")
-  EXPORT SYMBOL("inflateBackInit_")
-
-/********************************************************************/
-/*   *MODULE      INFLATE      ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("inflateCopy")
-
-/********************************************************************/
-/*   *MODULE      ZUTIL        ZLIB         01/02/01  00:15:09      */
-/********************************************************************/
-
-  EXPORT SYMBOL("zlibCompileFlags")
-
-ENDPGMEXP
diff --git a/libs/zlib/old/as400/compile.clp b/libs/zlib/old/as400/compile.clp
deleted file mode 100644
index 855495150..000000000
--- a/libs/zlib/old/as400/compile.clp
+++ /dev/null
@@ -1,123 +0,0 @@
-/******************************************************************************/
-/*                                                                            */
-/*  ZLIB                                                                      */
-/*                                                                            */
-/*    Compile sources into modules and link them into a service program.      */
-/*                                                                            */
-/******************************************************************************/
-
-             PGM
-
-/*      Configuration adjustable parameters.                                  */
-
-             DCL        VAR(&SRCLIB) TYPE(*CHAR) LEN(10) +
-                          VALUE('ZLIB')                         /* Source library. */
-             DCL        VAR(&SRCFILE) TYPE(*CHAR) LEN(10) +
-                          VALUE('SOURCES')                      /* Source member file. */
-             DCL        VAR(&CTLFILE) TYPE(*CHAR) LEN(10) +
-                          VALUE('TOOLS')                        /* Control member file. */
-
-             DCL        VAR(&MODLIB) TYPE(*CHAR) LEN(10) +
-                          VALUE('ZLIB')                         /* Module library. */
-
-             DCL        VAR(&SRVLIB) TYPE(*CHAR) LEN(10) +
-                          VALUE('LGPL')                         /* Service program library. */
-
-             DCL        VAR(&CFLAGS) TYPE(*CHAR) +
-                          VALUE('OPTIMIZE(40)')                 /* Compile options. */
-
-
-/*      Working storage.                                                      */
-
-             DCL        VAR(&CMDLEN) TYPE(*DEC) LEN(15 5) VALUE(300)    /* Command length. */
-             DCL        VAR(&CMD) TYPE(*CHAR) LEN(512)
-
-
-/*      Compile sources into modules.                                         */
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/ADLER32)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/COMPRESS)              SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/CRC32)                 SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/DEFLATE)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/GZIO)                  SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/INFBACK)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/INFFAST)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/INFLATE)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/INFTREES)              SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/TREES)                 SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/UNCOMPR)               SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-             CHGVAR     VAR(&CMD) VALUE('CRTCMOD MODULE(' *TCAT &MODLIB *TCAT  +
-                        '/ZUTIL)                 SRCFILE(' *TCAT               +
-                        &SRCLIB *TCAT '/' *TCAT &SRCFILE *TCAT                 +
-                        ') SYSIFCOPT(*IFSIO)' *BCAT &CFLAGS)
-             CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)
-
-
-/*      Link modules into a service program.                                  */
-
-             CRTSRVPGM  SRVPGM(&SRVLIB/ZLIB) +
-                          MODULE(&MODLIB/ADLER32     &MODLIB/COMPRESS    +
-                                 &MODLIB/CRC32       &MODLIB/DEFLATE     +
-                                 &MODLIB/GZIO        &MODLIB/INFBACK     +
-                                 &MODLIB/INFFAST     &MODLIB/INFLATE     +
-                                 &MODLIB/INFTREES    &MODLIB/TREES       +
-                                 &MODLIB/UNCOMPR     &MODLIB/ZUTIL)      +
-                          SRCFILE(&SRCLIB/&CTLFILE) SRCMBR(BNDSRC) +
-                          TEXT('ZLIB 1.2.3') TGTRLS(V4R4M0)
-
-             ENDPGM
diff --git a/libs/zlib/old/as400/readme.txt b/libs/zlib/old/as400/readme.txt
deleted file mode 100644
index beae13f56..000000000
--- a/libs/zlib/old/as400/readme.txt
+++ /dev/null
@@ -1,111 +0,0 @@
-        ZLIB version 1.2.3 for AS400 installation instructions
-
-I) From an AS400 *SAVF file:
-
-1)      Unpacking archive to an AS400 save file
-
-On the AS400:
-
-_       Create the ZLIB AS400 library:
-
-        CRTLIB LIB(ZLIB) TYPE(PROD) TEXT('ZLIB compression API library')
-
-_       Create a work save file, for example:
-
-                CRTSAVF FILE(ZLIB/ZLIBSAVF)
-
-On a PC connected to the target AS400:
-
-_       Unpack the save file image to a PC file "ZLIBSAVF"
-_       Upload this file into the save file on the AS400, for example
-                using ftp in BINARY mode.
-
-
-2)      Populating the ZLIB AS400 source library
-
-On the AS400:
-
-_       Extract the saved objects into the ZLIB AS400 library using:
-
-RSTOBJ OBJ(*ALL) SAVLIB(ZLIB) DEV(*SAVF) SAVF(ZLIB/ZLIBSAVF) RSTLIB(ZLIB)
-
-
-3)      Customize installation:
-
-_       Edit CL member ZLIB/TOOLS(COMPILE) and change parameters if needed,
-                according to the comments.
-
-_       Compile this member with:
-
-        CRTCLPGM PGM(ZLIB/COMPILE) SRCFILE(ZLIB/TOOLS) SRCMBR(COMPILE)
-
-
-4)      Compile and generate the service program:
-
-_       This can now be done by executing:
-
-        CALL PGM(ZLIB/COMPILE)
-
-
-
-II) From the original source distribution:
-
-1)      On the AS400, create the source library:
-
-        CRTLIB LIB(ZLIB) TYPE(PROD) TEXT('ZLIB compression API library')
-
-2)      Create the source files:
-
-        CRTSRCPF FILE(ZLIB/SOURCES) RCDLEN(112) TEXT('ZLIB library modules')
-        CRTSRCPF FILE(ZLIB/H)       RCDLEN(112) TEXT('ZLIB library includes')
-        CRTSRCPF FILE(ZLIB/TOOLS)   RCDLEN(112) TEXT('ZLIB library control utilities')
-
-3)      From the machine hosting the distribution files, upload them (with
-                FTP in text mode, for example) according to the following table:
-
-    Original    AS400   AS400    AS400 AS400
-    file        file    member   type  description
-                SOURCES                Original ZLIB C subprogram sources
-    adler32.c           ADLER32  C     ZLIB - Compute the Adler-32 checksum of a dta strm
-    compress.c          COMPRESS C     ZLIB - Compress a memory buffer
-    crc32.c             CRC32    C     ZLIB - Compute the CRC-32 of a data stream
-    deflate.c           DEFLATE  C     ZLIB - Compress data using the deflation algorithm
-    gzio.c              GZIO     C     ZLIB - IO on .gz files
-    infback.c           INFBACK  C     ZLIB - Inflate using a callback interface
-    inffast.c           INFFAST  C     ZLIB - Fast proc. literals & length/distance pairs
-    inflate.c           INFLATE  C     ZLIB - Interface to inflate modules
-    inftrees.c          INFTREES C     ZLIB - Generate Huffman trees for efficient decode
-    trees.c             TREES    C     ZLIB - Output deflated data using Huffman coding
-    uncompr.c           UNCOMPR  C     ZLIB - Decompress a memory buffer
-    zutil.c             ZUTIL    C     ZLIB - Target dependent utility functions
-                H                      Original ZLIB C and ILE/RPG include files
-    crc32.h             CRC32    C     ZLIB - CRC32 tables
-    deflate.h           DEFLATE  C     ZLIB - Internal compression state
-    inffast.h           INFFAST  C     ZLIB - Header to use inffast.c
-    inffixed.h          INFFIXED C     ZLIB - Table for decoding fixed codes
-    inflate.h           INFLATE  C     ZLIB - Internal inflate state definitions
-    inftrees.h          INFTREES C     ZLIB - Header to use inftrees.c
-    trees.h             TREES    C     ZLIB - Created automatically with -DGEN_TREES_H
-    zconf.h             ZCONF    C     ZLIB - Compression library configuration
-    zlib.h              ZLIB     C     ZLIB - Compression library C user interface
-    as400/zlib.inc      ZLIB.INC RPGLE ZLIB - Compression library ILE RPG user interface
-    zutil.h             ZUTIL    C     ZLIB - Internal interface and configuration
-                TOOLS                  Building source software & AS/400 README
-    as400/bndsrc        BNDSRC         Entry point exportation list
-    as400/compile.clp   COMPILE  CLP   Compile sources & generate service program
-    as400/readme.txt    README   TXT   Installation instructions
-
-4)      Continue as in I)3).
-
-
-
-
-Notes:  For AS400 ILE RPG programmers, a /copy member defining the ZLIB
-                API prototypes for ILE RPG can be found in ZLIB/H(ZLIB.INC).
-                Please read comments in this member for more information.
-
-        Remember that most foreign textual data are ASCII coded: this
-                implementation does not handle conversion from/to ASCII, so
-                text data code conversions must be done explicitely.
-
-        Always open zipped files in binary mode.
diff --git a/libs/zlib/old/as400/zlib.inc b/libs/zlib/old/as400/zlib.inc
deleted file mode 100644
index a9a4f5cf4..000000000
--- a/libs/zlib/old/as400/zlib.inc
+++ /dev/null
@@ -1,331 +0,0 @@
-      *  ZLIB.INC - Interface to the general purpose compression library
-      *
-      *  ILE RPG400 version by Patrick Monnerat, DATASPHERE.
-      *  Version 1.2.3.9
-      *
-      *
-      *  WARNING:
-      *     Procedures inflateInit(), inflateInit2(), deflateInit(),
-      *         deflateInit2() and inflateBackInit() need to be called with
-      *         two additional arguments:
-      *         the package version string and the stream control structure.
-      *         size. This is needed because RPG lacks some macro feature.
-      *         Call these procedures as:
-      *             inflateInit(...: ZLIB_VERSION: %size(z_stream))
-      *
-      /if not defined(ZLIB_H_)
-      /define ZLIB_H_
-      *
-      **************************************************************************
-      *                               Constants
-      **************************************************************************
-      *
-      *  Versioning information.
-      *
-     D ZLIB_VERSION    C                   '1.2.3.9'
-     D ZLIB_VERNUM     C                   X'1239'
-      *
-      *  Other equates.
-      *
-     D Z_NO_FLUSH      C                   0
-     D Z_SYNC_FLUSH    C                   2
-     D Z_FULL_FLUSH    C                   3
-     D Z_FINISH        C                   4
-     D Z_BLOCK         C                   5
-      *
-     D Z_OK            C                   0
-     D Z_STREAM_END    C                   1
-     D Z_NEED_DICT     C                   2
-     D Z_ERRNO         C                   -1
-     D Z_STREAM_ERROR  C                   -2
-     D Z_DATA_ERROR    C                   -3
-     D Z_MEM_ERROR     C                   -4
-     D Z_BUF_ERROR     C                   -5
-     DZ_VERSION_ERROR  C                   -6
-      *
-     D Z_NO_COMPRESSION...
-     D                 C                   0
-     D Z_BEST_SPEED    C                   1
-     D Z_BEST_COMPRESSION...
-     D                 C                   9
-     D Z_DEFAULT_COMPRESSION...
-     D                 C                   -1
-      *
-     D Z_FILTERED      C                   1
-     D Z_HUFFMAN_ONLY  C                   2
-     D Z_RLE           C                   3
-     D Z_DEFAULT_STRATEGY...
-     D                 C                   0
-      *
-     D Z_BINARY        C                   0
-     D Z_ASCII         C                   1
-     D Z_UNKNOWN       C                   2
-      *
-     D Z_DEFLATED      C                   8
-      *
-     D Z_NULL          C                   0
-      *
-      **************************************************************************
-      *                                 Types
-      **************************************************************************
-      *
-     D z_streamp       S               *                                        Stream struct ptr
-     D gzFile          S               *                                        File pointer
-     D z_off_t         S             10i 0                                      Stream offsets
-      *
-      **************************************************************************
-      *                               Structures
-      **************************************************************************
-      *
-      *  The GZIP encode/decode stream support structure.
-      *
-     D z_stream        DS                  align based(z_streamp)
-     D  zs_next_in                     *                                        Next input byte
-     D  zs_avail_in                  10U 0                                      Byte cnt at next_in
-     D  zs_total_in                  10U 0                                      Total bytes read
-     D  zs_next_out                    *                                        Output buffer ptr
-     D  zs_avail_out                 10U 0                                      Room left @ next_out
-     D  zs_total_out                 10U 0                                      Total bytes written
-     D  zs_msg                         *                                        Last errmsg or null
-     D  zs_state                       *                                        Internal state
-     D  zs_zalloc                      *   procptr                              Int. state allocator
-     D  zs_free                        *   procptr                              Int. state dealloc.
-     D  zs_opaque                      *                                        Private alloc. data
-     D  zs_data_type                 10i 0                                      ASC/BIN best guess
-     D  zs_adler                     10u 0                                      Uncompr. adler32 val
-     D                               10U 0                                      Reserved
-     D                               10U 0                                      Ptr. alignment
-      *
-      **************************************************************************
-      *                     Utility function prototypes
-      **************************************************************************
-      *
-     D compress        PR            10I 0 extproc('compress')
-     D  dest                      32767    options(*varsize)                    Destination buffer
-     D  destLen                      10U 0                                      Destination length
-     D  source                    32767    const options(*varsize)              Source buffer
-     D  sourceLen                    10u 0 value                                Source length
-      *
-     D compress2       PR            10I 0 extproc('compress2')
-     D  dest                      32767    options(*varsize)                    Destination buffer
-     D  destLen                      10U 0                                      Destination length
-     D  source                    32767    const options(*varsize)              Source buffer
-     D  sourceLen                    10U 0 value                                Source length
-     D  level                        10I 0 value                                Compression level
-      *
-     D compressBound   PR            10U 0 extproc('compressBound')
-     D  sourceLen                    10U 0 value
-      *
-     D uncompress      PR            10I 0 extproc('uncompress')
-     D  dest                      32767    options(*varsize)                    Destination buffer
-     D  destLen                      10U 0                                      Destination length
-     D  source                    32767    const options(*varsize)              Source buffer
-     D  sourceLen                    10U 0 value                                Source length
-      *
-     D gzopen          PR                  extproc('gzopen')
-     D                                     like(gzFile)
-     D  path                           *   value options(*string)               File pathname
-     D  mode                           *   value options(*string)               Open mode
-      *
-     D gzdopen         PR                  extproc('gzdopen')
-     D                                     like(gzFile)
-     D  fd                           10i 0 value                                File descriptor
-     D  mode                           *   value options(*string)               Open mode
-      *
-     D gzsetparams     PR            10I 0 extproc('gzsetparams')
-     D  file                               value like(gzFile)                   File pointer
-     D  level                        10I 0 value
-     D  strategy                     10i 0 value
-      *
-     D gzread          PR            10I 0 extproc('gzread')
-     D  file                               value like(gzFile)                   File pointer
-     D  buf                       32767    options(*varsize)                    Buffer
-     D  len                          10u 0 value                                Buffer length
-      *
-     D gzwrite         PR            10I 0 extproc('gzwrite')
-     D  file                               value like(gzFile)                   File pointer
-     D  buf                       32767    const options(*varsize)              Buffer
-     D  len                          10u 0 value                                Buffer length
-      *
-     D gzputs          PR            10I 0 extproc('gzputs')
-     D  file                               value like(gzFile)                   File pointer
-     D  s                              *   value options(*string)               String to output
-      *
-     D gzgets          PR              *   extproc('gzgets')
-     D  file                               value like(gzFile)                   File pointer
-     D  buf                       32767    options(*varsize)                    Read buffer
-     D  len                          10i 0 value                                Buffer length
-      *
-     D gzflush         PR            10i 0 extproc('gzflush')
-     D  file                               value like(gzFile)                   File pointer
-     D  flush                        10I 0 value                                Type of flush
-      *
-     D gzseek          PR                  extproc('gzseek')
-     D                                     like(z_off_t)
-     D  file                               value like(gzFile)                   File pointer
-     D  offset                             value like(z_off_t)                  Offset
-     D  whence                       10i 0 value                                Origin
-      *
-     D gzrewind        PR            10i 0 extproc('gzrewind')
-     D  file                               value like(gzFile)                   File pointer
-      *
-     D gztell          PR                  extproc('gztell')
-     D                                     like(z_off_t)
-     D  file                               value like(gzFile)                   File pointer
-      *
-     D gzeof           PR            10i 0 extproc('gzeof')
-     D  file                               value like(gzFile)                   File pointer
-      *
-     D gzclose         PR            10i 0 extproc('gzclose')
-     D  file                               value like(gzFile)                   File pointer
-      *
-     D gzerror         PR              *   extproc('gzerror')                   Error string
-     D  file                               value like(gzFile)                   File pointer
-     D  errnum                       10I 0                                      Error code
-      *
-     D gzclearerr      PR                  extproc('gzclearerr')
-     D  file                               value like(gzFile)                   File pointer
-      *
-      **************************************************************************
-      *                        Basic function prototypes
-      **************************************************************************
-      *
-     D zlibVersion     PR              *   extproc('zlibVersion')               Version string
-      *
-     D deflateInit     PR            10I 0 extproc('deflateInit_')              Init. compression
-     D  strm                               like(z_stream)                       Compression stream
-     D  level                        10I 0 value                                Compression level
-     D  version                        *   value options(*string)               Version string
-     D  stream_size                  10i 0 value                                Stream struct. size
-      *
-     D deflate         PR            10I 0 extproc('deflate')                   Compress data
-     D  strm                               like(z_stream)                       Compression stream
-     D  flush                        10I 0 value                                Flush type required
-      *
-     D deflateEnd      PR            10I 0 extproc('deflateEnd')                Termin. compression
-     D  strm                               like(z_stream)                       Compression stream
-      *
-     D inflateInit     PR            10I 0 extproc('inflateInit_')              Init. expansion
-     D  strm                               like(z_stream)                       Expansion stream
-     D  version                        *   value options(*string)               Version string
-     D  stream_size                  10i 0 value                                Stream struct. size
-      *
-     D inflate         PR            10I 0 extproc('inflate')                   Expand data
-     D  strm                               like(z_stream)                       Expansion stream
-     D  flush                        10I 0 value                                Flush type required
-      *
-     D inflateEnd      PR            10I 0 extproc('inflateEnd')                Termin. expansion
-     D  strm                               like(z_stream)                       Expansion stream
-      *
-      **************************************************************************
-      *                        Advanced function prototypes
-      **************************************************************************
-      *
-     D deflateInit2    PR            10I 0 extproc('deflateInit2_')             Init. compression
-     D  strm                               like(z_stream)                       Compression stream
-     D  level                        10I 0 value                                Compression level
-     D  method                       10I 0 value                                Compression method
-     D  windowBits                   10I 0 value                                log2(window size)
-     D  memLevel                     10I 0 value                                Mem/cmpress tradeoff
-     D  strategy                     10I 0 value                                Compression stategy
-     D  version                        *   value options(*string)               Version string
-     D  stream_size                  10i 0 value                                Stream struct. size
-      *
-     D deflateSetDictionary...
-     D                 PR            10I 0 extproc('deflateSetDictionary')      Init. dictionary
-     D  strm                               like(z_stream)                       Compression stream
-     D  dictionary                32767    const options(*varsize)              Dictionary bytes
-     D  dictLength                   10U 0 value                                Dictionary length
-      *
-     D deflateCopy     PR            10I 0 extproc('deflateCopy')               Compress strm 2 strm
-     D  dest                               like(z_stream)                       Destination stream
-     D  source                             like(z_stream)                       Source stream
-      *
-     D deflateReset    PR            10I 0 extproc('deflateReset')              End and init. stream
-     D  strm                               like(z_stream)                       Compression stream
-      *
-     D deflateParams   PR            10I 0 extproc('deflateParams')             Change level & strat
-     D  strm                               like(z_stream)                       Compression stream
-     D  level                        10I 0 value                                Compression level
-     D  strategy                     10I 0 value                                Compression stategy
-      *
-     D deflateBound    PR            10U 0 extproc('deflateBound')              Change level & strat
-     D  strm                               like(z_stream)                       Compression stream
-     D  sourcelen                    10U 0 value                                Compression level
-      *
-     D deflatePrime    PR            10I 0 extproc('deflatePrime')              Change level & strat
-     D  strm                               like(z_stream)                       Compression stream
-     D  bits                         10I 0 value                                Number of bits to insert
-     D  value                        10I 0 value                                Bits to insert
-      *
-     D inflateInit2    PR            10I 0 extproc('inflateInit2_')             Init. expansion
-     D  strm                               like(z_stream)                       Expansion stream
-     D  windowBits                   10I 0 value                                log2(window size)
-     D  version                        *   value options(*string)               Version string
-     D  stream_size                  10i 0 value                                Stream struct. size
-      *
-     D inflateSetDictionary...
-     D                 PR            10I 0 extproc('inflateSetDictionary')      Init. dictionary
-     D  strm                               like(z_stream)                       Expansion stream
-     D  dictionary                32767    const options(*varsize)              Dictionary bytes
-     D  dictLength                   10U 0 value                                Dictionary length
-      *
-     D inflateSync     PR            10I 0 extproc('inflateSync')               Sync. expansion
-     D  strm                               like(z_stream)                       Expansion stream
-      *
-     D inflateCopy     PR            10I 0 extproc('inflateCopy')
-     D  dest                               like(z_stream)                       Destination stream
-     D  source                             like(z_stream)                       Source stream
-      *
-     D inflateReset    PR            10I 0 extproc('inflateReset')              End and init. stream
-     D  strm                               like(z_stream)                       Expansion stream
-      *
-     D inflateBackInit...
-     D                 PR            10I 0 extproc('inflateBackInit_')
-     D  strm                               like(z_stream)                       Expansion stream
-     D  windowBits                   10I 0 value                                Log2(buffer size)
-     D  window                    32767    options(*varsize)                    Buffer
-     D  version                        *   value options(*string)               Version string
-     D  stream_size                  10i 0 value                                Stream struct. size
-      *
-     D inflateBack     PR            10I 0 extproc('inflateBack')
-     D  strm                               like(z_stream)                       Expansion stream
-     D  in                             *   value procptr                        Input function
-     D  in_desc                        *   value                                Input descriptor
-     D  out                            *   value procptr                        Output function
-     D  out_desc                       *   value                                Output descriptor
-      *
-     D inflateBackEnd  PR            10I 0 extproc('inflateBackEnd')
-     D  strm                               like(z_stream)                       Expansion stream
-      *
-     D zlibCompileFlags...
-     D                 PR            10U 0 extproc('zlibCompileFlags')
-      *
-      **************************************************************************
-      *                        Checksum function prototypes
-      **************************************************************************
-      *
-     D adler32         PR            10U 0 extproc('adler32')                   New checksum
-     D  adler                        10U 0 value                                Old checksum
-     D  buf                       32767    const options(*varsize)              Bytes to accumulate
-     D  len                          10U 0 value                                Buffer length
-      *
-     D crc32           PR            10U 0 extproc('crc32')                     New checksum
-     D  crc                          10U 0 value                                Old checksum
-     D  buf                       32767    const options(*varsize)              Bytes to accumulate
-     D  len                          10U 0 value                                Buffer length
-      *
-      **************************************************************************
-      *                     Miscellaneous function prototypes
-      **************************************************************************
-      *
-     D zError          PR              *   extproc('zError')                    Error string
-     D  err                          10I 0 value                                Error code
-      *
-     D inflateSyncPoint...
-     D                 PR            10I 0 extproc('inflateSyncPoint')
-     D  strm                               like(z_stream)                       Expansion stream
-      *
-     D get_crc_table   PR              *   extproc('get_crc_table')             Ptr to ulongs
-      *
-      /endif
diff --git a/libs/zlib/old/visual-basic.txt b/libs/zlib/old/visual-basic.txt
index 57efe5812..3c8d2a42d 100644
--- a/libs/zlib/old/visual-basic.txt
+++ b/libs/zlib/old/visual-basic.txt
@@ -115,7 +115,7 @@ SUCCESS Then
         ReDim Preserve bytaryCpr(lngCprSiz - 1)
         Open strCprPth For Binary Access Write As #1
             Put #1, , bytaryCpr()
-            Put #1, , lngOriSiz 'Add the the original size value to the end
+            Put #1, , lngOriSiz 'Add the original size value to the end
 (last 4 bytes)
         Close #1
     Else
diff --git a/libs/zlib/old/visualc6/README.txt b/libs/zlib/old/visualc6/README.txt
deleted file mode 100644
index 3d0aef0a1..000000000
--- a/libs/zlib/old/visualc6/README.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-Microsoft Developer Studio Project Files, Format Version 6.00 for zlib.
-
-Copyright (C) 2000-2004 Simon-Pierre Cadieux.
-Copyright (C) 2004 Cosmin Truta.
-For conditions of distribution and use, see copyright notice in zlib.h.
-
-
-This project builds the zlib binaries as follows:
-
-* Win32_DLL_Release\zlib1.dll       DLL build
-* Win32_DLL_Debug\zlib1d.dll        DLL build (debug version)
-* Win32_DLL_ASM_Release\zlib1.dll   DLL build using ASM code
-* Win32_DLL_ASM_Debug\zlib1d.dll    DLL build using ASM code (debug version)
-* Win32_LIB_Release\zlib.lib        static build
-* Win32_LIB_Debug\zlibd.lib         static build (debug version)
-* Win32_LIB_ASM_Release\zlib.lib    static build using ASM code
-* Win32_LIB_ASM_Debug\zlibd.lib     static build using ASM code (debug version)
-
-
-For more information regarding the DLL builds, please see the DLL FAQ
-in ..\..\win32\DLL_FAQ.txt.
-
-
-To build and test:
-
-1) On the main menu, select "File | Open Workspace".
-   Open "zlib.dsw".
-
-2) Select "Build | Set Active Configuration".
-   Choose the configuration you wish to build.
-
-3) Select "Build | Clean".
-
-4) Select "Build | Build ... (F7)".  Ignore warning messages about
-   not being able to find certain include files (e.g. alloc.h).
-
-5) If you built one of the sample programs (example or minigzip),
-   select "Build | Execute ... (Ctrl+F5)".
-
-
-To use:
-
-1) Select "Project | Settings (Alt+F7)".
-   Make note of the configuration names used in your project.
-   Usually, these names are "Win32 Release" and "Win32 Debug".
-
-2) In the Workspace window, select the "FileView" tab.
-   Right-click on the root item "Workspace '...'".
-   Select "Insert Project into Workspace".
-   Switch on the checkbox "Dependency of:", and select the name
-   of your project.  Open "zlib.dsp".
-
-3) Select "Build | Configurations".
-   For each configuration of your project:
-   3.1) Choose the zlib configuration you wish to use.
-   3.2) Click on "Add".
-   3.3) Set the new zlib configuration name to the name used by
-        the configuration from the current iteration.
-
-4) Select "Build | Set Active Configuration".
-   Choose the configuration you wish to build.
-
-5) Select "Build | Build ... (F7)".
-
-6) If you built an executable program, select
-   "Build | Execute ... (Ctrl+F5)".
-
-
-Note:
-
-To build the ASM-enabled code, you need Microsoft Assembler
-(ML.EXE).  You can get it by downloading and installing the
-latest Processor Pack for Visual C++ 6.0.
diff --git a/libs/zlib/old/visualc6/example.dsp b/libs/zlib/old/visualc6/example.dsp
deleted file mode 100644
index d3580525b..000000000
--- a/libs/zlib/old/visualc6/example.dsp
+++ /dev/null
@@ -1,278 +0,0 @@
-# Microsoft Developer Studio Project File - Name="example" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=example - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "example.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "example.mak" CFG="example - Win32 LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "example - Win32 DLL ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "example - Win32 DLL ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_DLL_ASM_Release"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_ASM_Release"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_DLL_ASM_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_ASM_Debug"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_DLL_Release"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_Release"
-# PROP Intermediate_Dir "Win32_DLL_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_DLL_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_Debug"
-# PROP Intermediate_Dir "Win32_DLL_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_LIB_Release"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_Release"
-# PROP Intermediate_Dir "Win32_LIB_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_LIB_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_Debug"
-# PROP Intermediate_Dir "Win32_LIB_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "example - Win32 DLL ASM Release"
-# Name "example - Win32 DLL ASM Debug"
-# Name "example - Win32 DLL Release"
-# Name "example - Win32 DLL Debug"
-# Name "example - Win32 LIB ASM Release"
-# Name "example - Win32 LIB ASM Debug"
-# Name "example - Win32 LIB Release"
-# Name "example - Win32 LIB Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\example.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/libs/zlib/old/visualc6/minigzip.dsp b/libs/zlib/old/visualc6/minigzip.dsp
deleted file mode 100644
index 71034684d..000000000
--- a/libs/zlib/old/visualc6/minigzip.dsp
+++ /dev/null
@@ -1,278 +0,0 @@
-# Microsoft Developer Studio Project File - Name="minigzip" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=minigzip - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "minigzip.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "minigzip.mak" CFG="minigzip - Win32 LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "minigzip - Win32 DLL ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "minigzip - Win32 DLL ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_DLL_ASM_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_ASM_Release"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_DLL_ASM_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_ASM_Debug"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_DLL_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_Release"
-# PROP Intermediate_Dir "Win32_DLL_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_DLL_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_Debug"
-# PROP Intermediate_Dir "Win32_DLL_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_LIB_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_Release"
-# PROP Intermediate_Dir "Win32_LIB_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_LIB_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_Debug"
-# PROP Intermediate_Dir "Win32_LIB_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "minigzip - Win32 DLL ASM Release"
-# Name "minigzip - Win32 DLL ASM Debug"
-# Name "minigzip - Win32 DLL Release"
-# Name "minigzip - Win32 DLL Debug"
-# Name "minigzip - Win32 LIB ASM Release"
-# Name "minigzip - Win32 LIB ASM Debug"
-# Name "minigzip - Win32 LIB Release"
-# Name "minigzip - Win32 LIB Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\minigzip.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/libs/zlib/old/visualc6/zlib.dsp b/libs/zlib/old/visualc6/zlib.dsp
deleted file mode 100644
index 00f54ea42..000000000
--- a/libs/zlib/old/visualc6/zlib.dsp
+++ /dev/null
@@ -1,621 +0,0 @@
-# Microsoft Developer Studio Project File - Name="zlib" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=zlib - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "zlib.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "zlib.mak" CFG="zlib - Win32 LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "zlib - Win32 DLL ASM Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "zlib - Win32 DLL ASM Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "zlib - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "zlib - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "zlib - Win32 LIB ASM Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "zlib - Win32 LIB ASM Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "zlib - Win32 LIB Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "zlib - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF  "$(CFG)" == "zlib - Win32 DLL ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "zlib___Win32_DLL_ASM_Release"
-# PROP BASE Intermediate_Dir "zlib___Win32_DLL_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_ASM_Release"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /D "ASMV" /D "ASMINF" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 /nologo /dll /machine:I386 /out:"Win32_DLL_ASM_Release\zlib1.dll"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "zlib___Win32_DLL_ASM_Debug"
-# PROP BASE Intermediate_Dir "zlib___Win32_DLL_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_ASM_Debug"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /D "ASMV" /D "ASMINF" /FR /FD /GZ /c
-# SUBTRACT CPP /YX /Yc /Yu
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /dll /debug /machine:I386 /out:"Win32_DLL_ASM_Debug\zlib1d.dll" /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "zlib___Win32_DLL_Release"
-# PROP BASE Intermediate_Dir "zlib___Win32_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_Release"
-# PROP Intermediate_Dir "Win32_DLL_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 /nologo /dll /machine:I386 /out:"Win32_DLL_Release\zlib1.dll"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "zlib___Win32_DLL_Debug"
-# PROP BASE Intermediate_Dir "zlib___Win32_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_Debug"
-# PROP Intermediate_Dir "Win32_DLL_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX /Yc /Yu
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /dll /debug /machine:I386 /out:"Win32_DLL_Debug\zlib1d.dll" /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "zlib___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /D "ASMV" /D "ASMINF" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "zlib___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /D "ASMV" /D "ASMINF" /FR /FD /GZ /c
-# SUBTRACT CPP /YX /Yc /Yu
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"Win32_LIB_ASM_Debug\zlibd.lib"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "zlib___Win32_LIB_Release"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_Release"
-# PROP Intermediate_Dir "Win32_LIB_Release"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "zlib___Win32_LIB_Debug"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_Debug"
-# PROP Intermediate_Dir "Win32_LIB_Debug"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_DEBUG" /FR /FD /GZ /c
-# SUBTRACT CPP /YX /Yc /Yu
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"Win32_LIB_Debug\zlibd.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "zlib - Win32 DLL ASM Release"
-# Name "zlib - Win32 DLL ASM Debug"
-# Name "zlib - Win32 DLL Release"
-# Name "zlib - Win32 DLL Debug"
-# Name "zlib - Win32 LIB ASM Release"
-# Name "zlib - Win32 LIB ASM Debug"
-# Name "zlib - Win32 LIB Release"
-# Name "zlib - Win32 LIB Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\adler32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\compress.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\crc32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\deflate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzclose.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzlib.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzread.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzwrite.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\infback.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffast.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inflate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inftrees.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\trees.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\uncompr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\win32\zlib.def
-
-!IF  "$(CFG)" == "zlib - Win32 DLL ASM Release"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Release"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug"
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug"
-
-# PROP Exclude_From_Build 1
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zutil.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\crc32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\deflate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffast.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffixed.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inflate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inftrees.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\trees.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zutil.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\..\win32\zlib1.rc
-# End Source File
-# End Group
-# Begin Group "Assembler Files (Unsupported)"
-
-# PROP Default_Filter "asm;obj;c;cpp;cxx;h;hpp;hxx"
-# Begin Source File
-
-SOURCE=..\..\contrib\masmx86\gvmat32.asm
-
-!IF  "$(CFG)" == "zlib - Win32 DLL ASM Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_DLL_ASM_Release
-InputPath=..\..\contrib\masmx86\gvmat32.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_DLL_ASM_Debug
-InputPath=..\..\contrib\masmx86\gvmat32.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Release
-InputPath=..\..\contrib\masmx86\gvmat32.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Debug
-InputPath=..\..\contrib\masmx86\gvmat32.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug"
-
-# PROP Exclude_From_Build 1
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\contrib\masmx86\gvmat32c.c
-
-!IF  "$(CFG)" == "zlib - Win32 DLL ASM Release"
-
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug"
-
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Release"
-
-# PROP Exclude_From_Build 1
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug"
-
-# PROP Exclude_From_Build 1
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release"
-
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug"
-
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release"
-
-# PROP Exclude_From_Build 1
-# ADD CPP /I "..\.."
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug"
-
-# PROP Exclude_From_Build 1
-# ADD CPP /I "..\.."
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\contrib\masmx86\inffas32.asm
-
-!IF  "$(CFG)" == "zlib - Win32 DLL ASM Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_DLL_ASM_Release
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL ASM Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_DLL_ASM_Debug
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 DLL Debug"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Release
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB ASM Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Debug
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Release"
-
-# PROP Exclude_From_Build 1
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 LIB Debug"
-
-# PROP Exclude_From_Build 1
-
-!ENDIF
-
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=.\README.txt
-# End Source File
-# End Target
-# End Project
diff --git a/libs/zlib/old/visualc6/zlib.dsw b/libs/zlib/old/visualc6/zlib.dsw
deleted file mode 100644
index 3a771fce0..000000000
--- a/libs/zlib/old/visualc6/zlib.dsw
+++ /dev/null
@@ -1,59 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "example"=.\example.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name zlib
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "minigzip"=.\minigzip.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name zlib
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "zlib"=.\zlib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/libs/zlib/os400/README400 b/libs/zlib/os400/README400
index 4f98334f5..30ed5a12c 100644
--- a/libs/zlib/os400/README400
+++ b/libs/zlib/os400/README400
@@ -1,9 +1,9 @@
-        ZLIB version 1.2.11 for OS/400 installation instructions
+        ZLIB version 1.3.1 for OS/400 installation instructions
 
 1) Download and unpack the zlib tarball to some IFS directory.
    (i.e.: /path/to/the/zlib/ifs/source/directory)
 
-   If the installed IFS command suppors gzip format, this is straightforward,
+   If the installed IFS command supports gzip format, this is straightforward,
 else you have to unpack first to some directory on a system supporting it,
 then move the whole directory to the IFS via the network (via SMB or FTP).
 
@@ -43,6 +43,6 @@ Notes:  For OS/400 ILE RPG programmers, a /copy member defining the ZLIB
 
         Remember that most foreign textual data are ASCII coded: this
                 implementation does not handle conversion from/to ASCII, so
-                text data code conversions must be done explicitely.
+                text data code conversions must be done explicitly.
 
         Mainly for the reason above, always open zipped files in binary mode.
diff --git a/libs/zlib/os400/bndsrc b/libs/zlib/os400/bndsrc
index 5e6e0a2f0..9f92bb10c 100644
--- a/libs/zlib/os400/bndsrc
+++ b/libs/zlib/os400/bndsrc
@@ -116,4 +116,12 @@ STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('ZLIB')
   EXPORT SYMBOL("inflateValidate")
   EXPORT SYMBOL("uncompress2")
 
+/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
+/*   Version 1.2.12 additional entry points.                        */
+/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
+
+  EXPORT SYMBOL("crc32_combine_gen64")
+  EXPORT SYMBOL("crc32_combine_gen")
+  EXPORT SYMBOL("crc32_combine_op")
+
 ENDPGMEXP
diff --git a/libs/zlib/os400/zlib.inc b/libs/zlib/os400/zlib.inc
index c6aca2cbd..744729ab9 100644
--- a/libs/zlib/os400/zlib.inc
+++ b/libs/zlib/os400/zlib.inc
@@ -1,7 +1,7 @@
       *  ZLIB.INC - Interface to the general purpose compression library
       *
       *  ILE RPG400 version by Patrick Monnerat, DATASPHERE.
-      *  Version 1.2.11
+      *  Version 1.3.1
       *
       *
       *  WARNING:
@@ -22,12 +22,12 @@
       *
       *  Versioning information.
       *
-     D ZLIB_VERSION    C                   '1.2.11'
+     D ZLIB_VERSION    C                   '1.3.1'
      D ZLIB_VERNUM     C                   X'12a0'
      D ZLIB_VER_MAJOR  C                   1
-     D ZLIB_VER_MINOR  C                   2
+     D ZLIB_VER_MINOR  C                   3
      D ZLIB_VER_REVISION...
-     D                 C                   11
+     D                 C                   1
      D ZLIB_VER_SUBREVISION...
      D                 C                   0
       *
diff --git a/libs/zlib/projects/README.projects b/libs/zlib/projects/README.projects
deleted file mode 100644
index 1c029e4a3..000000000
--- a/libs/zlib/projects/README.projects
+++ /dev/null
@@ -1,41 +0,0 @@
-This directory contains project files for building zlib under various
-Integrated Development Environments (IDE).
-
-If you wish to submit a new project to this directory, you should comply
-to the following requirements.  Otherwise (e.g. if you wish to integrate
-a custom piece of code that changes the zlib interface or its behavior),
-please consider submitting the project to the contrib directory.
-
-
-Requirements
-============
-
-- The project must build zlib using the source files from the official
-  zlib source distribution, exclusively.
-
-- If the project produces redistributable builds (e.g. shared objects
-  or DLL files), these builds must be compatible to those produced by
-  makefiles, if such makefiles exist in the zlib distribution.
-  In particular, if the project produces a DLL build for the Win32
-  platform, this build must comply to the officially-ammended Win32 DLL
-  Application Binary Interface (ABI), described in win32/DLL_FAQ.txt.
-
-- The project may provide additional build targets, which depend on
-  3rd-party (unofficially-supported) software, present in the contrib
-  directory.  For example, it is possible to provide an "ASM build",
-  besides the officially-supported build, and have ASM source files
-  among its dependencies.
-
-- If there are significant differences between the project files created
-  by different versions of an IDE (e.g. Visual C++ 6.0 vs. 7.0), the name
-  of the project directory should contain the version number of the IDE
-  for which the project is intended (e.g. "visualc6" for Visual C++ 6.0,
-  or "visualc7" for Visual C++ 7.0 and 7.1).
-
-
-Current projects
-================
-
-visualc6/   by Simon-Pierre Cadieux <methodex@methodex.ca>
-            and Cosmin Truta <cosmint@cs.ubbcluj.ro>
-        Project for Microsoft Visual C++ 6.0
diff --git a/libs/zlib/projects/visualc10/.gitignore b/libs/zlib/projects/visualc10/.gitignore
deleted file mode 100644
index 1c5340cd4..000000000
--- a/libs/zlib/projects/visualc10/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/Win32
-/x64
-/zlib.vcproj.*.*.user
-/ARM
-/ARM64
diff --git a/libs/zlib/projects/visualc10/zlib.vcxproj b/libs/zlib/projects/visualc10/zlib.vcxproj
deleted file mode 100644
index 5c00ea4a9..000000000
--- a/libs/zlib/projects/visualc10/zlib.vcxproj
+++ /dev/null
@@ -1,619 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|ARM">
-      <Configuration>Debug</Configuration>
-      <Platform>ARM</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|ARM64">
-      <Configuration>Debug</Configuration>
-      <Platform>ARM64</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="Release|ARM">
-      <Configuration>Release</Configuration>
-      <Platform>ARM</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|ARM64">
-      <Configuration>Release</Configuration>
-      <Platform>ARM64</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>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{73A5729C-7323-41D4-AB48-8A03C9F81603}</ProjectGuid>
-    <RootNamespace>zlib</RootNamespace>
-    <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-    <WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-    <WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-    <WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <PlatformToolset>v143</PlatformToolset>
-    <WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </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" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </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" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(ProjectDir)$(Platform)\$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">$(ProjectDir)$(Platform)\$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>false</MinimalRebuild>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;ASMV;ASMINF;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>false</MultiProcessorCompilation>
-      <UndefinePreprocessorDefinitions>ASMV;ASMINF</UndefinePreprocessorDefinitions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineARM</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>false</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
-    <Midl />
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>false</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineARM64</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;ASMV;ASMINF;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <UndefinePreprocessorDefinitions>ASMV;ASMINF</UndefinePreprocessorDefinitions>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineARM</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <Midl>
-      <TargetEnvironment>X64</TargetEnvironment>
-    </Midl>
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
-    <Midl />
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <StringPooling>true</StringPooling>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <AssemblerListingLocation>$(ProjectDir)$(Platform)\$(Configuration)\</AssemblerListingLocation>
-      <ObjectFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ObjectFileName>
-      <ProgramDataBaseFileName>$(ProjectDir)$(Platform)\$(Configuration)\</ProgramDataBaseFileName>
-      <WarningLevel>Level3</WarningLevel>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <CompileAs>CompileAsC</CompileAs>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <ResourceCompile>
-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <Culture>0x0409</Culture>
-    </ResourceCompile>
-    <Lib>
-      <OutputFile>$(ProjectDir)$(Platform)\$(Configuration)\zlib.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TargetMachine>MachineARM64</TargetMachine>
-    </Lib>
-    <Bscmake>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <OutputFile>$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc</OutputFile>
-    </Bscmake>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\adler32.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\compress.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\crc32.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\deflate.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\gzclose.c" />
-    <ClCompile Include="..\..\gzlib.c" />
-    <ClCompile Include="..\..\gzread.c" />
-    <ClCompile Include="..\..\gzwrite.c" />
-    <ClCompile Include="..\..\infback.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\inffast.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\inflate.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\inftrees.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\trees.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\uncompr.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\zutil.c">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <ClCompile Include="..\..\contrib\masmx64\inffas8664.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <CustomBuildStep Include="..\..\win32\zlib.def">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
-    </CustomBuildStep>
-    <None Include="README.txt" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\crc32.h" />
-    <ClInclude Include="..\..\deflate.h" />
-    <ClInclude Include="..\..\gzguts.h" />
-    <ClInclude Include="..\..\inffast.h" />
-    <ClInclude Include="..\..\inffixed.h" />
-    <ClInclude Include="..\..\inflate.h" />
-    <ClInclude Include="..\..\inftrees.h" />
-    <ClInclude Include="..\..\trees.h" />
-    <ClInclude Include="..\..\zconf.h" />
-    <ClInclude Include="..\..\zlib.h" />
-    <ClInclude Include="..\..\zutil.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="..\..\win32\zlib1.rc">
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <MASM Include="..\..\contrib\masmx86\inffas32.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </MASM>
-    <MASM Include="..\..\contrib\masmx86\match686.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-    </MASM>
-    <MASM Include="..\..\contrib\masmx64\gvmat64.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</EnableMASM51Compatibility>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</EnableMASM51Compatibility>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</EnableMASM51Compatibility>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</EnableMASM51Compatibility>
-    </MASM>
-    <MASM Include="..\..\contrib\masmx64\inffasx64.asm">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</EnableMASM51Compatibility>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</EnableMASM51Compatibility>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</EnableMASM51Compatibility>
-      <EnableMASM51Compatibility Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</EnableMASM51Compatibility>
-    </MASM>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-    <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/libs/zlib/projects/visualc6/README.txt b/libs/zlib/projects/visualc6/README.txt
deleted file mode 100644
index 3d0aef0a1..000000000
--- a/libs/zlib/projects/visualc6/README.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-Microsoft Developer Studio Project Files, Format Version 6.00 for zlib.
-
-Copyright (C) 2000-2004 Simon-Pierre Cadieux.
-Copyright (C) 2004 Cosmin Truta.
-For conditions of distribution and use, see copyright notice in zlib.h.
-
-
-This project builds the zlib binaries as follows:
-
-* Win32_DLL_Release\zlib1.dll       DLL build
-* Win32_DLL_Debug\zlib1d.dll        DLL build (debug version)
-* Win32_DLL_ASM_Release\zlib1.dll   DLL build using ASM code
-* Win32_DLL_ASM_Debug\zlib1d.dll    DLL build using ASM code (debug version)
-* Win32_LIB_Release\zlib.lib        static build
-* Win32_LIB_Debug\zlibd.lib         static build (debug version)
-* Win32_LIB_ASM_Release\zlib.lib    static build using ASM code
-* Win32_LIB_ASM_Debug\zlibd.lib     static build using ASM code (debug version)
-
-
-For more information regarding the DLL builds, please see the DLL FAQ
-in ..\..\win32\DLL_FAQ.txt.
-
-
-To build and test:
-
-1) On the main menu, select "File | Open Workspace".
-   Open "zlib.dsw".
-
-2) Select "Build | Set Active Configuration".
-   Choose the configuration you wish to build.
-
-3) Select "Build | Clean".
-
-4) Select "Build | Build ... (F7)".  Ignore warning messages about
-   not being able to find certain include files (e.g. alloc.h).
-
-5) If you built one of the sample programs (example or minigzip),
-   select "Build | Execute ... (Ctrl+F5)".
-
-
-To use:
-
-1) Select "Project | Settings (Alt+F7)".
-   Make note of the configuration names used in your project.
-   Usually, these names are "Win32 Release" and "Win32 Debug".
-
-2) In the Workspace window, select the "FileView" tab.
-   Right-click on the root item "Workspace '...'".
-   Select "Insert Project into Workspace".
-   Switch on the checkbox "Dependency of:", and select the name
-   of your project.  Open "zlib.dsp".
-
-3) Select "Build | Configurations".
-   For each configuration of your project:
-   3.1) Choose the zlib configuration you wish to use.
-   3.2) Click on "Add".
-   3.3) Set the new zlib configuration name to the name used by
-        the configuration from the current iteration.
-
-4) Select "Build | Set Active Configuration".
-   Choose the configuration you wish to build.
-
-5) Select "Build | Build ... (F7)".
-
-6) If you built an executable program, select
-   "Build | Execute ... (Ctrl+F5)".
-
-
-Note:
-
-To build the ASM-enabled code, you need Microsoft Assembler
-(ML.EXE).  You can get it by downloading and installing the
-latest Processor Pack for Visual C++ 6.0.
diff --git a/libs/zlib/projects/visualc6/example.dsp b/libs/zlib/projects/visualc6/example.dsp
deleted file mode 100644
index e072a37ff..000000000
--- a/libs/zlib/projects/visualc6/example.dsp
+++ /dev/null
@@ -1,278 +0,0 @@
-# Microsoft Developer Studio Project File - Name="example" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=example - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "example.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "example.mak" CFG="example - Win32 LIB Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "example - Win32 DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 DLL ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "example - Win32 LIB ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "example - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_DLL_Release"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_Release"
-# PROP Intermediate_Dir "Win32_DLL_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_DLL_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_Debug"
-# PROP Intermediate_Dir "Win32_DLL_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_DLL_ASM_Release"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_ASM_Release"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 DLL ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_DLL_ASM_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_DLL_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_ASM_Debug"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_LIB_Release"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_Release"
-# PROP Intermediate_Dir "Win32_LIB_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_LIB_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_Debug"
-# PROP Intermediate_Dir "Win32_LIB_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "example___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "example - Win32 LIB ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "example___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "example___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "example - Win32 DLL Release"
-# Name "example - Win32 DLL Debug"
-# Name "example - Win32 DLL ASM Release"
-# Name "example - Win32 DLL ASM Debug"
-# Name "example - Win32 LIB Release"
-# Name "example - Win32 LIB Debug"
-# Name "example - Win32 LIB ASM Release"
-# Name "example - Win32 LIB ASM Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\example.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/libs/zlib/projects/visualc6/minigzip.dsp b/libs/zlib/projects/visualc6/minigzip.dsp
deleted file mode 100644
index f32024eaf..000000000
--- a/libs/zlib/projects/visualc6/minigzip.dsp
+++ /dev/null
@@ -1,278 +0,0 @@
-# Microsoft Developer Studio Project File - Name="minigzip" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=minigzip - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "minigzip.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "minigzip.mak" CFG="minigzip - Win32 LIB Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "minigzip - Win32 DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 DLL ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB ASM Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "minigzip - Win32 LIB ASM Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "minigzip - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_DLL_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_Release"
-# PROP Intermediate_Dir "Win32_DLL_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_DLL_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_Debug"
-# PROP Intermediate_Dir "Win32_DLL_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_DLL_ASM_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_DLL_ASM_Release"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 DLL ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_DLL_ASM_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_DLL_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_DLL_ASM_Debug"
-# PROP Intermediate_Dir "Win32_DLL_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_LIB_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_Release"
-# PROP Intermediate_Dir "Win32_LIB_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_LIB_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_Debug"
-# PROP Intermediate_Dir "Win32_LIB_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB ASM Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "minigzip___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 /nologo /subsystem:console /machine:I386
-
-!ELSEIF  "$(CFG)" == "minigzip - Win32 LIB ASM Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "minigzip___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "minigzip___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX
-# ADD CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF 
-
-# Begin Target
-
-# Name "minigzip - Win32 DLL Release"
-# Name "minigzip - Win32 DLL Debug"
-# Name "minigzip - Win32 DLL ASM Release"
-# Name "minigzip - Win32 DLL ASM Debug"
-# Name "minigzip - Win32 LIB Release"
-# Name "minigzip - Win32 LIB Debug"
-# Name "minigzip - Win32 LIB ASM Release"
-# Name "minigzip - Win32 LIB ASM Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\minigzip.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/libs/zlib/projects/visualc6/zlib.dsp b/libs/zlib/projects/visualc6/zlib.dsp
deleted file mode 100644
index ec69eae83..000000000
--- a/libs/zlib/projects/visualc6/zlib.dsp
+++ /dev/null
@@ -1,283 +0,0 @@
-# Microsoft Developer Studio Project File - Name="zlib" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=zlib - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE 
-!MESSAGE NMAKE /f "zlib.mak".
-!MESSAGE 
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE 
-!MESSAGE NMAKE /f "zlib.mak" CFG="zlib - Win32 Debug"
-!MESSAGE 
-!MESSAGE Possible choices for configuration are:
-!MESSAGE 
-!MESSAGE "zlib - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "zlib - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE 
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "zlib - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "zlib___Win32_LIB_ASM_Release"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_ASM_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Win32_LIB_ASM_Release"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /FD /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /W3 /O2 /D "WIN32" /D "NDEBUG" /D "ASMV" /D "ASMINF" /FD /c
-# SUBTRACT CPP /YX /Yc /Yu
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "zlib___Win32_LIB_ASM_Debug"
-# PROP BASE Intermediate_Dir "zlib___Win32_LIB_ASM_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Win32_LIB_ASM_Debug"
-# PROP Intermediate_Dir "Win32_LIB_ASM_Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /FD /GZ /c
-# SUBTRACT BASE CPP /YX /Yc /Yu
-# ADD CPP /nologo /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "ASMV" /D "ASMINF" /FD /GZ /c
-# SUBTRACT CPP /YX /Yc /Yu
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF 
-
-# Begin Target
-
-# Name "zlib - Win32 Release"
-# Name "zlib - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\adler32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\compress.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\crc32.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\deflate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzclose.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzlib.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzread.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzwrite.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\infback.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffast.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inflate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inftrees.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\trees.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\uncompr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\win32\zlib.def
-# PROP Exclude_From_Build 1
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zutil.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\crc32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\deflate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\gzguts.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffast.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inffixed.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inflate.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inftrees.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\trees.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zconf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zlib.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\zutil.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\..\win32\zlib1.rc
-# End Source File
-# End Group
-# Begin Group "Assembler Files (Unsupported)"
-
-# PROP Default_Filter "asm;obj;c;cpp;cxx;h;hpp;hxx"
-# Begin Source File
-
-SOURCE=..\..\contrib\masmx86\match686.asm
-
-!IF  "$(CFG)" == "zlib - Win32 Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Release
-InputPath=..\..\contrib\masmx86\match686.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Debug
-InputPath=..\..\contrib\masmx86\match686.asm
-InputName=gvmat32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ENDIF 
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\contrib\masmx86\inffas32.asm
-
-!IF  "$(CFG)" == "zlib - Win32 Release"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Release
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "zlib - Win32 Debug"
-
-# Begin Custom Build - Assembling...
-IntDir=.\Win32_LIB_ASM_Debug
-InputPath=..\..\contrib\masmx86\inffas32.asm
-InputName=inffas32
-
-"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-	ml.exe /nologo /c /coff /Cx /Zi /Fo"$(IntDir)\$(InputName).obj" "$(InputPath)"
-
-# End Custom Build
-
-!ENDIF 
-
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=.\README.txt
-# End Source File
-# End Target
-# End Project
diff --git a/libs/zlib/projects/visualc6/zlib.dsw b/libs/zlib/projects/visualc6/zlib.dsw
deleted file mode 100644
index 3a771fce0..000000000
--- a/libs/zlib/projects/visualc6/zlib.dsw
+++ /dev/null
@@ -1,59 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "example"=.\example.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name zlib
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "minigzip"=.\minigzip.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-    Begin Project Dependency
-    Project_Dep_Name zlib
-    End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "zlib"=.\zlib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/libs/zlib/projects/visualc9/.gitignore b/libs/zlib/projects/visualc9/.gitignore
deleted file mode 100644
index 488a5428b..000000000
--- a/libs/zlib/projects/visualc9/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/Win32
-/x64
-/zlib.vcproj.*.*.user
diff --git a/libs/zlib/projects/visualc9/zlib.vcproj b/libs/zlib/projects/visualc9/zlib.vcproj
deleted file mode 100644
index cb1cb119d..000000000
--- a/libs/zlib/projects/visualc9/zlib.vcproj
+++ /dev/null
@@ -1,1056 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="zlib"
-	ProjectGUID="{73A5729C-7323-41D4-AB48-8A03C9F81603}"
-	RootNamespace="zlib"
-	TargetFrameworkVersion="0"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-		<Platform
-			Name="x64"
-		/>
-	</Platforms>
-	<ToolFiles>
-		<DefaultToolFile
-			FileName="masm.rules"
-		/>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WIN32;_DEBUG;ASMV;ASMINF;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				AssemblerListingLocation="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ObjectFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ProgramDataBaseFileName="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="4"
-				CompileAs="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug|x64"
-			OutputDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="1"
-				AssemblerListingLocation="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ObjectFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ProgramDataBaseFileName="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				DebugInformationFormat="3"
-				CompileAs="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="_DEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="/MP"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				PreprocessorDefinitions="WIN32;NDEBUG;ASMV;ASMINF;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				AssemblerListingLocation="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ObjectFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ProgramDataBaseFileName="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				CompileAs="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|x64"
-			OutputDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			IntermediateDirectory="$(ProjectDir)$(PlatformName)\$(ConfigurationName)"
-			ConfigurationType="4"
-			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
-			UseOfMFC="0"
-			ATLMinimizesCRunTimeLibraryUsage="false"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="MASM"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-				TargetEnvironment="3"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="/MP"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
-				StringPooling="true"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				AssemblerListingLocation="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ObjectFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				ProgramDataBaseFileName="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\"
-				WarningLevel="3"
-				SuppressStartupBanner="true"
-				CompileAs="1"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-				PreprocessorDefinitions="NDEBUG"
-				Culture="1033"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.lib"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-				SuppressStartupBanner="true"
-				OutputFile="$(ProjectDir)$(PlatformName)\$(ConfigurationName)\zlib.bsc"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-			>
-			<File
-				RelativePath="..\..\adler32.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\compress.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\crc32.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\deflate.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\gzclose.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\gzlib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\gzread.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\gzwrite.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\infback.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\inffast.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\inflate.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\inftrees.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\trees.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\uncompr.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\win32\zlib.def"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCustomBuildTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
-				RelativePath="..\..\zutil.c"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						PreprocessorDefinitions=""
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl"
-			>
-			<File
-				RelativePath="..\..\crc32.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\deflate.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\gzguts.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\inffast.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\inffixed.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\inflate.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\inftrees.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\trees.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\zconf.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\zlib.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\zutil.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-			>
-			<File
-				RelativePath="..\..\win32\zlib1.rc"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						PreprocessorDefinitions=""
-						AdditionalIncludeDirectories="\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						PreprocessorDefinitions=""
-						AdditionalIncludeDirectories="\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						PreprocessorDefinitions=""
-						AdditionalIncludeDirectories="\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCResourceCompilerTool"
-						PreprocessorDefinitions=""
-						AdditionalIncludeDirectories="\Oogaland\Projects\orospakr.ca\srb2\tools\zlib\win32"
-					/>
-				</FileConfiguration>
-			</File>
-		</Filter>
-		<Filter
-			Name="Assembler Files (Unsupported)"
-			Filter="asm;obj;c;cpp;cxx;h;hpp;hxx"
-			>
-			<Filter
-				Name="x86"
-				>
-				<File
-					RelativePath="..\..\contrib\masmx86\inffas32.asm"
-					>
-					<FileConfiguration
-						Name="Debug|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-				</File>
-				<File
-					RelativePath="..\..\contrib\masmx86\match686.asm"
-					>
-					<FileConfiguration
-						Name="Debug|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-				</File>
-			</Filter>
-			<Filter
-				Name="x64"
-				>
-				<File
-					RelativePath="..\..\contrib\masmx64\gvmat64.asm"
-					>
-					<FileConfiguration
-						Name="Debug|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Debug|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-							EnableMASM51Compatibility="true"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-							EnableMASM51Compatibility="true"
-						/>
-					</FileConfiguration>
-				</File>
-				<File
-					RelativePath="..\..\contrib\masmx64\inffas8664.c"
-					>
-					<FileConfiguration
-						Name="Debug|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-							AdditionalIncludeDirectories="../"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Debug|x64"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-							AdditionalIncludeDirectories="../.."
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|x64"
-						>
-						<Tool
-							Name="VCCLCompilerTool"
-							AdditionalIncludeDirectories="../.."
-						/>
-					</FileConfiguration>
-				</File>
-				<File
-					RelativePath="..\..\contrib\masmx64\inffasx64.asm"
-					>
-					<FileConfiguration
-						Name="Debug|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Debug|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-							EnableMASM51Compatibility="true"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|Win32"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-						/>
-					</FileConfiguration>
-					<FileConfiguration
-						Name="Release|x64"
-						ExcludedFromBuild="true"
-						>
-						<Tool
-							Name="MASM"
-							EnableMASM51Compatibility="true"
-						/>
-					</FileConfiguration>
-				</File>
-			</Filter>
-		</Filter>
-		<File
-			RelativePath="README.txt"
-			>
-		</File>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
diff --git a/libs/zlib/qnx/package.qpg b/libs/zlib/qnx/package.qpg
index 31e8e90db..4877e0ef0 100644
--- a/libs/zlib/qnx/package.qpg
+++ b/libs/zlib/qnx/package.qpg
@@ -25,10 +25,10 @@
       <QPG:Files>
          <QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/>
          <QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/>
-         <QPG:Add file="../libz.so.1.2.11" install="/opt/lib/" user="root:bin" permission="644"/>
-         <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.11"/>
-         <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.11"/>
-         <QPG:Add file="../libz.so.1.2.11" install="/opt/lib/" component="slib"/>
+         <QPG:Add file="../libz.so.1.3.1" install="/opt/lib/" user="root:bin" permission="644"/>
+         <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.3.1"/>
+         <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.3.1"/>
+         <QPG:Add file="../libz.so.1.3.1" install="/opt/lib/" component="slib"/>
       </QPG:Files>
 
       <QPG:PackageFilter>
@@ -63,7 +63,7 @@
             </QPM:ProductDescription>
 
             <QPM:ReleaseDescription>
-               <QPM:ReleaseVersion>1.2.11</QPM:ReleaseVersion>
+               <QPM:ReleaseVersion>1.3.1</QPM:ReleaseVersion>
                <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency>
                <QPM:ReleaseStability>Stable</QPM:ReleaseStability>
                <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor>
diff --git a/libs/zlib/test/example.c b/libs/zlib/test/example.c
index eee17ce7c..c3521dd59 100644
--- a/libs/zlib/test/example.c
+++ b/libs/zlib/test/example.c
@@ -34,37 +34,14 @@ static z_const char hello[] = "hello, hello!";
 static const char dictionary[] = "hello";
 static uLong dictId;    /* Adler32 value of the dictionary */
 
-void test_deflate       OF((Byte *compr, uLong comprLen));
-void test_inflate       OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_large_deflate OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_large_inflate OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_flush         OF((Byte *compr, uLong *comprLen));
-void test_sync          OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_dict_deflate  OF((Byte *compr, uLong comprLen));
-void test_dict_inflate  OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-int  main               OF((int argc, char *argv[]));
-
-
 #ifdef Z_SOLO
 
-void *myalloc OF((void *, unsigned, unsigned));
-void myfree OF((void *, void *));
-
-void *myalloc(q, n, m)
-    void *q;
-    unsigned n, m;
-{
+static void *myalloc(void *q, unsigned n, unsigned m) {
     (void)q;
     return calloc(n, m);
 }
 
-void myfree(void *q, void *p)
-{
+static void myfree(void *q, void *p) {
     (void)q;
     free(p);
 }
@@ -77,18 +54,11 @@ static free_func zfree = myfree;
 static alloc_func zalloc = (alloc_func)0;
 static free_func zfree = (free_func)0;
 
-void test_compress      OF((Byte *compr, uLong comprLen,
-                            Byte *uncompr, uLong uncomprLen));
-void test_gzio          OF((const char *fname,
-                            Byte *uncompr, uLong uncomprLen));
-
 /* ===========================================================================
  * Test compress() and uncompress()
  */
-void test_compress(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_compress(Byte *compr, uLong comprLen, Byte *uncompr,
+                   uLong uncomprLen) {
     int err;
     uLong len = (uLong)strlen(hello)+1;
 
@@ -111,11 +81,7 @@ void test_compress(compr, comprLen, uncompr, uncomprLen)
 /* ===========================================================================
  * Test read/write of .gz files
  */
-void test_gzio(fname, uncompr, uncomprLen)
-    const char *fname; /* compressed file name */
-    Byte *uncompr;
-    uLong uncomprLen;
-{
+static void test_gzio(const char *fname, Byte *uncompr, uLong uncomprLen) {
 #ifdef NO_GZCOMPRESS
     fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n");
 #else
@@ -197,10 +163,7 @@ void test_gzio(fname, uncompr, uncomprLen)
 /* ===========================================================================
  * Test deflate() with small buffers
  */
-void test_deflate(compr, comprLen)
-    Byte *compr;
-    uLong comprLen;
-{
+static void test_deflate(Byte *compr, uLong comprLen) {
     z_stream c_stream; /* compression stream */
     int err;
     uLong len = (uLong)strlen(hello)+1;
@@ -235,10 +198,8 @@ void test_deflate(compr, comprLen)
 /* ===========================================================================
  * Test inflate() with small buffers
  */
-void test_inflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_inflate(Byte *compr, uLong comprLen, Byte *uncompr,
+                  uLong uncomprLen) {
     int err;
     z_stream d_stream; /* decompression stream */
 
@@ -276,10 +237,8 @@ void test_inflate(compr, comprLen, uncompr, uncomprLen)
 /* ===========================================================================
  * Test deflate() with large buffers and dynamic change of compression level
  */
-void test_large_deflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_large_deflate(Byte *compr, uLong comprLen, Byte *uncompr,
+                        uLong uncomprLen) {
     z_stream c_stream; /* compression stream */
     int err;
 
@@ -308,7 +267,7 @@ void test_large_deflate(compr, comprLen, uncompr, uncomprLen)
     /* Feed in already compressed data and switch to no compression: */
     deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY);
     c_stream.next_in = compr;
-    c_stream.avail_in = (uInt)comprLen/2;
+    c_stream.avail_in = (uInt)uncomprLen/2;
     err = deflate(&c_stream, Z_NO_FLUSH);
     CHECK_ERR(err, "deflate");
 
@@ -331,10 +290,8 @@ void test_large_deflate(compr, comprLen, uncompr, uncomprLen)
 /* ===========================================================================
  * Test inflate() with large buffers
  */
-void test_large_inflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_large_inflate(Byte *compr, uLong comprLen, Byte *uncompr,
+                        uLong uncomprLen) {
     int err;
     z_stream d_stream; /* decompression stream */
 
@@ -361,7 +318,7 @@ void test_large_inflate(compr, comprLen, uncompr, uncomprLen)
     err = inflateEnd(&d_stream);
     CHECK_ERR(err, "inflateEnd");
 
-    if (d_stream.total_out != 2*uncomprLen + comprLen/2) {
+    if (d_stream.total_out != 2*uncomprLen + uncomprLen/2) {
         fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out);
         exit(1);
     } else {
@@ -372,10 +329,7 @@ void test_large_inflate(compr, comprLen, uncompr, uncomprLen)
 /* ===========================================================================
  * Test deflate() with full flush
  */
-void test_flush(compr, comprLen)
-    Byte *compr;
-    uLong *comprLen;
-{
+static void test_flush(Byte *compr, uLong *comprLen) {
     z_stream c_stream; /* compression stream */
     int err;
     uInt len = (uInt)strlen(hello)+1;
@@ -410,10 +364,8 @@ void test_flush(compr, comprLen)
 /* ===========================================================================
  * Test inflateSync()
  */
-void test_sync(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_sync(Byte *compr, uLong comprLen, Byte *uncompr,
+                      uLong uncomprLen) {
     int err;
     z_stream d_stream; /* decompression stream */
 
@@ -440,9 +392,8 @@ void test_sync(compr, comprLen, uncompr, uncomprLen)
     CHECK_ERR(err, "inflateSync");
 
     err = inflate(&d_stream, Z_FINISH);
-    if (err != Z_DATA_ERROR) {
-        fprintf(stderr, "inflate should report DATA_ERROR\n");
-        /* Because of incorrect adler32 */
+    if (err != Z_STREAM_END) {
+        fprintf(stderr, "inflate should report Z_STREAM_END\n");
         exit(1);
     }
     err = inflateEnd(&d_stream);
@@ -454,10 +405,7 @@ void test_sync(compr, comprLen, uncompr, uncomprLen)
 /* ===========================================================================
  * Test deflate() with preset dictionary
  */
-void test_dict_deflate(compr, comprLen)
-    Byte *compr;
-    uLong comprLen;
-{
+static void test_dict_deflate(Byte *compr, uLong comprLen) {
     z_stream c_stream; /* compression stream */
     int err;
 
@@ -491,10 +439,8 @@ void test_dict_deflate(compr, comprLen)
 /* ===========================================================================
  * Test inflate() with a preset dictionary
  */
-void test_dict_inflate(compr, comprLen, uncompr, uncomprLen)
-    Byte *compr, *uncompr;
-    uLong comprLen, uncomprLen;
-{
+static void test_dict_inflate(Byte *compr, uLong comprLen, Byte *uncompr,
+                       uLong uncomprLen) {
     int err;
     z_stream d_stream; /* decompression stream */
 
@@ -542,13 +488,10 @@ void test_dict_inflate(compr, comprLen, uncompr, uncomprLen)
  * Usage:  example [output.gz  [input.gz]]
  */
 
-int main(argc, argv)
-    int argc;
-    char *argv[];
-{
+int main(int argc, char *argv[]) {
     Byte *compr, *uncompr;
-    uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */
-    uLong uncomprLen = comprLen;
+    uLong uncomprLen = 20000;
+    uLong comprLen = 3 * uncomprLen;
     static const char* myVersion = ZLIB_VERSION;
 
     if (zlibVersion()[0] != myVersion[0]) {
@@ -556,7 +499,8 @@ int main(argc, argv)
         exit(1);
 
     } else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) {
-        fprintf(stderr, "warning: different zlib version\n");
+        fprintf(stderr, "warning: different zlib version linked: %s\n",
+                zlibVersion());
     }
 
     printf("zlib version %s = 0x%04x, compile flags = 0x%lx\n",
@@ -590,7 +534,7 @@ int main(argc, argv)
 
     test_flush(compr, &comprLen);
     test_sync(compr, comprLen, uncompr, uncomprLen);
-    comprLen = uncomprLen;
+    comprLen = 3 * uncomprLen;
 
     test_dict_deflate(compr, comprLen);
     test_dict_inflate(compr, comprLen, uncompr, uncomprLen);
diff --git a/libs/zlib/test/infcover.c b/libs/zlib/test/infcover.c
index 2be01646c..8912c403d 100644
--- a/libs/zlib/test/infcover.c
+++ b/libs/zlib/test/infcover.c
@@ -373,7 +373,7 @@ local void cover_support(void)
     mem_setup(&strm);
     strm.avail_in = 0;
     strm.next_in = Z_NULL;
-    ret = inflateInit_(&strm, ZLIB_VERSION - 1, (int)sizeof(z_stream));
+    ret = inflateInit_(&strm, "!", (int)sizeof(z_stream));
                                                 assert(ret == Z_VERSION_ERROR);
     mem_done(&strm, "wrong version");
 
@@ -462,7 +462,8 @@ local unsigned pull(void *desc, unsigned char **buf)
 
 local int push(void *desc, unsigned char *buf, unsigned len)
 {
-    buf += len;
+    (void)buf;
+    (void)len;
     return desc != Z_NULL;      /* force error if desc not null */
 }
 
diff --git a/libs/zlib/test/minigzip.c b/libs/zlib/test/minigzip.c
index e22fb08c0..134e10e6c 100644
--- a/libs/zlib/test/minigzip.c
+++ b/libs/zlib/test/minigzip.c
@@ -59,7 +59,7 @@
 
 #if !defined(Z_HAVE_UNISTD_H) && !defined(_LARGEFILE64_SOURCE)
 #ifndef WIN32 /* unlink already in stdio.h for WIN32 */
-  extern int unlink OF((const char *));
+  extern int unlink(const char *);
 #endif
 #endif
 
@@ -149,20 +149,12 @@ static void pwinerror (s)
 #  include <unistd.h>       /* for unlink() */
 #endif
 
-void *myalloc OF((void *, unsigned, unsigned));
-void myfree OF((void *, void *));
-
-void *myalloc(q, n, m)
-    void *q;
-    unsigned n, m;
-{
+static void *myalloc(void *q, unsigned n, unsigned m) {
     (void)q;
     return calloc(n, m);
 }
 
-void myfree(q, p)
-    void *q, *p;
-{
+static void myfree(void *q, void *p) {
     (void)q;
     free(p);
 }
@@ -175,29 +167,7 @@ typedef struct gzFile_s {
     z_stream strm;
 } *gzFile;
 
-gzFile gzopen OF((const char *, const char *));
-gzFile gzdopen OF((int, const char *));
-gzFile gz_open OF((const char *, int, const char *));
-
-gzFile gzopen(path, mode)
-const char *path;
-const char *mode;
-{
-    return gz_open(path, -1, mode);
-}
-
-gzFile gzdopen(fd, mode)
-int fd;
-const char *mode;
-{
-    return gz_open(NULL, fd, mode);
-}
-
-gzFile gz_open(path, fd, mode)
-    const char *path;
-    int fd;
-    const char *mode;
-{
+static gzFile gz_open(const char *path, int fd, const char *mode) {
     gzFile gz;
     int ret;
 
@@ -231,13 +201,15 @@ gzFile gz_open(path, fd, mode)
     return gz;
 }
 
-int gzwrite OF((gzFile, const void *, unsigned));
+static gzFile gzopen(const char *path, const char *mode) {
+    return gz_open(path, -1, mode);
+}
 
-int gzwrite(gz, buf, len)
-    gzFile gz;
-    const void *buf;
-    unsigned len;
-{
+static gzFile gzdopen(int fd, const char *mode) {
+    return gz_open(NULL, fd, mode);
+}
+
+static int gzwrite(gzFile gz, const void *buf, unsigned len) {
     z_stream *strm;
     unsigned char out[BUFLEN];
 
@@ -255,13 +227,7 @@ int gzwrite(gz, buf, len)
     return len;
 }
 
-int gzread OF((gzFile, void *, unsigned));
-
-int gzread(gz, buf, len)
-    gzFile gz;
-    void *buf;
-    unsigned len;
-{
+static int gzread(gzFile gz, void *buf, unsigned len) {
     int ret;
     unsigned got;
     unsigned char in[1];
@@ -292,11 +258,7 @@ int gzread(gz, buf, len)
     return len - strm->avail_out;
 }
 
-int gzclose OF((gzFile));
-
-int gzclose(gz)
-    gzFile gz;
-{
+static int gzclose(gzFile gz) {
     z_stream *strm;
     unsigned char out[BUFLEN];
 
@@ -321,12 +283,7 @@ int gzclose(gz)
     return Z_OK;
 }
 
-const char *gzerror OF((gzFile, int *));
-
-const char *gzerror(gz, err)
-    gzFile gz;
-    int *err;
-{
+static const char *gzerror(gzFile gz, int *err) {
     *err = gz->err;
     return gz->msg;
 }
@@ -335,67 +292,20 @@ const char *gzerror(gz, err)
 
 static char *prog;
 
-void error            OF((const char *msg));
-void gz_compress      OF((FILE   *in, gzFile out));
-#ifdef USE_MMAP
-int  gz_compress_mmap OF((FILE   *in, gzFile out));
-#endif
-void gz_uncompress    OF((gzFile in, FILE   *out));
-void file_compress    OF((char  *file, char *mode));
-void file_uncompress  OF((char  *file));
-int  main             OF((int argc, char *argv[]));
-
 /* ===========================================================================
  * Display error message and exit
  */
-void error(msg)
-    const char *msg;
-{
+static void error(const char *msg) {
     fprintf(stderr, "%s: %s\n", prog, msg);
     exit(1);
 }
 
-/* ===========================================================================
- * Compress input to output then close both files.
- */
-
-void gz_compress(in, out)
-    FILE   *in;
-    gzFile out;
-{
-    local char buf[BUFLEN];
-    int len;
-    int err;
-
-#ifdef USE_MMAP
-    /* Try first compressing with mmap. If mmap fails (minigzip used in a
-     * pipe), use the normal fread loop.
-     */
-    if (gz_compress_mmap(in, out) == Z_OK) return;
-#endif
-    for (;;) {
-        len = (int)fread(buf, 1, sizeof(buf), in);
-        if (ferror(in)) {
-            perror("fread");
-            exit(1);
-        }
-        if (len == 0) break;
-
-        if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err));
-    }
-    fclose(in);
-    if (gzclose(out) != Z_OK) error("failed gzclose");
-}
-
 #ifdef USE_MMAP /* MMAP version, Miguel Albrecht <malbrech@eso.org> */
 
 /* Try compressing the input file at once using mmap. Return Z_OK if
- * if success, Z_ERRNO otherwise.
+ * success, Z_ERRNO otherwise.
  */
-int gz_compress_mmap(in, out)
-    FILE   *in;
-    gzFile out;
-{
+static int gz_compress_mmap(FILE *in, gzFile out) {
     int len;
     int err;
     int ifd = fileno(in);
@@ -424,13 +334,39 @@ int gz_compress_mmap(in, out)
 }
 #endif /* USE_MMAP */
 
+/* ===========================================================================
+ * Compress input to output then close both files.
+ */
+
+static void gz_compress(FILE *in, gzFile out) {
+    local char buf[BUFLEN];
+    int len;
+    int err;
+
+#ifdef USE_MMAP
+    /* Try first compressing with mmap. If mmap fails (minigzip used in a
+     * pipe), use the normal fread loop.
+     */
+    if (gz_compress_mmap(in, out) == Z_OK) return;
+#endif
+    for (;;) {
+        len = (int)fread(buf, 1, sizeof(buf), in);
+        if (ferror(in)) {
+            perror("fread");
+            exit(1);
+        }
+        if (len == 0) break;
+
+        if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err));
+    }
+    fclose(in);
+    if (gzclose(out) != Z_OK) error("failed gzclose");
+}
+
 /* ===========================================================================
  * Uncompress input to output then close both files.
  */
-void gz_uncompress(in, out)
-    gzFile in;
-    FILE   *out;
-{
+static void gz_uncompress(gzFile in, FILE *out) {
     local char buf[BUFLEN];
     int len;
     int err;
@@ -454,10 +390,7 @@ void gz_uncompress(in, out)
  * Compress the given file: create a corresponding .gz file and remove the
  * original.
  */
-void file_compress(file, mode)
-    char  *file;
-    char  *mode;
-{
+static void file_compress(char *file, char *mode) {
     local char outfile[MAX_NAME_LEN];
     FILE  *in;
     gzFile out;
@@ -493,14 +426,12 @@ void file_compress(file, mode)
 /* ===========================================================================
  * Uncompress the given file and remove the original.
  */
-void file_uncompress(file)
-    char  *file;
-{
+static void file_uncompress(char *file) {
     local char buf[MAX_NAME_LEN];
     char *infile, *outfile;
     FILE  *out;
     gzFile in;
-    unsigned len = strlen(file);
+    z_size_t len = strlen(file);
 
     if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) {
         fprintf(stderr, "%s: filename too long\n", prog);
@@ -553,10 +484,7 @@ void file_uncompress(file)
  *   -1 to -9 : compression level
  */
 
-int main(argc, argv)
-    int argc;
-    char *argv[];
-{
+int main(int argc, char *argv[]) {
     int copyout = 0;
     int uncompr = 0;
     gzFile file;
diff --git a/libs/zlib/treebuild.xml b/libs/zlib/treebuild.xml
index fd75525f9..930b00be4 100644
--- a/libs/zlib/treebuild.xml
+++ b/libs/zlib/treebuild.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" ?>
-<package name="zlib" version="1.2.11">
-    <library name="zlib" dlversion="1.2.11" dlname="z">
+<package name="zlib" version="1.3.1">
+    <library name="zlib" dlversion="1.3.1" dlname="z">
 	<property name="description"> zip compression library </property>
 	<property name="include-target-dir" value="$(@PACKAGE/install-includedir)" />
 
diff --git a/libs/zlib/trees.c b/libs/zlib/trees.c
index 50cf4b457..6a523ef34 100644
--- a/libs/zlib/trees.c
+++ b/libs/zlib/trees.c
@@ -1,5 +1,5 @@
 /* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995-2017 Jean-loup Gailly
+ * Copyright (C) 1995-2024 Jean-loup Gailly
  * detect_data_type() function provided freely by Cosmin Truta, 2006
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
@@ -122,39 +122,116 @@ struct static_tree_desc_s {
     int     max_length;          /* max bit length for the codes */
 };
 
-local const static_tree_desc  static_l_desc =
+#ifdef NO_INIT_GLOBAL_POINTERS
+#  define TCONST
+#else
+#  define TCONST const
+#endif
+
+local TCONST static_tree_desc static_l_desc =
 {static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS};
 
-local const static_tree_desc  static_d_desc =
+local TCONST static_tree_desc static_d_desc =
 {static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS};
 
-local const static_tree_desc  static_bl_desc =
+local TCONST static_tree_desc static_bl_desc =
 {(const ct_data *)0, extra_blbits, 0,   BL_CODES, MAX_BL_BITS};
 
 /* ===========================================================================
- * Local (static) routines in this file.
+ * Output a short LSB first on the stream.
+ * IN assertion: there is enough room in pendingBuf.
+ */
+#define put_short(s, w) { \
+    put_byte(s, (uch)((w) & 0xff)); \
+    put_byte(s, (uch)((ush)(w) >> 8)); \
+}
+
+/* ===========================================================================
+ * Reverse the first len bits of a code, using straightforward code (a faster
+ * method would use a table)
+ * IN assertion: 1 <= len <= 15
  */
+local unsigned bi_reverse(unsigned code, int len) {
+    register unsigned res = 0;
+    do {
+        res |= code & 1;
+        code >>= 1, res <<= 1;
+    } while (--len > 0);
+    return res >> 1;
+}
 
-local void tr_static_init OF((void));
-local void init_block     OF((deflate_state *s));
-local void pqdownheap     OF((deflate_state *s, ct_data *tree, int k));
-local void gen_bitlen     OF((deflate_state *s, tree_desc *desc));
-local void gen_codes      OF((ct_data *tree, int max_code, ushf *bl_count));
-local void build_tree     OF((deflate_state *s, tree_desc *desc));
-local void scan_tree      OF((deflate_state *s, ct_data *tree, int max_code));
-local void send_tree      OF((deflate_state *s, ct_data *tree, int max_code));
-local int  build_bl_tree  OF((deflate_state *s));
-local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
-                              int blcodes));
-local void compress_block OF((deflate_state *s, const ct_data *ltree,
-                              const ct_data *dtree));
-local int  detect_data_type OF((deflate_state *s));
-local unsigned bi_reverse OF((unsigned value, int length));
-local void bi_windup      OF((deflate_state *s));
-local void bi_flush       OF((deflate_state *s));
+/* ===========================================================================
+ * Flush the bit buffer, keeping at most 7 bits in it.
+ */
+local void bi_flush(deflate_state *s) {
+    if (s->bi_valid == 16) {
+        put_short(s, s->bi_buf);
+        s->bi_buf = 0;
+        s->bi_valid = 0;
+    } else if (s->bi_valid >= 8) {
+        put_byte(s, (Byte)s->bi_buf);
+        s->bi_buf >>= 8;
+        s->bi_valid -= 8;
+    }
+}
+
+/* ===========================================================================
+ * Flush the bit buffer and align the output on a byte boundary
+ */
+local void bi_windup(deflate_state *s) {
+    if (s->bi_valid > 8) {
+        put_short(s, s->bi_buf);
+    } else if (s->bi_valid > 0) {
+        put_byte(s, (Byte)s->bi_buf);
+    }
+    s->bi_buf = 0;
+    s->bi_valid = 0;
+#ifdef ZLIB_DEBUG
+    s->bits_sent = (s->bits_sent + 7) & ~7;
+#endif
+}
+
+/* ===========================================================================
+ * Generate the codes for a given tree and bit counts (which need not be
+ * optimal).
+ * IN assertion: the array bl_count contains the bit length statistics for
+ * the given tree and the field len is set for all tree elements.
+ * OUT assertion: the field code is set for all tree elements of non
+ *     zero code length.
+ */
+local void gen_codes(ct_data *tree, int max_code, ushf *bl_count) {
+    ush next_code[MAX_BITS+1]; /* next code value for each bit length */
+    unsigned code = 0;         /* running code value */
+    int bits;                  /* bit index */
+    int n;                     /* code index */
+
+    /* The distribution counts are first used to generate the code values
+     * without bit reversal.
+     */
+    for (bits = 1; bits <= MAX_BITS; bits++) {
+        code = (code + bl_count[bits - 1]) << 1;
+        next_code[bits] = (ush)code;
+    }
+    /* Check that the bit counts in bl_count are consistent. The last code
+     * must be all ones.
+     */
+    Assert (code + bl_count[MAX_BITS] - 1 == (1 << MAX_BITS) - 1,
+            "inconsistent bit counts");
+    Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
+
+    for (n = 0;  n <= max_code; n++) {
+        int len = tree[n].Len;
+        if (len == 0) continue;
+        /* Now reverse the bits */
+        tree[n].Code = (ush)bi_reverse(next_code[len]++, len);
+
+        Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
+            n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len] - 1));
+    }
+}
 
 #ifdef GEN_TREES_H
-local void gen_trees_header OF((void));
+local void gen_trees_header(void);
 #endif
 
 #ifndef ZLIB_DEBUG
@@ -167,33 +244,18 @@ local void gen_trees_header OF((void));
        send_bits(s, tree[c].Code, tree[c].Len); }
 #endif
 
-/* ===========================================================================
- * Output a short LSB first on the stream.
- * IN assertion: there is enough room in pendingBuf.
- */
-#define put_short(s, w) { \
-    put_byte(s, (uch)((w) & 0xff)); \
-    put_byte(s, (uch)((ush)(w) >> 8)); \
-}
-
 /* ===========================================================================
  * Send a value on a given number of bits.
  * IN assertion: length <= 16 and value fits in length bits.
  */
 #ifdef ZLIB_DEBUG
-local void send_bits      OF((deflate_state *s, int value, int length));
-
-local void send_bits(s, value, length)
-    deflate_state *s;
-    int value;  /* value to send */
-    int length; /* number of bits */
-{
+local void send_bits(deflate_state *s, int value, int length) {
     Tracevv((stderr," l %2d v %4x ", length, value));
     Assert(length > 0 && length <= 15, "invalid length");
     s->bits_sent += (ulg)length;
 
     /* If not enough room in bi_buf, use (valid) bits from bi_buf and
-     * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid))
+     * (16 - bi_valid) bits from value, leaving (width - (16 - bi_valid))
      * unused bits in value.
      */
     if (s->bi_valid > (int)Buf_size - length) {
@@ -229,8 +291,7 @@ local void send_bits(s, value, length)
 /* ===========================================================================
  * Initialize the various 'constant' tables.
  */
-local void tr_static_init()
-{
+local void tr_static_init(void) {
 #if defined(GEN_TREES_H) || !defined(STDC)
     static int static_init_done = 0;
     int n;        /* iterates over tree elements */
@@ -256,7 +317,7 @@ local void tr_static_init()
     length = 0;
     for (code = 0; code < LENGTH_CODES-1; code++) {
         base_length[code] = length;
-        for (n = 0; n < (1<<extra_lbits[code]); n++) {
+        for (n = 0; n < (1 << extra_lbits[code]); n++) {
             _length_code[length++] = (uch)code;
         }
     }
@@ -265,13 +326,13 @@ local void tr_static_init()
      * in two different ways: code 284 + 5 bits or code 285, so we
      * overwrite length_code[255] to use the best encoding:
      */
-    _length_code[length-1] = (uch)code;
+    _length_code[length - 1] = (uch)code;
 
     /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
     dist = 0;
     for (code = 0 ; code < 16; code++) {
         base_dist[code] = dist;
-        for (n = 0; n < (1<<extra_dbits[code]); n++) {
+        for (n = 0; n < (1 << extra_dbits[code]); n++) {
             _dist_code[dist++] = (uch)code;
         }
     }
@@ -279,11 +340,11 @@ local void tr_static_init()
     dist >>= 7; /* from now on, all distances are divided by 128 */
     for ( ; code < D_CODES; code++) {
         base_dist[code] = dist << 7;
-        for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
+        for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
             _dist_code[256 + dist++] = (uch)code;
         }
     }
-    Assert (dist == 256, "tr_static_init: 256+dist != 512");
+    Assert (dist == 256, "tr_static_init: 256 + dist != 512");
 
     /* Construct the codes of the static literal tree */
     for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;
@@ -312,7 +373,7 @@ local void tr_static_init()
 }
 
 /* ===========================================================================
- * Genererate the file trees.h describing the static trees.
+ * Generate the file trees.h describing the static trees.
  */
 #ifdef GEN_TREES_H
 #  ifndef ZLIB_DEBUG
@@ -321,10 +382,9 @@ local void tr_static_init()
 
 #  define SEPARATOR(i, last, width) \
       ((i) == (last)? "\n};\n\n" :    \
-       ((i) % (width) == (width)-1 ? ",\n" : ", "))
+       ((i) % (width) == (width) - 1 ? ",\n" : ", "))
 
-void gen_trees_header()
-{
+void gen_trees_header(void) {
     FILE *header = fopen("trees.h", "w");
     int i;
 
@@ -373,12 +433,26 @@ void gen_trees_header()
 }
 #endif /* GEN_TREES_H */
 
+/* ===========================================================================
+ * Initialize a new block.
+ */
+local void init_block(deflate_state *s) {
+    int n; /* iterates over tree elements */
+
+    /* Initialize the trees. */
+    for (n = 0; n < L_CODES;  n++) s->dyn_ltree[n].Freq = 0;
+    for (n = 0; n < D_CODES;  n++) s->dyn_dtree[n].Freq = 0;
+    for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;
+
+    s->dyn_ltree[END_BLOCK].Freq = 1;
+    s->opt_len = s->static_len = 0L;
+    s->sym_next = s->matches = 0;
+}
+
 /* ===========================================================================
  * Initialize the tree data structures for a new zlib stream.
  */
-void ZLIB_INTERNAL _tr_init(s)
-    deflate_state *s;
-{
+void ZLIB_INTERNAL _tr_init(deflate_state *s) {
     tr_static_init();
 
     s->l_desc.dyn_tree = s->dyn_ltree;
@@ -401,24 +475,6 @@ void ZLIB_INTERNAL _tr_init(s)
     init_block(s);
 }
 
-/* ===========================================================================
- * Initialize a new block.
- */
-local void init_block(s)
-    deflate_state *s;
-{
-    int n; /* iterates over tree elements */
-
-    /* Initialize the trees. */
-    for (n = 0; n < L_CODES;  n++) s->dyn_ltree[n].Freq = 0;
-    for (n = 0; n < D_CODES;  n++) s->dyn_dtree[n].Freq = 0;
-    for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0;
-
-    s->dyn_ltree[END_BLOCK].Freq = 1;
-    s->opt_len = s->static_len = 0L;
-    s->last_lit = s->matches = 0;
-}
-
 #define SMALLEST 1
 /* Index within the heap array of least frequent node in the Huffman tree */
 
@@ -448,17 +504,13 @@ local void init_block(s)
  * when the heap property is re-established (each father smaller than its
  * two sons).
  */
-local void pqdownheap(s, tree, k)
-    deflate_state *s;
-    ct_data *tree;  /* the tree to restore */
-    int k;               /* node to move down */
-{
+local void pqdownheap(deflate_state *s, ct_data *tree, int k) {
     int v = s->heap[k];
     int j = k << 1;  /* left son of k */
     while (j <= s->heap_len) {
         /* Set j to the smallest of the two sons: */
         if (j < s->heap_len &&
-            smaller(tree, s->heap[j+1], s->heap[j], s->depth)) {
+            smaller(tree, s->heap[j + 1], s->heap[j], s->depth)) {
             j++;
         }
         /* Exit if v is smaller than both sons */
@@ -483,10 +535,7 @@ local void pqdownheap(s, tree, k)
  *     The length opt_len is updated; static_len is also updated if stree is
  *     not null.
  */
-local void gen_bitlen(s, desc)
-    deflate_state *s;
-    tree_desc *desc;    /* the tree descriptor */
-{
+local void gen_bitlen(deflate_state *s, tree_desc *desc) {
     ct_data *tree        = desc->dyn_tree;
     int max_code         = desc->max_code;
     const ct_data *stree = desc->stat_desc->static_tree;
@@ -507,7 +556,7 @@ local void gen_bitlen(s, desc)
      */
     tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */
 
-    for (h = s->heap_max+1; h < HEAP_SIZE; h++) {
+    for (h = s->heap_max + 1; h < HEAP_SIZE; h++) {
         n = s->heap[h];
         bits = tree[tree[n].Dad].Len + 1;
         if (bits > max_length) bits = max_length, overflow++;
@@ -518,7 +567,7 @@ local void gen_bitlen(s, desc)
 
         s->bl_count[bits]++;
         xbits = 0;
-        if (n >= base) xbits = extra[n-base];
+        if (n >= base) xbits = extra[n - base];
         f = tree[n].Freq;
         s->opt_len += (ulg)f * (unsigned)(bits + xbits);
         if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits);
@@ -530,10 +579,10 @@ local void gen_bitlen(s, desc)
 
     /* Find the first bit length which could increase: */
     do {
-        bits = max_length-1;
+        bits = max_length - 1;
         while (s->bl_count[bits] == 0) bits--;
-        s->bl_count[bits]--;      /* move one leaf down the tree */
-        s->bl_count[bits+1] += 2; /* move one overflow item as its brother */
+        s->bl_count[bits]--;        /* move one leaf down the tree */
+        s->bl_count[bits + 1] += 2; /* move one overflow item as its brother */
         s->bl_count[max_length]--;
         /* The brother of the overflow item also moves one step up,
          * but this does not affect bl_count[max_length]
@@ -561,48 +610,9 @@ local void gen_bitlen(s, desc)
     }
 }
 
-/* ===========================================================================
- * Generate the codes for a given tree and bit counts (which need not be
- * optimal).
- * IN assertion: the array bl_count contains the bit length statistics for
- * the given tree and the field len is set for all tree elements.
- * OUT assertion: the field code is set for all tree elements of non
- *     zero code length.
- */
-local void gen_codes (tree, max_code, bl_count)
-    ct_data *tree;             /* the tree to decorate */
-    int max_code;              /* largest code with non zero frequency */
-    ushf *bl_count;            /* number of codes at each bit length */
-{
-    ush next_code[MAX_BITS+1]; /* next code value for each bit length */
-    unsigned code = 0;         /* running code value */
-    int bits;                  /* bit index */
-    int n;                     /* code index */
-
-    /* The distribution counts are first used to generate the code values
-     * without bit reversal.
-     */
-    for (bits = 1; bits <= MAX_BITS; bits++) {
-        code = (code + bl_count[bits-1]) << 1;
-        next_code[bits] = (ush)code;
-    }
-    /* Check that the bit counts in bl_count are consistent. The last code
-     * must be all ones.
-     */
-    Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
-            "inconsistent bit counts");
-    Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
-
-    for (n = 0;  n <= max_code; n++) {
-        int len = tree[n].Len;
-        if (len == 0) continue;
-        /* Now reverse the bits */
-        tree[n].Code = (ush)bi_reverse(next_code[len]++, len);
-
-        Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
-             n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
-    }
-}
+#ifdef DUMP_BL_TREE
+#  include <stdio.h>
+#endif
 
 /* ===========================================================================
  * Construct one Huffman tree and assigns the code bit strings and lengths.
@@ -612,10 +622,7 @@ local void gen_codes (tree, max_code, bl_count)
  *     and corresponding code. The length opt_len is updated; static_len is
  *     also updated if stree is not null. The field max_code is set.
  */
-local void build_tree(s, desc)
-    deflate_state *s;
-    tree_desc *desc; /* the tree descriptor */
-{
+local void build_tree(deflate_state *s, tree_desc *desc) {
     ct_data *tree         = desc->dyn_tree;
     const ct_data *stree  = desc->stat_desc->static_tree;
     int elems             = desc->stat_desc->elems;
@@ -624,7 +631,7 @@ local void build_tree(s, desc)
     int node;          /* new node being created */
 
     /* Construct the initial heap, with least frequent element in
-     * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
+     * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n + 1].
      * heap[0] is not used.
      */
     s->heap_len = 0, s->heap_max = HEAP_SIZE;
@@ -652,7 +659,7 @@ local void build_tree(s, desc)
     }
     desc->max_code = max_code;
 
-    /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
+    /* The elements heap[heap_len/2 + 1 .. heap_len] are leaves of the tree,
      * establish sub-heaps of increasing lengths:
      */
     for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n);
@@ -700,11 +707,7 @@ local void build_tree(s, desc)
  * Scan a literal or distance tree to determine the frequencies of the codes
  * in the bit length tree.
  */
-local void scan_tree (s, tree, max_code)
-    deflate_state *s;
-    ct_data *tree;   /* the tree to be scanned */
-    int max_code;    /* and its largest code of non zero frequency */
-{
+local void scan_tree(deflate_state *s, ct_data *tree, int max_code) {
     int n;                     /* iterates over all tree elements */
     int prevlen = -1;          /* last emitted length */
     int curlen;                /* length of current code */
@@ -714,10 +717,10 @@ local void scan_tree (s, tree, max_code)
     int min_count = 4;         /* min repeat count */
 
     if (nextlen == 0) max_count = 138, min_count = 3;
-    tree[max_code+1].Len = (ush)0xffff; /* guard */
+    tree[max_code + 1].Len = (ush)0xffff; /* guard */
 
     for (n = 0; n <= max_code; n++) {
-        curlen = nextlen; nextlen = tree[n+1].Len;
+        curlen = nextlen; nextlen = tree[n + 1].Len;
         if (++count < max_count && curlen == nextlen) {
             continue;
         } else if (count < min_count) {
@@ -745,11 +748,7 @@ local void scan_tree (s, tree, max_code)
  * Send a literal or distance tree in compressed form, using the codes in
  * bl_tree.
  */
-local void send_tree (s, tree, max_code)
-    deflate_state *s;
-    ct_data *tree; /* the tree to be scanned */
-    int max_code;       /* and its largest code of non zero frequency */
-{
+local void send_tree(deflate_state *s, ct_data *tree, int max_code) {
     int n;                     /* iterates over all tree elements */
     int prevlen = -1;          /* last emitted length */
     int curlen;                /* length of current code */
@@ -758,11 +757,11 @@ local void send_tree (s, tree, max_code)
     int max_count = 7;         /* max repeat count */
     int min_count = 4;         /* min repeat count */
 
-    /* tree[max_code+1].Len = -1; */  /* guard already set */
+    /* tree[max_code + 1].Len = -1; */  /* guard already set */
     if (nextlen == 0) max_count = 138, min_count = 3;
 
     for (n = 0; n <= max_code; n++) {
-        curlen = nextlen; nextlen = tree[n+1].Len;
+        curlen = nextlen; nextlen = tree[n + 1].Len;
         if (++count < max_count && curlen == nextlen) {
             continue;
         } else if (count < min_count) {
@@ -773,13 +772,13 @@ local void send_tree (s, tree, max_code)
                 send_code(s, curlen, s->bl_tree); count--;
             }
             Assert(count >= 3 && count <= 6, " 3_6?");
-            send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);
+            send_code(s, REP_3_6, s->bl_tree); send_bits(s, count - 3, 2);
 
         } else if (count <= 10) {
-            send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);
+            send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count - 3, 3);
 
         } else {
-            send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);
+            send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count - 11, 7);
         }
         count = 0; prevlen = curlen;
         if (nextlen == 0) {
@@ -796,9 +795,7 @@ local void send_tree (s, tree, max_code)
  * Construct the Huffman tree for the bit lengths and return the index in
  * bl_order of the last bit length code to send.
  */
-local int build_bl_tree(s)
-    deflate_state *s;
-{
+local int build_bl_tree(deflate_state *s) {
     int max_blindex;  /* index of last bit length code of non zero freq */
 
     /* Determine the bit length frequencies for literal and distance trees */
@@ -807,8 +804,8 @@ local int build_bl_tree(s)
 
     /* Build the bit length tree: */
     build_tree(s, (tree_desc *)(&(s->bl_desc)));
-    /* opt_len now includes the length of the tree representations, except
-     * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
+    /* opt_len now includes the length of the tree representations, except the
+     * lengths of the bit lengths codes and the 5 + 5 + 4 bits for the counts.
      */
 
     /* Determine the number of bit length codes to send. The pkzip format
@@ -819,7 +816,7 @@ local int build_bl_tree(s)
         if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;
     }
     /* Update opt_len to include the bit length tree and counts */
-    s->opt_len += 3*((ulg)max_blindex+1) + 5+5+4;
+    s->opt_len += 3*((ulg)max_blindex + 1) + 5 + 5 + 4;
     Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
             s->opt_len, s->static_len));
 
@@ -831,61 +828,54 @@ local int build_bl_tree(s)
  * lengths of the bit length codes, the literal tree and the distance tree.
  * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
  */
-local void send_all_trees(s, lcodes, dcodes, blcodes)
-    deflate_state *s;
-    int lcodes, dcodes, blcodes; /* number of codes for each tree */
-{
+local void send_all_trees(deflate_state *s, int lcodes, int dcodes,
+                          int blcodes) {
     int rank;                    /* index in bl_order */
 
     Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
     Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
             "too many codes");
     Tracev((stderr, "\nbl counts: "));
-    send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
-    send_bits(s, dcodes-1,   5);
-    send_bits(s, blcodes-4,  4); /* not -3 as stated in appnote.txt */
+    send_bits(s, lcodes - 257, 5);  /* not +255 as stated in appnote.txt */
+    send_bits(s, dcodes - 1,   5);
+    send_bits(s, blcodes - 4,  4);  /* not -3 as stated in appnote.txt */
     for (rank = 0; rank < blcodes; rank++) {
         Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
         send_bits(s, s->bl_tree[bl_order[rank]].Len, 3);
     }
     Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
 
-    send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */
+    send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1);  /* literal tree */
     Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
 
-    send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */
+    send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1);  /* distance tree */
     Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
 }
 
 /* ===========================================================================
  * Send a stored block
  */
-void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
-    deflate_state *s;
-    charf *buf;       /* input block */
-    ulg stored_len;   /* length of input block */
-    int last;         /* one if this is the last block for a file */
-{
-    send_bits(s, (STORED_BLOCK<<1)+last, 3);    /* send block type */
+void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf,
+                                    ulg stored_len, int last) {
+    send_bits(s, (STORED_BLOCK<<1) + last, 3);  /* send block type */
     bi_windup(s);        /* align on byte boundary */
     put_short(s, (ush)stored_len);
     put_short(s, (ush)~stored_len);
-    zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
+    if (stored_len)
+        zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
     s->pending += stored_len;
 #ifdef ZLIB_DEBUG
     s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
     s->compressed_len += (stored_len + 4) << 3;
     s->bits_sent += 2*16;
-    s->bits_sent += stored_len<<3;
+    s->bits_sent += stored_len << 3;
 #endif
 }
 
 /* ===========================================================================
  * Flush the bits in the bit buffer to pending output (leaves at most 7 bits)
  */
-void ZLIB_INTERNAL _tr_flush_bits(s)
-    deflate_state *s;
-{
+void ZLIB_INTERNAL _tr_flush_bits(deflate_state *s) {
     bi_flush(s);
 }
 
@@ -893,9 +883,7 @@ void ZLIB_INTERNAL _tr_flush_bits(s)
  * Send one empty static block to give enough lookahead for inflate.
  * This takes 10 bits, of which 7 may remain in the bit buffer.
  */
-void ZLIB_INTERNAL _tr_align(s)
-    deflate_state *s;
-{
+void ZLIB_INTERNAL _tr_align(deflate_state *s) {
     send_bits(s, STATIC_TREES<<1, 3);
     send_code(s, END_BLOCK, static_ltree);
 #ifdef ZLIB_DEBUG
@@ -904,16 +892,108 @@ void ZLIB_INTERNAL _tr_align(s)
     bi_flush(s);
 }
 
+/* ===========================================================================
+ * Send the block data compressed using the given Huffman trees
+ */
+local void compress_block(deflate_state *s, const ct_data *ltree,
+                          const ct_data *dtree) {
+    unsigned dist;      /* distance of matched string */
+    int lc;             /* match length or unmatched char (if dist == 0) */
+    unsigned sx = 0;    /* running index in symbol buffers */
+    unsigned code;      /* the code to send */
+    int extra;          /* number of extra bits to send */
+
+    if (s->sym_next != 0) do {
+#ifdef LIT_MEM
+        dist = s->d_buf[sx];
+        lc = s->l_buf[sx++];
+#else
+        dist = s->sym_buf[sx++] & 0xff;
+        dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8;
+        lc = s->sym_buf[sx++];
+#endif
+        if (dist == 0) {
+            send_code(s, lc, ltree); /* send a literal byte */
+            Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+        } else {
+            /* Here, lc is the match length - MIN_MATCH */
+            code = _length_code[lc];
+            send_code(s, code + LITERALS + 1, ltree);   /* send length code */
+            extra = extra_lbits[code];
+            if (extra != 0) {
+                lc -= base_length[code];
+                send_bits(s, lc, extra);       /* send the extra length bits */
+            }
+            dist--; /* dist is now the match distance - 1 */
+            code = d_code(dist);
+            Assert (code < D_CODES, "bad d_code");
+
+            send_code(s, code, dtree);       /* send the distance code */
+            extra = extra_dbits[code];
+            if (extra != 0) {
+                dist -= (unsigned)base_dist[code];
+                send_bits(s, dist, extra);   /* send the extra distance bits */
+            }
+        } /* literal or match pair ? */
+
+        /* Check for no overlay of pending_buf on needed symbols */
+#ifdef LIT_MEM
+        Assert(s->pending < 2 * (s->lit_bufsize + sx), "pendingBuf overflow");
+#else
+        Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow");
+#endif
+
+    } while (sx < s->sym_next);
+
+    send_code(s, END_BLOCK, ltree);
+}
+
+/* ===========================================================================
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ *    a) There are no non-portable control characters belonging to the
+ *       "block list" (0..6, 14..25, 28..31).
+ *    b) There is at least one printable character belonging to the
+ *       "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ *   "gray list" that is ignored in this detection algorithm:
+ *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
+ * IN assertion: the fields Freq of dyn_ltree are set.
+ */
+local int detect_data_type(deflate_state *s) {
+    /* block_mask is the bit mask of block-listed bytes
+     * set bits 0..6, 14..25, and 28..31
+     * 0xf3ffc07f = binary 11110011111111111100000001111111
+     */
+    unsigned long block_mask = 0xf3ffc07fUL;
+    int n;
+
+    /* Check for non-textual ("block-listed") bytes. */
+    for (n = 0; n <= 31; n++, block_mask >>= 1)
+        if ((block_mask & 1) && (s->dyn_ltree[n].Freq != 0))
+            return Z_BINARY;
+
+    /* Check for textual ("allow-listed") bytes. */
+    if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0
+            || s->dyn_ltree[13].Freq != 0)
+        return Z_TEXT;
+    for (n = 32; n < LITERALS; n++)
+        if (s->dyn_ltree[n].Freq != 0)
+            return Z_TEXT;
+
+    /* There are no "block-listed" or "allow-listed" bytes:
+     * this stream either is empty or has tolerated ("gray-listed") bytes only.
+     */
+    return Z_BINARY;
+}
+
 /* ===========================================================================
  * Determine the best encoding for the current block: dynamic trees, static
  * trees or store, and write out the encoded block.
  */
-void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
-    deflate_state *s;
-    charf *buf;       /* input block, or NULL if too old */
-    ulg stored_len;   /* length of input block */
-    int last;         /* one if this is the last block for a file */
-{
+void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf,
+                                   ulg stored_len, int last) {
     ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
     int max_blindex = 0;  /* index of last bit length code of non zero freq */
 
@@ -942,14 +1022,17 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
         max_blindex = build_bl_tree(s);
 
         /* Determine the best encoding. Compute the block lengths in bytes. */
-        opt_lenb = (s->opt_len+3+7)>>3;
-        static_lenb = (s->static_len+3+7)>>3;
+        opt_lenb = (s->opt_len + 3 + 7) >> 3;
+        static_lenb = (s->static_len + 3 + 7) >> 3;
 
         Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
                 opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
-                s->last_lit));
+                s->sym_next / 3));
 
-        if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
+#ifndef FORCE_STATIC
+        if (static_lenb <= opt_lenb || s->strategy == Z_FIXED)
+#endif
+            opt_lenb = static_lenb;
 
     } else {
         Assert(buf != (char*)0, "lost buf");
@@ -959,7 +1042,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
 #ifdef FORCE_STORED
     if (buf != (char*)0) { /* force stored block */
 #else
-    if (stored_len+4 <= opt_lenb && buf != (char*)0) {
+    if (stored_len + 4 <= opt_lenb && buf != (char*)0) {
                        /* 4: two words for the lengths */
 #endif
         /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
@@ -970,21 +1053,17 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
          */
         _tr_stored_block(s, buf, stored_len, last);
 
-#ifdef FORCE_STATIC
-    } else if (static_lenb >= 0) { /* force static trees */
-#else
-    } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {
-#endif
-        send_bits(s, (STATIC_TREES<<1)+last, 3);
+    } else if (static_lenb == opt_lenb) {
+        send_bits(s, (STATIC_TREES<<1) + last, 3);
         compress_block(s, (const ct_data *)static_ltree,
                        (const ct_data *)static_dtree);
 #ifdef ZLIB_DEBUG
         s->compressed_len += 3 + s->static_len;
 #endif
     } else {
-        send_bits(s, (DYN_TREES<<1)+last, 3);
-        send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
-                       max_blindex+1);
+        send_bits(s, (DYN_TREES<<1) + last, 3);
+        send_all_trees(s, s->l_desc.max_code + 1, s->d_desc.max_code + 1,
+                       max_blindex + 1);
         compress_block(s, (const ct_data *)s->dyn_ltree,
                        (const ct_data *)s->dyn_dtree);
 #ifdef ZLIB_DEBUG
@@ -1003,21 +1082,23 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
         s->compressed_len += 7;  /* align on byte boundary */
 #endif
     }
-    Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
-           s->compressed_len-7*last));
+    Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3,
+           s->compressed_len - 7*last));
 }
 
 /* ===========================================================================
  * Save the match info and tally the frequency counts. Return true if
  * the current block must be flushed.
  */
-int ZLIB_INTERNAL _tr_tally (s, dist, lc)
-    deflate_state *s;
-    unsigned dist;  /* distance of matched string */
-    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
-{
-    s->d_buf[s->last_lit] = (ush)dist;
-    s->l_buf[s->last_lit++] = (uch)lc;
+int ZLIB_INTERNAL _tr_tally(deflate_state *s, unsigned dist, unsigned lc) {
+#ifdef LIT_MEM
+    s->d_buf[s->sym_next] = (ush)dist;
+    s->l_buf[s->sym_next++] = (uch)lc;
+#else
+    s->sym_buf[s->sym_next++] = (uch)dist;
+    s->sym_buf[s->sym_next++] = (uch)(dist >> 8);
+    s->sym_buf[s->sym_next++] = (uch)lc;
+#endif
     if (dist == 0) {
         /* lc is the unmatched char */
         s->dyn_ltree[lc].Freq++;
@@ -1029,175 +1110,8 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
                (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
                (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");
 
-        s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
+        s->dyn_ltree[_length_code[lc] + LITERALS + 1].Freq++;
         s->dyn_dtree[d_code(dist)].Freq++;
     }
-
-#ifdef TRUNCATE_BLOCK
-    /* Try to guess if it is profitable to stop the current block here */
-    if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
-        /* Compute an upper bound for the compressed length */
-        ulg out_length = (ulg)s->last_lit*8L;
-        ulg in_length = (ulg)((long)s->strstart - s->block_start);
-        int dcode;
-        for (dcode = 0; dcode < D_CODES; dcode++) {
-            out_length += (ulg)s->dyn_dtree[dcode].Freq *
-                (5L+extra_dbits[dcode]);
-        }
-        out_length >>= 3;
-        Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
-               s->last_lit, in_length, out_length,
-               100L - out_length*100L/in_length));
-        if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
-    }
-#endif
-    return (s->last_lit == s->lit_bufsize-1);
-    /* We avoid equality with lit_bufsize because of wraparound at 64K
-     * on 16 bit machines and because stored blocks are restricted to
-     * 64K-1 bytes.
-     */
-}
-
-/* ===========================================================================
- * Send the block data compressed using the given Huffman trees
- */
-local void compress_block(s, ltree, dtree)
-    deflate_state *s;
-    const ct_data *ltree; /* literal tree */
-    const ct_data *dtree; /* distance tree */
-{
-    unsigned dist;      /* distance of matched string */
-    int lc;             /* match length or unmatched char (if dist == 0) */
-    unsigned lx = 0;    /* running index in l_buf */
-    unsigned code;      /* the code to send */
-    int extra;          /* number of extra bits to send */
-
-    if (s->last_lit != 0) do {
-        dist = s->d_buf[lx];
-        lc = s->l_buf[lx++];
-        if (dist == 0) {
-            send_code(s, lc, ltree); /* send a literal byte */
-            Tracecv(isgraph(lc), (stderr," '%c' ", lc));
-        } else {
-            /* Here, lc is the match length - MIN_MATCH */
-            code = _length_code[lc];
-            send_code(s, code+LITERALS+1, ltree); /* send the length code */
-            extra = extra_lbits[code];
-            if (extra != 0) {
-                lc -= base_length[code];
-                send_bits(s, lc, extra);       /* send the extra length bits */
-            }
-            dist--; /* dist is now the match distance - 1 */
-            code = d_code(dist);
-            Assert (code < D_CODES, "bad d_code");
-
-            send_code(s, code, dtree);       /* send the distance code */
-            extra = extra_dbits[code];
-            if (extra != 0) {
-                dist -= (unsigned)base_dist[code];
-                send_bits(s, dist, extra);   /* send the extra distance bits */
-            }
-        } /* literal or match pair ? */
-
-        /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
-        Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
-               "pendingBuf overflow");
-
-    } while (lx < s->last_lit);
-
-    send_code(s, END_BLOCK, ltree);
-}
-
-/* ===========================================================================
- * Check if the data type is TEXT or BINARY, using the following algorithm:
- * - TEXT if the two conditions below are satisfied:
- *    a) There are no non-portable control characters belonging to the
- *       "black list" (0..6, 14..25, 28..31).
- *    b) There is at least one printable character belonging to the
- *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
- * - BINARY otherwise.
- * - The following partially-portable control characters form a
- *   "gray list" that is ignored in this detection algorithm:
- *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
- * IN assertion: the fields Freq of dyn_ltree are set.
- */
-local int detect_data_type(s)
-    deflate_state *s;
-{
-    /* black_mask is the bit mask of black-listed bytes
-     * set bits 0..6, 14..25, and 28..31
-     * 0xf3ffc07f = binary 11110011111111111100000001111111
-     */
-    unsigned long black_mask = 0xf3ffc07fUL;
-    int n;
-
-    /* Check for non-textual ("black-listed") bytes. */
-    for (n = 0; n <= 31; n++, black_mask >>= 1)
-        if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0))
-            return Z_BINARY;
-
-    /* Check for textual ("white-listed") bytes. */
-    if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0
-            || s->dyn_ltree[13].Freq != 0)
-        return Z_TEXT;
-    for (n = 32; n < LITERALS; n++)
-        if (s->dyn_ltree[n].Freq != 0)
-            return Z_TEXT;
-
-    /* There are no "black-listed" or "white-listed" bytes:
-     * this stream either is empty or has tolerated ("gray-listed") bytes only.
-     */
-    return Z_BINARY;
-}
-
-/* ===========================================================================
- * Reverse the first len bits of a code, using straightforward code (a faster
- * method would use a table)
- * IN assertion: 1 <= len <= 15
- */
-local unsigned bi_reverse(code, len)
-    unsigned code; /* the value to invert */
-    int len;       /* its bit length */
-{
-    register unsigned res = 0;
-    do {
-        res |= code & 1;
-        code >>= 1, res <<= 1;
-    } while (--len > 0);
-    return res >> 1;
-}
-
-/* ===========================================================================
- * Flush the bit buffer, keeping at most 7 bits in it.
- */
-local void bi_flush(s)
-    deflate_state *s;
-{
-    if (s->bi_valid == 16) {
-        put_short(s, s->bi_buf);
-        s->bi_buf = 0;
-        s->bi_valid = 0;
-    } else if (s->bi_valid >= 8) {
-        put_byte(s, (Byte)s->bi_buf);
-        s->bi_buf >>= 8;
-        s->bi_valid -= 8;
-    }
-}
-
-/* ===========================================================================
- * Flush the bit buffer and align the output on a byte boundary
- */
-local void bi_windup(s)
-    deflate_state *s;
-{
-    if (s->bi_valid > 8) {
-        put_short(s, s->bi_buf);
-    } else if (s->bi_valid > 0) {
-        put_byte(s, (Byte)s->bi_buf);
-    }
-    s->bi_buf = 0;
-    s->bi_valid = 0;
-#ifdef ZLIB_DEBUG
-    s->bits_sent = (s->bits_sent+7) & ~7;
-#endif
+    return (s->sym_next == s->sym_end);
 }
diff --git a/libs/zlib/uncompr.c b/libs/zlib/uncompr.c
index f03a1a865..5e256663b 100644
--- a/libs/zlib/uncompr.c
+++ b/libs/zlib/uncompr.c
@@ -24,12 +24,8 @@
    Z_DATA_ERROR if the input data was corrupted, including if the input data is
    an incomplete zlib stream.
 */
-int ZEXPORT uncompress2 (dest, destLen, source, sourceLen)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong *sourceLen;
-{
+int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source,
+                        uLong *sourceLen) {
     z_stream stream;
     int err;
     const uInt max = (uInt)-1;
@@ -83,11 +79,7 @@ int ZEXPORT uncompress2 (dest, destLen, source, sourceLen)
            err;
 }
 
-int ZEXPORT uncompress (dest, destLen, source, sourceLen)
-    Bytef *dest;
-    uLongf *destLen;
-    const Bytef *source;
-    uLong sourceLen;
-{
+int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source,
+                       uLong sourceLen) {
     return uncompress2(dest, destLen, source, &sourceLen);
 }
diff --git a/libs/zlib/win32/DLL_FAQ.txt b/libs/zlib/win32/DLL_FAQ.txt
index 12c009018..d8cf5f31e 100644
--- a/libs/zlib/win32/DLL_FAQ.txt
+++ b/libs/zlib/win32/DLL_FAQ.txt
@@ -3,7 +3,7 @@
 
 
 This document describes the design, the rationale, and the usage
-of the official DLL build of zlib, named ZLIB1.DLL.  If you have
+of the common DLL build of zlib, named ZLIB1.DLL.  If you have
 general questions about zlib, you should see the file "FAQ" found
 in the zlib distribution, or at the following location:
   http://www.gzip.org/zlib/zlib_faq.html
@@ -11,13 +11,9 @@ in the zlib distribution, or at the following location:
 
  1. What is ZLIB1.DLL, and how can I get it?
 
-  - ZLIB1.DLL is the official build of zlib as a DLL.
+  - ZLIB1.DLL is the common build of zlib as a DLL.
     (Please remark the character '1' in the name.)
 
-    Pointers to a precompiled ZLIB1.DLL can be found in the zlib
-    web site at:
-      http://www.zlib.net/
-
     Applications that link to ZLIB1.DLL can rely on the following
     specification:
 
@@ -379,18 +375,6 @@ in the zlib distribution, or at the following location:
     code.  But you can make your own private DLL build, under a
     different file name, as suggested in the previous answer.
 
-
-17. I made my own ZLIB1.DLL build.  Can I test it for compliance?
-
-  - We prefer that you download the official DLL from the zlib
-    web site.  If you need something peculiar from this DLL, you
-    can send your suggestion to the zlib mailing list.
-
-    However, in case you do rebuild the DLL yourself, you can run
-    it with the test programs found in the DLL distribution.
-    Running these test programs is not a guarantee of compliance,
-    but a failure can imply a detected problem.
-
 **
 
 This document is written and maintained by
diff --git a/libs/zlib/win32/Makefile.bor b/libs/zlib/win32/Makefile.bor
index d152bbb7f..4495353f3 100644
--- a/libs/zlib/win32/Makefile.bor
+++ b/libs/zlib/win32/Makefile.bor
@@ -3,7 +3,6 @@
 #
 # Usage:
 #  make -f win32/Makefile.bor
-#  make -f win32/Makefile.bor LOCAL_ZLIB=-DASMV OBJA=match.obj OBJPA=+match.obj
 
 # ------------ Borland C++ ------------
 
diff --git a/libs/zlib/win32/Makefile.emx b/libs/zlib/win32/Makefile.emx
deleted file mode 100644
index 4d6ab0efa..000000000
--- a/libs/zlib/win32/Makefile.emx
+++ /dev/null
@@ -1,69 +0,0 @@
-# Makefile for zlib.  Modified for emx/rsxnt by Chr. Spieler, 6/16/98.
-# Copyright (C) 1995-1998 Jean-loup Gailly.
-# For conditions of distribution and use, see copyright notice in zlib.h
-
-# To compile, or to compile and test, type:
-#
-#   make -fmakefile.emx;  make test -fmakefile.emx
-#
-
-CC=gcc -Zwin32
-
-#CFLAGS=-MMD -O
-#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
-#CFLAGS=-MMD -g -DDEBUG
-CFLAGS=-MMD -O3 $(BUTT) -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
-             -Wstrict-prototypes -Wmissing-prototypes
-
-# If cp.exe is available, replace "copy /Y" with "cp -fp" .
-CP=copy /Y
-# If gnu install.exe is available, replace $(CP) with ginstall.
-INSTALL=$(CP)
-# The default value of RM is "rm -f."  If "rm.exe" is found, comment out:
-RM=del
-LDLIBS=-L. -lzlib
-LD=$(CC) -s -o
-LDSHARED=$(CC)
-
-INCL=zlib.h zconf.h
-LIBS=zlib.a
-
-AR=ar rcs
-
-prefix=/usr/local
-exec_prefix = $(prefix)
-
-OBJS = adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o \
-       gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o
-
-TEST_OBJS = example.o minigzip.o
-
-all: example.exe minigzip.exe
-
-test: all
-	./example
-	echo hello world | .\minigzip | .\minigzip -d
-
-%.o : %.c
-	$(CC) $(CFLAGS) -c $< -o $@
-
-zlib.a: $(OBJS)
-	$(AR) $@ $(OBJS)
-
-%.exe : %.o $(LIBS)
-	$(LD) $@ $< $(LDLIBS)
-
-
-.PHONY : clean
-
-clean:
-	$(RM) *.d
-	$(RM) *.o
-	$(RM) *.exe
-	$(RM) zlib.a
-	$(RM) foo.gz
-
-DEPS := $(wildcard *.d)
-ifneq ($(DEPS),)
-include $(DEPS)
-endif
diff --git a/libs/zlib/win32/Makefile.gcc b/libs/zlib/win32/Makefile.gcc
index 305be50af..081e391eb 100644
--- a/libs/zlib/win32/Makefile.gcc
+++ b/libs/zlib/win32/Makefile.gcc
@@ -11,10 +11,6 @@
 #
 #   make -fwin32/Makefile.gcc;  make test testdll -fwin32/Makefile.gcc
 #
-# To use the asm code, type:
-#   cp contrib/asm?86/match.S ./match.S
-#   make LOC=-DASMV OBJA=match.o -fwin32/Makefile.gcc
-#
 # To install libz.a, zconf.h and zlib.h in the system directories, type:
 #
 #   make install -fwin32/Makefile.gcc
@@ -38,7 +34,6 @@ IMPLIB    = libz.dll.a
 #
 SHARED_MODE=0
 
-#LOC = -DASMV
 #LOC = -DZLIB_DEBUG -g
 
 PREFIX =
diff --git a/libs/zlib/win32/Makefile.msc b/libs/zlib/win32/Makefile.msc
index 6831882de..9c6515360 100644
--- a/libs/zlib/win32/Makefile.msc
+++ b/libs/zlib/win32/Makefile.msc
@@ -4,10 +4,6 @@
 # Usage:
 #   nmake -f win32/Makefile.msc                          (standard build)
 #   nmake -f win32/Makefile.msc LOC=-DFOO                (nonstandard build)
-#   nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" \
-#         OBJA="inffas32.obj match686.obj"               (use ASM code, x86)
-#   nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." \
-#         OBJA="inffasx64.obj gvmat64.obj inffas8664.obj"  (use ASM code, x64)
 
 # The toplevel directory of the source tree.
 #
diff --git a/libs/zlib/win32/README-WIN32.txt b/libs/zlib/win32/README-WIN32.txt
index df7ab7f4b..14e6398ef 100644
--- a/libs/zlib/win32/README-WIN32.txt
+++ b/libs/zlib/win32/README-WIN32.txt
@@ -1,6 +1,6 @@
 ZLIB DATA COMPRESSION LIBRARY
 
-zlib 1.2.11 is a general purpose data compression library.  All the code is
+zlib 1.3.1 is a general purpose data compression library.  All the code is
 thread safe.  The data format used by the zlib library is described by RFCs
 (Request for Comments) 1950 to 1952 in the files
 http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
@@ -16,13 +16,13 @@ is http://zlib.net/ .  Before reporting a problem, please check this site to
 verify that you have the latest version of zlib; otherwise get the latest
 version and check whether the problem still exists or not.
 
-PLEASE read DLL_FAQ.txt, and the the zlib FAQ http://zlib.net/zlib_faq.html
-before asking for help.
+PLEASE read DLL_FAQ.txt, and the zlib FAQ http://zlib.net/zlib_faq.html before
+asking for help.
 
 
 Manifest:
 
-The package zlib-1.2.11-win32-x86.zip will contain the following files:
+The package zlib-1.3.1-win32-x86.zip will contain the following files:
 
   README-WIN32.txt This document
   ChangeLog        Changes since previous zlib packages
diff --git a/libs/zlib/win32/libz32.a b/libs/zlib/win32/libz32.a
deleted file mode 100644
index 40195965248309e20a09d57b8b3b506ef3392a5d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 117602
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
KGIER48Mpu~`V$lY

diff --git a/libs/zlib/win32/libz64.a b/libs/zlib/win32/libz64.a
deleted file mode 100644
index 87eed1aaf3eb11853716e6cb330a3f8c463531e9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 130026
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
bze9mve8^Y=@^|2^2A1ZopfK8q>-GK&>9@{J

diff --git a/libs/zlib/win32/zlib.def b/libs/zlib/win32/zlib.def
index a2188b000..666bc6fbb 100644
--- a/libs/zlib/win32/zlib.def
+++ b/libs/zlib/win32/zlib.def
@@ -69,6 +69,7 @@ EXPORTS
     gzoffset64
     adler32_combine64
     crc32_combine64
+    crc32_combine_gen64
 ; checksum functions
     adler32
     adler32_z
@@ -76,6 +77,8 @@ EXPORTS
     crc32_z
     adler32_combine
     crc32_combine
+    crc32_combine_gen
+    crc32_combine_op
 ; various hacks, don't look :)
     deflateInit_
     deflateInit2_
diff --git a/libs/zlib/win32/zlib1.rc b/libs/zlib/win32/zlib1.rc
index 234e641c3..ceb4ee5c6 100644
--- a/libs/zlib/win32/zlib1.rc
+++ b/libs/zlib/win32/zlib1.rc
@@ -26,7 +26,7 @@ BEGIN
       VALUE "FileDescription",	"zlib data compression library\0"
       VALUE "FileVersion",	ZLIB_VERSION "\0"
       VALUE "InternalName",	"zlib1.dll\0"
-      VALUE "LegalCopyright",	"(C) 1995-2017 Jean-loup Gailly & Mark Adler\0"
+      VALUE "LegalCopyright",	"(C) 1995-2022 Jean-loup Gailly & Mark Adler\0"
       VALUE "OriginalFilename",	"zlib1.dll\0"
       VALUE "ProductName",	"zlib\0"
       VALUE "ProductVersion",	ZLIB_VERSION "\0"
diff --git a/libs/zlib/zconf.h b/libs/zlib/zconf.h
index 1f7cfed46..62adc8d84 100644
--- a/libs/zlib/zconf.h
+++ b/libs/zlib/zconf.h
@@ -1,5 +1,5 @@
 /* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
+ * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -38,6 +38,9 @@
 #  define crc32                 z_crc32
 #  define crc32_combine         z_crc32_combine
 #  define crc32_combine64       z_crc32_combine64
+#  define crc32_combine_gen     z_crc32_combine_gen
+#  define crc32_combine_gen64   z_crc32_combine_gen64
+#  define crc32_combine_op      z_crc32_combine_op
 #  define crc32_z               z_crc32_z
 #  define deflate               z_deflate
 #  define deflateBound          z_deflateBound
@@ -238,7 +241,11 @@
 #endif
 
 #ifdef Z_SOLO
-   typedef unsigned long z_size_t;
+#  ifdef _WIN64
+     typedef unsigned long long z_size_t;
+#  else
+     typedef unsigned long z_size_t;
+#  endif
 #else
 #  define z_longlong long long
 #  if defined(NO_SIZE_T)
@@ -293,14 +300,6 @@
 #  endif
 #endif
 
-#ifndef Z_ARG /* function prototypes for stdarg */
-#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
-#    define Z_ARG(args)  args
-#  else
-#    define Z_ARG(args)  ()
-#  endif
-#endif
-
 /* The following definitions for FAR are needed only for MSDOS mixed
  * model programming (small or medium model with some far allocations).
  * This was tested only with MSC; for other MSDOS compilers you may have
@@ -349,6 +348,9 @@
 #    ifdef FAR
 #      undef FAR
 #    endif
+#    ifndef WIN32_LEAN_AND_MEAN
+#      define WIN32_LEAN_AND_MEAN
+#    endif
 #    include <windows.h>
      /* No need for _export, use ZLIB.DEF instead. */
      /* For complete Windows compatibility, use WINAPI, not __stdcall. */
@@ -467,14 +469,19 @@ typedef uLong FAR uLongf;
 #  undef _LARGEFILE64_SOURCE
 #endif
 
-#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
-#  define Z_HAVE_UNISTD_H
+#ifndef Z_HAVE_UNISTD_H
+#  ifdef __WATCOMC__
+#    define Z_HAVE_UNISTD_H
+#  endif
+#endif
+#ifndef Z_HAVE_UNISTD_H
+#  if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
+#    define Z_HAVE_UNISTD_H
+#  endif
 #endif
 #ifndef Z_SOLO
-#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
-#ifndef _MSC_VER
+#  if defined(Z_HAVE_UNISTD_H)
 #    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
-#endif
 #    ifdef VMS
 #      include <unixio.h>       /* for off_t */
 #    endif
@@ -509,7 +516,7 @@ typedef uLong FAR uLongf;
 #if !defined(_WIN32) && defined(Z_LARGE64)
 #  define z_off64_t off64_t
 #else
-#  if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
+#  if defined(_WIN32) && !defined(__GNUC__)
 #    define z_off64_t __int64
 #  else
 #    define z_off64_t z_off_t
diff --git a/libs/zlib/zconf.h.cmakein b/libs/zlib/zconf.h.cmakein
index a7f24cce6..0abe3bc9d 100644
--- a/libs/zlib/zconf.h.cmakein
+++ b/libs/zlib/zconf.h.cmakein
@@ -1,5 +1,5 @@
 /* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
+ * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -40,6 +40,9 @@
 #  define crc32                 z_crc32
 #  define crc32_combine         z_crc32_combine
 #  define crc32_combine64       z_crc32_combine64
+#  define crc32_combine_gen     z_crc32_combine_gen
+#  define crc32_combine_gen64   z_crc32_combine_gen64
+#  define crc32_combine_op      z_crc32_combine_op
 #  define crc32_z               z_crc32_z
 #  define deflate               z_deflate
 #  define deflateBound          z_deflateBound
@@ -240,7 +243,11 @@
 #endif
 
 #ifdef Z_SOLO
-   typedef unsigned long z_size_t;
+#  ifdef _WIN64
+     typedef unsigned long long z_size_t;
+#  else
+     typedef unsigned long z_size_t;
+#  endif
 #else
 #  define z_longlong long long
 #  if defined(NO_SIZE_T)
@@ -295,14 +302,6 @@
 #  endif
 #endif
 
-#ifndef Z_ARG /* function prototypes for stdarg */
-#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
-#    define Z_ARG(args)  args
-#  else
-#    define Z_ARG(args)  ()
-#  endif
-#endif
-
 /* The following definitions for FAR are needed only for MSDOS mixed
  * model programming (small or medium model with some far allocations).
  * This was tested only with MSC; for other MSDOS compilers you may have
@@ -351,6 +350,9 @@
 #    ifdef FAR
 #      undef FAR
 #    endif
+#    ifndef WIN32_LEAN_AND_MEAN
+#      define WIN32_LEAN_AND_MEAN
+#    endif
 #    include <windows.h>
      /* No need for _export, use ZLIB.DEF instead. */
      /* For complete Windows compatibility, use WINAPI, not __stdcall. */
@@ -469,11 +471,18 @@ typedef uLong FAR uLongf;
 #  undef _LARGEFILE64_SOURCE
 #endif
 
-#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
-#  define Z_HAVE_UNISTD_H
+#ifndef Z_HAVE_UNISTD_H
+#  ifdef __WATCOMC__
+#    define Z_HAVE_UNISTD_H
+#  endif
+#endif
+#ifndef Z_HAVE_UNISTD_H
+#  if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
+#    define Z_HAVE_UNISTD_H
+#  endif
 #endif
 #ifndef Z_SOLO
-#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
+#  if defined(Z_HAVE_UNISTD_H)
 #    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
 #    ifdef VMS
 #      include <unixio.h>       /* for off_t */
@@ -509,7 +518,7 @@ typedef uLong FAR uLongf;
 #if !defined(_WIN32) && defined(Z_LARGE64)
 #  define z_off64_t off64_t
 #else
-#  if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
+#  if defined(_WIN32) && !defined(__GNUC__)
 #    define z_off64_t __int64
 #  else
 #    define z_off64_t z_off_t
diff --git a/libs/zlib/zconf.h.in b/libs/zlib/zconf.h.in
index 5e1d68a00..62adc8d84 100644
--- a/libs/zlib/zconf.h.in
+++ b/libs/zlib/zconf.h.in
@@ -1,5 +1,5 @@
 /* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
+ * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -38,6 +38,9 @@
 #  define crc32                 z_crc32
 #  define crc32_combine         z_crc32_combine
 #  define crc32_combine64       z_crc32_combine64
+#  define crc32_combine_gen     z_crc32_combine_gen
+#  define crc32_combine_gen64   z_crc32_combine_gen64
+#  define crc32_combine_op      z_crc32_combine_op
 #  define crc32_z               z_crc32_z
 #  define deflate               z_deflate
 #  define deflateBound          z_deflateBound
@@ -238,7 +241,11 @@
 #endif
 
 #ifdef Z_SOLO
-   typedef unsigned long z_size_t;
+#  ifdef _WIN64
+     typedef unsigned long long z_size_t;
+#  else
+     typedef unsigned long z_size_t;
+#  endif
 #else
 #  define z_longlong long long
 #  if defined(NO_SIZE_T)
@@ -293,14 +300,6 @@
 #  endif
 #endif
 
-#ifndef Z_ARG /* function prototypes for stdarg */
-#  if defined(STDC) || defined(Z_HAVE_STDARG_H)
-#    define Z_ARG(args)  args
-#  else
-#    define Z_ARG(args)  ()
-#  endif
-#endif
-
 /* The following definitions for FAR are needed only for MSDOS mixed
  * model programming (small or medium model with some far allocations).
  * This was tested only with MSC; for other MSDOS compilers you may have
@@ -349,6 +348,9 @@
 #    ifdef FAR
 #      undef FAR
 #    endif
+#    ifndef WIN32_LEAN_AND_MEAN
+#      define WIN32_LEAN_AND_MEAN
+#    endif
 #    include <windows.h>
      /* No need for _export, use ZLIB.DEF instead. */
      /* For complete Windows compatibility, use WINAPI, not __stdcall. */
@@ -467,11 +469,18 @@ typedef uLong FAR uLongf;
 #  undef _LARGEFILE64_SOURCE
 #endif
 
-#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
-#  define Z_HAVE_UNISTD_H
+#ifndef Z_HAVE_UNISTD_H
+#  ifdef __WATCOMC__
+#    define Z_HAVE_UNISTD_H
+#  endif
+#endif
+#ifndef Z_HAVE_UNISTD_H
+#  if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
+#    define Z_HAVE_UNISTD_H
+#  endif
 #endif
 #ifndef Z_SOLO
-#  if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
+#  if defined(Z_HAVE_UNISTD_H)
 #    include <unistd.h>         /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
 #    ifdef VMS
 #      include <unixio.h>       /* for off_t */
@@ -507,7 +516,7 @@ typedef uLong FAR uLongf;
 #if !defined(_WIN32) && defined(Z_LARGE64)
 #  define z_off64_t off64_t
 #else
-#  if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
+#  if defined(_WIN32) && !defined(__GNUC__)
 #    define z_off64_t __int64
 #  else
 #    define z_off64_t z_off_t
diff --git a/libs/zlib/zlib.3 b/libs/zlib/zlib.3
index bda4eb073..c716020ea 100644
--- a/libs/zlib/zlib.3
+++ b/libs/zlib/zlib.3
@@ -1,4 +1,4 @@
-.TH ZLIB 3 "15 Jan 2017"
+.TH ZLIB 3 "22 Jan 2024"
 .SH NAME
 zlib \- compression/decompression library
 .SH SYNOPSIS
@@ -105,9 +105,9 @@ before asking for help.
 Send questions and/or comments to zlib@gzip.org,
 or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
 .SH AUTHORS AND LICENSE
-Version 1.2.11
+Version 1.3.1
 .LP
-Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler
 .LP
 This software is provided 'as-is', without any express or implied
 warranty.  In no event will the authors be held liable for any damages
diff --git a/libs/zlib/zlib.3.pdf b/libs/zlib/zlib.3.pdf
index 6fa519c5bdf5df33b2f17549e1df142c619c916c..b224532bdd8eed1939b7dd04a7a0dd46be649c00 100644
GIT binary patch
literal 25523
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
KifR~YGW{RRVaGTC

literal 19318
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
JQcBWj{|}C3j9UNz

diff --git a/libs/zlib/zlib.h b/libs/zlib/zlib.h
index f09cdaf1e..8d4b932ea 100644
--- a/libs/zlib/zlib.h
+++ b/libs/zlib/zlib.h
@@ -1,7 +1,7 @@
 /* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.11, January 15th, 2017
+  version 1.3.1, January 22nd, 2024
 
-  Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+  Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler
 
   This software is provided 'as-is', without any express or implied
   warranty.  In no event will the authors be held liable for any damages
@@ -37,11 +37,11 @@
 extern "C" {
 #endif
 
-#define ZLIB_VERSION "1.2.11"
-#define ZLIB_VERNUM 0x12b0
+#define ZLIB_VERSION "1.3.1"
+#define ZLIB_VERNUM 0x1310
 #define ZLIB_VER_MAJOR 1
-#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 11
+#define ZLIB_VER_MINOR 3
+#define ZLIB_VER_REVISION 1
 #define ZLIB_VER_SUBREVISION 0
 
 /*
@@ -78,8 +78,8 @@ extern "C" {
   even in the case of corrupted input.
 */
 
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
+typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size);
+typedef void   (*free_func)(voidpf opaque, voidpf address);
 
 struct internal_state;
 
@@ -217,7 +217,7 @@ typedef gz_header FAR *gz_headerp;
 
                         /* basic functions */
 
-ZEXTERN const char * ZEXPORT zlibVersion OF((void));
+ZEXTERN const char * ZEXPORT zlibVersion(void);
 /* The application can compare zlibVersion and ZLIB_VERSION for consistency.
    If the first character differs, the library code actually used is not
    compatible with the zlib.h header file used by the application.  This check
@@ -225,12 +225,12 @@ ZEXTERN const char * ZEXPORT zlibVersion OF((void));
  */
 
 /*
-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
+ZEXTERN int ZEXPORT deflateInit(z_streamp strm, int level);
 
      Initializes the internal stream state for compression.  The fields
    zalloc, zfree and opaque must be initialized before by the caller.  If
    zalloc and zfree are set to Z_NULL, deflateInit updates them to use default
-   allocation functions.
+   allocation functions.  total_in, total_out, adler, and msg are initialized.
 
      The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
    1 gives best speed, 9 gives best compression, 0 gives no compression at all
@@ -247,7 +247,7 @@ ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
 */
 
 
-ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
+ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush);
 /*
     deflate compresses as much data as possible, and stops when the input
   buffer becomes empty or the output buffer becomes full.  It may introduce
@@ -276,7 +276,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
   == 0), or after each call of deflate().  If deflate returns Z_OK and with
   zero avail_out, it must be called again after making room in the output
   buffer because there might be more output pending. See deflatePending(),
-  which can be used if desired to determine whether or not there is more ouput
+  which can be used if desired to determine whether or not there is more output
   in that case.
 
     Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
@@ -320,8 +320,8 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
   with the same value of the flush parameter and more output space (updated
   avail_out), until the flush is complete (deflate returns with non-zero
   avail_out).  In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
-  avail_out is greater than six to avoid repeated flush markers due to
-  avail_out == 0 on return.
+  avail_out is greater than six when the flush marker begins, in order to avoid
+  repeated flush markers upon calling deflate() again when avail_out == 0.
 
     If the parameter flush is set to Z_FINISH, pending input is processed,
   pending output is flushed and deflate returns with Z_STREAM_END if there was
@@ -360,7 +360,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
 */
 
 
-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
+ZEXTERN int ZEXPORT deflateEnd(z_streamp strm);
 /*
      All dynamically allocated data structures for this stream are freed.
    This function discards any unprocessed input and does not flush any pending
@@ -375,7 +375,7 @@ ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
 
 
 /*
-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
+ZEXTERN int ZEXPORT inflateInit(z_streamp strm);
 
      Initializes the internal stream state for decompression.  The fields
    next_in, avail_in, zalloc, zfree and opaque must be initialized before by
@@ -383,7 +383,8 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
    read or consumed.  The allocation of a sliding window will be deferred to
    the first call of inflate (if the decompression does not complete on the
    first call).  If zalloc and zfree are set to Z_NULL, inflateInit updates
-   them to use default allocation functions.
+   them to use default allocation functions.  total_in, total_out, adler, and
+   msg are initialized.
 
      inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
    memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
@@ -397,7 +398,7 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
 */
 
 
-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
+ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush);
 /*
     inflate decompresses as much data as possible, and stops when the input
   buffer becomes empty or the output buffer becomes full.  It may introduce
@@ -517,7 +518,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
 */
 
 
-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
+ZEXTERN int ZEXPORT inflateEnd(z_streamp strm);
 /*
      All dynamically allocated data structures for this stream are freed.
    This function discards any unprocessed input and does not flush any pending
@@ -535,16 +536,15 @@ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
 */
 
 /*
-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
-                                     int  level,
-                                     int  method,
-                                     int  windowBits,
-                                     int  memLevel,
-                                     int  strategy));
+ZEXTERN int ZEXPORT deflateInit2(z_streamp strm,
+                                 int level,
+                                 int method,
+                                 int windowBits,
+                                 int memLevel,
+                                 int strategy);
 
      This is another version of deflateInit with more compression options.  The
-   fields next_in, zalloc, zfree and opaque must be initialized before by the
-   caller.
+   fields zalloc, zfree and opaque must be initialized before by the caller.
 
      The method parameter is the compression method.  It must be Z_DEFLATED in
    this version of the library.
@@ -608,9 +608,9 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
    compression: this will be done by deflate().
 */
 
-ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
+ZEXTERN int ZEXPORT deflateSetDictionary(z_streamp strm,
+                                         const Bytef *dictionary,
+                                         uInt  dictLength);
 /*
      Initializes the compression dictionary from the given byte sequence
    without producing any compressed output.  When using the zlib format, this
@@ -652,16 +652,16 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
    not perform any compression: this will be done by deflate().
 */
 
-ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm,
-                                             Bytef *dictionary,
-                                             uInt  *dictLength));
+ZEXTERN int ZEXPORT deflateGetDictionary(z_streamp strm,
+                                         Bytef *dictionary,
+                                         uInt  *dictLength);
 /*
      Returns the sliding dictionary being maintained by deflate.  dictLength is
    set to the number of bytes in the dictionary, and that many bytes are copied
    to dictionary.  dictionary must have enough space, where 32768 bytes is
    always enough.  If deflateGetDictionary() is called with dictionary equal to
    Z_NULL, then only the dictionary length is returned, and nothing is copied.
-   Similary, if dictLength is Z_NULL, then it is not set.
+   Similarly, if dictLength is Z_NULL, then it is not set.
 
      deflateGetDictionary() may return a length less than the window size, even
    when more than the window size in input has been provided. It may return up
@@ -674,8 +674,8 @@ ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm,
    stream state is inconsistent.
 */
 
-ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
-                                    z_streamp source));
+ZEXTERN int ZEXPORT deflateCopy(z_streamp dest,
+                                z_streamp source);
 /*
      Sets the destination stream as a complete copy of the source stream.
 
@@ -692,31 +692,32 @@ ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
    destination.
 */
 
-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
+ZEXTERN int ZEXPORT deflateReset(z_streamp strm);
 /*
      This function is equivalent to deflateEnd followed by deflateInit, but
    does not free and reallocate the internal compression state.  The stream
    will leave the compression level and any other attributes that may have been
-   set unchanged.
+   set unchanged.  total_in, total_out, adler, and msg are initialized.
 
      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
    stream state was inconsistent (such as zalloc or state being Z_NULL).
 */
 
-ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
-                                      int level,
-                                      int strategy));
+ZEXTERN int ZEXPORT deflateParams(z_streamp strm,
+                                  int level,
+                                  int strategy);
 /*
      Dynamically update the compression level and compression strategy.  The
    interpretation of level and strategy is as in deflateInit2().  This can be
    used to switch between compression and straight copy of the input data, or
    to switch to a different kind of input data requiring a different strategy.
    If the compression approach (which is a function of the level) or the
-   strategy is changed, and if any input has been consumed in a previous
-   deflate() call, then the input available so far is compressed with the old
-   level and strategy using deflate(strm, Z_BLOCK).  There are three approaches
-   for the compression levels 0, 1..3, and 4..9 respectively.  The new level
-   and strategy will take effect at the next call of deflate().
+   strategy is changed, and if there have been any deflate() calls since the
+   state was initialized or reset, then the input available so far is
+   compressed with the old level and strategy using deflate(strm, Z_BLOCK).
+   There are three approaches for the compression levels 0, 1..3, and 4..9
+   respectively.  The new level and strategy will take effect at the next call
+   of deflate().
 
      If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does
    not have enough output space to complete, then the parameter change will not
@@ -729,7 +730,7 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
    Then no more input data should be provided before the deflateParams() call.
    If this is done, the old level and strategy will be applied to the data
    compressed before deflateParams(), and the new level and strategy will be
-   applied to the the data compressed after deflateParams().
+   applied to the data compressed after deflateParams().
 
      deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream
    state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if
@@ -740,11 +741,11 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
    retried with more output space.
 */
 
-ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
-                                    int good_length,
-                                    int max_lazy,
-                                    int nice_length,
-                                    int max_chain));
+ZEXTERN int ZEXPORT deflateTune(z_streamp strm,
+                                int good_length,
+                                int max_lazy,
+                                int nice_length,
+                                int max_chain);
 /*
      Fine tune deflate's internal compression parameters.  This should only be
    used by someone who understands the algorithm used by zlib's deflate for
@@ -757,8 +758,8 @@ ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
    returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
  */
 
-ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
-                                       uLong sourceLen));
+ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm,
+                                   uLong sourceLen);
 /*
      deflateBound() returns an upper bound on the compressed size after
    deflation of sourceLen bytes.  It must be called after deflateInit() or
@@ -772,9 +773,9 @@ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
    than Z_FINISH or Z_NO_FLUSH are used.
 */
 
-ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
-                                       unsigned *pending,
-                                       int *bits));
+ZEXTERN int ZEXPORT deflatePending(z_streamp strm,
+                                   unsigned *pending,
+                                   int *bits);
 /*
      deflatePending() returns the number of bytes and bits of output that have
    been generated, but not yet provided in the available output.  The bytes not
@@ -787,9 +788,9 @@ ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm,
    stream state was inconsistent.
  */
 
-ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
+ZEXTERN int ZEXPORT deflatePrime(z_streamp strm,
+                                 int bits,
+                                 int value);
 /*
      deflatePrime() inserts bits in the deflate output stream.  The intent
    is that this function is used to start off the deflate output with the bits
@@ -804,8 +805,8 @@ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
    source stream state was inconsistent.
 */
 
-ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
-                                         gz_headerp head));
+ZEXTERN int ZEXPORT deflateSetHeader(z_streamp strm,
+                                     gz_headerp head);
 /*
      deflateSetHeader() provides gzip header information for when a gzip
    stream is requested by deflateInit2().  deflateSetHeader() may be called
@@ -821,16 +822,17 @@ ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
    gzip file" and give up.
 
      If deflateSetHeader is not used, the default gzip header has text false,
-   the time set to zero, and os set to 255, with no extra, name, or comment
-   fields.  The gzip header is returned to the default state by deflateReset().
+   the time set to zero, and os set to the current operating system, with no
+   extra, name, or comment fields.  The gzip header is returned to the default
+   state by deflateReset().
 
      deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
    stream state was inconsistent.
 */
 
 /*
-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
-                                     int  windowBits));
+ZEXTERN int ZEXPORT inflateInit2(z_streamp strm,
+                                 int windowBits);
 
      This is another version of inflateInit with an extra parameter.  The
    fields next_in, avail_in, zalloc, zfree and opaque must be initialized
@@ -865,9 +867,11 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
    detection, or add 16 to decode only the gzip format (the zlib format will
    return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is a
    CRC-32 instead of an Adler-32.  Unlike the gunzip utility and gzread() (see
-   below), inflate() will not automatically decode concatenated gzip streams.
-   inflate() will return Z_STREAM_END at the end of the gzip stream.  The state
-   would need to be reset to continue decoding a subsequent gzip stream.
+   below), inflate() will *not* automatically decode concatenated gzip members.
+   inflate() will return Z_STREAM_END at the end of the gzip member.  The state
+   would need to be reset to continue decoding a subsequent gzip member.  This
+   *must* be done if there is more data after a gzip member, in order for the
+   decompression to be compliant with the gzip standard (RFC 1952).
 
      inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
    memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
@@ -881,9 +885,9 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
    deferred until inflate() is called.
 */
 
-ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
+ZEXTERN int ZEXPORT inflateSetDictionary(z_streamp strm,
+                                         const Bytef *dictionary,
+                                         uInt  dictLength);
 /*
      Initializes the decompression dictionary from the given uncompressed byte
    sequence.  This function must be called immediately after a call of inflate,
@@ -904,22 +908,22 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
    inflate().
 */
 
-ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
-                                             Bytef *dictionary,
-                                             uInt  *dictLength));
+ZEXTERN int ZEXPORT inflateGetDictionary(z_streamp strm,
+                                         Bytef *dictionary,
+                                         uInt  *dictLength);
 /*
      Returns the sliding dictionary being maintained by inflate.  dictLength is
    set to the number of bytes in the dictionary, and that many bytes are copied
    to dictionary.  dictionary must have enough space, where 32768 bytes is
    always enough.  If inflateGetDictionary() is called with dictionary equal to
    Z_NULL, then only the dictionary length is returned, and nothing is copied.
-   Similary, if dictLength is Z_NULL, then it is not set.
+   Similarly, if dictLength is Z_NULL, then it is not set.
 
      inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
    stream state is inconsistent.
 */
 
-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
+ZEXTERN int ZEXPORT inflateSync(z_streamp strm);
 /*
      Skips invalid compressed data until a possible full flush point (see above
    for the description of deflate with Z_FULL_FLUSH) can be found, or until all
@@ -932,14 +936,14 @@ ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
      inflateSync returns Z_OK if a possible full flush point has been found,
    Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point
    has been found, or Z_STREAM_ERROR if the stream structure was inconsistent.
-   In the success case, the application may save the current current value of
-   total_in which indicates where valid compressed data was found.  In the
-   error case, the application may repeatedly call inflateSync, providing more
-   input each time, until success or end of the input data.
+   In the success case, the application may save the current value of total_in
+   which indicates where valid compressed data was found.  In the error case,
+   the application may repeatedly call inflateSync, providing more input each
+   time, until success or end of the input data.
 */
 
-ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
-                                    z_streamp source));
+ZEXTERN int ZEXPORT inflateCopy(z_streamp dest,
+                                z_streamp source);
 /*
      Sets the destination stream as a complete copy of the source stream.
 
@@ -954,18 +958,19 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
    destination.
 */
 
-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
+ZEXTERN int ZEXPORT inflateReset(z_streamp strm);
 /*
      This function is equivalent to inflateEnd followed by inflateInit,
    but does not free and reallocate the internal decompression state.  The
    stream will keep attributes that may have been set by inflateInit2.
+   total_in, total_out, adler, and msg are initialized.
 
      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
    stream state was inconsistent (such as zalloc or state being Z_NULL).
 */
 
-ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
-                                      int windowBits));
+ZEXTERN int ZEXPORT inflateReset2(z_streamp strm,
+                                  int windowBits);
 /*
      This function is the same as inflateReset, but it also permits changing
    the wrap and window size requests.  The windowBits parameter is interpreted
@@ -978,9 +983,9 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm,
    the windowBits parameter is invalid.
 */
 
-ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
-                                     int bits,
-                                     int value));
+ZEXTERN int ZEXPORT inflatePrime(z_streamp strm,
+                                 int bits,
+                                 int value);
 /*
      This function inserts bits in the inflate input stream.  The intent is
    that this function is used to start inflating at a bit position in the
@@ -999,7 +1004,7 @@ ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
    stream state was inconsistent.
 */
 
-ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
+ZEXTERN long ZEXPORT inflateMark(z_streamp strm);
 /*
      This function returns two values, one in the lower 16 bits of the return
    value, and the other in the remaining upper bits, obtained by shifting the
@@ -1027,8 +1032,8 @@ ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm));
    source stream state was inconsistent.
 */
 
-ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
-                                         gz_headerp head));
+ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm,
+                                     gz_headerp head);
 /*
      inflateGetHeader() requests that gzip header information be stored in the
    provided gz_header structure.  inflateGetHeader() may be called after
@@ -1068,8 +1073,8 @@ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
 */
 
 /*
-ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
-                                        unsigned char FAR *window));
+ZEXTERN int ZEXPORT inflateBackInit(z_streamp strm, int windowBits,
+                                    unsigned char FAR *window);
 
      Initialize the internal stream state for decompression using inflateBack()
    calls.  The fields zalloc, zfree and opaque in strm must be initialized
@@ -1089,13 +1094,13 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
    the version of the header file.
 */
 
-typedef unsigned (*in_func) OF((void FAR *,
-                                z_const unsigned char FAR * FAR *));
-typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
+typedef unsigned (*in_func)(void FAR *,
+                            z_const unsigned char FAR * FAR *);
+typedef int (*out_func)(void FAR *, unsigned char FAR *, unsigned);
 
-ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
-                                    in_func in, void FAR *in_desc,
-                                    out_func out, void FAR *out_desc));
+ZEXTERN int ZEXPORT inflateBack(z_streamp strm,
+                                in_func in, void FAR *in_desc,
+                                out_func out, void FAR *out_desc);
 /*
      inflateBack() does a raw inflate with a single call using a call-back
    interface for input and output.  This is potentially more efficient than
@@ -1163,7 +1168,7 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
    cannot return Z_OK.
 */
 
-ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
+ZEXTERN int ZEXPORT inflateBackEnd(z_streamp strm);
 /*
      All memory allocated by inflateBackInit() is freed.
 
@@ -1171,7 +1176,7 @@ ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
    state was inconsistent.
 */
 
-ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
+ZEXTERN uLong ZEXPORT zlibCompileFlags(void);
 /* Return flags indicating compile-time options.
 
     Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
@@ -1224,8 +1229,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
    you need special options.
 */
 
-ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
-                                 const Bytef *source, uLong sourceLen));
+ZEXTERN int ZEXPORT compress(Bytef *dest,   uLongf *destLen,
+                             const Bytef *source, uLong sourceLen);
 /*
      Compresses the source buffer into the destination buffer.  sourceLen is
    the byte length of the source buffer.  Upon entry, destLen is the total size
@@ -1239,9 +1244,9 @@ ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
    buffer.
 */
 
-ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
-                                  const Bytef *source, uLong sourceLen,
-                                  int level));
+ZEXTERN int ZEXPORT compress2(Bytef *dest,   uLongf *destLen,
+                              const Bytef *source, uLong sourceLen,
+                              int level);
 /*
      Compresses the source buffer into the destination buffer.  The level
    parameter has the same meaning as in deflateInit.  sourceLen is the byte
@@ -1255,15 +1260,15 @@ ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
    Z_STREAM_ERROR if the level parameter is invalid.
 */
 
-ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
+ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen);
 /*
      compressBound() returns an upper bound on the compressed size after
    compress() or compress2() on sourceLen bytes.  It would be used before a
    compress() or compress2() call to allocate the destination buffer.
 */
 
-ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
-                                   const Bytef *source, uLong sourceLen));
+ZEXTERN int ZEXPORT uncompress(Bytef *dest,   uLongf *destLen,
+                               const Bytef *source, uLong sourceLen);
 /*
      Decompresses the source buffer into the destination buffer.  sourceLen is
    the byte length of the source buffer.  Upon entry, destLen is the total size
@@ -1280,8 +1285,8 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
    buffer with the uncompressed data up to that point.
 */
 
-ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest,   uLongf *destLen,
-                                    const Bytef *source, uLong *sourceLen));
+ZEXTERN int ZEXPORT uncompress2(Bytef *dest,   uLongf *destLen,
+                                const Bytef *source, uLong *sourceLen);
 /*
      Same as uncompress, except that sourceLen is a pointer, where the
    length of the source is *sourceLen.  On return, *sourceLen is the number of
@@ -1300,16 +1305,16 @@ ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest,   uLongf *destLen,
 typedef struct gzFile_s *gzFile;    /* semi-opaque gzip file descriptor */
 
 /*
-ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
+ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode);
 
-     Opens a gzip (.gz) file for reading or writing.  The mode parameter is as
-   in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
-   a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
-   compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
-   for fixed code compression as in "wb9F".  (See the description of
-   deflateInit2 for more information about the strategy parameter.)  'T' will
-   request transparent writing or appending with no compression and not using
-   the gzip format.
+     Open the gzip (.gz) file at path for reading and decompressing, or
+   compressing and writing.  The mode parameter is as in fopen ("rb" or "wb")
+   but can also include a compression level ("wb9") or a strategy: 'f' for
+   filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h",
+   'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression
+   as in "wb9F".  (See the description of deflateInit2 for more information
+   about the strategy parameter.)  'T' will request transparent writing or
+   appending with no compression and not using the gzip format.
 
      "a" can be used instead of "w" to request that the gzip stream that will
    be written be appended to the file.  "+" will result in an error, since
@@ -1337,11 +1342,11 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
    file could not be opened.
 */
 
-ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
+ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode);
 /*
-     gzdopen associates a gzFile with the file descriptor fd.  File descriptors
-   are obtained from calls like open, dup, creat, pipe or fileno (if the file
-   has been previously opened with fopen).  The mode parameter is as in gzopen.
+     Associate a gzFile with the file descriptor fd.  File descriptors are
+   obtained from calls like open, dup, creat, pipe or fileno (if the file has
+   been previously opened with fopen).  The mode parameter is as in gzopen.
 
      The next call of gzclose on the returned gzFile will also close the file
    descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
@@ -1360,15 +1365,15 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
    will not detect if fd is invalid (unless fd is -1).
 */
 
-ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
+ZEXTERN int ZEXPORT gzbuffer(gzFile file, unsigned size);
 /*
-     Set the internal buffer size used by this library's functions.  The
-   default buffer size is 8192 bytes.  This function must be called after
-   gzopen() or gzdopen(), and before any other calls that read or write the
-   file.  The buffer memory allocation is always deferred to the first read or
-   write.  Three times that size in buffer space is allocated.  A larger buffer
-   size of, for example, 64K or 128K bytes will noticeably increase the speed
-   of decompression (reading).
+     Set the internal buffer size used by this library's functions for file to
+   size.  The default buffer size is 8192 bytes.  This function must be called
+   after gzopen() or gzdopen(), and before any other calls that read or write
+   the file.  The buffer memory allocation is always deferred to the first read
+   or write.  Three times that size in buffer space is allocated.  A larger
+   buffer size of, for example, 64K or 128K bytes will noticeably increase the
+   speed of decompression (reading).
 
      The new buffer size also affects the maximum length for gzprintf().
 
@@ -1376,20 +1381,20 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
    too late.
 */
 
-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
+ZEXTERN int ZEXPORT gzsetparams(gzFile file, int level, int strategy);
 /*
-     Dynamically update the compression level or strategy.  See the description
-   of deflateInit2 for the meaning of these parameters.  Previously provided
-   data is flushed before the parameter change.
+     Dynamically update the compression level and strategy for file.  See the
+   description of deflateInit2 for the meaning of these parameters. Previously
+   provided data is flushed before applying the parameter changes.
 
      gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not
    opened for writing, Z_ERRNO if there is an error writing the flushed data,
    or Z_MEM_ERROR if there is a memory allocation error.
 */
 
-ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
+ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len);
 /*
-     Reads the given number of uncompressed bytes from the compressed file.  If
+     Read and decompress up to len uncompressed bytes from file into buf.  If
    the input file is not in gzip format, gzread copies the given number of
    bytes into the buffer directly from the file.
 
@@ -1417,14 +1422,14 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
    Z_STREAM_ERROR.
 */
 
-ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
-                                     gzFile file));
+ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems,
+                                 gzFile file);
 /*
-     Read up to nitems items of size size from file to buf, otherwise operating
-   as gzread() does.  This duplicates the interface of stdio's fread(), with
-   size_t request and return types.  If the library defines size_t, then
-   z_size_t is identical to size_t.  If not, then z_size_t is an unsigned
-   integer type that can contain a pointer.
+     Read and decompress up to nitems items of size size from file into buf,
+   otherwise operating as gzread() does.  This duplicates the interface of
+   stdio's fread(), with size_t request and return types.  If the library
+   defines size_t, then z_size_t is identical to size_t.  If not, then z_size_t
+   is an unsigned integer type that can contain a pointer.
 
      gzfread() returns the number of full items read of size size, or zero if
    the end of the file was reached and a full item could not be read, or if
@@ -1435,26 +1440,24 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
 
      In the event that the end of file is reached and only a partial item is
    available at the end, i.e. the remaining uncompressed data length is not a
-   multiple of size, then the final partial item is nevetheless read into buf
+   multiple of size, then the final partial item is nevertheless read into buf
    and the end-of-file flag is set.  The length of the partial item read is not
    provided, but could be inferred from the result of gztell().  This behavior
    is the same as the behavior of fread() implementations in common libraries,
    but it prevents the direct use of gzfread() to read a concurrently written
-   file, reseting and retrying on end-of-file, when size is not 1.
+   file, resetting and retrying on end-of-file, when size is not 1.
 */
 
-ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
-                                voidpc buf, unsigned len));
+ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len);
 /*
-     Writes the given number of uncompressed bytes into the compressed file.
-   gzwrite returns the number of uncompressed bytes written or 0 in case of
-   error.
+     Compress and write the len uncompressed bytes at buf to file. gzwrite
+   returns the number of uncompressed bytes written or 0 in case of error.
 */
 
-ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
-                                      z_size_t nitems, gzFile file));
+ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size,
+                                  z_size_t nitems, gzFile file);
 /*
-     gzfwrite() writes nitems items of size size from buf to file, duplicating
+     Compress and write nitems items of size size from buf to file, duplicating
    the interface of stdio's fwrite(), with size_t request and return types.  If
    the library defines size_t, then z_size_t is identical to size_t.  If not,
    then z_size_t is an unsigned integer type that can contain a pointer.
@@ -1465,61 +1468,62 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
    is returned, and the error state is set to Z_STREAM_ERROR.
 */
 
-ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
+ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...);
 /*
-     Converts, formats, and writes the arguments to the compressed file under
-   control of the format string, as in fprintf.  gzprintf returns the number of
+     Convert, format, compress, and write the arguments (...) to file under
+   control of the string format, as in fprintf.  gzprintf returns the number of
    uncompressed bytes actually written, or a negative zlib error code in case
    of error.  The number of uncompressed bytes written is limited to 8191, or
    one less than the buffer size given to gzbuffer().  The caller should assure
    that this limit is not exceeded.  If it is exceeded, then gzprintf() will
    return an error (0) with nothing written.  In this case, there may also be a
    buffer overflow with unpredictable consequences, which is possible only if
-   zlib was compiled with the insecure functions sprintf() or vsprintf()
+   zlib was compiled with the insecure functions sprintf() or vsprintf(),
    because the secure snprintf() or vsnprintf() functions were not available.
    This can be determined using zlibCompileFlags().
 */
 
-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
+ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s);
 /*
-     Writes the given null-terminated string to the compressed file, excluding
+     Compress and write the given null-terminated string s to file, excluding
    the terminating null character.
 
      gzputs returns the number of characters written, or -1 in case of error.
 */
 
-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
+ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len);
 /*
-     Reads bytes from the compressed file until len-1 characters are read, or a
-   newline character is read and transferred to buf, or an end-of-file
-   condition is encountered.  If any characters are read or if len == 1, the
-   string is terminated with a null character.  If no characters are read due
-   to an end-of-file or len < 1, then the buffer is left untouched.
+     Read and decompress bytes from file into buf, until len-1 characters are
+   read, or until a newline character is read and transferred to buf, or an
+   end-of-file condition is encountered.  If any characters are read or if len
+   is one, the string is terminated with a null character.  If no characters
+   are read due to an end-of-file or len is less than one, then the buffer is
+   left untouched.
 
      gzgets returns buf which is a null-terminated string, or it returns NULL
    for end-of-file or in case of error.  If there was an error, the contents at
    buf are indeterminate.
 */
 
-ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
+ZEXTERN int ZEXPORT gzputc(gzFile file, int c);
 /*
-     Writes c, converted to an unsigned char, into the compressed file.  gzputc
+     Compress and write c, converted to an unsigned char, into file.  gzputc
    returns the value that was written, or -1 in case of error.
 */
 
-ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
+ZEXTERN int ZEXPORT gzgetc(gzFile file);
 /*
-     Reads one byte from the compressed file.  gzgetc returns this byte or -1
+     Read and decompress one byte from file.  gzgetc returns this byte or -1
    in case of end of file or error.  This is implemented as a macro for speed.
    As such, it does not do all of the checking the other functions do.  I.e.
    it does not check to see if file is NULL, nor whether the structure file
    points to has been clobbered or not.
 */
 
-ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
+ZEXTERN int ZEXPORT gzungetc(int c, gzFile file);
 /*
-     Push one character back onto the stream to be read as the first character
-   on the next read.  At least one character of push-back is allowed.
+     Push c back onto the stream for file to be read as the first character on
+   the next read.  At least one character of push-back is always allowed.
    gzungetc() returns the character pushed, or -1 on failure.  gzungetc() will
    fail if c is -1, and may fail if a character has been pushed but not read
    yet.  If gzungetc is used immediately after gzopen or gzdopen, at least the
@@ -1528,11 +1532,11 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
    gzseek() or gzrewind().
 */
 
-ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
+ZEXTERN int ZEXPORT gzflush(gzFile file, int flush);
 /*
-     Flushes all pending output into the compressed file.  The parameter flush
-   is as in the deflate() function.  The return value is the zlib error number
-   (see function gzerror below).  gzflush is only permitted when writing.
+     Flush all pending output to file.  The parameter flush is as in the
+   deflate() function.  The return value is the zlib error number (see function
+   gzerror below).  gzflush is only permitted when writing.
 
      If the flush parameter is Z_FINISH, the remaining data is written and the
    gzip stream is completed in the output.  If gzwrite() is called again, a new
@@ -1544,11 +1548,11 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
 */
 
 /*
-ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
-                                   z_off_t offset, int whence));
+ZEXTERN z_off_t ZEXPORT gzseek(gzFile file,
+                               z_off_t offset, int whence);
 
-     Sets the starting position for the next gzread or gzwrite on the given
-   compressed file.  The offset represents a number of bytes in the
+     Set the starting position to offset relative to whence for the next gzread
+   or gzwrite on file.  The offset represents a number of bytes in the
    uncompressed data stream.  The whence parameter is defined as in lseek(2);
    the value SEEK_END is not supported.
 
@@ -1563,52 +1567,52 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
    would be before the current position.
 */
 
-ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
+ZEXTERN int ZEXPORT    gzrewind(gzFile file);
 /*
-     Rewinds the given file. This function is supported only for reading.
+     Rewind file. This function is supported only for reading.
 
-     gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+     gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET).
 */
 
 /*
-ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
+ZEXTERN z_off_t ZEXPORT    gztell(gzFile file);
 
-     Returns the starting position for the next gzread or gzwrite on the given
-   compressed file.  This position represents a number of bytes in the
-   uncompressed data stream, and is zero when starting, even if appending or
-   reading a gzip stream from the middle of a file using gzdopen().
+     Return the starting position for the next gzread or gzwrite on file.
+   This position represents a number of bytes in the uncompressed data stream,
+   and is zero when starting, even if appending or reading a gzip stream from
+   the middle of a file using gzdopen().
 
      gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
 */
 
 /*
-ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
+ZEXTERN z_off_t ZEXPORT gzoffset(gzFile file);
 
-     Returns the current offset in the file being read or written.  This offset
-   includes the count of bytes that precede the gzip stream, for example when
-   appending or when using gzdopen() for reading.  When reading, the offset
-   does not include as yet unused buffered input.  This information can be used
-   for a progress indicator.  On error, gzoffset() returns -1.
+     Return the current compressed (actual) read or write offset of file.  This
+   offset includes the count of bytes that precede the gzip stream, for example
+   when appending or when using gzdopen() for reading.  When reading, the
+   offset does not include as yet unused buffered input.  This information can
+   be used for a progress indicator.  On error, gzoffset() returns -1.
 */
 
-ZEXTERN int ZEXPORT gzeof OF((gzFile file));
+ZEXTERN int ZEXPORT gzeof(gzFile file);
 /*
-     Returns true (1) if the end-of-file indicator has been set while reading,
-   false (0) otherwise.  Note that the end-of-file indicator is set only if the
-   read tried to go past the end of the input, but came up short.  Therefore,
-   just like feof(), gzeof() may return false even if there is no more data to
-   read, in the event that the last read request was for the exact number of
-   bytes remaining in the input file.  This will happen if the input file size
-   is an exact multiple of the buffer size.
+     Return true (1) if the end-of-file indicator for file has been set while
+   reading, false (0) otherwise.  Note that the end-of-file indicator is set
+   only if the read tried to go past the end of the input, but came up short.
+   Therefore, just like feof(), gzeof() may return false even if there is no
+   more data to read, in the event that the last read request was for the exact
+   number of bytes remaining in the input file.  This will happen if the input
+   file size is an exact multiple of the buffer size.
 
      If gzeof() returns true, then the read functions will return no more data,
    unless the end-of-file indicator is reset by gzclearerr() and the input file
    has grown since the previous end of file was detected.
 */
 
-ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
+ZEXTERN int ZEXPORT gzdirect(gzFile file);
 /*
-     Returns true (1) if file is being copied directly while reading, or false
+     Return true (1) if file is being copied directly while reading, or false
    (0) if file is a gzip stream being decompressed.
 
      If the input file is empty, gzdirect() will return true, since the input
@@ -1627,10 +1631,10 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
    gzip file reading and decompression, which may not be desired.)
 */
 
-ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
+ZEXTERN int ZEXPORT    gzclose(gzFile file);
 /*
-     Flushes all pending output if necessary, closes the compressed file and
-   deallocates the (de)compression state.  Note that once file is closed, you
+     Flush all pending output for file, if necessary, close file and
+   deallocate the (de)compression state.  Note that once file is closed, you
    cannot call gzerror with file, since its structures have been deallocated.
    gzclose must not be called more than once on the same file, just as free
    must not be called more than once on the same allocation.
@@ -1640,8 +1644,8 @@ ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
    last read ended in the middle of a gzip stream, or Z_OK on success.
 */
 
-ZEXTERN int ZEXPORT gzclose_r OF((gzFile file));
-ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
+ZEXTERN int ZEXPORT gzclose_r(gzFile file);
+ZEXTERN int ZEXPORT gzclose_w(gzFile file);
 /*
      Same as gzclose(), but gzclose_r() is only for use when reading, and
    gzclose_w() is only for use when writing or appending.  The advantage to
@@ -1652,12 +1656,12 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
    zlib library.
 */
 
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
+ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum);
 /*
-     Returns the error message for the last error which occurred on the given
-   compressed file.  errnum is set to zlib error number.  If an error occurred
-   in the file system and not in the compression library, errnum is set to
-   Z_ERRNO and the application may consult errno to get the exact error code.
+     Return the error message for the last error which occurred on file.
+   errnum is set to zlib error number.  If an error occurred in the file system
+   and not in the compression library, errnum is set to Z_ERRNO and the
+   application may consult errno to get the exact error code.
 
      The application must not modify the returned string.  Future calls to
    this function may invalidate the previously returned string.  If file is
@@ -1668,9 +1672,9 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
    functions above that do not distinguish those cases in their return values.
 */
 
-ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
+ZEXTERN void ZEXPORT gzclearerr(gzFile file);
 /*
-     Clears the error and end-of-file flags for file.  This is analogous to the
+     Clear the error and end-of-file flags for file.  This is analogous to the
    clearerr() function in stdio.  This is useful for continuing to read a gzip
    file that is being written concurrently.
 */
@@ -1685,11 +1689,12 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
    library.
 */
 
-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
+ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len);
 /*
      Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-   return the updated checksum.  If buf is Z_NULL, this function returns the
-   required initial value for the checksum.
+   return the updated checksum. An Adler-32 value is in the range of a 32-bit
+   unsigned integer. If buf is Z_NULL, this function returns the required
+   initial value for the checksum.
 
      An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed
    much faster.
@@ -1704,15 +1709,15 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
      if (adler != original_adler) error();
 */
 
-ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf,
-                                    z_size_t len));
+ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf,
+                                z_size_t len);
 /*
      Same as adler32(), but with a size_t length.
 */
 
 /*
-ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
-                                          z_off_t len2));
+ZEXTERN uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2,
+                                      z_off_t len2);
 
      Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
    and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
@@ -1722,12 +1727,13 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
    negative, the result has no meaning or utility.
 */
 
-ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
+ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len);
 /*
      Update a running CRC-32 with the bytes buf[0..len-1] and return the
-   updated CRC-32.  If buf is Z_NULL, this function returns the required
-   initial value for the crc.  Pre- and post-conditioning (one's complement) is
-   performed within this function so it shouldn't be done by the application.
+   updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer.
+   If buf is Z_NULL, this function returns the required initial value for the
+   crc. Pre- and post-conditioning (one's complement) is performed within this
+   function so it shouldn't be done by the application.
 
    Usage example:
 
@@ -1739,20 +1745,34 @@ ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
      if (crc != original_crc) error();
 */
 
-ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
-                                  z_size_t len));
+ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf,
+                              z_size_t len);
 /*
      Same as crc32(), but with a size_t length.
 */
 
 /*
-ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
+ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2);
 
      Combine two CRC-32 check values into one.  For two sequences of bytes,
    seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
    calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32
    check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
-   len2.
+   len2. len2 must be non-negative.
+*/
+
+/*
+ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2);
+
+     Return the operator corresponding to length len2, to be used with
+   crc32_combine_op(). len2 must be non-negative.
+*/
+
+ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op);
+/*
+     Give the same result as crc32_combine(), using op in place of len2. op is
+   is generated from len2 by crc32_combine_gen(). This will be faster than
+   crc32_combine() if the generated op is used more than once.
 */
 
 
@@ -1761,20 +1781,20 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
 /* deflateInit and inflateInit are macros to allow checking the zlib version
  * and the compiler's view of z_stream:
  */
-ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
-                                      int windowBits, int memLevel,
-                                      int strategy, const char *version,
-                                      int stream_size));
-ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
-                                      const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
-                                         unsigned char FAR *window,
-                                         const char *version,
-                                         int stream_size));
+ZEXTERN int ZEXPORT deflateInit_(z_streamp strm, int level,
+                                 const char *version, int stream_size);
+ZEXTERN int ZEXPORT inflateInit_(z_streamp strm,
+                                 const char *version, int stream_size);
+ZEXTERN int ZEXPORT deflateInit2_(z_streamp strm, int  level, int  method,
+                                  int windowBits, int memLevel,
+                                  int strategy, const char *version,
+                                  int stream_size);
+ZEXTERN int ZEXPORT inflateInit2_(z_streamp strm, int  windowBits,
+                                  const char *version, int stream_size);
+ZEXTERN int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits,
+                                     unsigned char FAR *window,
+                                     const char *version,
+                                     int stream_size);
 #ifdef Z_PREFIX_SET
 #  define z_deflateInit(strm, level) \
           deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream))
@@ -1819,7 +1839,7 @@ struct gzFile_s {
     unsigned char *next;
     z_off64_t pos;
 };
-ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
+ZEXTERN int ZEXPORT gzgetc_(gzFile file);       /* backward compatibility */
 #ifdef Z_PREFIX_SET
 #  undef z_gzgetc
 #  define z_gzgetc(g) \
@@ -1836,12 +1856,13 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
  * without large file support, _LFS64_LARGEFILE must also be true
  */
 #ifdef Z_LARGE64
-   ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-   ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int));
-   ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile));
-   ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
-   ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
-   ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
+   ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *);
+   ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int);
+   ZEXTERN z_off64_t ZEXPORT gztell64(gzFile);
+   ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile);
+   ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t);
+   ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t);
+   ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t);
 #endif
 
 #if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
@@ -1852,6 +1873,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
 #    define z_gzoffset z_gzoffset64
 #    define z_adler32_combine z_adler32_combine64
 #    define z_crc32_combine z_crc32_combine64
+#    define z_crc32_combine_gen z_crc32_combine_gen64
 #  else
 #    define gzopen gzopen64
 #    define gzseek gzseek64
@@ -1859,49 +1881,53 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file));  /* backward compatibility */
 #    define gzoffset gzoffset64
 #    define adler32_combine adler32_combine64
 #    define crc32_combine crc32_combine64
+#    define crc32_combine_gen crc32_combine_gen64
 #  endif
 #  ifndef Z_LARGE64
-     ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
-     ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int));
-     ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile));
-     ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
-     ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
-     ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+     ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *);
+     ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int);
+     ZEXTERN z_off_t ZEXPORT gztell64(gzFile);
+     ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile);
+     ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t);
+     ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t);
+     ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t);
 #  endif
 #else
-   ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
-   ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int));
-   ZEXTERN z_off_t ZEXPORT gztell OF((gzFile));
-   ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
-   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
-   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+   ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *);
+   ZEXTERN z_off_t ZEXPORT gzseek(gzFile, z_off_t, int);
+   ZEXTERN z_off_t ZEXPORT gztell(gzFile);
+   ZEXTERN z_off_t ZEXPORT gzoffset(gzFile);
+   ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t);
+   ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t);
+   ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t);
 #endif
 
 #else /* Z_SOLO */
 
-   ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
-   ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+   ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t);
+   ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t);
+   ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t);
 
 #endif /* !Z_SOLO */
 
 /* undocumented functions */
-ZEXTERN const char   * ZEXPORT zError           OF((int));
-ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp));
-ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table    OF((void));
-ZEXTERN int            ZEXPORT inflateUndermine OF((z_streamp, int));
-ZEXTERN int            ZEXPORT inflateValidate OF((z_streamp, int));
-ZEXTERN unsigned long  ZEXPORT inflateCodesUsed OF ((z_streamp));
-ZEXTERN int            ZEXPORT inflateResetKeep OF((z_streamp));
-ZEXTERN int            ZEXPORT deflateResetKeep OF((z_streamp));
-#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO)
-ZEXTERN gzFile         ZEXPORT gzopen_w OF((const wchar_t *path,
-                                            const char *mode));
+ZEXTERN const char   * ZEXPORT zError(int);
+ZEXTERN int            ZEXPORT inflateSyncPoint(z_streamp);
+ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table(void);
+ZEXTERN int            ZEXPORT inflateUndermine(z_streamp, int);
+ZEXTERN int            ZEXPORT inflateValidate(z_streamp, int);
+ZEXTERN unsigned long  ZEXPORT inflateCodesUsed(z_streamp);
+ZEXTERN int            ZEXPORT inflateResetKeep(z_streamp);
+ZEXTERN int            ZEXPORT deflateResetKeep(z_streamp);
+#if defined(_WIN32) && !defined(Z_SOLO)
+ZEXTERN gzFile         ZEXPORT gzopen_w(const wchar_t *path,
+                                        const char *mode);
 #endif
 #if defined(STDC) || defined(Z_HAVE_STDARG_H)
 #  ifndef Z_SOLO
-ZEXTERN int            ZEXPORTVA gzvprintf Z_ARG((gzFile file,
-                                                  const char *format,
-                                                  va_list va));
+ZEXTERN int            ZEXPORTVA gzvprintf(gzFile file,
+                                           const char *format,
+                                           va_list va);
 #  endif
 #endif
 
diff --git a/libs/zlib/zlib.map b/libs/zlib/zlib.map
index 82ce98cf7..31544f2e9 100644
--- a/libs/zlib/zlib.map
+++ b/libs/zlib/zlib.map
@@ -92,3 +92,9 @@ ZLIB_1.2.9 {
     adler32_z;
     crc32_z;
 } ZLIB_1.2.7.1;
+
+ZLIB_1.2.12 {
+	crc32_combine_gen;
+	crc32_combine_gen64;
+	crc32_combine_op;
+} ZLIB_1.2.9;
diff --git a/libs/zlib/zlib2ansi b/libs/zlib/zlib2ansi
deleted file mode 100755
index 15e3e165f..000000000
--- a/libs/zlib/zlib2ansi
+++ /dev/null
@@ -1,152 +0,0 @@
-#!/usr/bin/perl
-
-# Transform K&R C function definitions into ANSI equivalent.
-#
-# Author: Paul Marquess
-# Version: 1.0
-# Date: 3 October 2006
-
-# TODO
-#
-# Asumes no function pointer parameters. unless they are typedefed.
-# Assumes no literal strings that look like function definitions
-# Assumes functions start at the beginning of a line
-
-use strict;
-use warnings;
-
-local $/;
-$_ = <>;
-
-my $sp = qr{ \s* (?: /\* .*? \*/ )? \s* }x; # assume no nested comments
-
-my $d1    = qr{ $sp (?: [\w\*\s]+ $sp)* $sp \w+ $sp [\[\]\s]* $sp }x ;
-my $decl  = qr{ $sp (?: \w+ $sp )+ $d1 }xo ;
-my $dList = qr{ $sp $decl (?: $sp , $d1 )* $sp ; $sp }xo ;
-
-
-while (s/^
-            (                  # Start $1
-                (              #   Start $2
-                    .*?        #     Minimal eat content
-                    ( ^ \w [\w\s\*]+ )    #     $3 -- function name
-                    \s*        #     optional whitespace
-                )              # $2 - Matched up to before parameter list
-
-                \( \s*         # Literal "(" + optional whitespace
-                ( [^\)]+ )     # $4 - one or more anythings except ")"
-                \s* \)         # optional whitespace surrounding a Literal ")"
-
-                ( (?: $dList )+ ) # $5
-
-                $sp ^ {        # literal "{" at start of line
-            )                  # Remember to $1
-        //xsom
-      )
-{
-    my $all = $1 ;
-    my $prefix = $2;
-    my $param_list = $4 ;
-    my $params = $5;
-
-    StripComments($params);
-    StripComments($param_list);
-    $param_list =~ s/^\s+//;
-    $param_list =~ s/\s+$//;
-
-    my $i = 0 ;
-    my %pList = map { $_ => $i++ }
-                split /\s*,\s*/, $param_list;
-    my $pMatch = '(\b' . join('|', keys %pList) . '\b)\W*$' ;
-
-    my @params = split /\s*;\s*/, $params;
-    my @outParams = ();
-    foreach my $p (@params)
-    {
-        if ($p =~ /,/)
-        {
-            my @bits = split /\s*,\s*/, $p;
-            my $first = shift @bits;
-            $first =~ s/^\s*//;
-            push @outParams, $first;
-            $first =~ /^(\w+\s*)/;
-            my $type = $1 ;
-            push @outParams, map { $type . $_ } @bits;
-        }
-        else
-        {
-            $p =~ s/^\s+//;
-            push @outParams, $p;
-        }
-    }
-
-
-    my %tmp = map { /$pMatch/;  $_ => $pList{$1}  }
-              @outParams ;
-
-    @outParams = map  { "    $_" }
-                 sort { $tmp{$a} <=> $tmp{$b} }
-                 @outParams ;
-
-    print $prefix ;
-    print "(\n" . join(",\n", @outParams) . ")\n";
-    print "{" ;
-
-}
-
-# Output any trailing code.
-print ;
-exit 0;
-
-
-sub StripComments
-{
-
-  no warnings;
-
-  # Strip C & C++ coments
-  # From the perlfaq
-  $_[0] =~
-
-    s{
-       /\*         ##  Start of /* ... */ comment
-       [^*]*\*+    ##  Non-* followed by 1-or-more *'s
-       (
-         [^/*][^*]*\*+
-       )*          ##  0-or-more things which don't start with /
-                   ##    but do end with '*'
-       /           ##  End of /* ... */ comment
-
-     |         ##     OR  C++ Comment
-       //          ## Start of C++ comment //
-       [^\n]*      ## followed by 0-or-more non end of line characters
-
-     |         ##     OR  various things which aren't comments:
-
-       (
-         "           ##  Start of " ... " string
-         (
-           \\.           ##  Escaped char
-         |               ##    OR
-           [^"\\]        ##  Non "\
-         )*
-         "           ##  End of " ... " string
-
-       |         ##     OR
-
-         '           ##  Start of ' ... ' string
-         (
-           \\.           ##  Escaped char
-         |               ##    OR
-           [^'\\]        ##  Non '\
-         )*
-         '           ##  End of ' ... ' string
-
-       |         ##     OR
-
-         .           ##  Anything other char
-         [^/"'\\]*   ##  Chars which doesn't start a comment, string or escape
-       )
-     }{$2}gxs;
-
-}
diff --git a/libs/zlib/zutil.c b/libs/zlib/zutil.c
index a76c6b0c7..b1c5d2d3c 100644
--- a/libs/zlib/zutil.c
+++ b/libs/zlib/zutil.c
@@ -24,13 +24,11 @@ z_const char * const z_errmsg[10] = {
 };
 
 
-const char * ZEXPORT zlibVersion()
-{
+const char * ZEXPORT zlibVersion(void) {
     return ZLIB_VERSION;
 }
 
-uLong ZEXPORT zlibCompileFlags()
-{
+uLong ZEXPORT zlibCompileFlags(void) {
     uLong flags;
 
     flags = 0;
@@ -61,9 +59,11 @@ uLong ZEXPORT zlibCompileFlags()
 #ifdef ZLIB_DEBUG
     flags += 1 << 8;
 #endif
+    /*
 #if defined(ASMV) || defined(ASMINF)
     flags += 1 << 9;
 #endif
+     */
 #ifdef ZLIB_WINAPI
     flags += 1 << 10;
 #endif
@@ -119,9 +119,7 @@ uLong ZEXPORT zlibCompileFlags()
 #  endif
 int ZLIB_INTERNAL z_verbose = verbose;
 
-void ZLIB_INTERNAL z_error (m)
-    char *m;
-{
+void ZLIB_INTERNAL z_error(char *m) {
     fprintf(stderr, "%s\n", m);
     exit(1);
 }
@@ -130,14 +128,12 @@ void ZLIB_INTERNAL z_error (m)
 /* exported to allow conversion of error code to string for compress() and
  * uncompress()
  */
-const char * ZEXPORT zError(err)
-    int err;
-{
+const char * ZEXPORT zError(int err) {
     return ERR_MSG(err);
 }
 
-#if defined(_WIN32_WCE)
-    /* The Microsoft C Run-Time Library for Windows CE doesn't have
+#if defined(_WIN32_WCE) && _WIN32_WCE < 0x800
+    /* The older Microsoft C Run-Time Library for Windows CE doesn't have
      * errno.  We define it as a global variable to simplify porting.
      * Its value is always 0 and should not be used.
      */
@@ -146,22 +142,14 @@ const char * ZEXPORT zError(err)
 
 #ifndef HAVE_MEMCPY
 
-void ZLIB_INTERNAL zmemcpy(dest, source, len)
-    Bytef* dest;
-    const Bytef* source;
-    uInt  len;
-{
+void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) {
     if (len == 0) return;
     do {
         *dest++ = *source++; /* ??? to be unrolled */
     } while (--len != 0);
 }
 
-int ZLIB_INTERNAL zmemcmp(s1, s2, len)
-    const Bytef* s1;
-    const Bytef* s2;
-    uInt  len;
-{
+int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len) {
     uInt j;
 
     for (j = 0; j < len; j++) {
@@ -170,10 +158,7 @@ int ZLIB_INTERNAL zmemcmp(s1, s2, len)
     return 0;
 }
 
-void ZLIB_INTERNAL zmemzero(dest, len)
-    Bytef* dest;
-    uInt  len;
-{
+void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) {
     if (len == 0) return;
     do {
         *dest++ = 0;  /* ??? to be unrolled */
@@ -214,8 +199,7 @@ local ptr_table table[MAX_PTR];
  * a protected system like OS/2. Use Microsoft C instead.
  */
 
-voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
-{
+voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) {
     voidpf buf;
     ulg bsize = (ulg)items*size;
 
@@ -240,8 +224,7 @@ voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
     return buf;
 }
 
-void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
-{
+void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) {
     int n;
 
     (void)opaque;
@@ -277,14 +260,12 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
 #  define _hfree   hfree
 #endif
 
-voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size)
-{
+voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, uInt items, uInt size) {
     (void)opaque;
     return _halloc((long)items, size);
 }
 
-void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
-{
+void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) {
     (void)opaque;
     _hfree(ptr);
 }
@@ -297,25 +278,18 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
 #ifndef MY_ZCALLOC /* Any system without a special alloc function */
 
 #ifndef STDC
-extern voidp  malloc OF((uInt size));
-extern voidp  calloc OF((uInt items, uInt size));
-extern void   free   OF((voidpf ptr));
+extern voidp malloc(uInt size);
+extern voidp calloc(uInt items, uInt size);
+extern void free(voidpf ptr);
 #endif
 
-voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
-    voidpf opaque;
-    unsigned items;
-    unsigned size;
-{
+voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) {
     (void)opaque;
     return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
                               (voidpf)calloc(items, size);
 }
 
-void ZLIB_INTERNAL zcfree (opaque, ptr)
-    voidpf opaque;
-    voidpf ptr;
-{
+void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) {
     (void)opaque;
     free(ptr);
 }
diff --git a/libs/zlib/zutil.h b/libs/zlib/zutil.h
index b079ea6a8..48dd7feba 100644
--- a/libs/zlib/zutil.h
+++ b/libs/zlib/zutil.h
@@ -1,5 +1,5 @@
 /* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
+ * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -29,10 +29,6 @@
 #  include <stdlib.h>
 #endif
 
-#ifdef Z_SOLO
-   typedef long ptrdiff_t;  /* guess -- will be caught if guess is wrong */
-#endif
-
 #ifndef local
 #  define local static
 #endif
@@ -46,10 +42,21 @@ typedef unsigned short ush;
 typedef ush FAR ushf;
 typedef unsigned long  ulg;
 
+#if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC)
+#  include <limits.h>
+#  if (ULONG_MAX == 0xffffffffffffffff)
+#    define Z_U8 unsigned long
+#  elif (ULLONG_MAX == 0xffffffffffffffff)
+#    define Z_U8 unsigned long long
+#  elif (UINT_MAX == 0xffffffffffffffff)
+#    define Z_U8 unsigned
+#  endif
+#endif
+
 extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 /* (size given to avoid silly warnings with Visual C++) */
 
-#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
+#define ERR_MSG(err) z_errmsg[(err) < -6 || (err) > 2 ? 9 : 2 - (err)]
 
 #define ERR_RETURN(strm,err) \
   return (strm->msg = ERR_MSG(err), (err))
@@ -130,17 +137,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #  endif
 #endif
 
-#if defined(MACOS) || defined(TARGET_OS_MAC)
+#if defined(MACOS)
 #  define OS_CODE  7
-#  ifndef Z_SOLO
-#    if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
-#      include <unix.h> /* for fdopen */
-#    else
-#      ifndef fdopen
-#        define fdopen(fd,mode) NULL /* No fdopen() */
-#      endif
-#    endif
-#  endif
 #endif
 
 #ifdef __acorn
@@ -163,22 +161,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #  define OS_CODE 19
 #endif
 
-#if defined(_BEOS_) || defined(RISCOS)
-#  define fdopen(fd,mode) NULL /* No fdopen() */
-#endif
-
-#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
-#  if defined(_WIN32_WCE)
-#    define fdopen(fd,mode) NULL /* No fdopen() */
-#    ifndef _PTRDIFF_T_DEFINED
-       typedef int ptrdiff_t;
-#      define _PTRDIFF_T_DEFINED
-#    endif
-#  else
-#    define fdopen(fd,type)  _fdopen(fd,type)
-#  endif
-#endif
-
 #if defined(__BORLANDC__) && !defined(MSDOS)
   #pragma warn -8004
   #pragma warn -8008
@@ -188,8 +170,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 /* provide prototypes for these when building zlib without LFS */
 #if !defined(_WIN32) && \
     (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
-    ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
-    ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+    ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t);
+    ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t);
+    ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t);
 #endif
 
         /* common defaults */
@@ -228,16 +211,16 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #    define zmemzero(dest, len) memset(dest, 0, len)
 #  endif
 #else
-   void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
-   int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
-   void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len));
+   void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len);
+   int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len);
+   void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len);
 #endif
 
 /* Diagnostic functions */
 #ifdef ZLIB_DEBUG
 #  include <stdio.h>
    extern int ZLIB_INTERNAL z_verbose;
-   extern void ZLIB_INTERNAL z_error OF((char *m));
+   extern void ZLIB_INTERNAL z_error(char *m);
 #  define Assert(cond,msg) {if(!(cond)) z_error(msg);}
 #  define Trace(x) {if (z_verbose>=0) fprintf x ;}
 #  define Tracev(x) {if (z_verbose>0) fprintf x ;}
@@ -254,9 +237,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
 #endif
 
 #ifndef Z_SOLO
-   voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items,
-                                    unsigned size));
-   void ZLIB_INTERNAL zcfree  OF((voidpf opaque, voidpf ptr));
+   voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items,
+                                unsigned size);
+   void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr);
 #endif
 
 #define ZALLOC(strm, items, size) \
diff --git a/thirdparty/cpm-zlib.cmake b/thirdparty/cpm-zlib.cmake
index 5368366fd..95e379193 100644
--- a/thirdparty/cpm-zlib.cmake
+++ b/thirdparty/cpm-zlib.cmake
@@ -1,53 +1,18 @@
 CPMAddPackage(
-	NAME ZLIB
-	VERSION 1.2.13
-	URL "https://github.com/madler/zlib/archive/refs/tags/v1.2.13.zip"
+	NAME zlib
+	VERSION 1.3.1
+	GITHUB_REPOSITORY madler/zlib
+	GIT_TAG v1.3.1
 	EXCLUDE_FROM_ALL
-	DOWNLOAD_ONLY YES
+	OPTIONS
+		"ZLIB_BUILD_EXAMPLES OFF"
 )
 
-if(ZLIB_ADDED)
-	set(ZLIB_SRCS
-		crc32.h
-		deflate.h
-		gzguts.h
-		inffast.h
-		inffixed.h
-		inflate.h
-		inftrees.h
-		trees.h
-		zutil.h
-		adler32.c
-		compress.c
-		crc32.c
-		deflate.c
-		gzclose.c
-		gzlib.c
-		gzread.c
-		gzwrite.c
-		inflate.c
-		infback.c
-		inftrees.c
-		inffast.c
-		trees.c
-		uncompr.c
-		zutil.c
-	)
-	list(TRANSFORM ZLIB_SRCS PREPEND "${ZLIB_SOURCE_DIR}/")
-
-	configure_file("${ZLIB_SOURCE_DIR}/zlib.pc.cmakein" "${ZLIB_BINARY_DIR}/zlib.pc" @ONLY)
-	configure_file("${ZLIB_SOURCE_DIR}/zconf.h.cmakein" "${ZLIB_BINARY_DIR}/include/zconf.h" @ONLY)
-	configure_file("${ZLIB_SOURCE_DIR}/zlib.h" "${ZLIB_BINARY_DIR}/include/zlib.h" @ONLY)
-
-	add_library(ZLIB ${SRB2_INTERNAL_LIBRARY_TYPE} ${ZLIB_SRCS})
-	set_target_properties(ZLIB PROPERTIES
-		VERSION 1.2.13
-		OUTPUT_NAME "z"
-	)
-	target_include_directories(ZLIB PRIVATE "${ZLIB_SOURCE_DIR}")
-	target_include_directories(ZLIB PUBLIC "${ZLIB_BINARY_DIR}/include")
-	if(MSVC)
-		target_compile_definitions(ZLIB PRIVATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
+if(zlib_ADDED)
+	if(SRB2_CONFIG_SHARED_INTERNAL_LIBRARIES)
+		add_library(ZLIB::ZLIB ALIAS zlib)
+	endif()
+	if(NOT_SRB2_CONFIG_SHARED_INTERNAL_LIBRARIES)
+		add_library(ZLIB::ZLIB ALIAS zlibstatic)
 	endif()
-	add_library(ZLIB::ZLIB ALIAS ZLIB)
 endif()
-- 
GitLab