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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	Xe5TUVp*PQJZOu>O1eLiemJ#Ut#D7v|Yq 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%0AR!_69@!d`{&0bZyEqP|nUVWeB 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�sh>{0`g-X^`&1c+p0)9X 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Й>Vp`dl{}S4_(R-cI@M^g>~<W-!J6lo!yZ0_ei^i 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 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 © 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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 C`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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%0Da17sBh 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 T^K%O_b5h-M64Q&3>oP6?>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 delta 21996 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࿏>-xZ7B5?56i`IG<eUcl9qB5;Vg-nq$W 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 NSaPYVy863u0RR~l$PEAh delta 16238 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 ZS8+*VQ3*IP8CsZ`m~g48y863u0RaBL6NCT& 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