summaryrefslogtreecommitdiff
path: root/contrib/vstudio
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/vstudio')
-rw-r--r--contrib/vstudio/readme.txt17
-rw-r--r--contrib/vstudio/vc15_16/zlib16.def94
-rw-r--r--contrib/vstudio/vc15_16/zlib16.mak256
-rw-r--r--contrib/vstudio/vc15_16/zlib16.rc33
-rw-r--r--contrib/vstudio/vc70_32/gvmat32.asm905
-rw-r--r--contrib/vstudio/vc70_32/gvmat32.objbin0 -> 10143 bytes
-rw-r--r--contrib/vstudio/vc70_32/gvmat32c.c209
-rw-r--r--contrib/vstudio/vc70_32/inffastAsm.asm1020
-rw-r--r--contrib/vstudio/vc70_32/inffastAsm.objbin0 -> 14895 bytes
-rw-r--r--contrib/vstudio/vc70_32/miniunz.vcproj124
-rw-r--r--contrib/vstudio/vc70_32/minizip.vcproj124
-rw-r--r--contrib/vstudio/vc70_32/mkgvmt32.bat2
-rw-r--r--contrib/vstudio/vc70_32/zlib.rc32
-rw-r--r--contrib/vstudio/vc70_32/zlibstat.vcproj253
-rw-r--r--contrib/vstudio/vc70_32/zlibvc.def88
-rw-r--r--contrib/vstudio/vc70_32/zlibvc.sln66
-rw-r--r--contrib/vstudio/vc70_32/zlibvc.vcproj434
17 files changed, 3657 insertions, 0 deletions
diff --git a/contrib/vstudio/readme.txt b/contrib/vstudio/readme.txt
new file mode 100644
index 0000000..a619b96
--- /dev/null
+++ b/contrib/vstudio/readme.txt
@@ -0,0 +1,17 @@
1For create the 16 and 32 bits DLL of Zlib 1.20
2
3For the 16 bits :
4unzip zlib120.zip and copy file from contrib\vstudio\vc15_16 and from contrib\minizip in the same directory
5open zlib16.mak with Microsoft Visual C++ 1.52
6
7
8For the 32 bits :
9unzip zlib120.zip and copy file from contrib\vstudio\vc70_32 and from contrib\minizip in the same directory
10You can also need unzip http://www.winimage.com/zLibDll/crtdll.zip
11
12If you are using x86, use target Release
13open zlibvc.sln with Microsoft Visual C++ 7.0 (Visual Studio .net)
14
15
16Note : You don't need recompile yourself. There is compiled .LIB in
17 http://www.winimage.com/zLibDll
diff --git a/contrib/vstudio/vc15_16/zlib16.def b/contrib/vstudio/vc15_16/zlib16.def
new file mode 100644
index 0000000..89cb8d1
--- /dev/null
+++ b/contrib/vstudio/vc15_16/zlib16.def
@@ -0,0 +1,94 @@
1LIBRARY "zlib"
2
3DESCRIPTION '"""zlib data compression library"""'
4
5EXETYPE WINDOWS
6
7VERSION 1.20
8
9CODE PRELOAD MOVEABLE DISCARDABLE
10DATA PRELOAD MOVEABLE SINGLE
11
12
13HEAPSIZE 32768,8192
14
15EXPORTS
16 adler32 @1
17 compress @2
18 crc32 @3
19 deflate @4
20 deflateCopy @5
21 deflateEnd @6
22 deflateInit2_ @7
23 deflateInit_ @8
24 deflateParams @9
25 deflateReset @10
26 deflateSetDictionary @11
27 gzclose @12
28 gzdopen @13
29 gzerror @14
30 gzflush @15
31 gzopen @16
32 gzread @17
33 gzwrite @18
34 inflate @19
35 inflateEnd @20
36 inflateInit2_ @21
37 inflateInit_ @22
38 inflateReset @23
39 inflateSetDictionary @24
40 inflateSync @25
41 uncompress @26
42 zlibVersion @27
43 _gzprintf @28
44 gzputc @29
45 gzgetc @30
46 gzseek @31
47 gzrewind @32
48 gztell @33
49 gzeof @34
50 gzsetparams @35
51 zError @36
52 inflateSyncPoint @37
53 get_crc_table @38
54 compress2 @39
55 gzputs @40
56 gzgets @41
57 inflateCopy @42
58 inflateBackInit_ @43
59 inflateBack @44
60 inflateBackEnd @45
61 compressBound @46
62
63 unzOpen @61
64 unzClose @62
65 unzGetGlobalInfo @63
66 unzGetCurrentFileInfo @64
67 unzGoToFirstFile @65
68 unzGoToNextFile @66
69 unzOpenCurrentFile @67
70 unzReadCurrentFile @68
71 unzOpenCurrentFile3 @69
72 unztell @70
73 unzeof @71
74 unzCloseCurrentFile @72
75 unzGetGlobalComment @73
76 unzStringFileNameCompare @74
77 unzLocateFile @75
78 unzGetLocalExtrafield @76
79 unzOpen2 @77
80 unzOpenCurrentFile2 @78
81 unzOpenCurrentFilePassword @79
82
83 zipOpen @80
84 zipOpenNewFileInZip @81
85 zipWriteInFileInZip @82
86 zipCloseFileInZip @83
87 zipClose @84
88 zipOpenNewFileInZip2 @86
89 zipCloseFileInZipRaw @87
90 zipOpen2 @88
91 zipOpenNewFileInZip3 @89
92
93 unzGetFilePos @100
94 unzGoToFilePos @101
diff --git a/contrib/vstudio/vc15_16/zlib16.mak b/contrib/vstudio/vc15_16/zlib16.mak
new file mode 100644
index 0000000..75c8d80
--- /dev/null
+++ b/contrib/vstudio/vc15_16/zlib16.mak
@@ -0,0 +1,256 @@
1# Microsoft Visual C++ generated build script - Do not modify
2
3PROJ = ZLIB16
4DEBUG = 0
5PROGTYPE = 1
6CALLER =
7ARGS =
8DLLS =
9D_RCDEFINES = -d_DEBUG
10R_RCDEFINES = -dNDEBUG
11ORIGIN = MSVC
12ORIGIN_VER = 1.00
13PROJPATH = c:\zlib\
14USEMFC = 0
15CC = cl
16CPP = cl
17CXX = cl
18CCREATEPCHFLAG =
19CPPCREATEPCHFLAG =
20CUSEPCHFLAG =
21CPPUSEPCHFLAG =
22FIRSTC = ADLER32.C
23FIRSTCPP =
24RC = rc
25CFLAGS_D_WDLL = /nologo /G2 /W3 /Zi /ALw /Od /D "_DEBUG" /D "WINDOWS" /D "ZLIB_DLL" /FR /GD /Fd"ZLIB.PDB"
26CFLAGS_R_WDLL = /nologo /W3 /ALw /O1 /D "NDEBUG" /D "WINDOWS" /D "ZLIB_DLL" /FR /GD
27LFLAGS_D_WDLL = /NOLOGO /ONERROR:NOEXE /NOD /PACKC:61440 /CO /NOE /ALIGN:16 /MAP:FULL
28LFLAGS_R_WDLL = /NOLOGO /ONERROR:NOEXE /NOD /PACKC:61440 /NOE /ALIGN:16 /MAP:FULL
29LIBS_D_WDLL = oldnames libw commdlg shell olecli olesvr ldllcew
30LIBS_R_WDLL = oldnames libw commdlg shell olecli olesvr ldllcew
31RCFLAGS = /nologo
32RESFLAGS = /nologo
33RUNFLAGS =
34DEFFILE = ZLIB16.DEF
35OBJS_EXT =
36LIBS_EXT =
37!if "$(DEBUG)" == "1"
38CFLAGS = $(CFLAGS_D_WDLL)
39LFLAGS = $(LFLAGS_D_WDLL)
40LIBS = $(LIBS_D_WDLL)
41MAPFILE = nul
42RCDEFINES = $(D_RCDEFINES)
43!else
44CFLAGS = $(CFLAGS_R_WDLL)
45LFLAGS = $(LFLAGS_R_WDLL)
46LIBS = $(LIBS_R_WDLL)
47MAPFILE = nul
48RCDEFINES = $(R_RCDEFINES)
49!endif
50!if [if exist MSVC.BND del MSVC.BND]
51!endif
52SBRS = ADLER32.SBR \
53 COMPRESS.SBR \
54 CRC32.SBR \
55 DEFLATE.SBR \
56 GZIO.SBR \
57 INFFAST.SBR \
58 INFLATE.SBR \
59 TREES.SBR \
60 UNCOMPR.SBR \
61 ZUTIL.SBR \
62 ZIP.SBR \
63 UNZIP.SBR \
64 INFBACK.SBR \
65 IOAPI.SBR \
66 INFTREES.SBR
67
68
69ADLER32_DEP = c:\zlib\zlib.h \
70 c:\zlib\zconf.h
71
72
73COMPRESS_DEP = c:\zlib\zlib.h \
74 c:\zlib\zconf.h
75
76
77CRC32_DEP = c:\zlib\zlib.h \
78 c:\zlib\zconf.h \
79 c:\zlib\crc32.h
80
81
82DEFLATE_DEP = c:\zlib\deflate.h \
83 c:\zlib\zutil.h \
84 c:\zlib\zlib.h \
85 c:\zlib\zconf.h
86
87
88GZIO_DEP = c:\zlib\zutil.h \
89 c:\zlib\zlib.h \
90 c:\zlib\zconf.h
91
92
93INFFAST_DEP = c:\zlib\zutil.h \
94 c:\zlib\zlib.h \
95 c:\zlib\zconf.h \
96 c:\zlib\inftrees.h \
97 c:\zlib\inflate.h \
98 c:\zlib\inffast.h
99
100
101INFLATE_DEP = c:\zlib\zutil.h \
102 c:\zlib\zlib.h \
103 c:\zlib\zconf.h \
104 c:\zlib\inftrees.h \
105 c:\zlib\inflate.h \
106 c:\zlib\inffast.h \
107 c:\zlib\inffixed.h
108
109
110TREES_DEP = c:\zlib\deflate.h \
111 c:\zlib\zutil.h \
112 c:\zlib\zlib.h \
113 c:\zlib\zconf.h \
114 c:\zlib\trees.h
115
116
117UNCOMPR_DEP = c:\zlib\zlib.h \
118 c:\zlib\zconf.h
119
120
121ZUTIL_DEP = c:\zlib\zutil.h \
122 c:\zlib\zlib.h \
123 c:\zlib\zconf.h
124
125
126ZLIB16_RCDEP =
127
128ZIP_DEP = c:\zlib\zlib.h \
129 c:\zlib\zconf.h \
130 c:\zlib\zip.h \
131 c:\zlib\ioapi.h
132
133
134UNZIP_DEP = c:\zlib\zlib.h \
135 c:\zlib\zconf.h \
136 c:\zlib\unzip.h \
137 c:\zlib\ioapi.h
138
139
140INFBACK_DEP = c:\zlib\zutil.h \
141 c:\zlib\zlib.h \
142 c:\zlib\zconf.h \
143 c:\zlib\inftrees.h \
144 c:\zlib\inflate.h \
145 c:\zlib\inffast.h \
146 c:\zlib\inffixed.h
147
148
149IOAPI_DEP = c:\zlib\zlib.h \
150 c:\zlib\zconf.h \
151 c:\zlib\ioapi.h
152
153
154INFTREES_DEP = c:\zlib\zutil.h \
155 c:\zlib\zlib.h \
156 c:\zlib\zconf.h \
157 c:\zlib\inftrees.h
158
159
160all: $(PROJ).DLL $(PROJ).BSC
161
162ADLER32.OBJ: ADLER32.C $(ADLER32_DEP)
163 $(CC) $(CFLAGS) $(CCREATEPCHFLAG) /c ADLER32.C
164
165COMPRESS.OBJ: COMPRESS.C $(COMPRESS_DEP)
166 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c COMPRESS.C
167
168CRC32.OBJ: CRC32.C $(CRC32_DEP)
169 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c CRC32.C
170
171DEFLATE.OBJ: DEFLATE.C $(DEFLATE_DEP)
172 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c DEFLATE.C
173
174GZIO.OBJ: GZIO.C $(GZIO_DEP)
175 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c GZIO.C
176
177INFFAST.OBJ: INFFAST.C $(INFFAST_DEP)
178 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c INFFAST.C
179
180INFLATE.OBJ: INFLATE.C $(INFLATE_DEP)
181 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c INFLATE.C
182
183TREES.OBJ: TREES.C $(TREES_DEP)
184 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c TREES.C
185
186UNCOMPR.OBJ: UNCOMPR.C $(UNCOMPR_DEP)
187 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c UNCOMPR.C
188
189ZUTIL.OBJ: ZUTIL.C $(ZUTIL_DEP)
190 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c ZUTIL.C
191
192ZLIB16.RES: ZLIB16.RC $(ZLIB16_RCDEP)
193 $(RC) $(RCFLAGS) $(RCDEFINES) -r ZLIB16.RC
194
195ZIP.OBJ: ZIP.C $(ZIP_DEP)
196 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c ZIP.C
197
198UNZIP.OBJ: UNZIP.C $(UNZIP_DEP)
199 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c UNZIP.C
200
201INFBACK.OBJ: INFBACK.C $(INFBACK_DEP)
202 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c INFBACK.C
203
204IOAPI.OBJ: IOAPI.C $(IOAPI_DEP)
205 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c IOAPI.C
206
207INFTREES.OBJ: INFTREES.C $(INFTREES_DEP)
208 $(CC) $(CFLAGS) $(CUSEPCHFLAG) /c INFTREES.C
209
210
211$(PROJ).DLL:: ZLIB16.RES
212
213$(PROJ).DLL:: ADLER32.OBJ COMPRESS.OBJ CRC32.OBJ DEFLATE.OBJ GZIO.OBJ INFFAST.OBJ \
214 INFLATE.OBJ TREES.OBJ UNCOMPR.OBJ ZUTIL.OBJ ZIP.OBJ UNZIP.OBJ INFBACK.OBJ IOAPI.OBJ \
215 INFTREES.OBJ $(OBJS_EXT) $(DEFFILE)
216 echo >NUL @<<$(PROJ).CRF
217ADLER32.OBJ +
218COMPRESS.OBJ +
219CRC32.OBJ +
220DEFLATE.OBJ +
221GZIO.OBJ +
222INFFAST.OBJ +
223INFLATE.OBJ +
224TREES.OBJ +
225UNCOMPR.OBJ +
226ZUTIL.OBJ +
227ZIP.OBJ +
228UNZIP.OBJ +
229INFBACK.OBJ +
230IOAPI.OBJ +
231INFTREES.OBJ +
232$(OBJS_EXT)
233$(PROJ).DLL
234$(MAPFILE)
235C:\MSVC\LIB\+
236C:\MSVC\MFC\LIB\+
237E:\PROGRAMFILES\MICROSOFTVISUALSTUDIO.NET\FRAMEWORKSDK\LIB\+
238$(LIBS)
239$(DEFFILE);
240<<
241 link $(LFLAGS) @$(PROJ).CRF
242 $(RC) $(RESFLAGS) ZLIB16.RES $@
243 @copy $(PROJ).CRF MSVC.BND
244 implib /nowep $(PROJ).LIB $(PROJ).DLL
245
246$(PROJ).DLL:: ZLIB16.RES
247 if not exist MSVC.BND $(RC) $(RESFLAGS) ZLIB16.RES $@
248
249run: $(PROJ).DLL
250 $(PROJ) $(RUNFLAGS)
251
252
253$(PROJ).BSC: $(SBRS)
254 bscmake @<<
255/o$@ $(SBRS)
256<<
diff --git a/contrib/vstudio/vc15_16/zlib16.rc b/contrib/vstudio/vc15_16/zlib16.rc
new file mode 100644
index 0000000..13d0d66
--- /dev/null
+++ b/contrib/vstudio/vc15_16/zlib16.rc
@@ -0,0 +1,33 @@
1#include <windows.h>
2#include <ver.h>
3
4#define IDR_VERSION1 1
5IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
6 FILEVERSION 1,2,0,0
7 PRODUCTVERSION 1,2,0,0
8 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
9 FILEFLAGS 0
10 FILEOS VOS_DOS_WINDOWS16
11 FILETYPE VFT_DLL
12 FILESUBTYPE 0 // not used
13BEGIN
14 BLOCK "StringFileInfo"
15 BEGIN
16 BLOCK "040904E4"
17 //language ID = U.S. English, char set = Windows, Multilingual
18
19 BEGIN
20 VALUE "FileDescription", "zlib data compression library\0"
21 VALUE "FileVersion", "1.2.0\0"
22 VALUE "InternalName", "zlib16\0"
23 VALUE "OriginalFilename", "zlib16.dll\0"
24 VALUE "ProductName", "ZLib16.DLL\0"
25 VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
26 VALUE "LegalCopyright", "(C) 1995-2003 Jean-loup Gailly & Mark Adler\0"
27 END
28 END
29 BLOCK "VarFileInfo"
30 BEGIN
31 VALUE "Translation", 0x0409, 1252
32 END
33END
diff --git a/contrib/vstudio/vc70_32/gvmat32.asm b/contrib/vstudio/vc70_32/gvmat32.asm
new file mode 100644
index 0000000..320348f
--- /dev/null
+++ b/contrib/vstudio/vc70_32/gvmat32.asm
@@ -0,0 +1,905 @@
1;
2; gvmat32.asm -- Asm portion of the optimized longest_match for 32 bits x86
3; Copyright (C) 1995-1996 Jean-loup Gailly and Gilles Vollant.
4; File written by Gilles Vollant, by modifiying the longest_match
5; from Jean-loup Gailly in deflate.c
6; It need wmask == 0x7fff
7; (assembly code is faster with a fixed wmask)
8;
9; For Visual C++ 4.2 and ML 6.11c (version in directory \MASM611C of Win95 DDK)
10; I compile with : "ml /coff /Zi /c gvmat32.asm"
11;
12
13;uInt longest_match_7fff(s, cur_match)
14; deflate_state *s;
15; IPos cur_match; /* current match */
16
17 NbStack equ 76
18 cur_match equ dword ptr[esp+NbStack-0]
19 str_s equ dword ptr[esp+NbStack-4]
20; 5 dword on top (ret,ebp,esi,edi,ebx)
21 adrret equ dword ptr[esp+NbStack-8]
22 pushebp equ dword ptr[esp+NbStack-12]
23 pushedi equ dword ptr[esp+NbStack-16]
24 pushesi equ dword ptr[esp+NbStack-20]
25 pushebx equ dword ptr[esp+NbStack-24]
26
27 chain_length equ dword ptr [esp+NbStack-28]
28 limit equ dword ptr [esp+NbStack-32]
29 best_len equ dword ptr [esp+NbStack-36]
30 window equ dword ptr [esp+NbStack-40]
31 prev equ dword ptr [esp+NbStack-44]
32 scan_start equ word ptr [esp+NbStack-48]
33 wmask equ dword ptr [esp+NbStack-52]
34 match_start_ptr equ dword ptr [esp+NbStack-56]
35 nice_match equ dword ptr [esp+NbStack-60]
36 scan equ dword ptr [esp+NbStack-64]
37
38 windowlen equ dword ptr [esp+NbStack-68]
39 match_start equ dword ptr [esp+NbStack-72]
40 strend equ dword ptr [esp+NbStack-76]
41 NbStackAdd equ (NbStack-24)
42
43 .386p
44
45 name gvmatch
46 .MODEL FLAT
47
48
49
50; all the +4 offsets are due to the addition of pending_buf_size (in zlib
51; in the deflate_state structure since the asm code was first written
52; (if you compile with zlib 1.0.4 or older, remove the +4).
53; Note : these value are good with a 8 bytes boundary pack structure
54 dep_chain_length equ 70h+4
55 dep_window equ 2ch+4
56 dep_strstart equ 60h+4
57 dep_prev_length equ 6ch+4
58 dep_nice_match equ 84h+4
59 dep_w_size equ 20h+4
60 dep_prev equ 34h+4
61 dep_w_mask equ 28h+4
62 dep_good_match equ 80h+4
63 dep_match_start equ 64h+4
64 dep_lookahead equ 68h+4
65
66
67_TEXT segment
68
69IFDEF NOUNDERLINE
70 public longest_match_7fff
71 public longest_match_686
72; public match_init
73ELSE
74 public _longest_match_7fff
75 public _longest_match_686
76; public _match_init
77ENDIF
78
79 MAX_MATCH equ 258
80 MIN_MATCH equ 3
81 MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1)
82
83
84
85IFDEF NOUNDERLINE
86;match_init proc near
87; ret
88;match_init endp
89ELSE
90;_match_init proc near
91; ret
92;_match_init endp
93ENDIF
94
95
96IFDEF NOUNDERLINE
97longest_match_7fff proc near
98ELSE
99_longest_match_7fff proc near
100ENDIF
101
102 mov edx,[esp+4]
103
104
105
106 push ebp
107 push edi
108 push esi
109 push ebx
110
111 sub esp,NbStackAdd
112
113; initialize or check the variables used in match.asm.
114 mov ebp,edx
115
116; chain_length = s->max_chain_length
117; if (prev_length>=good_match) chain_length >>= 2
118 mov edx,[ebp+dep_chain_length]
119 mov ebx,[ebp+dep_prev_length]
120 cmp [ebp+dep_good_match],ebx
121 ja noshr
122 shr edx,2
123noshr:
124; we increment chain_length because in the asm, the --chain_lenght is in the beginning of the loop
125 inc edx
126 mov edi,[ebp+dep_nice_match]
127 mov chain_length,edx
128 mov eax,[ebp+dep_lookahead]
129 cmp eax,edi
130; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
131 jae nolookaheadnicematch
132 mov edi,eax
133nolookaheadnicematch:
134; best_len = s->prev_length
135 mov best_len,ebx
136
137; window = s->window
138 mov esi,[ebp+dep_window]
139 mov ecx,[ebp+dep_strstart]
140 mov window,esi
141
142 mov nice_match,edi
143; scan = window + strstart
144 add esi,ecx
145 mov scan,esi
146; dx = *window
147 mov dx,word ptr [esi]
148; bx = *(window+best_len-1)
149 mov bx,word ptr [esi+ebx-1]
150 add esi,MAX_MATCH-1
151; scan_start = *scan
152 mov scan_start,dx
153; strend = scan + MAX_MATCH-1
154 mov strend,esi
155; bx = scan_end = *(window+best_len-1)
156
157; IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
158; s->strstart - (IPos)MAX_DIST(s) : NIL;
159
160 mov esi,[ebp+dep_w_size]
161 sub esi,MIN_LOOKAHEAD
162; here esi = MAX_DIST(s)
163 sub ecx,esi
164 ja nodist
165 xor ecx,ecx
166nodist:
167 mov limit,ecx
168
169; prev = s->prev
170 mov edx,[ebp+dep_prev]
171 mov prev,edx
172
173;
174 mov edx,dword ptr [ebp+dep_match_start]
175 mov bp,scan_start
176 mov eax,cur_match
177 mov match_start,edx
178
179 mov edx,window
180 mov edi,edx
181 add edi,best_len
182 mov esi,prev
183 dec edi
184; windowlen = window + best_len -1
185 mov windowlen,edi
186
187 jmp beginloop2
188 align 4
189
190; here, in the loop
191; eax = ax = cur_match
192; ecx = limit
193; bx = scan_end
194; bp = scan_start
195; edi = windowlen (window + best_len -1)
196; esi = prev
197
198
199;// here; chain_length <=16
200normalbeg0add16:
201 add chain_length,16
202 jz exitloop
203normalbeg0:
204 cmp word ptr[edi+eax],bx
205 je normalbeg2noroll
206rcontlabnoroll:
207; cur_match = prev[cur_match & wmask]
208 and eax,7fffh
209 mov ax,word ptr[esi+eax*2]
210; if cur_match > limit, go to exitloop
211 cmp ecx,eax
212 jnb exitloop
213; if --chain_length != 0, go to exitloop
214 dec chain_length
215 jnz normalbeg0
216 jmp exitloop
217
218normalbeg2noroll:
219; if (scan_start==*(cur_match+window)) goto normalbeg2
220 cmp bp,word ptr[edx+eax]
221 jne rcontlabnoroll
222 jmp normalbeg2
223
224contloop3:
225 mov edi,windowlen
226
227; cur_match = prev[cur_match & wmask]
228 and eax,7fffh
229 mov ax,word ptr[esi+eax*2]
230; if cur_match > limit, go to exitloop
231 cmp ecx,eax
232jnbexitloopshort1:
233 jnb exitloop
234; if --chain_length != 0, go to exitloop
235
236
237; begin the main loop
238beginloop2:
239 sub chain_length,16+1
240; if chain_length <=16, don't use the unrolled loop
241 jna normalbeg0add16
242
243do16:
244 cmp word ptr[edi+eax],bx
245 je normalbeg2dc0
246
247maccn MACRO lab
248 and eax,7fffh
249 mov ax,word ptr[esi+eax*2]
250 cmp ecx,eax
251 jnb exitloop
252 cmp word ptr[edi+eax],bx
253 je lab
254 ENDM
255
256rcontloop0:
257 maccn normalbeg2dc1
258
259rcontloop1:
260 maccn normalbeg2dc2
261
262rcontloop2:
263 maccn normalbeg2dc3
264
265rcontloop3:
266 maccn normalbeg2dc4
267
268rcontloop4:
269 maccn normalbeg2dc5
270
271rcontloop5:
272 maccn normalbeg2dc6
273
274rcontloop6:
275 maccn normalbeg2dc7
276
277rcontloop7:
278 maccn normalbeg2dc8
279
280rcontloop8:
281 maccn normalbeg2dc9
282
283rcontloop9:
284 maccn normalbeg2dc10
285
286rcontloop10:
287 maccn short normalbeg2dc11
288
289rcontloop11:
290 maccn short normalbeg2dc12
291
292rcontloop12:
293 maccn short normalbeg2dc13
294
295rcontloop13:
296 maccn short normalbeg2dc14
297
298rcontloop14:
299 maccn short normalbeg2dc15
300
301rcontloop15:
302 and eax,7fffh
303 mov ax,word ptr[esi+eax*2]
304 cmp ecx,eax
305 jnb exitloop
306
307 sub chain_length,16
308 ja do16
309 jmp normalbeg0add16
310
311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
312
313normbeg MACRO rcontlab,valsub
314; if we are here, we know that *(match+best_len-1) == scan_end
315 cmp bp,word ptr[edx+eax]
316; if (match != scan_start) goto rcontlab
317 jne rcontlab
318; calculate the good chain_length, and we'll compare scan and match string
319 add chain_length,16-valsub
320 jmp iseq
321 ENDM
322
323
324normalbeg2dc11:
325 normbeg rcontloop11,11
326
327normalbeg2dc12:
328 normbeg short rcontloop12,12
329
330normalbeg2dc13:
331 normbeg short rcontloop13,13
332
333normalbeg2dc14:
334 normbeg short rcontloop14,14
335
336normalbeg2dc15:
337 normbeg short rcontloop15,15
338
339normalbeg2dc10:
340 normbeg rcontloop10,10
341
342normalbeg2dc9:
343 normbeg rcontloop9,9
344
345normalbeg2dc8:
346 normbeg rcontloop8,8
347
348normalbeg2dc7:
349 normbeg rcontloop7,7
350
351normalbeg2dc6:
352 normbeg rcontloop6,6
353
354normalbeg2dc5:
355 normbeg rcontloop5,5
356
357normalbeg2dc4:
358 normbeg rcontloop4,4
359
360normalbeg2dc3:
361 normbeg rcontloop3,3
362
363normalbeg2dc2:
364 normbeg rcontloop2,2
365
366normalbeg2dc1:
367 normbeg rcontloop1,1
368
369normalbeg2dc0:
370 normbeg rcontloop0,0
371
372
373; we go in normalbeg2 because *(ushf*)(match+best_len-1) == scan_end
374
375normalbeg2:
376 mov edi,window
377
378 cmp bp,word ptr[edi+eax]
379 jne contloop3 ; if *(ushf*)match != scan_start, continue
380
381iseq:
382; if we are here, we know that *(match+best_len-1) == scan_end
383; and (match == scan_start)
384
385 mov edi,edx
386 mov esi,scan ; esi = scan
387 add edi,eax ; edi = window + cur_match = match
388
389 mov edx,[esi+3] ; compare manually dword at match+3
390 xor edx,[edi+3] ; and scan +3
391
392 jz begincompare ; if equal, go to long compare
393
394; we will determine the unmatch byte and calculate len (in esi)
395 or dl,dl
396 je eq1rr
397 mov esi,3
398 jmp trfinval
399eq1rr:
400 or dx,dx
401 je eq1
402
403 mov esi,4
404 jmp trfinval
405eq1:
406 and edx,0ffffffh
407 jz eq11
408 mov esi,5
409 jmp trfinval
410eq11:
411 mov esi,6
412 jmp trfinval
413
414begincompare:
415 ; here we now scan and match begin same
416 add edi,6
417 add esi,6
418 mov ecx,(MAX_MATCH-(2+4))/4 ; scan for at most MAX_MATCH bytes
419 repe cmpsd ; loop until mismatch
420
421 je trfin ; go to trfin if not unmatch
422; we determine the unmatch byte
423 sub esi,4
424 mov edx,[edi-4]
425 xor edx,[esi]
426
427 or dl,dl
428 jnz trfin
429 inc esi
430
431 or dx,dx
432 jnz trfin
433 inc esi
434
435 and edx,0ffffffh
436 jnz trfin
437 inc esi
438
439trfin:
440 sub esi,scan ; esi = len
441trfinval:
442; here we have finised compare, and esi contain len of equal string
443 cmp esi,best_len ; if len > best_len, go newbestlen
444 ja short newbestlen
445; now we restore edx, ecx and esi, for the big loop
446 mov esi,prev
447 mov ecx,limit
448 mov edx,window
449 jmp contloop3
450
451newbestlen:
452 mov best_len,esi ; len become best_len
453
454 mov match_start,eax ; save new position as match_start
455 cmp esi,nice_match ; if best_len >= nice_match, exit
456 jae exitloop
457 mov ecx,scan
458 mov edx,window ; restore edx=window
459 add ecx,esi
460 add esi,edx
461
462 dec esi
463 mov windowlen,esi ; windowlen = window + best_len-1
464 mov bx,[ecx-1] ; bx = *(scan+best_len-1) = scan_end
465
466; now we restore ecx and esi, for the big loop :
467 mov esi,prev
468 mov ecx,limit
469 jmp contloop3
470
471exitloop:
472; exit : s->match_start=match_start
473 mov ebx,match_start
474 mov ebp,str_s
475 mov ecx,best_len
476 mov dword ptr [ebp+dep_match_start],ebx
477 mov eax,dword ptr [ebp+dep_lookahead]
478 cmp ecx,eax
479 ja minexlo
480 mov eax,ecx
481minexlo:
482; return min(best_len,s->lookahead)
483
484; restore stack and register ebx,esi,edi,ebp
485 add esp,NbStackAdd
486
487 pop ebx
488 pop esi
489 pop edi
490 pop ebp
491 ret
492InfoAuthor:
493; please don't remove this string !
494; Your are free use gvmat32 in any fre or commercial apps if you don't remove the string in the binary!
495 db 0dh,0ah,"GVMat32 optimised assembly code written 1996-98 by Gilles Vollant",0dh,0ah
496
497
498
499IFDEF NOUNDERLINE
500longest_match_7fff endp
501ELSE
502_longest_match_7fff endp
503ENDIF
504
505
506IFDEF NOUNDERLINE
507cpudetect32 proc near
508ELSE
509_cpudetect32 proc near
510ENDIF
511
512 push ebx
513
514 pushfd ; push original EFLAGS
515 pop eax ; get original EFLAGS
516 mov ecx, eax ; save original EFLAGS
517 xor eax, 40000h ; flip AC bit in EFLAGS
518 push eax ; save new EFLAGS value on stack
519 popfd ; replace current EFLAGS value
520 pushfd ; get new EFLAGS
521 pop eax ; store new EFLAGS in EAX
522 xor eax, ecx ; can’t toggle AC bit, processor=80386
523 jz end_cpu_is_386 ; jump if 80386 processor
524 push ecx
525 popfd ; restore AC bit in EFLAGS first
526
527 pushfd
528 pushfd
529 pop ecx
530
531 mov eax, ecx ; get original EFLAGS
532 xor eax, 200000h ; flip ID bit in EFLAGS
533 push eax ; save new EFLAGS value on stack
534 popfd ; replace current EFLAGS value
535 pushfd ; get new EFLAGS
536 pop eax ; store new EFLAGS in EAX
537 popfd ; restore original EFLAGS
538 xor eax, ecx ; can’t toggle ID bit,
539 je is_old_486 ; processor=old
540
541 mov eax,1
542 db 0fh,0a2h ;CPUID
543
544exitcpudetect:
545 pop ebx
546 ret
547
548end_cpu_is_386:
549 mov eax,0300h
550 jmp exitcpudetect
551
552is_old_486:
553 mov eax,0400h
554 jmp exitcpudetect
555
556IFDEF NOUNDERLINE
557cpudetect32 endp
558ELSE
559_cpudetect32 endp
560ENDIF
561
562
563
564
565MAX_MATCH equ 258
566MIN_MATCH equ 3
567MIN_LOOKAHEAD equ (MAX_MATCH + MIN_MATCH + 1)
568MAX_MATCH_8_ equ ((MAX_MATCH + 7) AND 0FFF0h)
569
570
571;;; stack frame offsets
572
573chainlenwmask equ esp + 0 ; high word: current chain len
574 ; low word: s->wmask
575window equ esp + 4 ; local copy of s->window
576windowbestlen equ esp + 8 ; s->window + bestlen
577scanstart equ esp + 16 ; first two bytes of string
578scanend equ esp + 12 ; last two bytes of string
579scanalign equ esp + 20 ; dword-misalignment of string
580nicematch equ esp + 24 ; a good enough match size
581bestlen equ esp + 28 ; size of best match so far
582scan equ esp + 32 ; ptr to string wanting match
583
584LocalVarsSize equ 36
585; saved ebx byte esp + 36
586; saved edi byte esp + 40
587; saved esi byte esp + 44
588; saved ebp byte esp + 48
589; return address byte esp + 52
590deflatestate equ esp + 56 ; the function arguments
591curmatch equ esp + 60
592
593;;; Offsets for fields in the deflate_state structure. These numbers
594;;; are calculated from the definition of deflate_state, with the
595;;; assumption that the compiler will dword-align the fields. (Thus,
596;;; changing the definition of deflate_state could easily cause this
597;;; program to crash horribly, without so much as a warning at
598;;; compile time. Sigh.)
599
600dsWSize equ 36
601dsWMask equ 44
602dsWindow equ 48
603dsPrev equ 56
604dsMatchLen equ 88
605dsPrevMatch equ 92
606dsStrStart equ 100
607dsMatchStart equ 104
608dsLookahead equ 108
609dsPrevLen equ 112
610dsMaxChainLen equ 116
611dsGoodMatch equ 132
612dsNiceMatch equ 136
613
614
615;;; match.asm -- Pentium-Pro-optimized version of longest_match()
616;;; Written for zlib 1.1.2
617;;; Copyright (C) 1998 Brian Raiter <breadbox@muppetlabs.com>
618;;; You can look at http://www.muppetlabs.com/~breadbox/software/assembly.html
619;;;
620;;; This is free software; you can redistribute it and/or modify it
621;;; under the terms of the GNU General Public License.
622
623;GLOBAL _longest_match, _match_init
624
625
626;SECTION .text
627
628;;; uInt longest_match(deflate_state *deflatestate, IPos curmatch)
629
630;_longest_match:
631IFDEF NOUNDERLINE
632longest_match_686 proc near
633ELSE
634_longest_match_686 proc near
635ENDIF
636
637
638;;; Save registers that the compiler may be using, and adjust esp to
639;;; make room for our stack frame.
640
641 push ebp
642 push edi
643 push esi
644 push ebx
645 sub esp, LocalVarsSize
646
647;;; Retrieve the function arguments. ecx will hold cur_match
648;;; throughout the entire function. edx will hold the pointer to the
649;;; deflate_state structure during the function's setup (before
650;;; entering the main loop.
651
652 mov edx, [deflatestate]
653 mov ecx, [curmatch]
654
655;;; uInt wmask = s->w_mask;
656;;; unsigned chain_length = s->max_chain_length;
657;;; if (s->prev_length >= s->good_match) {
658;;; chain_length >>= 2;
659;;; }
660
661 mov eax, [edx + dsPrevLen]
662 mov ebx, [edx + dsGoodMatch]
663 cmp eax, ebx
664 mov eax, [edx + dsWMask]
665 mov ebx, [edx + dsMaxChainLen]
666 jl LastMatchGood
667 shr ebx, 2
668LastMatchGood:
669
670;;; chainlen is decremented once beforehand so that the function can
671;;; use the sign flag instead of the zero flag for the exit test.
672;;; It is then shifted into the high word, to make room for the wmask
673;;; value, which it will always accompany.
674
675 dec ebx
676 shl ebx, 16
677 or ebx, eax
678 mov [chainlenwmask], ebx
679
680;;; if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
681
682 mov eax, [edx + dsNiceMatch]
683 mov ebx, [edx + dsLookahead]
684 cmp ebx, eax
685 jl LookaheadLess
686 mov ebx, eax
687LookaheadLess: mov [nicematch], ebx
688
689;;; register Bytef *scan = s->window + s->strstart;
690
691 mov esi, [edx + dsWindow]
692 mov [window], esi
693 mov ebp, [edx + dsStrStart]
694 lea edi, [esi + ebp]
695 mov [scan], edi
696
697;;; Determine how many bytes the scan ptr is off from being
698;;; dword-aligned.
699
700 mov eax, edi
701 neg eax
702 and eax, 3
703 mov [scanalign], eax
704
705;;; IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
706;;; s->strstart - (IPos)MAX_DIST(s) : NIL;
707
708 mov eax, [edx + dsWSize]
709 sub eax, MIN_LOOKAHEAD
710 sub ebp, eax
711 jg LimitPositive
712 xor ebp, ebp
713LimitPositive:
714
715;;; int best_len = s->prev_length;
716
717 mov eax, [edx + dsPrevLen]
718 mov [bestlen], eax
719
720;;; Store the sum of s->window + best_len in esi locally, and in esi.
721
722 add esi, eax
723 mov [windowbestlen], esi
724
725;;; register ush scan_start = *(ushf*)scan;
726;;; register ush scan_end = *(ushf*)(scan+best_len-1);
727;;; Posf *prev = s->prev;
728
729 movzx ebx, word ptr [edi]
730 mov [scanstart], ebx
731 movzx ebx, word ptr [edi + eax - 1]
732 mov [scanend], ebx
733 mov edi, [edx + dsPrev]
734
735;;; Jump into the main loop.
736
737 mov edx, [chainlenwmask]
738 jmp short LoopEntry
739
740align 4
741
742;;; do {
743;;; match = s->window + cur_match;
744;;; if (*(ushf*)(match+best_len-1) != scan_end ||
745;;; *(ushf*)match != scan_start) continue;
746;;; [...]
747;;; } while ((cur_match = prev[cur_match & wmask]) > limit
748;;; && --chain_length != 0);
749;;;
750;;; Here is the inner loop of the function. The function will spend the
751;;; majority of its time in this loop, and majority of that time will
752;;; be spent in the first ten instructions.
753;;;
754;;; Within this loop:
755;;; ebx = scanend
756;;; ecx = curmatch
757;;; edx = chainlenwmask - i.e., ((chainlen << 16) | wmask)
758;;; esi = windowbestlen - i.e., (window + bestlen)
759;;; edi = prev
760;;; ebp = limit
761
762LookupLoop:
763 and ecx, edx
764 movzx ecx, word ptr [edi + ecx*2]
765 cmp ecx, ebp
766 jbe LeaveNow
767 sub edx, 00010000h
768 js LeaveNow
769LoopEntry: movzx eax, word ptr [esi + ecx - 1]
770 cmp eax, ebx
771 jnz LookupLoop
772 mov eax, [window]
773 movzx eax, word ptr [eax + ecx]
774 cmp eax, [scanstart]
775 jnz LookupLoop
776
777;;; Store the current value of chainlen.
778
779 mov [chainlenwmask], edx
780
781;;; Point edi to the string under scrutiny, and esi to the string we
782;;; are hoping to match it up with. In actuality, esi and edi are
783;;; both pointed (MAX_MATCH_8 - scanalign) bytes ahead, and edx is
784;;; initialized to -(MAX_MATCH_8 - scanalign).
785
786 mov esi, [window]
787 mov edi, [scan]
788 add esi, ecx
789 mov eax, [scanalign]
790 mov edx, 0fffffef8h; -(MAX_MATCH_8)
791 lea edi, [edi + eax + 0108h] ;MAX_MATCH_8]
792 lea esi, [esi + eax + 0108h] ;MAX_MATCH_8]
793
794;;; Test the strings for equality, 8 bytes at a time. At the end,
795;;; adjust edx so that it is offset to the exact byte that mismatched.
796;;;
797;;; We already know at this point that the first three bytes of the
798;;; strings match each other, and they can be safely passed over before
799;;; starting the compare loop. So what this code does is skip over 0-3
800;;; bytes, as much as necessary in order to dword-align the edi
801;;; pointer. (esi will still be misaligned three times out of four.)
802;;;
803;;; It should be confessed that this loop usually does not represent
804;;; much of the total running time. Replacing it with a more
805;;; straightforward "rep cmpsb" would not drastically degrade
806;;; performance.
807
808LoopCmps:
809 mov eax, [esi + edx]
810 xor eax, [edi + edx]
811 jnz LeaveLoopCmps
812 mov eax, [esi + edx + 4]
813 xor eax, [edi + edx + 4]
814 jnz LeaveLoopCmps4
815 add edx, 8
816 jnz LoopCmps
817 jmp short LenMaximum
818LeaveLoopCmps4: add edx, 4
819LeaveLoopCmps: test eax, 0000FFFFh
820 jnz LenLower
821 add edx, 2
822 shr eax, 16
823LenLower: sub al, 1
824 adc edx, 0
825
826;;; Calculate the length of the match. If it is longer than MAX_MATCH,
827;;; then automatically accept it as the best possible match and leave.
828
829 lea eax, [edi + edx]
830 mov edi, [scan]
831 sub eax, edi
832 cmp eax, MAX_MATCH
833 jge LenMaximum
834
835;;; If the length of the match is not longer than the best match we
836;;; have so far, then forget it and return to the lookup loop.
837
838 mov edx, [deflatestate]
839 mov ebx, [bestlen]
840 cmp eax, ebx
841 jg LongerMatch
842 mov esi, [windowbestlen]
843 mov edi, [edx + dsPrev]
844 mov ebx, [scanend]
845 mov edx, [chainlenwmask]
846 jmp LookupLoop
847
848;;; s->match_start = cur_match;
849;;; best_len = len;
850;;; if (len >= nice_match) break;
851;;; scan_end = *(ushf*)(scan+best_len-1);
852
853LongerMatch: mov ebx, [nicematch]
854 mov [bestlen], eax
855 mov [edx + dsMatchStart], ecx
856 cmp eax, ebx
857 jge LeaveNow
858 mov esi, [window]
859 add esi, eax
860 mov [windowbestlen], esi
861 movzx ebx, word ptr [edi + eax - 1]
862 mov edi, [edx + dsPrev]
863 mov [scanend], ebx
864 mov edx, [chainlenwmask]
865 jmp LookupLoop
866
867;;; Accept the current string, with the maximum possible length.
868
869LenMaximum: mov edx, [deflatestate]
870 mov dword ptr [bestlen], MAX_MATCH
871 mov [edx + dsMatchStart], ecx
872
873;;; if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
874;;; return s->lookahead;
875
876LeaveNow:
877 mov edx, [deflatestate]
878 mov ebx, [bestlen]
879 mov eax, [edx + dsLookahead]
880 cmp ebx, eax
881 jg LookaheadRet
882 mov eax, ebx
883LookaheadRet:
884
885;;; Restore the stack and return from whence we came.
886
887 add esp, LocalVarsSize
888 pop ebx
889 pop esi
890 pop edi
891 pop ebp
892
893 ret
894; please don't remove this string !
895; Your are free use gvmat32 in any fre or commercial apps if you don't remove the string in the binary!
896 db 0dh,0ah,"asm686 with masm, code optimised assembly code from Brian Raiter, written 1998",0dh,0ah
897
898IFDEF NOUNDERLINE
899longest_match_686 endp
900ELSE
901_longest_match_686 endp
902ENDIF
903
904_TEXT ends
905end
diff --git a/contrib/vstudio/vc70_32/gvmat32.obj b/contrib/vstudio/vc70_32/gvmat32.obj
new file mode 100644
index 0000000..5b2f856
--- /dev/null
+++ b/contrib/vstudio/vc70_32/gvmat32.obj
Binary files differ
diff --git a/contrib/vstudio/vc70_32/gvmat32c.c b/contrib/vstudio/vc70_32/gvmat32c.c
new file mode 100644
index 0000000..38be10b
--- /dev/null
+++ b/contrib/vstudio/vc70_32/gvmat32c.c
@@ -0,0 +1,209 @@
1/* gvmat32.c -- C portion of the optimized longest_match for 32 bits x86
2 * Copyright (C) 1995-1996 Jean-loup Gailly and Gilles Vollant.
3 * File written by Gilles Vollant, by modifiying the longest_match
4 * from Jean-loup Gailly in deflate.c
5 * it prepare all parameters and call the assembly longest_match_gvasm
6 * longest_match execute standard C code is wmask != 0x7fff
7 * (assembly code is faster with a fixed wmask)
8 *
9 */
10
11#include "deflate.h"
12
13#undef FAR
14//#include <windows.h>
15
16#ifdef ASMV
17#define NIL 0
18
19#define UNALIGNED_OK
20
21
22/* if your C compiler don't add underline before function name,
23 define ADD_UNDERLINE_ASMFUNC */
24#ifdef ADD_UNDERLINE_ASMFUNC
25#define longest_match_7fff _longest_match_7fff
26#define longest_match_686 _longest_match_686
27#define cpudetect32 _cpudetect32
28#endif
29
30
31
32void match_init()
33{
34}
35
36unsigned long cpudetect32();
37
38uInt longest_match_c(
39 deflate_state *s,
40 IPos cur_match); /* current match */
41
42
43uInt longest_match_7fff(
44 deflate_state *s,
45 IPos cur_match); /* current match */
46
47uInt longest_match_686(
48 deflate_state *s,
49 IPos cur_match); /* current match */
50
51uInt longest_match(
52 deflate_state *s,
53 IPos cur_match) /* current match */
54{
55 static uInt iIsPPro=2;
56
57 if ((s->w_mask == 0x7fff) && (iIsPPro==0))
58 return longest_match_7fff(s,cur_match);
59
60 if (iIsPPro==1)
61 return longest_match_686(s,cur_match);
62
63 if (iIsPPro==2)
64 iIsPPro = (((cpudetect32()/0x100)&0xf)>=6) ? 1 : 0;
65
66 return longest_match_c(s,cur_match);
67}
68
69
70
71uInt longest_match_c(s, cur_match)
72 deflate_state *s;
73 IPos cur_match; /* current match */
74{
75 unsigned chain_length = s->max_chain_length;/* max hash chain length */
76 register Bytef *scan = s->window + s->strstart; /* current string */
77 register Bytef *match; /* matched string */
78 register int len; /* length of current match */
79 int best_len = s->prev_length; /* best match length so far */
80 int nice_match = s->nice_match; /* stop if match long enough */
81 IPos limit = s->strstart > (IPos)MAX_DIST(s) ?
82 s->strstart - (IPos)MAX_DIST(s) : NIL;
83 /* Stop when cur_match becomes <= limit. To simplify the code,
84 * we prevent matches with the string of window index 0.
85 */
86 Posf *prev = s->prev;
87 uInt wmask = s->w_mask;
88
89#ifdef UNALIGNED_OK
90 /* Compare two bytes at a time. Note: this is not always beneficial.
91 * Try with and without -DUNALIGNED_OK to check.
92 */
93 register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1;
94 register ush scan_start = *(ushf*)scan;
95 register ush scan_end = *(ushf*)(scan+best_len-1);
96#else
97 register Bytef *strend = s->window + s->strstart + MAX_MATCH;
98 register Byte scan_end1 = scan[best_len-1];
99 register Byte scan_end = scan[best_len];
100#endif
101
102 /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
103 * It is easy to get rid of this optimization if necessary.
104 */
105 Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
106
107 /* Do not waste too much time if we already have a good match: */
108 if (s->prev_length >= s->good_match) {
109 chain_length >>= 2;
110 }
111 /* Do not look for matches beyond the end of the input. This is necessary
112 * to make deflate deterministic.
113 */
114 if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead;
115
116 Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
117
118 do {
119 Assert(cur_match < s->strstart, "no future");
120 match = s->window + cur_match;
121
122 /* Skip to next match if the match length cannot increase
123 * or if the match length is less than 2:
124 */
125#if (defined(UNALIGNED_OK) && MAX_MATCH == 258)
126 /* This code assumes sizeof(unsigned short) == 2. Do not use
127 * UNALIGNED_OK if your compiler uses a different size.
128 */
129 if (*(ushf*)(match+best_len-1) != scan_end ||
130 *(ushf*)match != scan_start) continue;
131
132 /* It is not necessary to compare scan[2] and match[2] since they are
133 * always equal when the other bytes match, given that the hash keys
134 * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at
135 * strstart+3, +5, ... up to strstart+257. We check for insufficient
136 * lookahead only every 4th comparison; the 128th check will be made
137 * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is
138 * necessary to put more guard bytes at the end of the window, or
139 * to check more often for insufficient lookahead.
140 */
141 Assert(scan[2] == match[2], "scan[2]?");
142 scan++, match++;
143 do {
144 } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
145 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
146 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
147 *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
148 scan < strend);
149 /* The funny "do {}" generates better code on most compilers */
150
151 /* Here, scan <= window+strstart+257 */
152 Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
153 if (*scan == *match) scan++;
154
155 len = (MAX_MATCH - 1) - (int)(strend-scan);
156 scan = strend - (MAX_MATCH-1);
157
158#else /* UNALIGNED_OK */
159
160 if (match[best_len] != scan_end ||
161 match[best_len-1] != scan_end1 ||
162 *match != *scan ||
163 *++match != scan[1]) continue;
164
165 /* The check at best_len-1 can be removed because it will be made
166 * again later. (This heuristic is not always a win.)
167 * It is not necessary to compare scan[2] and match[2] since they
168 * are always equal when the other bytes match, given that
169 * the hash keys are equal and that HASH_BITS >= 8.
170 */
171 scan += 2, match++;
172 Assert(*scan == *match, "match[2]?");
173
174 /* We check for insufficient lookahead only every 8th comparison;
175 * the 256th check will be made at strstart+258.
176 */
177 do {
178 } while (*++scan == *++match && *++scan == *++match &&
179 *++scan == *++match && *++scan == *++match &&
180 *++scan == *++match && *++scan == *++match &&
181 *++scan == *++match && *++scan == *++match &&
182 scan < strend);
183
184 Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
185
186 len = MAX_MATCH - (int)(strend - scan);
187 scan = strend - MAX_MATCH;
188
189#endif /* UNALIGNED_OK */
190
191 if (len > best_len) {
192 s->match_start = cur_match;
193 best_len = len;
194 if (len >= nice_match) break;
195#ifdef UNALIGNED_OK
196 scan_end = *(ushf*)(scan+best_len-1);
197#else
198 scan_end1 = scan[best_len-1];
199 scan_end = scan[best_len];
200#endif
201 }
202 } while ((cur_match = prev[cur_match & wmask]) > limit
203 && --chain_length != 0);
204
205 if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
206 return s->lookahead;
207}
208
209#endif /* ASMV */
diff --git a/contrib/vstudio/vc70_32/inffastAsm.asm b/contrib/vstudio/vc70_32/inffastAsm.asm
new file mode 100644
index 0000000..f4b6a56
--- /dev/null
+++ b/contrib/vstudio/vc70_32/inffastAsm.asm
@@ -0,0 +1,1020 @@
1; 75 "inffast.S"
2;FILE "inffast.S"
3
4;;;GLOBAL _inflate_fast
5
6;;;SECTION .text
7
8
9
10 .586p
11 .mmx
12
13 name inflate_fast_x86
14 .MODEL FLAT
15
16_DATA segment
17inflate_fast_use_mmx:
18dd 1
19
20
21_TEXT segment
22PUBLIC _inflate_fast
23
24ALIGN 4
25_inflate_fast:
26 jmp inflate_fast_entry
27
28
29
30ALIGN 4
31 db 'Fast decoding Code from Chris Anderson'
32 db 0
33
34ALIGN 4
35invalid_literal_length_code_msg:
36 db 'invalid literal/length code'
37 db 0
38
39ALIGN 4
40invalid_distance_code_msg:
41 db 'invalid distance code'
42 db 0
43
44ALIGN 4
45invalid_distance_too_far_msg:
46 db 'invalid distance too far back'
47 db 0
48
49
50ALIGN 4
51inflate_fast_mask:
52dd 0
53dd 1
54dd 3
55dd 7
56dd 15
57dd 31
58dd 63
59dd 127
60dd 255
61dd 511
62dd 1023
63dd 2047
64dd 4095
65dd 8191
66dd 16383
67dd 32767
68dd 65535
69dd 131071
70dd 262143
71dd 524287
72dd 1048575
73dd 2097151
74dd 4194303
75dd 8388607
76dd 16777215
77dd 33554431
78dd 67108863
79dd 134217727
80dd 268435455
81dd 536870911
82dd 1073741823
83dd 2147483647
84dd 4294967295
85
86
87;;SECTION .text
88; 205 "inffast.S"
89;GLOBAL inflate_fast_use_mmx
90
91;SECTION .data
92
93
94; GLOBAL inflate_fast_use_mmx:object
95;.size inflate_fast_use_mmx, 4
96; 226 "inffast.S"
97;SECTION .text
98
99ALIGN 4
100inflate_fast_entry:
101 push edi
102 push esi
103 push ebp
104 push ebx
105 pushfd
106 sub esp,64
107 cld
108
109
110
111
112 mov esi, [esp+88]
113 mov edi, [esi+28]
114
115
116
117
118
119
120
121 mov edx, [esi+4]
122 mov eax, [esi+0]
123
124 add edx,eax
125 sub edx,11
126
127 mov [esp+44],eax
128 mov [esp+20],edx
129
130 mov ebp, [esp+92]
131 mov ecx, [esi+16]
132 mov ebx, [esi+12]
133
134 sub ebp,ecx
135 neg ebp
136 add ebp,ebx
137
138 sub ecx,257
139 add ecx,ebx
140
141 mov [esp+60],ebx
142 mov [esp+40],ebp
143 mov [esp+16],ecx
144; 285 "inffast.S"
145 mov eax, [edi+64]
146 mov ecx, [edi+68]
147
148 mov [esp+8],eax
149 mov [esp+12],ecx
150
151 mov eax,1
152 mov ecx, [edi+72]
153 shl eax,cl
154 dec eax
155 mov [esp+0],eax
156
157 mov eax,1
158 mov ecx, [edi+76]
159 shl eax,cl
160 dec eax
161 mov [esp+4],eax
162
163 mov eax, [edi+32]
164 mov ecx, [edi+36]
165 mov edx, [edi+40]
166
167 mov [esp+52],eax
168 mov [esp+48],ecx
169 mov [esp+56],edx
170
171 mov ebp, [edi+44]
172 mov ebx, [edi+48]
173; 321 "inffast.S"
174 mov esi, [esp+44]
175 mov ecx, [esp+20]
176 cmp ecx,esi
177 ja L_align_long
178
179 add ecx,11
180 sub ecx,esi
181 mov eax,12
182 sub eax,ecx
183 lea edi, [esp+28]
184 rep movsb
185 mov ecx,eax
186 xor eax,eax
187 rep stosb
188 lea esi, [esp+28]
189 mov [esp+20],esi
190 jmp L_is_aligned
191
192
193L_align_long:
194 test esi,3
195 jz L_is_aligned
196 xor eax,eax
197 mov al, [esi]
198 inc esi
199 mov ecx,ebx
200 add ebx,8
201 shl eax,cl
202 or ebp,eax
203 jmp L_align_long
204
205L_is_aligned:
206 mov edi, [esp+60]
207; 366 "inffast.S"
208L_check_mmx:
209 cmp dword ptr [inflate_fast_use_mmx],2
210 je L_init_mmx
211 ja L_do_loop
212
213 push eax
214 push ebx
215 push ecx
216 push edx
217 pushfd
218 mov eax, [esp]
219 xor dword ptr [esp],0200000h
220
221
222
223
224 popfd
225 pushfd
226 pop edx
227 xor edx,eax
228 jz L_dont_use_mmx
229 xor eax,eax
230 cpuid
231 cmp ebx,0756e6547h
232 jne L_dont_use_mmx
233 cmp ecx,06c65746eh
234 jne L_dont_use_mmx
235 cmp edx,049656e69h
236 jne L_dont_use_mmx
237 mov eax,1
238 cpuid
239 shr eax,8
240 and eax,15
241 cmp eax,6
242 jne L_dont_use_mmx
243 test edx,0800000h
244 jnz L_use_mmx
245 jmp L_dont_use_mmx
246L_use_mmx:
247 mov dword ptr [inflate_fast_use_mmx],2
248 jmp L_check_mmx_pop
249L_dont_use_mmx:
250 mov dword ptr [inflate_fast_use_mmx],3
251L_check_mmx_pop:
252 pop edx
253 pop ecx
254 pop ebx
255 pop eax
256 jmp L_check_mmx
257; 426 "inffast.S"
258ALIGN 4
259L_do_loop:
260; 437 "inffast.S"
261 cmp bl,15
262 ja L_get_length_code
263
264 xor eax,eax
265 lodsw
266 mov cl,bl
267 add bl,16
268 shl eax,cl
269 or ebp,eax
270
271L_get_length_code:
272 mov edx, [esp+0]
273 mov ecx, [esp+8]
274 and edx,ebp
275 mov eax, [ecx+edx*4]
276
277L_dolen:
278
279
280
281
282
283
284 mov cl,ah
285 sub bl,ah
286 shr ebp,cl
287
288
289
290
291
292
293 test al,al
294 jnz L_test_for_length_base
295
296 shr eax,16
297 stosb
298
299L_while_test:
300
301
302 cmp [esp+16],edi
303 jbe L_break_loop
304
305 cmp [esp+20],esi
306 ja L_do_loop
307 jmp L_break_loop
308
309L_test_for_length_base:
310; 502 "inffast.S"
311 mov edx,eax
312 shr edx,16
313 mov cl,al
314
315 test al,16
316 jz L_test_for_second_level_length
317 and cl,15
318 jz L_save_len
319 cmp bl,cl
320 jae L_add_bits_to_len
321
322 mov ch,cl
323 xor eax,eax
324 lodsw
325 mov cl,bl
326 add bl,16
327 shl eax,cl
328 or ebp,eax
329 mov cl,ch
330
331L_add_bits_to_len:
332 mov eax,1
333 shl eax,cl
334 dec eax
335 sub bl,cl
336 and eax,ebp
337 shr ebp,cl
338 add edx,eax
339
340L_save_len:
341 mov [esp+24],edx
342
343
344L_decode_distance:
345; 549 "inffast.S"
346 cmp bl,15
347 ja L_get_distance_code
348
349 xor eax,eax
350 lodsw
351 mov cl,bl
352 add bl,16
353 shl eax,cl
354 or ebp,eax
355
356L_get_distance_code:
357 mov edx, [esp+4]
358 mov ecx, [esp+12]
359 and edx,ebp
360 mov eax, [ecx+edx*4]
361
362
363L_dodist:
364 mov edx,eax
365 shr edx,16
366 mov cl,ah
367 sub bl,ah
368 shr ebp,cl
369; 584 "inffast.S"
370 mov cl,al
371
372 test al,16
373 jz L_test_for_second_level_dist
374 and cl,15
375 jz L_check_dist_one
376 cmp bl,cl
377 jae L_add_bits_to_dist
378
379 mov ch,cl
380 xor eax,eax
381 lodsw
382 mov cl,bl
383 add bl,16
384 shl eax,cl
385 or ebp,eax
386 mov cl,ch
387
388L_add_bits_to_dist:
389 mov eax,1
390 shl eax,cl
391 dec eax
392 sub bl,cl
393 and eax,ebp
394 shr ebp,cl
395 add edx,eax
396 jmp L_check_window
397
398L_check_window:
399; 625 "inffast.S"
400 mov [esp+44],esi
401 mov eax,edi
402 sub eax, [esp+40]
403
404 cmp eax,edx
405 jb L_clip_window
406
407 mov ecx, [esp+24]
408 mov esi,edi
409 sub esi,edx
410
411 sub ecx,3
412 mov al, [esi]
413 mov [edi],al
414 mov al, [esi+1]
415 mov dl, [esi+2]
416 add esi,3
417 mov [edi+1],al
418 mov [edi+2],dl
419 add edi,3
420 rep movsb
421
422 mov esi, [esp+44]
423 jmp L_while_test
424
425ALIGN 4
426L_check_dist_one:
427 cmp edx,1
428 jne L_check_window
429 cmp [esp+40],edi
430 je L_check_window
431
432 dec edi
433 mov ecx, [esp+24]
434 mov al, [edi]
435 sub ecx,3
436
437 mov [edi+1],al
438 mov [edi+2],al
439 mov [edi+3],al
440 add edi,4
441 rep stosb
442
443 jmp L_while_test
444
445ALIGN 4
446L_test_for_second_level_length:
447
448
449
450
451 test al,64
452 jnz L_test_for_end_of_block
453
454 mov eax,1
455 shl eax,cl
456 dec eax
457 and eax,ebp
458 add eax,edx
459 mov edx, [esp+8]
460 mov eax, [edx+eax*4]
461 jmp L_dolen
462
463ALIGN 4
464L_test_for_second_level_dist:
465
466
467
468
469 test al,64
470 jnz L_invalid_distance_code
471
472 mov eax,1
473 shl eax,cl
474 dec eax
475 and eax,ebp
476 add eax,edx
477 mov edx, [esp+12]
478 mov eax, [edx+eax*4]
479 jmp L_dodist
480
481ALIGN 4
482L_clip_window:
483; 721 "inffast.S"
484 mov ecx,eax
485 mov eax, [esp+52]
486 neg ecx
487 mov esi, [esp+56]
488
489 cmp eax,edx
490 jb L_invalid_distance_too_far
491
492 add ecx,edx
493 cmp dword ptr [esp+48],0
494 jne L_wrap_around_window
495
496 sub eax,ecx
497 add esi,eax
498; 749 "inffast.S"
499 mov eax, [esp+24]
500 cmp eax,ecx
501 jbe L_do_copy1
502
503 sub eax,ecx
504 rep movsb
505 mov esi,edi
506 sub esi,edx
507 jmp L_do_copy1
508
509 cmp eax,ecx
510 jbe L_do_copy1
511
512 sub eax,ecx
513 rep movsb
514 mov esi,edi
515 sub esi,edx
516 jmp L_do_copy1
517
518L_wrap_around_window:
519; 793 "inffast.S"
520 mov eax, [esp+48]
521 cmp ecx,eax
522 jbe L_contiguous_in_window
523
524 add esi, [esp+52]
525 add esi,eax
526 sub esi,ecx
527 sub ecx,eax
528
529
530 mov eax, [esp+24]
531 cmp eax,ecx
532 jbe L_do_copy1
533
534 sub eax,ecx
535 rep movsb
536 mov esi, [esp+56]
537 mov ecx, [esp+48]
538 cmp eax,ecx
539 jbe L_do_copy1
540
541 sub eax,ecx
542 rep movsb
543 mov esi,edi
544 sub esi,edx
545 jmp L_do_copy1
546
547L_contiguous_in_window:
548; 836 "inffast.S"
549 add esi,eax
550 sub esi,ecx
551
552
553 mov eax, [esp+24]
554 cmp eax,ecx
555 jbe L_do_copy1
556
557 sub eax,ecx
558 rep movsb
559 mov esi,edi
560 sub esi,edx
561
562L_do_copy1:
563; 862 "inffast.S"
564 mov ecx,eax
565 rep movsb
566
567 mov esi, [esp+44]
568 jmp L_while_test
569; 878 "inffast.S"
570ALIGN 4
571L_init_mmx:
572 emms
573
574
575
576
577
578 movd mm0,ebp
579 mov ebp,ebx
580; 896 "inffast.S"
581 movd mm4,[esp+0]
582 movq mm3,mm4
583 movd mm5,[esp+4]
584 movq mm2,mm5
585 pxor mm1,mm1
586 mov ebx, [esp+8]
587 jmp L_do_loop_mmx
588
589ALIGN 4
590L_do_loop_mmx:
591 psrlq mm0,mm1
592
593 cmp ebp,32
594 ja L_get_length_code_mmx
595
596 movd mm6,ebp
597 movd mm7,[esi]
598 add esi,4
599 psllq mm7,mm6
600 add ebp,32
601 por mm0,mm7
602
603L_get_length_code_mmx:
604 pand mm4,mm0
605 movd eax,mm4
606 movq mm4,mm3
607 mov eax, [ebx+eax*4]
608
609L_dolen_mmx:
610 movzx ecx,ah
611 movd mm1,ecx
612 sub ebp,ecx
613
614 test al,al
615 jnz L_test_for_length_base_mmx
616
617 shr eax,16
618 stosb
619
620L_while_test_mmx:
621
622
623 cmp [esp+16],edi
624 jbe L_break_loop
625
626 cmp [esp+20],esi
627 ja L_do_loop_mmx
628 jmp L_break_loop
629
630L_test_for_length_base_mmx:
631
632 mov edx,eax
633 shr edx,16
634
635 test al,16
636 jz L_test_for_second_level_length_mmx
637 and eax,15
638 jz L_decode_distance_mmx
639
640 psrlq mm0,mm1
641 movd mm1,eax
642 movd ecx,mm0
643 sub ebp,eax
644 and ecx, [inflate_fast_mask+eax*4]
645 add edx,ecx
646
647L_decode_distance_mmx:
648 psrlq mm0,mm1
649
650 cmp ebp,32
651 ja L_get_dist_code_mmx
652
653 movd mm6,ebp
654 movd mm7,[esi]
655 add esi,4
656 psllq mm7,mm6
657 add ebp,32
658 por mm0,mm7
659
660L_get_dist_code_mmx:
661 mov ebx, [esp+12]
662 pand mm5,mm0
663 movd eax,mm5
664 movq mm5,mm2
665 mov eax, [ebx+eax*4]
666
667L_dodist_mmx:
668
669 movzx ecx,ah
670 mov ebx,eax
671 shr ebx,16
672 sub ebp,ecx
673 movd mm1,ecx
674
675 test al,16
676 jz L_test_for_second_level_dist_mmx
677 and eax,15
678 jz L_check_dist_one_mmx
679
680L_add_bits_to_dist_mmx:
681 psrlq mm0,mm1
682 movd mm1,eax
683 movd ecx,mm0
684 sub ebp,eax
685 and ecx, [inflate_fast_mask+eax*4]
686 add ebx,ecx
687
688L_check_window_mmx:
689 mov [esp+44],esi
690 mov eax,edi
691 sub eax, [esp+40]
692
693 cmp eax,ebx
694 jb L_clip_window_mmx
695
696 mov ecx,edx
697 mov esi,edi
698 sub esi,ebx
699
700 sub ecx,3
701 mov al, [esi]
702 mov [edi],al
703 mov al, [esi+1]
704 mov dl, [esi+2]
705 add esi,3
706 mov [edi+1],al
707 mov [edi+2],dl
708 add edi,3
709 rep movsb
710
711 mov esi, [esp+44]
712 mov ebx, [esp+8]
713 jmp L_while_test_mmx
714
715ALIGN 4
716L_check_dist_one_mmx:
717 cmp ebx,1
718 jne L_check_window_mmx
719 cmp [esp+40],edi
720 je L_check_window_mmx
721
722 dec edi
723 mov ecx,edx
724 mov al, [edi]
725 sub ecx,3
726
727 mov [edi+1],al
728 mov [edi+2],al
729 mov [edi+3],al
730 add edi,4
731 rep stosb
732
733 mov ebx, [esp+8]
734 jmp L_while_test_mmx
735
736ALIGN 4
737L_test_for_second_level_length_mmx:
738 test al,64
739 jnz L_test_for_end_of_block
740
741 and eax,15
742 psrlq mm0,mm1
743 movd ecx,mm0
744 and ecx, [inflate_fast_mask+eax*4]
745 add ecx,edx
746 mov eax, [ebx+ecx*4]
747 jmp L_dolen_mmx
748
749ALIGN 4
750L_test_for_second_level_dist_mmx:
751 test al,64
752 jnz L_invalid_distance_code
753
754 and eax,15
755 psrlq mm0,mm1
756 movd ecx,mm0
757 and ecx, [inflate_fast_mask+eax*4]
758 mov eax, [esp+12]
759 add ecx,ebx
760 mov eax, [eax+ecx*4]
761 jmp L_dodist_mmx
762
763ALIGN 4
764L_clip_window_mmx:
765
766 mov ecx,eax
767 mov eax, [esp+52]
768 neg ecx
769 mov esi, [esp+56]
770
771 cmp eax,ebx
772 jb L_invalid_distance_too_far
773
774 add ecx,ebx
775 cmp dword ptr [esp+48],0
776 jne L_wrap_around_window_mmx
777
778 sub eax,ecx
779 add esi,eax
780
781 cmp edx,ecx
782 jbe L_do_copy1_mmx
783
784 sub edx,ecx
785 rep movsb
786 mov esi,edi
787 sub esi,ebx
788 jmp L_do_copy1_mmx
789
790 cmp edx,ecx
791 jbe L_do_copy1_mmx
792
793 sub edx,ecx
794 rep movsb
795 mov esi,edi
796 sub esi,ebx
797 jmp L_do_copy1_mmx
798
799L_wrap_around_window_mmx:
800
801 mov eax, [esp+48]
802 cmp ecx,eax
803 jbe L_contiguous_in_window_mmx
804
805 add esi, [esp+52]
806 add esi,eax
807 sub esi,ecx
808 sub ecx,eax
809
810
811 cmp edx,ecx
812 jbe L_do_copy1_mmx
813
814 sub edx,ecx
815 rep movsb
816 mov esi, [esp+56]
817 mov ecx, [esp+48]
818 cmp edx,ecx
819 jbe L_do_copy1_mmx
820
821 sub edx,ecx
822 rep movsb
823 mov esi,edi
824 sub esi,ebx
825 jmp L_do_copy1_mmx
826
827L_contiguous_in_window_mmx:
828
829 add esi,eax
830 sub esi,ecx
831
832
833 cmp edx,ecx
834 jbe L_do_copy1_mmx
835
836 sub edx,ecx
837 rep movsb
838 mov esi,edi
839 sub esi,ebx
840
841L_do_copy1_mmx:
842
843
844 mov ecx,edx
845 rep movsb
846
847 mov esi, [esp+44]
848 mov ebx, [esp+8]
849 jmp L_while_test_mmx
850; 1174 "inffast.S"
851L_invalid_distance_code:
852
853
854
855
856
857 mov ecx, invalid_distance_code_msg
858 mov edx,26
859 jmp L_update_stream_state
860
861L_test_for_end_of_block:
862
863
864
865
866
867 test al,32
868 jz L_invalid_literal_length_code
869
870 mov ecx,0
871 mov edx,11
872 jmp L_update_stream_state
873
874L_invalid_literal_length_code:
875
876
877
878
879
880 mov ecx, invalid_literal_length_code_msg
881 mov edx,26
882 jmp L_update_stream_state
883
884L_invalid_distance_too_far:
885
886
887
888 mov esi, [esp+44]
889 mov ecx, invalid_distance_too_far_msg
890 mov edx,26
891 jmp L_update_stream_state
892
893L_update_stream_state:
894
895 mov eax, [esp+88]
896 test ecx,ecx
897 jz L_skip_msg
898 mov [eax+24],ecx
899L_skip_msg:
900 mov eax, [eax+28]
901 mov [eax+0],edx
902 jmp L_break_loop
903
904ALIGN 4
905L_break_loop:
906; 1243 "inffast.S"
907 cmp dword ptr [inflate_fast_use_mmx],2
908 jne L_update_next_in
909
910
911
912 mov ebx,ebp
913
914L_update_next_in:
915; 1266 "inffast.S"
916 mov eax, [esp+88]
917 mov ecx,ebx
918 mov edx, [eax+28]
919 shr ecx,3
920 sub esi,ecx
921 shl ecx,3
922 sub ebx,ecx
923 mov [eax+12],edi
924 mov [edx+48],ebx
925 mov ecx,ebx
926
927 lea ebx, [esp+28]
928 cmp [esp+20],ebx
929 jne L_buf_not_used
930
931 sub esi,ebx
932 mov ebx, [eax+0]
933 mov [esp+20],ebx
934 add esi,ebx
935 mov ebx, [eax+4]
936 sub ebx,11
937 add [esp+20],ebx
938
939L_buf_not_used:
940 mov [eax+0],esi
941
942 mov ebx,1
943 shl ebx,cl
944 dec ebx
945
946
947
948
949
950 cmp dword ptr [inflate_fast_use_mmx],2
951 jne L_update_hold
952
953
954
955 psrlq mm0,mm1
956 movd ebp,mm0
957
958 emms
959
960L_update_hold:
961
962
963
964 and ebp,ebx
965 mov [edx+44],ebp
966
967
968
969
970 mov ebx, [esp+20]
971 cmp ebx,esi
972 jbe L_last_is_smaller
973
974 sub ebx,esi
975 add ebx,11
976 mov [eax+4],ebx
977 jmp L_fixup_out
978L_last_is_smaller:
979 sub esi,ebx
980 neg esi
981 add esi,11
982 mov [eax+4],esi
983
984
985
986
987L_fixup_out:
988
989 mov ebx, [esp+16]
990 cmp ebx,edi
991 jbe L_end_is_smaller
992
993 sub ebx,edi
994 add ebx,257
995 mov [eax+16],ebx
996 jmp L_done
997L_end_is_smaller:
998 sub edi,ebx
999 neg edi
1000 add edi,257
1001 mov [eax+16],edi
1002
1003
1004
1005
1006
1007L_done:
1008 add esp,64
1009 popfd
1010 pop ebx
1011 pop ebp
1012 pop esi
1013 pop edi
1014 ret
1015
1016
1017
1018
1019_TEXT ends
1020end
diff --git a/contrib/vstudio/vc70_32/inffastAsm.obj b/contrib/vstudio/vc70_32/inffastAsm.obj
new file mode 100644
index 0000000..3855400
--- /dev/null
+++ b/contrib/vstudio/vc70_32/inffastAsm.obj
Binary files differ
diff --git a/contrib/vstudio/vc70_32/miniunz.vcproj b/contrib/vstudio/vc70_32/miniunz.vcproj
new file mode 100644
index 0000000..56f0da3
--- /dev/null
+++ b/contrib/vstudio/vc70_32/miniunz.vcproj
@@ -0,0 +1,124 @@
1<?xml version="1.0" encoding = "Windows-1252"?>
2<VisualStudioProject
3 ProjectType="Visual C++"
4 Version="7.00"
5 Name="miniunz"
6 ProjectGUID="{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
7 Keyword="Win32Proj">
8 <Platforms>
9 <Platform
10 Name="Win32"/>
11 </Platforms>
12 <Configurations>
13 <Configuration
14 Name="Debug|Win32"
15 OutputDirectory="Debug"
16 IntermediateDirectory="Debug"
17 ConfigurationType="1"
18 CharacterSet="2">
19 <Tool
20 Name="VCCLCompilerTool"
21 Optimization="0"
22 PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
23 MinimalRebuild="TRUE"
24 BasicRuntimeChecks="3"
25 RuntimeLibrary="5"
26 UsePrecompiledHeader="0"
27 WarningLevel="3"
28 Detect64BitPortabilityProblems="TRUE"
29 DebugInformationFormat="4"/>
30 <Tool
31 Name="VCCustomBuildTool"/>
32 <Tool
33 Name="VCLinkerTool"
34 OutputFile="$(OutDir)/miniunz.exe"
35 LinkIncremental="2"
36 GenerateDebugInformation="TRUE"
37 ProgramDatabaseFile="$(OutDir)/miniunz.pdb"
38 SubSystem="1"
39 TargetMachine="1"/>
40 <Tool
41 Name="VCMIDLTool"/>
42 <Tool
43 Name="VCPostBuildEventTool"/>
44 <Tool
45 Name="VCPreBuildEventTool"/>
46 <Tool
47 Name="VCPreLinkEventTool"/>
48 <Tool
49 Name="VCResourceCompilerTool"/>
50 <Tool
51 Name="VCWebServiceProxyGeneratorTool"/>
52 <Tool
53 Name="VCWebDeploymentTool"/>
54 </Configuration>
55 <Configuration
56 Name="Release|Win32"
57 OutputDirectory="Release"
58 IntermediateDirectory="Release"
59 ConfigurationType="1"
60 CharacterSet="2">
61 <Tool
62 Name="VCCLCompilerTool"
63 Optimization="2"
64 InlineFunctionExpansion="1"
65 OmitFramePointers="TRUE"
66 PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
67 StringPooling="TRUE"
68 RuntimeLibrary="4"
69 EnableFunctionLevelLinking="TRUE"
70 UsePrecompiledHeader="0"
71 WarningLevel="3"
72 Detect64BitPortabilityProblems="TRUE"
73 DebugInformationFormat="3"/>
74 <Tool
75 Name="VCCustomBuildTool"/>
76 <Tool
77 Name="VCLinkerTool"
78 OutputFile="$(OutDir)/miniunz.exe"
79 LinkIncremental="1"
80 GenerateDebugInformation="TRUE"
81 SubSystem="1"
82 OptimizeReferences="2"
83 EnableCOMDATFolding="2"
84 OptimizeForWindows98="1"
85 TargetMachine="1"/>
86 <Tool
87 Name="VCMIDLTool"/>
88 <Tool
89 Name="VCPostBuildEventTool"/>
90 <Tool
91 Name="VCPreBuildEventTool"/>
92 <Tool
93 Name="VCPreLinkEventTool"/>
94 <Tool
95 Name="VCResourceCompilerTool"/>
96 <Tool
97 Name="VCWebServiceProxyGeneratorTool"/>
98 <Tool
99 Name="VCWebDeploymentTool"/>
100 </Configuration>
101 </Configurations>
102 <Files>
103 <Filter
104 Name="Source Files"
105 Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
106 <File
107 RelativePath="miniunz.c">
108 </File>
109 </Filter>
110 <Filter
111 Name="Header Files"
112 Filter="h;hpp;hxx;hm;inl;inc">
113 </Filter>
114 <Filter
115 Name="Resource Files"
116 Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
117 </Filter>
118 <File
119 RelativePath="zlib.lib">
120 </File>
121 </Files>
122 <Globals>
123 </Globals>
124</VisualStudioProject>
diff --git a/contrib/vstudio/vc70_32/minizip.vcproj b/contrib/vstudio/vc70_32/minizip.vcproj
new file mode 100644
index 0000000..2cc5aca
--- /dev/null
+++ b/contrib/vstudio/vc70_32/minizip.vcproj
@@ -0,0 +1,124 @@
1<?xml version="1.0" encoding = "Windows-1252"?>
2<VisualStudioProject
3 ProjectType="Visual C++"
4 Version="7.00"
5 Name="minizip"
6 ProjectGUID="{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
7 Keyword="Win32Proj">
8 <Platforms>
9 <Platform
10 Name="Win32"/>
11 </Platforms>
12 <Configurations>
13 <Configuration
14 Name="Debug|Win32"
15 OutputDirectory="Debug"
16 IntermediateDirectory="Debug"
17 ConfigurationType="1"
18 CharacterSet="2">
19 <Tool
20 Name="VCCLCompilerTool"
21 Optimization="0"
22 PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
23 MinimalRebuild="TRUE"
24 BasicRuntimeChecks="3"
25 RuntimeLibrary="5"
26 UsePrecompiledHeader="0"
27 WarningLevel="3"
28 Detect64BitPortabilityProblems="TRUE"
29 DebugInformationFormat="4"/>
30 <Tool
31 Name="VCCustomBuildTool"/>
32 <Tool
33 Name="VCLinkerTool"
34 OutputFile="$(OutDir)/minizip.exe"
35 LinkIncremental="2"
36 GenerateDebugInformation="TRUE"
37 ProgramDatabaseFile="$(OutDir)/minizip.pdb"
38 SubSystem="1"
39 TargetMachine="1"/>
40 <Tool
41 Name="VCMIDLTool"/>
42 <Tool
43 Name="VCPostBuildEventTool"/>
44 <Tool
45 Name="VCPreBuildEventTool"/>
46 <Tool
47 Name="VCPreLinkEventTool"/>
48 <Tool
49 Name="VCResourceCompilerTool"/>
50 <Tool
51 Name="VCWebServiceProxyGeneratorTool"/>
52 <Tool
53 Name="VCWebDeploymentTool"/>
54 </Configuration>
55 <Configuration
56 Name="Release|Win32"
57 OutputDirectory="Release"
58 IntermediateDirectory="Release"
59 ConfigurationType="1"
60 CharacterSet="2">
61 <Tool
62 Name="VCCLCompilerTool"
63 Optimization="2"
64 InlineFunctionExpansion="1"
65 OmitFramePointers="TRUE"
66 PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
67 StringPooling="TRUE"
68 RuntimeLibrary="4"
69 EnableFunctionLevelLinking="TRUE"
70 UsePrecompiledHeader="0"
71 WarningLevel="3"
72 Detect64BitPortabilityProblems="TRUE"
73 DebugInformationFormat="3"/>
74 <Tool
75 Name="VCCustomBuildTool"/>
76 <Tool
77 Name="VCLinkerTool"
78 OutputFile="$(OutDir)/minizip.exe"
79 LinkIncremental="1"
80 GenerateDebugInformation="TRUE"
81 SubSystem="1"
82 OptimizeReferences="2"
83 EnableCOMDATFolding="2"
84 OptimizeForWindows98="1"
85 TargetMachine="1"/>
86 <Tool
87 Name="VCMIDLTool"/>
88 <Tool
89 Name="VCPostBuildEventTool"/>
90 <Tool
91 Name="VCPreBuildEventTool"/>
92 <Tool
93 Name="VCPreLinkEventTool"/>
94 <Tool
95 Name="VCResourceCompilerTool"/>
96 <Tool
97 Name="VCWebServiceProxyGeneratorTool"/>
98 <Tool
99 Name="VCWebDeploymentTool"/>
100 </Configuration>
101 </Configurations>
102 <Files>
103 <Filter
104 Name="Source Files"
105 Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
106 <File
107 RelativePath="minizip.c">
108 </File>
109 </Filter>
110 <Filter
111 Name="Header Files"
112 Filter="h;hpp;hxx;hm;inl;inc">
113 </Filter>
114 <Filter
115 Name="Resource Files"
116 Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
117 </Filter>
118 <File
119 RelativePath="zlib.lib">
120 </File>
121 </Files>
122 <Globals>
123 </Globals>
124</VisualStudioProject>
diff --git a/contrib/vstudio/vc70_32/mkgvmt32.bat b/contrib/vstudio/vc70_32/mkgvmt32.bat
new file mode 100644
index 0000000..9c54db7
--- /dev/null
+++ b/contrib/vstudio/vc70_32/mkgvmt32.bat
@@ -0,0 +1,2 @@
1c:\masm611\bin\ml /coff /Zi /c /Flgvmat32.lst gvmat32.asm
2c:\masm611\bin\ml /coff /Zi /c /FlinffastAsm.lst inffastAsm.asm
diff --git a/contrib/vstudio/vc70_32/zlib.rc b/contrib/vstudio/vc70_32/zlib.rc
new file mode 100644
index 0000000..5d86e03
--- /dev/null
+++ b/contrib/vstudio/vc70_32/zlib.rc
@@ -0,0 +1,32 @@
1#include <windows.h>
2
3#define IDR_VERSION1 1
4IDR_VERSION1 VERSIONINFO MOVEABLE IMPURE LOADONCALL DISCARDABLE
5 FILEVERSION 1,2,0,0
6 PRODUCTVERSION 1,2,0,0
7 FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
8 FILEFLAGS 0
9 FILEOS VOS_DOS_WINDOWS32
10 FILETYPE VFT_DLL
11 FILESUBTYPE 0 // not used
12BEGIN
13 BLOCK "StringFileInfo"
14 BEGIN
15 BLOCK "040904E4"
16 //language ID = U.S. English, char set = Windows, Multilingual
17
18 BEGIN
19 VALUE "FileDescription", "zlib data compression library\0"
20 VALUE "FileVersion", "1.2.0.0\0"
21 VALUE "InternalName", "zlib\0"
22 VALUE "OriginalFilename", "zlib.dll\0"
23 VALUE "ProductName", "ZLib.DLL\0"
24 VALUE "Comments","DLL support by Alessandro Iacopetti & Gilles Vollant\0"
25 VALUE "LegalCopyright", "(C) 1995-2003 Jean-loup Gailly & Mark Adler\0"
26 END
27 END
28 BLOCK "VarFileInfo"
29 BEGIN
30 VALUE "Translation", 0x0409, 1252
31 END
32END
diff --git a/contrib/vstudio/vc70_32/zlibstat.vcproj b/contrib/vstudio/vc70_32/zlibstat.vcproj
new file mode 100644
index 0000000..94d4a63
--- /dev/null
+++ b/contrib/vstudio/vc70_32/zlibstat.vcproj
@@ -0,0 +1,253 @@
1<?xml version="1.0" encoding = "Windows-1252"?>
2<VisualStudioProject
3 ProjectType="Visual C++"
4 Version="7.00"
5 Name="zlibstat"
6 SccProjectName=""
7 SccLocalPath="">
8 <Platforms>
9 <Platform
10 Name="Win32"/>
11 </Platforms>
12 <Configurations>
13 <Configuration
14 Name="Debug|Win32"
15 OutputDirectory=".\zlibstatDebug"
16 IntermediateDirectory=".\zlibstatDebug"
17 ConfigurationType="4"
18 UseOfMFC="0"
19 ATLMinimizesCRunTimeLibraryUsage="FALSE">
20 <Tool
21 Name="VCCLCompilerTool"
22 Optimization="0"
23 PreprocessorDefinitions="WIN32"
24 ExceptionHandling="FALSE"
25 RuntimeLibrary="5"
26 PrecompiledHeaderFile=".\zlibstatDebug/zlibstat.pch"
27 AssemblerListingLocation=".\zlibstatDebug/"
28 ObjectFile=".\zlibstatDebug/"
29 ProgramDataBaseFileName=".\zlibstatDebug/"
30 WarningLevel="3"
31 SuppressStartupBanner="TRUE"
32 DebugInformationFormat="1"/>
33 <Tool
34 Name="VCCustomBuildTool"/>
35 <Tool
36 Name="VCLibrarianTool"
37 AdditionalOptions="/NODEFAULTLIB "
38 OutputFile=".\zlibstatDebug\zlibstat.lib"
39 SuppressStartupBanner="TRUE"/>
40 <Tool
41 Name="VCMIDLTool"/>
42 <Tool
43 Name="VCPostBuildEventTool"/>
44 <Tool
45 Name="VCPreBuildEventTool"/>
46 <Tool
47 Name="VCPreLinkEventTool"/>
48 <Tool
49 Name="VCResourceCompilerTool"
50 Culture="1036"/>
51 <Tool
52 Name="VCWebServiceProxyGeneratorTool"/>
53 </Configuration>
54 <Configuration
55 Name="ReleaseAxp|Win32"
56 OutputDirectory=".\zlibsta0"
57 IntermediateDirectory=".\zlibsta0"
58 ConfigurationType="4"
59 UseOfMFC="0"
60 ATLMinimizesCRunTimeLibraryUsage="FALSE">
61 <Tool
62 Name="VCCLCompilerTool"
63 InlineFunctionExpansion="1"
64 PreprocessorDefinitions="WIN32"
65 StringPooling="TRUE"
66 ExceptionHandling="FALSE"
67 RuntimeLibrary="4"
68 EnableFunctionLevelLinking="TRUE"
69 PrecompiledHeaderFile=".\zlibsta0/zlibstat.pch"
70 AssemblerListingLocation=".\zlibsta0/"
71 ObjectFile=".\zlibsta0/"
72 ProgramDataBaseFileName=".\zlibsta0/"
73 WarningLevel="3"
74 SuppressStartupBanner="TRUE"/>
75 <Tool
76 Name="VCCustomBuildTool"/>
77 <Tool
78 Name="VCLibrarianTool"
79 AdditionalOptions="/NODEFAULTLIB "
80 OutputFile=".\zlibsta0\zlibstat.lib"
81 SuppressStartupBanner="TRUE"/>
82 <Tool
83 Name="VCMIDLTool"/>
84 <Tool
85 Name="VCPostBuildEventTool"/>
86 <Tool
87 Name="VCPreBuildEventTool"/>
88 <Tool
89 Name="VCPreLinkEventTool"/>
90 <Tool
91 Name="VCResourceCompilerTool"/>
92 <Tool
93 Name="VCWebServiceProxyGeneratorTool"/>
94 </Configuration>
95 <Configuration
96 Name="Release|Win32"
97 OutputDirectory=".\zlibstat"
98 IntermediateDirectory=".\zlibstat"
99 ConfigurationType="4"
100 UseOfMFC="0"
101 ATLMinimizesCRunTimeLibraryUsage="FALSE">
102 <Tool
103 Name="VCCLCompilerTool"
104 InlineFunctionExpansion="1"
105 PreprocessorDefinitions="WIN32,ASMV"
106 StringPooling="TRUE"
107 ExceptionHandling="FALSE"
108 RuntimeLibrary="4"
109 EnableFunctionLevelLinking="TRUE"
110 PrecompiledHeaderFile=".\zlibstat/zlibstat.pch"
111 AssemblerListingLocation=".\zlibstat/"
112 ObjectFile=".\zlibstat/"
113 ProgramDataBaseFileName=".\zlibstat/"
114 WarningLevel="3"
115 SuppressStartupBanner="TRUE"/>
116 <Tool
117 Name="VCCustomBuildTool"/>
118 <Tool
119 Name="VCLibrarianTool"
120 AdditionalOptions="gvmat32.obj inffastAsm.obj /NODEFAULTLIB "
121 OutputFile=".\zlibstat\zlibstat.lib"
122 SuppressStartupBanner="TRUE"/>
123 <Tool
124 Name="VCMIDLTool"/>
125 <Tool
126 Name="VCPostBuildEventTool"/>
127 <Tool
128 Name="VCPreBuildEventTool"/>
129 <Tool
130 Name="VCPreLinkEventTool"/>
131 <Tool
132 Name="VCResourceCompilerTool"
133 Culture="1036"/>
134 <Tool
135 Name="VCWebServiceProxyGeneratorTool"/>
136 </Configuration>
137 <Configuration
138 Name="ReleaseWithoutAsm|Win32"
139 OutputDirectory="zlibstatWithoutAsm"
140 IntermediateDirectory="zlibstatWithoutAsm"
141 ConfigurationType="4"
142 UseOfMFC="0"
143 ATLMinimizesCRunTimeLibraryUsage="FALSE">
144 <Tool
145 Name="VCCLCompilerTool"
146 InlineFunctionExpansion="1"
147 PreprocessorDefinitions="WIN32"
148 StringPooling="TRUE"
149 ExceptionHandling="FALSE"
150 RuntimeLibrary="4"
151 EnableFunctionLevelLinking="TRUE"
152 PrecompiledHeaderFile=".\zlibstat/zlibstat.pch"
153 AssemblerListingLocation=".\zlibstatWithoutAsm/"
154 ObjectFile=".\zlibstatWithoutAsm/"
155 ProgramDataBaseFileName=".\zlibstatWithoutAsm/"
156 WarningLevel="3"
157 SuppressStartupBanner="TRUE"/>
158 <Tool
159 Name="VCCustomBuildTool"/>
160 <Tool
161 Name="VCLibrarianTool"
162 AdditionalOptions=" /NODEFAULTLIB "
163 OutputFile=".\zlibstatWithoutAsm\zlibstat.lib"
164 SuppressStartupBanner="TRUE"/>
165 <Tool
166 Name="VCMIDLTool"/>
167 <Tool
168 Name="VCPostBuildEventTool"/>
169 <Tool
170 Name="VCPreBuildEventTool"/>
171 <Tool
172 Name="VCPreLinkEventTool"/>
173 <Tool
174 Name="VCResourceCompilerTool"
175 Culture="1036"/>
176 <Tool
177 Name="VCWebServiceProxyGeneratorTool"/>
178 </Configuration>
179 </Configurations>
180 <Files>
181 <Filter
182 Name="Source Files"
183 Filter="">
184 <File
185 RelativePath=".\adler32.c">
186 </File>
187 <File
188 RelativePath=".\compress.c">
189 </File>
190 <File
191 RelativePath=".\crc32.c">
192 </File>
193 <File
194 RelativePath=".\deflate.c">
195 </File>
196 <File
197 RelativePath=".\gvmat32c.c">
198 </File>
199 <File
200 RelativePath=".\gzio.c">
201 </File>
202 <File
203 RelativePath=".\infback.c">
204 </File>
205 <File
206 RelativePath=".\inffast.c">
207 <FileConfiguration
208 Name="Release|Win32"
209 ExcludedFromBuild="TRUE">
210 <Tool
211 Name="VCCLCompilerTool"/>
212 </FileConfiguration>
213 <FileConfiguration
214 Name="ReleaseWithoutAsm|Win32">
215 <Tool
216 Name="VCCLCompilerTool"/>
217 </FileConfiguration>
218 </File>
219 <File
220 RelativePath=".\inflate.c">
221 </File>
222 <File
223 RelativePath=".\inftrees.c">
224 </File>
225 <File
226 RelativePath=".\ioapi.c">
227 </File>
228 <File
229 RelativePath=".\trees.c">
230 </File>
231 <File
232 RelativePath=".\uncompr.c">
233 </File>
234 <File
235 RelativePath=".\unzip.c">
236 </File>
237 <File
238 RelativePath=".\zip.c">
239 </File>
240 <File
241 RelativePath=".\zlib.rc">
242 </File>
243 <File
244 RelativePath=".\zlibvc.def">
245 </File>
246 <File
247 RelativePath=".\zutil.c">
248 </File>
249 </Filter>
250 </Files>
251 <Globals>
252 </Globals>
253</VisualStudioProject>
diff --git a/contrib/vstudio/vc70_32/zlibvc.def b/contrib/vstudio/vc70_32/zlibvc.def
new file mode 100644
index 0000000..90109d6
--- /dev/null
+++ b/contrib/vstudio/vc70_32/zlibvc.def
@@ -0,0 +1,88 @@
1LIBRARY "zlib"
2
3VERSION 1.20
4
5HEAPSIZE 1048576,8192
6
7EXPORTS
8 adler32 @1
9 compress @2
10 crc32 @3
11 deflate @4
12 deflateCopy @5
13 deflateEnd @6
14 deflateInit2_ @7
15 deflateInit_ @8
16 deflateParams @9
17 deflateReset @10
18 deflateSetDictionary @11
19 gzclose @12
20 gzdopen @13
21 gzerror @14
22 gzflush @15
23 gzopen @16
24 gzread @17
25 gzwrite @18
26 inflate @19
27 inflateEnd @20
28 inflateInit2_ @21
29 inflateInit_ @22
30 inflateReset @23
31 inflateSetDictionary @24
32 inflateSync @25
33 uncompress @26
34 zlibVersion @27
35 gzprintf @28
36 gzputc @29
37 gzgetc @30
38 gzseek @31
39 gzrewind @32
40 gztell @33
41 gzeof @34
42 gzsetparams @35
43 zError @36
44 inflateSyncPoint @37
45 get_crc_table @38
46 compress2 @39
47 gzputs @40
48 gzgets @41
49 inflateCopy @42
50 inflateBackInit_ @43
51 inflateBack @44
52 inflateBackEnd @45
53 compressBound @46
54
55 unzOpen @61
56 unzClose @62
57 unzGetGlobalInfo @63
58 unzGetCurrentFileInfo @64
59 unzGoToFirstFile @65
60 unzGoToNextFile @66
61 unzOpenCurrentFile @67
62 unzReadCurrentFile @68
63 unzOpenCurrentFile3 @69
64 unztell @70
65 unzeof @71
66 unzCloseCurrentFile @72
67 unzGetGlobalComment @73
68 unzStringFileNameCompare @74
69 unzLocateFile @75
70 unzGetLocalExtrafield @76
71 unzOpen2 @77
72 unzOpenCurrentFile2 @78
73 unzOpenCurrentFilePassword @79
74
75 zipOpen @80
76 zipOpenNewFileInZip @81
77 zipWriteInFileInZip @82
78 zipCloseFileInZip @83
79 zipClose @84
80 zipOpenNewFileInZip2 @86
81 zipCloseFileInZipRaw @87
82 zipOpen2 @88
83 zipOpenNewFileInZip3 @89
84
85 unzGetFilePos @100
86 unzGoToFilePos @101
87
88 fill_win32_filefunc @110
diff --git a/contrib/vstudio/vc70_32/zlibvc.sln b/contrib/vstudio/vc70_32/zlibvc.sln
new file mode 100644
index 0000000..5a007ff
--- /dev/null
+++ b/contrib/vstudio/vc70_32/zlibvc.sln
@@ -0,0 +1,66 @@
1Microsoft Visual Studio Solution File, Format Version 7.00
2Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibstat", "zlibstat.vcproj", "{745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}"
3EndProject
4Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "zlibvc.vcproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
5EndProject
6Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minizip", "minizip.vcproj", "{48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}"
7EndProject
8Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniunz", "miniunz.vcproj", "{C52F9E7B-498A-42BE-8DB4-85A15694382A}"
9EndProject
10Global
11 GlobalSection(SolutionConfiguration) = preSolution
12 ConfigName.0 = Debug
13 ConfigName.1 = Release
14 ConfigName.2 = ReleaseAxp
15 ConfigName.3 = ReleaseWithoutAsm
16 ConfigName.4 = ReleaseWithoutCrtdll
17 EndGlobalSection
18 GlobalSection(ProjectDependencies) = postSolution
19 EndGlobalSection
20 GlobalSection(ProjectConfiguration) = postSolution
21 {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug.ActiveCfg = Debug|Win32
22 {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Debug.Build.0 = Debug|Win32
23 {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release.ActiveCfg = Release|Win32
24 {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.Release.Build.0 = Release|Win32
25 {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseAxp.ActiveCfg = ReleaseAxp|Win32
26 {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseAxp.Build.0 = ReleaseAxp|Win32
27 {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm.ActiveCfg = ReleaseWithoutAsm|Win32
28 {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutAsm.Build.0 = ReleaseWithoutAsm|Win32
29 {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutCrtdll.ActiveCfg = ReleaseAxp|Win32
30 {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8}.ReleaseWithoutCrtdll.Build.0 = ReleaseAxp|Win32
31 {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug.ActiveCfg = Debug|Win32
32 {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug.Build.0 = Debug|Win32
33 {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release.ActiveCfg = Release|Win32
34 {8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release.Build.0 = Release|Win32
35 {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseAxp.ActiveCfg = ReleaseAxp|Win32
36 {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseAxp.Build.0 = ReleaseAxp|Win32
37 {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm.ActiveCfg = ReleaseWithoutAsm|Win32
38 {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutAsm.Build.0 = ReleaseWithoutAsm|Win32
39 {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutCrtdll.ActiveCfg = ReleaseWithoutCrtdll|Win32
40 {8FD826F8-3739-44E6-8CC8-997122E53B8D}.ReleaseWithoutCrtdll.Build.0 = ReleaseWithoutCrtdll|Win32
41 {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug.ActiveCfg = Debug|Win32
42 {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Debug.Build.0 = Debug|Win32
43 {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release.ActiveCfg = Release|Win32
44 {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.Release.Build.0 = Release|Win32
45 {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseAxp.ActiveCfg = Release|Win32
46 {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseAxp.Build.0 = Release|Win32
47 {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm.ActiveCfg = Release|Win32
48 {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutAsm.Build.0 = Release|Win32
49 {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutCrtdll.ActiveCfg = Release|Win32
50 {48CDD9DC-E09F-4135-9C0C-4FE50C3C654B}.ReleaseWithoutCrtdll.Build.0 = Release|Win32
51 {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug.ActiveCfg = Debug|Win32
52 {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Debug.Build.0 = Debug|Win32
53 {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release.ActiveCfg = Release|Win32
54 {C52F9E7B-498A-42BE-8DB4-85A15694382A}.Release.Build.0 = Release|Win32
55 {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseAxp.ActiveCfg = Release|Win32
56 {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseAxp.Build.0 = Release|Win32
57 {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm.ActiveCfg = Release|Win32
58 {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutAsm.Build.0 = Release|Win32
59 {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutCrtdll.ActiveCfg = Release|Win32
60 {C52F9E7B-498A-42BE-8DB4-85A15694382A}.ReleaseWithoutCrtdll.Build.0 = Release|Win32
61 EndGlobalSection
62 GlobalSection(ExtensibilityGlobals) = postSolution
63 EndGlobalSection
64 GlobalSection(ExtensibilityAddIns) = postSolution
65 EndGlobalSection
66EndGlobal
diff --git a/contrib/vstudio/vc70_32/zlibvc.vcproj b/contrib/vstudio/vc70_32/zlibvc.vcproj
new file mode 100644
index 0000000..fcf9892
--- /dev/null
+++ b/contrib/vstudio/vc70_32/zlibvc.vcproj
@@ -0,0 +1,434 @@
1<?xml version="1.0" encoding = "Windows-1252"?>
2<VisualStudioProject
3 ProjectType="Visual C++"
4 Version="7.00"
5 Name="zlibvc"
6 SccProjectName=""
7 SccLocalPath="">
8 <Platforms>
9 <Platform
10 Name="Win32"/>
11 </Platforms>
12 <Configurations>
13 <Configuration
14 Name="Debug|Win32"
15 OutputDirectory=".\DebugDll"
16 IntermediateDirectory=".\DebugDll"
17 ConfigurationType="2"
18 UseOfMFC="0"
19 ATLMinimizesCRunTimeLibraryUsage="FALSE">
20 <Tool
21 Name="VCCLCompilerTool"
22 Optimization="0"
23 PreprocessorDefinitions="WIN32,ASMV"
24 ExceptionHandling="FALSE"
25 RuntimeLibrary="1"
26 PrecompiledHeaderFile=".\DebugDll/zlibvc.pch"
27 AssemblerListingLocation=".\DebugDll/"
28 ObjectFile=".\DebugDll/"
29 ProgramDataBaseFileName=".\DebugDll/"
30 WarningLevel="3"
31 SuppressStartupBanner="TRUE"
32 DebugInformationFormat="4"/>
33 <Tool
34 Name="VCCustomBuildTool"/>
35 <Tool
36 Name="VCLinkerTool"
37 AdditionalOptions="/MACHINE:I386"
38 AdditionalDependencies="gvmat32.obj "
39 OutputFile=".\DebugDll\zlib.dll"
40 LinkIncremental="2"
41 SuppressStartupBanner="TRUE"
42 ModuleDefinitionFile=".\zlibvc.def"
43 GenerateDebugInformation="TRUE"
44 ProgramDatabaseFile=".\DebugDll/zlib.pdb"
45 SubSystem="2"
46 ImportLibrary=".\DebugDll/zlib.lib"/>
47 <Tool
48 Name="VCMIDLTool"
49 PreprocessorDefinitions="_DEBUG"
50 MkTypLibCompatible="TRUE"
51 SuppressStartupBanner="TRUE"
52 TargetEnvironment="1"
53 TypeLibraryName=".\DebugDll/zlibvc.tlb"/>
54 <Tool
55 Name="VCPostBuildEventTool"/>
56 <Tool
57 Name="VCPreBuildEventTool"/>
58 <Tool
59 Name="VCPreLinkEventTool"/>
60 <Tool
61 Name="VCResourceCompilerTool"
62 PreprocessorDefinitions="_DEBUG"
63 Culture="1036"/>
64 <Tool
65 Name="VCWebServiceProxyGeneratorTool"/>
66 <Tool
67 Name="VCWebDeploymentTool"/>
68 </Configuration>
69 <Configuration
70 Name="ReleaseWithoutAsm|Win32"
71 OutputDirectory=".\zlibDllWithoutAsm"
72 IntermediateDirectory=".\zlibDllWithoutAsm"
73 ConfigurationType="2"
74 UseOfMFC="0"
75 ATLMinimizesCRunTimeLibraryUsage="FALSE">
76 <Tool
77 Name="VCCLCompilerTool"
78 InlineFunctionExpansion="1"
79 PreprocessorDefinitions="WIN32"
80 StringPooling="TRUE"
81 ExceptionHandling="FALSE"
82 RuntimeLibrary="0"
83 EnableFunctionLevelLinking="TRUE"
84 PrecompiledHeaderFile=".\zlibDllWithoutAsm/zlibvc.pch"
85 AssemblerOutput="2"
86 AssemblerListingLocation=".\zlibDllWithoutAsm/"
87 ObjectFile=".\zlibDllWithoutAsm/"
88 ProgramDataBaseFileName=".\zlibDllWithoutAsm/"
89 BrowseInformation="1"
90 WarningLevel="3"
91 SuppressStartupBanner="TRUE"/>
92 <Tool
93 Name="VCCustomBuildTool"/>
94 <Tool
95 Name="VCLinkerTool"
96 AdditionalOptions="/MACHINE:I386"
97 AdditionalDependencies="crtdll.lib"
98 OutputFile=".\zlibDllWithoutAsm\zlib.dll"
99 LinkIncremental="1"
100 SuppressStartupBanner="TRUE"
101 IgnoreAllDefaultLibraries="TRUE"
102 ModuleDefinitionFile=".\zlibvc.def"
103 ProgramDatabaseFile=".\zlibDllWithoutAsm/zlib.pdb"
104 GenerateMapFile="TRUE"
105 MapFileName=".\zlibDllWithoutAsm/zlib.map"
106 SubSystem="2"
107 OptimizeForWindows98="1"
108 ImportLibrary=".\zlibDllWithoutAsm/zlib.lib"/>
109 <Tool
110 Name="VCMIDLTool"
111 PreprocessorDefinitions="NDEBUG"
112 MkTypLibCompatible="TRUE"
113 SuppressStartupBanner="TRUE"
114 TargetEnvironment="1"
115 TypeLibraryName=".\zlibDllWithoutAsm/zlibvc.tlb"/>
116 <Tool
117 Name="VCPostBuildEventTool"/>
118 <Tool
119 Name="VCPreBuildEventTool"/>
120 <Tool
121 Name="VCPreLinkEventTool"/>
122 <Tool
123 Name="VCResourceCompilerTool"
124 PreprocessorDefinitions="NDEBUG"
125 Culture="1036"/>
126 <Tool
127 Name="VCWebServiceProxyGeneratorTool"/>
128 <Tool
129 Name="VCWebDeploymentTool"/>
130 </Configuration>
131 <Configuration
132 Name="ReleaseWithoutCrtdll|Win32"
133 OutputDirectory=".\zlibDllWithoutCrtDll"
134 IntermediateDirectory=".\zlibDllWithoutCrtDll"
135 ConfigurationType="2"
136 UseOfMFC="0"
137 ATLMinimizesCRunTimeLibraryUsage="FALSE">
138 <Tool
139 Name="VCCLCompilerTool"
140 InlineFunctionExpansion="1"
141 PreprocessorDefinitions="WIN32,ASMV"
142 StringPooling="TRUE"
143 ExceptionHandling="FALSE"
144 RuntimeLibrary="0"
145 EnableFunctionLevelLinking="TRUE"
146 PrecompiledHeaderFile=".\zlibDllWithoutCrtDll/zlibvc.pch"
147 AssemblerOutput="2"
148 AssemblerListingLocation=".\zlibDllWithoutCrtDll/"
149 ObjectFile=".\zlibDllWithoutCrtDll/"
150 ProgramDataBaseFileName=".\zlibDllWithoutCrtDll/"
151 BrowseInformation="1"
152 WarningLevel="3"
153 SuppressStartupBanner="TRUE"/>
154 <Tool
155 Name="VCCustomBuildTool"/>
156 <Tool
157 Name="VCLinkerTool"
158 AdditionalOptions="/MACHINE:I386"
159 AdditionalDependencies="gvmat32.obj inffastAsm.obj "
160 OutputFile=".\zlibDllWithoutCrtDll\zlib.dll"
161 LinkIncremental="1"
162 SuppressStartupBanner="TRUE"
163 IgnoreAllDefaultLibraries="FALSE"
164 ModuleDefinitionFile=".\zlibvc.def"
165 ProgramDatabaseFile=".\zlibDllWithoutCrtDll/zlib.pdb"
166 GenerateMapFile="TRUE"
167 MapFileName=".\zlibDllWithoutCrtDll/zlib.map"
168 SubSystem="2"
169 OptimizeForWindows98="1"
170 ImportLibrary=".\zlibDllWithoutCrtDll/zlib.lib"/>
171 <Tool
172 Name="VCMIDLTool"
173 PreprocessorDefinitions="NDEBUG"
174 MkTypLibCompatible="TRUE"
175 SuppressStartupBanner="TRUE"
176 TargetEnvironment="1"
177 TypeLibraryName=".\zlibDllWithoutCrtDll/zlibvc.tlb"/>
178 <Tool
179 Name="VCPostBuildEventTool"/>
180 <Tool
181 Name="VCPreBuildEventTool"/>
182 <Tool
183 Name="VCPreLinkEventTool"/>
184 <Tool
185 Name="VCResourceCompilerTool"
186 PreprocessorDefinitions="NDEBUG"
187 Culture="1036"/>
188 <Tool
189 Name="VCWebServiceProxyGeneratorTool"/>
190 <Tool
191 Name="VCWebDeploymentTool"/>
192 </Configuration>
193 <Configuration
194 Name="ReleaseAxp|Win32"
195 OutputDirectory=".\zlibvc__"
196 IntermediateDirectory=".\zlibvc__"
197 ConfigurationType="2"
198 UseOfMFC="0"
199 ATLMinimizesCRunTimeLibraryUsage="FALSE">
200 <Tool
201 Name="VCCLCompilerTool"
202 InlineFunctionExpansion="1"
203 PreprocessorDefinitions="WIN32"
204 StringPooling="TRUE"
205 ExceptionHandling="FALSE"
206 RuntimeLibrary="0"
207 EnableFunctionLevelLinking="TRUE"
208 PrecompiledHeaderFile=".\zlibvc__/zlibvc.pch"
209 AssemblerOutput="2"
210 AssemblerListingLocation=".\zlibvc__/"
211 ObjectFile=".\zlibvc__/"
212 ProgramDataBaseFileName=".\zlibvc__/"
213 BrowseInformation="1"
214 WarningLevel="3"
215 SuppressStartupBanner="TRUE"/>
216 <Tool
217 Name="VCCustomBuildTool"/>
218 <Tool
219 Name="VCLinkerTool"
220 AdditionalDependencies="crtdll.lib"
221 OutputFile="zlibvc__\zlib.dll"
222 LinkIncremental="1"
223 SuppressStartupBanner="TRUE"
224 IgnoreAllDefaultLibraries="TRUE"
225 ModuleDefinitionFile=".\zlibvc.def"
226 ProgramDatabaseFile=".\zlibvc__/zlib.pdb"
227 GenerateMapFile="TRUE"
228 MapFileName=".\zlibvc__/zlib.map"
229 SubSystem="2"
230 ImportLibrary=".\zlibvc__/zlib.lib"/>
231 <Tool
232 Name="VCMIDLTool"
233 PreprocessorDefinitions="NDEBUG"
234 MkTypLibCompatible="TRUE"
235 SuppressStartupBanner="TRUE"
236 TargetEnvironment="1"
237 TypeLibraryName=".\zlibvc__/zlibvc.tlb"/>
238 <Tool
239 Name="VCPostBuildEventTool"/>
240 <Tool
241 Name="VCPreBuildEventTool"/>
242 <Tool
243 Name="VCPreLinkEventTool"/>
244 <Tool
245 Name="VCResourceCompilerTool"
246 PreprocessorDefinitions="NDEBUG"
247 Culture="1036"/>
248 <Tool
249 Name="VCWebServiceProxyGeneratorTool"/>
250 <Tool
251 Name="VCWebDeploymentTool"/>
252 </Configuration>
253 <Configuration
254 Name="Release|Win32"
255 OutputDirectory=".\ReleaseDll"
256 IntermediateDirectory=".\ReleaseDll"
257 ConfigurationType="2"
258 UseOfMFC="0"
259 ATLMinimizesCRunTimeLibraryUsage="FALSE">
260 <Tool
261 Name="VCCLCompilerTool"
262 InlineFunctionExpansion="1"
263 PreprocessorDefinitions="WIN32,ASMV"
264 StringPooling="TRUE"
265 ExceptionHandling="FALSE"
266 RuntimeLibrary="0"
267 EnableFunctionLevelLinking="TRUE"
268 PrecompiledHeaderFile=".\ReleaseDll/zlibvc.pch"
269 AssemblerOutput="2"
270 AssemblerListingLocation=".\ReleaseDll/"
271 ObjectFile=".\ReleaseDll/"
272 ProgramDataBaseFileName=".\ReleaseDll/"
273 BrowseInformation="1"
274 WarningLevel="3"
275 SuppressStartupBanner="TRUE"/>
276 <Tool
277 Name="VCCustomBuildTool"/>
278 <Tool
279 Name="VCLinkerTool"
280 AdditionalOptions="/MACHINE:I386"
281 AdditionalDependencies="gvmat32.obj inffastAsm.obj crtdll.lib"
282 OutputFile=".\ReleaseDll\zlib.dll"
283 LinkIncremental="1"
284 SuppressStartupBanner="TRUE"
285 IgnoreAllDefaultLibraries="TRUE"
286 ModuleDefinitionFile=".\zlibvc.def"
287 ProgramDatabaseFile=".\ReleaseDll/zlib.pdb"
288 GenerateMapFile="TRUE"
289 MapFileName=".\ReleaseDll/zlib.map"
290 SubSystem="2"
291 OptimizeForWindows98="1"
292 ImportLibrary=".\ReleaseDll/zlib.lib"/>
293 <Tool
294 Name="VCMIDLTool"
295 PreprocessorDefinitions="NDEBUG"
296 MkTypLibCompatible="TRUE"
297 SuppressStartupBanner="TRUE"
298 TargetEnvironment="1"
299 TypeLibraryName=".\Release/zlibvc.tlb"/>
300 <Tool
301 Name="VCPostBuildEventTool"/>
302 <Tool
303 Name="VCPreBuildEventTool"/>
304 <Tool
305 Name="VCPreLinkEventTool"/>
306 <Tool
307 Name="VCResourceCompilerTool"
308 PreprocessorDefinitions="NDEBUG"
309 Culture="1036"/>
310 <Tool
311 Name="VCWebServiceProxyGeneratorTool"/>
312 <Tool
313 Name="VCWebDeploymentTool"/>
314 </Configuration>
315 </Configurations>
316 <Files>
317 <Filter
318 Name="Source Files"
319 Filter="cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90">
320 <File
321 RelativePath=".\adler32.c">
322 </File>
323 <File
324 RelativePath=".\compress.c">
325 </File>
326 <File
327 RelativePath=".\crc32.c">
328 </File>
329 <File
330 RelativePath=".\deflate.c">
331 </File>
332 <File
333 RelativePath=".\gvmat32c.c">
334 <FileConfiguration
335 Name="ReleaseWithoutAsm|Win32"
336 ExcludedFromBuild="TRUE">
337 <Tool
338 Name="VCCLCompilerTool"/>
339 </FileConfiguration>
340 </File>
341 <File
342 RelativePath=".\gzio.c">
343 </File>
344 <File
345 RelativePath=".\infback.c">
346 </File>
347 <File
348 RelativePath=".\inffast.c">
349 <FileConfiguration
350 Name="ReleaseWithoutCrtdll|Win32"
351 ExcludedFromBuild="TRUE">
352 <Tool
353 Name="VCCLCompilerTool"/>
354 </FileConfiguration>
355 <FileConfiguration
356 Name="Release|Win32"
357 ExcludedFromBuild="TRUE">
358 <Tool
359 Name="VCCLCompilerTool"/>
360 </FileConfiguration>
361 </File>
362 <File
363 RelativePath=".\inflate.c">
364 </File>
365 <File
366 RelativePath=".\inftrees.c">
367 </File>
368 <File
369 RelativePath=".\ioapi.c">
370 </File>
371 <File
372 RelativePath=".\iowin32.c">
373 </File>
374 <File
375 RelativePath=".\trees.c">
376 </File>
377 <File
378 RelativePath=".\uncompr.c">
379 </File>
380 <File
381 RelativePath=".\unzip.c">
382 </File>
383 <File
384 RelativePath=".\zip.c">
385 </File>
386 <File
387 RelativePath=".\zlib.rc">
388 </File>
389 <File
390 RelativePath=".\zlibvc.def">
391 </File>
392 <File
393 RelativePath=".\zutil.c">
394 </File>
395 </Filter>
396 <Filter
397 Name="Header Files"
398 Filter="h;hpp;hxx;hm;inl;fi;fd">
399 <File
400 RelativePath=".\deflate.h">
401 </File>
402 <File
403 RelativePath=".\infblock.h">
404 </File>
405 <File
406 RelativePath=".\infcodes.h">
407 </File>
408 <File
409 RelativePath=".\inffast.h">
410 </File>
411 <File
412 RelativePath=".\inftrees.h">
413 </File>
414 <File
415 RelativePath=".\infutil.h">
416 </File>
417 <File
418 RelativePath=".\zconf.h">
419 </File>
420 <File
421 RelativePath=".\zlib.h">
422 </File>
423 <File
424 RelativePath=".\zutil.h">
425 </File>
426 </Filter>
427 <Filter
428 Name="Resource Files"
429 Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
430 </Filter>
431 </Files>
432 <Globals>
433 </Globals>
434</VisualStudioProject>