Rev 1671 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1671 | Rev 1681 | ||
---|---|---|---|
Line -... | Line 1... | ||
- | 1 | kIfinityPrice equ 0x0FFFFFFF |
|
- | 2 | ||
1 | ;* Call: *************************************************************** |
3 | ;* Call: *************************************************************** |
- | 4 | ;lzma_compress( |
|
- | 5 | ; const void* source, |
|
- | 6 | ; void* destination, |
|
- | 7 | ; unsigned length, |
|
- | 8 | ; void* workmem) |
|
2 | lzma_compress: |
9 | lzma_compress: |
3 | push ebp |
10 | push ebp |
4 | mov ebp,esp |
11 | mov ebp,esp |
5 | and esp,0xFFFFFFF8 |
12 | and esp,0xFFFFFFF8 |
6 | sub esp,0xC |
13 | sub esp,12 |
7 | push ebx |
14 | push ebx |
8 | push esi |
15 | push esi |
9 | push edi |
16 | push edi |
10 | push 2 |
17 | push 2 |
11 | pop esi |
18 | pop esi |
12 | xor ebx,ebx |
19 | xor ebx,ebx |
13 | mov [esp+0x14],esi |
20 | mov [esp+20],esi |
14 | mov [0x19FB0],bl |
21 | mov [g_FastPos],bl |
15 | mov byte [0x19FB1],1 |
22 | mov byte [g_FastPos+1],1 |
16 | mov [esp+0x10],esi |
23 | mov [esp+16],esi |
17 | ;---------------------------------------------------------- |
24 | ;---------------------------------------------------------- |
18 | .labl_00: |
25 | .labl_00: |
19 | mov ecx,[esp+0x10] |
26 | mov ecx,[esp+16] |
20 | xor edi,edi |
27 | xor edi,edi |
21 | sar ecx,1 |
28 | sar ecx,1 |
22 | dec ecx |
29 | dec ecx |
23 | inc edi |
30 | inc edi |
24 | shl edi,cl |
31 | shl edi,cl |
25 | cmp edi,ebx |
32 | cmp edi,ebx |
26 | jbe .labl_01 |
33 | jbe .labl_01 |
- | 34 | ||
27 | mov eax,[esp+0x14] |
35 | mov eax,[esp+20] |
28 | push edi |
36 | push edi |
29 | push dword [esp+0x14] |
37 | push dword [esp+20] |
30 | lea eax,[eax+0x19FB0] |
38 | lea eax,[eax+g_FastPos] |
31 | push eax |
39 | push eax |
32 | call _memset |
40 | call _memset |
33 | add esp,0xC |
41 | add esp,12 |
34 | add [esp+0x14],edi |
42 | add [esp+20],edi |
35 | ;---------------------------------------------------------- |
43 | ;---------------------------------------------------------- |
36 | .labl_01: |
44 | .labl_01: |
37 | inc dword [esp+0x10] |
45 | inc dword [esp+16] |
38 | cmp dword [esp+0x10],0x14 |
46 | cmp dword [esp+16],20 |
39 | jl .labl_00 |
47 | jl .labl_00 |
- | 48 | ||
40 | mov edi,[ebp+0x14] |
49 | mov edi,[ebp+20] |
41 | push 3 |
50 | push 3 |
42 | pop eax |
51 | pop eax |
43 | mov ecx,edi |
52 | mov ecx,edi |
44 | and ecx,eax |
53 | and ecx,eax |
45 | mov edx,0x80 ;'' |
54 | mov edx,128 |
46 | mov [0x1CC30],edx |
55 | mov [_numFastBytes],edx |
47 | mov [0x51A00],esi |
56 | mov [_posStateBits],esi |
48 | mov [0x1CC34],eax |
57 | mov [_posStateMask],eax |
49 | mov [0x1B234],eax |
58 | mov [_numLiteralContextBits],eax |
50 | mov [0x2956C],ebx |
59 | mov [_numLiteralPosStateBits],ebx |
51 | mov [0x19FA9],bl |
60 | mov [_writeEndMark],bl |
52 | mov [0x19FA8],bl |
61 | mov [_finished],bl |
53 | je .labl_02 |
62 | je .labl_02 |
- | 63 | ||
54 | sub edi,ecx |
64 | sub edi,ecx |
55 | add edi,4 |
65 | add edi,4 |
56 | ;---------------------------------------------------------- |
66 | ;---------------------------------------------------------- |
57 | .labl_02: |
67 | .labl_02: |
- | 68 | ;CLiteralEncoder_Create |
|
58 | mov [0x519F4],eax |
69 | mov [_numPrevBits],eax |
59 | mov eax,[0x29568] |
70 | mov eax,[_dictionarySize] |
60 | mov [0x519F0],edi |
71 | mov [_posEncoders],edi |
61 | add edi,0x6000 |
72 | add edi,0x6000 |
62 | inc eax |
73 | inc eax |
63 | mov [0x519F8],ebx |
74 | mov [_numPosBits],ebx |
64 | mov [0x519FC],ebx |
75 | mov [_posMask],ebx |
- | 76 | ;MatchFinder_Create |
|
65 | mov [0x52218],edx |
77 | mov [_matchMaxLen],edx |
66 | mov [0x51A0C],eax |
78 | mov [_cyclicBufferSize],eax |
67 | mov [0x52224],edi |
79 | mov [_hash],edi |
68 | mov dword [0x52220],0xFF ;'ÿ' |
80 | mov dword [_cutValue],0xFF |
69 | call lz_cm_01 |
81 | call CEncoder_Init |
70 | call cm_pr_07 |
82 | call FillPosSlotPrices |
71 | call cm_pr_08 |
83 | call FillDistancesPrices |
72 | call cm_pr_09 |
84 | call FillAlignPrices |
73 | push 0x7F ;'' |
85 | push 127 |
74 | pop esi |
86 | pop esi |
75 | mov [0x19F64],esi |
87 | mov [_lenEncoder+0xC88C],esi |
76 | mov [esp+0x10],ebx |
88 | mov [esp+16],ebx |
77 | ;---------------------------------------------------------- |
89 | ;---------------------------------------------------------- |
78 | .labl_03: |
90 | .labl_03: |
79 | push dword [esp+0x10] |
91 | push dword [esp+16] |
80 | mov eax,0xD6D8 |
92 | mov eax,_lenEncoder |
81 | call cm_pr_01 |
93 | call CPriceTableEncoder_UpdateTable |
82 | inc dword [esp+0x10] |
94 | inc dword [esp+16] |
83 | cmp dword [esp+0x10],4 |
95 | cmp dword [esp+16],4 |
84 | jb .labl_03 |
96 | jb .labl_03 |
- | 97 | ||
85 | mov [0x294F4],esi |
98 | mov [_repMatchLenEncoder+0xC88C],esi |
86 | xor esi,esi |
99 | xor esi,esi |
87 | ;---------------------------------------------------------- |
100 | ;---------------------------------------------------------- |
88 | .labl_04: |
101 | .labl_04: |
89 | push esi |
102 | push esi |
90 | mov eax,0x1CC68 |
103 | mov eax,_repMatchLenEncoder |
91 | call cm_pr_01 |
104 | call CPriceTableEncoder_UpdateTable |
92 | inc esi |
105 | inc esi |
93 | cmp esi,4 |
106 | cmp esi,4 |
94 | jb .labl_04 |
107 | jb .labl_04 |
- | 108 | ||
95 | mov eax,[ebp+8] |
109 | mov eax,[ebp+8] |
96 | mov esi,[ebp+0xC] |
110 | mov esi,[ebp+12] |
97 | dec eax |
111 | dec eax |
98 | mov [0x52628],eax |
112 | mov [_buffer],eax |
99 | mov eax,[ebp+0x10] |
113 | mov eax,[ebp+16] |
100 | inc eax |
114 | inc eax |
101 | mov [0x52630],eax |
115 | mov [_streamPos],eax |
102 | mov ecx,0x110000 |
116 | mov ecx,0x110000 |
103 | xor eax,eax |
117 | xor eax,eax |
104 | mov [0x1CC28],ebx |
118 | mov [lastPosSlotFillingPos],ebx |
105 | mov [0x1CC2C],ebx |
119 | mov [lastPosSlotFillingPos+4],ebx |
106 | mov [0x1B400],ebx |
120 | mov [nowPos64],ebx |
107 | mov [0x1B404],ebx |
121 | mov [nowPos64+4],ebx |
108 | mov [0x52634],esi |
122 | mov [pack_length],esi |
109 | mov dword [0x5262C],1 |
123 | mov dword [_pos],1 |
110 | rep stosd |
124 | rep stosd |
111 | mov [0x5221C],ebx |
125 | mov [pack_pos],ebx |
112 | ;---------------------------------------------------------- |
126 | ;---------------------------------------------------------- |
- | 127 | ;MatchFinder_Init |
|
113 | .labl_08: |
128 | .labl_08: |
114 | push 8 |
129 | push 8 |
115 | mov eax,ebx |
130 | mov eax,ebx |
116 | pop ecx |
131 | pop ecx |
117 | ;---------------------------------------------------------- |
132 | ;---------------------------------------------------------- |
118 | .labl_07: |
133 | .labl_07: |
119 | test al,1 |
134 | test al,1 |
120 | je .labl_05 |
135 | je .labl_05 |
- | 136 | ||
121 | shr eax,1 |
137 | shr eax,1 |
122 | xor eax,0xEDB88320 |
138 | xor eax,0xEDB88320 |
123 | jmp .labl_06 |
139 | jmp .labl_06 |
124 | ;---------------------------------------------------------- |
140 | ;---------------------------------------------------------- |
125 | .labl_05: |
141 | .labl_05: |
126 | shr eax,1 |
142 | shr eax,1 |
127 | ;---------------------------------------------------------- |
143 | ;---------------------------------------------------------- |
128 | .labl_06: |
144 | .labl_06: |
129 | dec ecx |
145 | dec ecx |
130 | jne .labl_07 |
146 | jne .labl_07 |
- | 147 | ||
131 | mov [0x52228+ebx*4],eax |
148 | mov [crc_table+ebx*4],eax |
132 | inc ebx |
149 | inc ebx |
133 | cmp ebx,0x100 |
150 | cmp ebx,256 |
134 | jb .labl_08 |
151 | jb .labl_08 |
135 | ;---------------------------------------------------------- |
152 | ;---------------------------------------------------------- |
136 | .labl_09: |
153 | .labl_09: |
137 | call lz_cm_02 |
154 | call CodeOneBlock |
138 | test al,al |
155 | test al,al |
139 | jne .labl_09 |
156 | jne .labl_09 |
- | 157 | ||
140 | mov eax,[0x52634] |
158 | mov eax,[pack_length] |
141 | pop edi |
159 | pop edi |
142 | sub eax,esi |
160 | sub eax,esi |
143 | pop esi |
161 | pop esi |
144 | pop ebx |
162 | pop ebx |
145 | mov esp,ebp |
163 | mov esp,ebp |
146 | pop ebp |
164 | pop ebp |
147 | ret 0x10 |
165 | ret 16 |
148 | ;***************************************************************************** |
166 | ;***************************************************************************** |
Line 149... | Line 167... | ||
149 | 167 | ||
150 | ;* Call: *************************************************************** |
168 | ;* Call: *************************************************************** |
151 | _memset: |
169 | _memset: |
Line 157... | Line 175... | ||
157 | pop edi |
175 | pop edi |
158 | ret |
176 | ret |
159 | ;***************************************************************************** |
177 | ;***************************************************************************** |
Line 160... | Line 178... | ||
160 | 178 | ||
161 | ;* Call: *************************************************************** |
179 | ;* Call: *************************************************************** |
- | 180 | CEncoder_Init: |
|
162 | lz_cm_01: |
181 | ;RangeEncoder_Init |
163 | and dword [0x51A10],0 |
182 | and dword [low],0 |
164 | and dword [0x51A14],0 |
183 | and dword [low+4],0 |
165 | or dword [0x51A04],0xFFFFFFFF |
184 | or dword [range],0xFFFFFFFF |
166 | push ebx |
185 | push ebx |
167 | push esi |
186 | push esi |
168 | push edi |
187 | push edi |
169 | xor eax,eax |
188 | xor eax,eax |
170 | mov edi,0x1BC08 |
189 | mov edi,_repDistances |
171 | stosd |
190 | stosd |
172 | stosd |
191 | stosd |
173 | xor ebx,ebx |
192 | xor ebx,ebx |
174 | stosd |
193 | stosd |
- | 194 | inc ebx |
|
175 | inc ebx |
195 | ;CBaseState_Init |
176 | mov byte [0x519EC],0 |
196 | mov byte [_state],0 |
177 | mov byte [0x19FAB],0 |
197 | mov byte [_previousByte],0 |
178 | stosd |
198 | stosd |
179 | mov [0x51A08],ebx |
199 | mov [_cacheSize],ebx |
180 | mov byte [0x519ED],0 |
200 | mov byte [_cache],0 |
181 | xor ecx,ecx |
201 | xor ecx,ecx |
182 | ;---------------------------------------------------------- |
202 | ;---------------------------------------------------------- |
183 | .labl_00: |
203 | .labl_00: |
184 | mov eax,ebx |
204 | mov eax,ebx |
185 | shl eax,cl |
205 | shl eax,cl |
186 | push 8 |
206 | push 8 |
187 | pop edx |
207 | pop edx |
188 | sub edx,ecx |
208 | sub edx,ecx |
189 | lea esi,[0x51A18+eax*4] |
209 | lea esi,[Models+eax*4] |
190 | shl edx,6 |
210 | shl edx,6 |
191 | ;---------------------------------------------------------- |
211 | ;---------------------------------------------------------- |
192 | .labl_01: |
212 | .labl_01: |
193 | mov edi,eax |
213 | mov edi,eax |
Line 196... | Line 216... | ||
196 | add edi,edx |
216 | add edi,edx |
197 | mov [esi],edi |
217 | mov [esi],edi |
198 | add esi,4 |
218 | add esi,4 |
199 | dec eax |
219 | dec eax |
200 | jne .labl_01 |
220 | jne .labl_01 |
- | 221 | ||
201 | inc ecx |
222 | inc ecx |
202 | cmp ecx,9 |
223 | cmp ecx,9 |
203 | jl .labl_00 |
224 | jl .labl_00 |
- | 225 | ||
204 | push 0xC |
226 | push 12 |
205 | pop edx |
227 | pop edx |
206 | mov esi,0x400 |
228 | mov esi,1024 |
207 | mov eax,esi |
229 | mov eax,esi |
208 | mov ecx,edx |
230 | mov ecx,edx |
209 | mov edi,0x29538 |
231 | mov edi,_isRepG2 |
210 | rep stosd |
232 | rep stosd |
211 | mov ecx,edx |
233 | mov ecx,edx |
212 | mov edi,0x1AF00 |
234 | mov edi,_isRepG1 |
213 | rep stosd |
235 | rep stosd |
214 | mov ecx,edx |
236 | mov ecx,edx |
215 | mov edi,0x1CC38 |
237 | mov edi,_isRepG0 |
216 | rep stosd |
238 | rep stosd |
217 | mov ecx,edx |
239 | mov ecx,edx |
218 | mov edi,0x515B8 |
240 | mov edi,_isRep |
219 | rep stosd |
241 | rep stosd |
220 | xor ecx,ecx |
242 | xor ecx,ecx |
221 | ;---------------------------------------------------------- |
243 | ;---------------------------------------------------------- |
222 | .labl_02: |
244 | .labl_02: |
223 | lea edi,[ecx+0x1A7B0] |
245 | lea edi,[ecx+_isRep0Long] |
224 | mov eax,esi |
246 | mov eax,esi |
225 | stosd |
247 | stosd |
226 | stosd |
248 | stosd |
227 | stosd |
249 | stosd |
228 | stosd |
250 | stosd |
229 | lea edi,[ecx+0x1AF30] |
251 | lea edi,[ecx+_isMatch] |
230 | mov eax,esi |
252 | mov eax,esi |
231 | stosd |
253 | stosd |
232 | stosd |
254 | stosd |
233 | stosd |
255 | stosd |
234 | add ecx,0x40 ;'@' |
256 | add ecx,64 |
235 | cmp ecx,0x300 |
257 | cmp ecx,768 |
236 | stosd |
258 | stosd |
237 | jl .labl_02 |
259 | jl .labl_02 |
- | 260 | ||
238 | mov eax,[0x519F4] |
261 | mov eax,[_numPrevBits] |
239 | mov ecx,[0x519F8] |
262 | mov ecx,[_numPosBits] |
240 | add ecx,eax |
263 | add ecx,eax |
241 | mov eax,ebx |
264 | mov eax,ebx |
242 | shl eax,cl |
265 | shl eax,cl |
243 | test eax,eax |
266 | test eax,eax |
244 | jbe .labl_04 |
267 | jbe .labl_04 |
- | 268 | ||
245 | xor edx,edx |
269 | xor edx,edx |
246 | mov ebx,eax |
270 | mov ebx,eax |
247 | ;---------------------------------------------------------- |
271 | ;---------------------------------------------------------- |
248 | .labl_03: |
272 | .labl_03: |
249 | mov eax,[0x519F0] |
273 | mov eax,[_posEncoders] |
250 | lea edi,[edx+eax] |
274 | lea edi,[edx+eax] |
251 | mov ecx,0x300 |
275 | mov ecx,768 |
252 | mov eax,esi |
276 | mov eax,esi |
253 | add edx,0xC00 |
277 | add edx,3072 |
254 | dec ebx |
278 | dec ebx |
255 | rep stosd |
279 | rep stosd |
256 | jne .labl_03 |
280 | jne .labl_03 |
257 | ;---------------------------------------------------------- |
281 | ;---------------------------------------------------------- |
258 | .labl_04: |
282 | .labl_04: |
259 | mov edi,0x1BC18 |
283 | mov edi,_posSlotEncoder |
260 | ;---------------------------------------------------------- |
284 | ;---------------------------------------------------------- |
261 | .labl_05: |
285 | .labl_05: |
262 | push 6 |
286 | push 6 |
263 | pop ecx |
287 | pop ecx |
264 | mov eax,edi |
288 | mov eax,edi |
265 | call cm_pr_15 |
289 | call CBitTreeEncoder_Init |
266 | add edi,0x404 |
290 | add edi,1028 |
267 | cmp edi,0x1CC28 |
291 | cmp edi,lastPosSlotFillingPos |
268 | jl .labl_05 |
292 | jl .labl_05 |
- | 293 | ||
269 | push 0x72 ;'r' |
294 | push 114 |
270 | mov eax,esi |
295 | mov eax,esi |
271 | pop ecx |
296 | pop ecx |
272 | mov edi,0x1B238 |
297 | mov edi,_literalEncoder |
273 | mov esi,0xD6D8 |
298 | mov esi,_lenEncoder |
274 | rep stosd |
299 | rep stosd |
275 | call cm_pr_00 |
300 | call CPriceTableEncoder_Init |
276 | mov esi,0x1CC68 |
301 | mov esi,_repMatchLenEncoder |
277 | call cm_pr_00 |
302 | call CPriceTableEncoder_Init |
278 | push 4 |
303 | push 4 |
279 | pop ecx |
304 | pop ecx |
280 | mov eax,0x515E8 |
305 | mov eax,_posAlignEncoder |
281 | call cm_pr_15 |
306 | call CBitTreeEncoder_Init |
282 | pop edi |
307 | pop edi |
283 | xor eax,eax |
308 | xor eax,eax |
284 | pop esi |
309 | pop esi |
285 | mov byte [0x19FAA],0 ;0x1B238 |
310 | mov byte [_longestMatchWasFound],0 |
286 | mov [0x29574],eax |
311 | mov [_optimumEndIndex],eax |
287 | mov [0x1AEF8],eax |
312 | mov [_optimumCurrentIndex],eax |
288 | mov [0x1AEFC],eax |
313 | mov [_additionalOffset],eax |
289 | pop ebx |
314 | pop ebx |
290 | ret |
315 | ret |
291 | ;***************************************************************************** |
316 | ;***************************************************************************** |
Line 292... | Line 317... | ||
292 | 317 | ||
293 | ;* Call: *************************************************************** |
318 | ;* Call: *************************************************************** |
294 | lz_cm_02: |
319 | CodeOneBlock: |
295 | sub esp,0x2C |
320 | sub esp,0x2C |
296 | cmp byte [0x19FA8],0 |
321 | cmp byte [_finished],0 |
297 | push ebx |
322 | push ebx |
298 | push ebp |
323 | push ebp |
299 | push esi |
324 | push esi |
300 | push edi |
325 | push edi |
Line 303... | Line 328... | ||
303 | .labl_00: |
328 | .labl_00: |
304 | xor al,al |
329 | xor al,al |
305 | jmp .labl_28 |
330 | jmp .labl_28 |
306 | ;---------------------------------------------------------- |
331 | ;---------------------------------------------------------- |
307 | .labl_01: |
332 | .labl_01: |
308 | mov ebp,[0x1B400] |
333 | mov ebp,[nowPos64] |
309 | mov edi,[0x1B404] |
334 | mov edi,[nowPos64+4] |
310 | mov eax,ebp |
335 | mov eax,ebp |
311 | or eax,edi |
336 | or eax,edi |
312 | mov byte [0x19FA8],1 |
337 | mov byte [_finished],1 |
313 | mov [esp+0x34],ebp |
338 | mov [esp+52],ebp |
314 | mov [esp+0x38],edi |
339 | mov [esp+56],edi |
315 | jne .labl_04 |
340 | jne .labl_04 |
- | 341 | ||
316 | mov eax,[0x52630] |
342 | mov eax,[_streamPos] |
317 | sub eax,[0x5262C] |
343 | sub eax,[_pos] |
318 | jne .labl_03 |
344 | jne .labl_03 |
- | 345 | ||
319 | push 5 |
346 | push 5 |
320 | pop esi |
347 | pop esi |
321 | ;---------------------------------------------------------- |
348 | ;---------------------------------------------------------- |
322 | .labl_02: |
349 | .labl_02: |
323 | call cm_pr_13 |
350 | call RangeEncoder_ShiftLow |
324 | dec esi |
351 | dec esi |
325 | jne .labl_02 |
352 | jne .labl_02 |
- | 353 | ||
326 | jmp .labl_00 |
354 | jmp .labl_00 |
327 | ;---------------------------------------------------------- |
355 | ;---------------------------------------------------------- |
328 | .labl_03: |
356 | .labl_03: |
329 | call cm_pr_06 |
357 | call ReadMatchDistances |
330 | movzx esi,byte [0x519EC] |
358 | movzx esi,byte [_state] |
331 | mov edx,esi |
359 | mov edx,esi |
332 | shl edx,6 |
360 | shl edx,6 |
333 | xor edi,edi |
361 | xor edi,edi |
334 | push edi |
362 | push edi |
335 | add edx,0x1AF30 |
363 | add edx,_isMatch |
336 | call cm_pr_14 |
364 | call CMyBitEncoder_Encode |
337 | mov al,[esi+LiteralNextStates] |
365 | mov al,[esi+LiteralNextStates] |
338 | mov ecx,[0x5262C] |
366 | mov ecx,[_pos] |
339 | mov [0x519EC],al |
367 | mov [_state],al |
340 | mov eax,[0x52628] |
368 | mov eax,[_buffer] |
341 | sub eax,[0x1AEFC] |
369 | sub eax,[_additionalOffset] |
342 | mov bl,[eax+ecx] |
370 | mov bl,[eax+ecx] |
343 | mov al,[0x19FAB] |
371 | mov al,[_previousByte] |
344 | mov [esp+0x18],bl |
372 | mov [esp+24],bl |
345 | push dword [esp+0x18] |
373 | push dword [esp+24] |
346 | push edi |
374 | push edi |
347 | call cm_pr_04 |
375 | call CState_IsCharState |
348 | imul eax,eax,0xC00 |
376 | imul eax,eax,3072 |
349 | add eax,[0x519F0] |
377 | add eax,[_posEncoders] |
350 | push eax |
378 | push eax |
351 | call cm_pr_03 |
379 | call CLiteralEncoder2_Encode |
352 | dec dword [0x1AEFC] |
380 | dec dword [_additionalOffset] |
353 | xor ebp,ebp |
381 | xor ebp,ebp |
354 | inc ebp |
382 | inc ebp |
355 | mov [0x19FAB],bl |
383 | mov [_previousByte],bl |
356 | mov [0x1B400],ebp |
384 | mov [nowPos64],ebp |
357 | mov [0x1B404],edi |
385 | mov [nowPos64+4],edi |
358 | ;---------------------------------------------------------- |
386 | ;---------------------------------------------------------- |
359 | .labl_04: |
387 | .labl_04: |
360 | mov eax,[0x52630] |
388 | mov eax,[_streamPos] |
361 | sub eax,[0x5262C] |
389 | sub eax,[_pos] |
362 | jne .labl_06 |
390 | jne .labl_06 |
- | 391 | ||
363 | push 5 |
392 | push 5 |
364 | pop esi |
393 | pop esi |
365 | ;---------------------------------------------------------- |
394 | ;---------------------------------------------------------- |
366 | .labl_05: |
395 | .labl_05: |
367 | call cm_pr_13 |
396 | call RangeEncoder_ShiftLow |
368 | dec esi |
397 | dec esi |
369 | jne .labl_05 |
398 | jne .labl_05 |
- | 399 | ||
370 | jmp .labl_00 |
400 | jmp .labl_00 |
371 | ;---------------------------------------------------------- |
401 | ;---------------------------------------------------------- |
372 | .labl_06: |
402 | .labl_06: |
373 | lea eax,[esp+0x14] |
403 | lea eax,[esp+20] |
374 | push eax |
404 | push eax |
375 | lea eax,[esp+0x14] |
405 | lea eax,[esp+20] |
376 | push eax |
406 | push eax |
377 | mov ebx,ebp |
407 | mov ebx,ebp |
378 | push ebp |
408 | push ebp |
379 | and ebx,3 |
409 | and ebx,3 |
380 | call lz_cm_03 |
410 | call GetOptimum |
381 | cmp dword [esp+0x14],1 |
411 | cmp dword [esp+20],1 |
382 | jne .labl_09 |
412 | jne .labl_09 |
- | 413 | ||
383 | cmp dword [esp+0x10],0xFFFFFFFF |
414 | cmp dword [esp+16],0xFFFFFFFF |
384 | jne .labl_09 |
415 | jne .labl_09 |
- | 416 | ||
385 | movzx eax,byte [0x519EC] |
417 | movzx eax,byte [_state] |
386 | shl eax,4 |
418 | shl eax,4 |
387 | add eax,ebx |
419 | add eax,ebx |
388 | push 0 |
420 | push 0 |
389 | lea edx,[0x1AF30+eax*4] |
421 | lea edx,[_isMatch+eax*4] |
390 | call cm_pr_14 |
422 | call CMyBitEncoder_Encode |
391 | mov eax,[0x52628] |
423 | mov eax,[_buffer] |
392 | mov esi,[0x1AEFC] |
424 | mov esi,[_additionalOffset] |
393 | mov ebx,[0x5262C] |
425 | mov ebx,[_pos] |
394 | sub eax,esi |
426 | sub eax,esi |
395 | mov al,[eax+ebx] |
427 | mov al,[eax+ebx] |
396 | mov [esp+0x18],al |
428 | mov [esp+24],al |
397 | mov al,[0x19FAB] |
429 | mov al,[_previousByte] |
398 | push ebp |
430 | push ebp |
399 | call cm_pr_04 |
431 | call CState_IsCharState |
400 | imul eax,eax,0xC00 |
432 | imul eax,eax,3072 |
401 | add eax,[0x519F0] |
433 | add eax,[_posEncoders] |
402 | cmp byte [0x519EC],7 |
434 | cmp byte [_state],7 |
403 | push dword [esp+0x18] |
435 | push dword [esp+24] |
404 | jb .labl_07 |
436 | jb .labl_07 |
- | 437 | ||
405 | mov ecx,[0x52628] |
438 | mov ecx,[_buffer] |
406 | sub ecx,[0x1BC08] |
439 | sub ecx,[_repDistances] |
407 | sub ecx,esi |
440 | sub ecx,esi |
408 | mov cl,[ecx+ebx-1] |
441 | mov cl,[ecx+ebx-1] |
409 | mov [esp+0x34],cl |
442 | mov [esp+52],cl |
410 | push dword [esp+0x34] |
443 | push dword [esp+52] |
411 | push eax |
444 | push eax |
412 | call lz_cm_04 |
445 | call CLiteralEncoder2_EncodeMatched |
413 | jmp .labl_08 |
446 | jmp .labl_08 |
414 | ;---------------------------------------------------------- |
447 | ;---------------------------------------------------------- |
415 | .labl_07: |
448 | .labl_07: |
416 | push eax |
449 | push eax |
417 | call cm_pr_03 |
450 | call CLiteralEncoder2_Encode |
418 | ;---------------------------------------------------------- |
451 | ;---------------------------------------------------------- |
419 | .labl_08: |
452 | .labl_08: |
420 | movzx eax,byte [0x519EC] |
453 | movzx eax,byte [_state] |
421 | mov al,[eax+LiteralNextStates] |
454 | mov al,[eax+LiteralNextStates] |
422 | mov [0x519EC],al |
455 | mov [_state],al |
423 | mov al,[esp+0x18] |
456 | mov al,[esp+24] |
424 | jmp .labl_24 |
457 | jmp .labl_24 |
425 | ;---------------------------------------------------------- |
458 | ;---------------------------------------------------------- |
426 | .labl_09: |
459 | .labl_09: |
427 | movzx edi,byte [0x519EC] |
460 | movzx edi,byte [_state] |
428 | mov eax,edi |
461 | mov eax,edi |
429 | shl eax,4 |
462 | shl eax,4 |
430 | add eax,ebx |
463 | add eax,ebx |
431 | shl eax,2 |
464 | shl eax,2 |
432 | push 1 |
465 | push 1 |
433 | lea edx,[eax+0x1AF30] |
466 | lea edx,[eax+_isMatch] |
434 | mov [esp+0x28],eax |
467 | mov [esp+40],eax |
435 | call cm_pr_14 |
468 | call CMyBitEncoder_Encode |
436 | cmp dword [esp+0x10],4 |
469 | cmp dword [esp+16],4 |
437 | jnb .labl_17 |
470 | jnb .labl_17 |
- | 471 | ||
438 | mov esi,edi |
472 | mov esi,edi |
439 | shl esi,2 |
473 | shl esi,2 |
440 | push 1 |
474 | push 1 |
441 | lea edx,[esi+0x515B8] |
475 | lea edx,[esi+_isRep] |
442 | call cm_pr_14 |
476 | call CMyBitEncoder_Encode |
443 | cmp dword [esp+0x10],0 |
477 | cmp dword [esp+16],0 |
444 | lea edx,[esi+0x1CC38] |
478 | lea edx,[esi+_isRepG0] |
445 | jne .labl_10 |
479 | jne .labl_10 |
- | 480 | ||
446 | push 0 |
481 | push 0 |
447 | call cm_pr_14 |
482 | call CMyBitEncoder_Encode |
448 | mov edx,[esp+0x24] |
483 | mov edx,[esp+36] |
449 | xor eax,eax |
484 | xor eax,eax |
450 | cmp dword [esp+0x14],1 |
485 | cmp dword [esp+20],1 |
451 | lea edx,[edx+0x1A7B0] |
486 | lea edx,[edx+_isRep0Long] |
452 | setne al |
487 | setne al |
453 | jmp .labl_12 |
488 | jmp .labl_12 |
454 | ;---------------------------------------------------------- |
489 | ;---------------------------------------------------------- |
455 | .labl_10: |
490 | .labl_10: |
456 | push 1 |
491 | push 1 |
457 | call cm_pr_14 |
492 | call CMyBitEncoder_Encode |
458 | cmp dword [esp+0x10],1 |
493 | cmp dword [esp+16],1 |
459 | lea edx,[esi+0x1AF00] |
494 | lea edx,[esi+_isRepG1] |
460 | jne .labl_11 |
495 | jne .labl_11 |
- | 496 | ||
461 | push 0 |
497 | push 0 |
462 | jmp .labl_13 |
498 | jmp .labl_13 |
463 | ;---------------------------------------------------------- |
499 | ;---------------------------------------------------------- |
464 | .labl_11: |
500 | .labl_11: |
465 | push 1 |
501 | push 1 |
466 | call cm_pr_14 |
502 | call CMyBitEncoder_Encode |
467 | mov eax,[esp+0x10] |
503 | mov eax,[esp+16] |
468 | add eax,0xFFFFFFFE |
504 | add eax,0xFFFFFFFE |
469 | lea edx,[esi+0x29538] |
505 | lea edx,[esi+_isRepG2] |
470 | ;---------------------------------------------------------- |
506 | ;---------------------------------------------------------- |
471 | .labl_12: |
507 | .labl_12: |
472 | push eax |
508 | push eax |
473 | ;---------------------------------------------------------- |
509 | ;---------------------------------------------------------- |
474 | .labl_13: |
510 | .labl_13: |
475 | call cm_pr_14 |
511 | call CMyBitEncoder_Encode |
476 | mov eax,[esp+0x14] |
512 | mov eax,[esp+20] |
477 | cmp eax,1 |
513 | cmp eax,1 |
478 | jne .labl_14 |
514 | jne .labl_14 |
- | 515 | ||
479 | mov al,[edi+ShortRepNextStates] |
516 | mov al,[edi+ShortRepNextStates] |
480 | jmp .labl_15 |
517 | jmp .labl_15 |
481 | ;---------------------------------------------------------- |
518 | ;---------------------------------------------------------- |
482 | .labl_14: |
519 | .labl_14: |
483 | add eax,0xFFFFFFFE |
520 | add eax,0xFFFFFFFE |
484 | mov esi,0x1CC68 |
521 | mov esi,_repMatchLenEncoder |
485 | call cm_pr_02 |
522 | call CPriceTableEncoder_Encode |
486 | mov al,[edi+RepNextStates] |
523 | mov al,[edi+RepNextStates] |
487 | ;---------------------------------------------------------- |
524 | ;---------------------------------------------------------- |
488 | .labl_15: |
525 | .labl_15: |
489 | mov [0x519EC],al |
526 | mov [_state],al |
490 | mov eax,[esp+0x10] |
527 | mov eax,[esp+16] |
491 | mov ecx,[0x1BC08+eax*4] |
528 | mov ecx,[_repDistances+eax*4] |
492 | test eax,eax |
529 | test eax,eax |
493 | je .labl_23 |
530 | je .labl_23 |
494 | ;---------------------------------------------------------- |
531 | ;---------------------------------------------------------- |
495 | .labl_16: |
532 | .labl_16: |
496 | dec eax |
533 | dec eax |
497 | mov edx,[0x1BC08+eax*4] |
534 | mov edx,[_repDistances+eax*4] |
498 | mov [0x1BC0C+eax*4],edx |
535 | mov [_repDistances+4+eax*4],edx |
499 | jne .labl_16 |
536 | jne .labl_16 |
- | 537 | ||
500 | mov [0x1BC08],ecx |
538 | mov [_repDistances],ecx |
501 | jmp .labl_23 |
539 | jmp .labl_23 |
502 | ;---------------------------------------------------------- |
540 | ;---------------------------------------------------------- |
503 | .labl_17: |
541 | .labl_17: |
504 | push 0 |
542 | push 0 |
505 | lea edx,[0x515B8+edi*4] |
543 | lea edx,[_isRep+edi*4] |
506 | call cm_pr_14 |
544 | call CMyBitEncoder_Encode |
507 | mov al,[edi+MatchNextStates] |
545 | mov al,[edi+MatchNextStates] |
508 | mov edi,[esp+0x14] |
546 | mov edi,[esp+20] |
509 | mov [0x519EC],al |
547 | mov [_state],al |
510 | add edi,0xFFFFFFFE |
548 | add edi,0xFFFFFFFE |
511 | mov eax,edi |
549 | mov eax,edi |
512 | mov esi,0xD6D8 |
550 | mov esi,_lenEncoder |
513 | call cm_pr_02 |
551 | call CPriceTableEncoder_Encode |
514 | sub dword [esp+0x10],4 |
552 | sub dword [esp+16],4 |
515 | mov eax,[esp+0x10] |
553 | mov eax,[esp+16] |
516 | call cm_pr_000 |
554 | call GetPosSlot |
517 | cmp dword [esp+0x14],6 |
555 | cmp dword [esp+20],6 |
518 | mov ebx,eax |
556 | mov ebx,eax |
519 | jb .labl_18 |
557 | jb .labl_18 |
- | 558 | ||
520 | push 3 |
559 | push 3 |
521 | pop edi |
560 | pop edi |
522 | ;---------------------------------------------------------- |
561 | ;---------------------------------------------------------- |
523 | .labl_18: |
562 | .labl_18: |
524 | imul edi,edi,0x404 |
563 | imul edi,edi,1028 |
525 | push ebx |
564 | push ebx |
526 | add edi,0x1BC18 |
565 | add edi,_posSlotEncoder |
527 | call cm_pr_16 |
566 | call cm_pr_16 |
528 | cmp ebx,4 |
567 | cmp ebx,4 |
529 | jb .labl_21 |
568 | jb .labl_21 |
- | 569 | ||
530 | mov esi,[esp+0x10] |
570 | mov esi,[esp+16] |
531 | xor eax,eax |
571 | xor eax,eax |
532 | inc eax |
572 | inc eax |
533 | mov ecx,ebx |
573 | mov ecx,ebx |
534 | mov edi,ebx |
574 | mov edi,ebx |
535 | and edi,eax |
575 | and edi,eax |
536 | shr ecx,1 |
576 | shr ecx,1 |
537 | dec ecx |
577 | dec ecx |
538 | or edi,2 |
578 | or edi,2 |
539 | shl edi,cl |
579 | shl edi,cl |
540 | sub esi,edi |
580 | sub esi,edi |
541 | cmp ebx,0xE |
581 | cmp ebx,14 |
542 | jnb .labl_20 |
582 | jnb .labl_20 |
- | 583 | ||
543 | mov [esp+0x20],esi |
584 | mov [esp+32],esi |
544 | mov [esp+0x1C],eax |
585 | mov [esp+28],eax |
545 | test ecx,ecx |
586 | test ecx,ecx |
546 | jle .labl_21 |
587 | jle .labl_21 |
- | 588 | ||
547 | mov [esp+0x24],ecx |
589 | mov [esp+36],ecx |
548 | ;---------------------------------------------------------- |
590 | ;---------------------------------------------------------- |
549 | .labl_19: |
591 | .labl_19: |
550 | mov edx,[esp+0x1C] |
592 | mov edx,[esp+28] |
551 | mov esi,[esp+0x20] |
593 | mov esi,[esp+32] |
552 | sub edx,ebx |
594 | sub edx,ebx |
553 | add edx,edi |
595 | add edx,edi |
554 | and esi,1 |
596 | and esi,1 |
555 | push esi |
597 | push esi |
556 | lea edx,[0x1B234+edx*4] |
598 | lea edx,[_numLiteralContextBits+edx*4] |
557 | call cm_pr_14 |
599 | call CMyBitEncoder_Encode |
558 | mov eax,[esp+0x1C] |
600 | mov eax,[esp+28] |
559 | shr dword [esp+0x20],1 |
601 | shr dword [esp+32],1 |
560 | dec dword [esp+0x24] |
602 | dec dword [esp+36] |
561 | lea eax,[esi+eax*2] |
603 | lea eax,[esi+eax*2] |
562 | mov [esp+0x1C],eax |
604 | mov [esp+28],eax |
563 | jne .labl_19 |
605 | jne .labl_19 |
- | 606 | ||
564 | jmp .labl_21 |
607 | jmp .labl_21 |
565 | ;---------------------------------------------------------- |
608 | ;---------------------------------------------------------- |
566 | .labl_20: |
609 | .labl_20: |
567 | lea eax,[ecx-4] |
610 | lea eax,[ecx-4] |
568 | mov ecx,esi |
611 | mov ecx,esi |
569 | shr ecx,4 |
612 | shr ecx,4 |
570 | push ecx |
613 | push ecx |
571 | call lz_cm_05 |
614 | call RangeEncoder_EncodeDirectBits |
572 | and esi,0xF |
615 | and esi,0xF |
573 | push esi |
616 | push esi |
574 | call lz_cm_06 |
617 | call CBitTreeEncoder_ReverseEncode |
575 | dec dword [0x1B230] |
618 | dec dword [_alignPriceCount] |
576 | jne .labl_21 |
619 | jne .labl_21 |
- | 620 | ||
577 | call cm_pr_09 |
621 | call FillAlignPrices |
578 | ;---------------------------------------------------------- |
622 | ;---------------------------------------------------------- |
579 | .labl_21: |
623 | .labl_21: |
580 | mov eax,0x1BC14 |
624 | mov eax,_repDistances+12 |
581 | ;---------------------------------------------------------- |
625 | ;---------------------------------------------------------- |
582 | .labl_22: |
626 | .labl_22: |
583 | mov ecx,[eax-4] |
627 | mov ecx,[eax-4] |
584 | mov [eax],ecx |
628 | mov [eax],ecx |
585 | sub eax,4 |
629 | sub eax,4 |
586 | cmp eax,0x1BC08 |
630 | cmp eax,_repDistances |
587 | jne .labl_22 |
631 | jne .labl_22 |
- | 632 | ||
588 | mov eax,[esp+0x10] |
633 | mov eax,[esp+16] |
589 | mov [0x1BC08],eax |
634 | mov [_repDistances],eax |
590 | ;---------------------------------------------------------- |
635 | ;---------------------------------------------------------- |
591 | .labl_23: |
636 | .labl_23: |
592 | mov eax,[0x52628] |
637 | mov eax,[_buffer] |
593 | mov esi,[0x1AEFC] |
638 | mov esi,[_additionalOffset] |
594 | mov ebx,[0x5262C] |
639 | mov ebx,[_pos] |
595 | mov ecx,[esp+0x14] |
640 | mov ecx,[esp+20] |
596 | mov edi,[0x1B404] |
641 | mov edi,[nowPos64+4] |
597 | sub eax,esi |
642 | sub eax,esi |
598 | add eax,ebx |
643 | add eax,ebx |
599 | mov al,[eax+ecx-1] |
644 | mov al,[eax+ecx-1] |
600 | ;---------------------------------------------------------- |
645 | ;---------------------------------------------------------- |
601 | .labl_24: |
646 | .labl_24: |
602 | sub esi,[esp+0x14] |
647 | sub esi,[esp+20] |
603 | add ebp,[esp+0x14] |
648 | add ebp,[esp+20] |
604 | mov [0x19FAB],al |
649 | mov [_previousByte],al |
605 | adc edi,0 |
650 | adc edi,0 |
606 | mov eax,ebp |
651 | mov eax,ebp |
607 | sub eax,[0x1CC28] |
652 | sub eax,[lastPosSlotFillingPos] |
608 | mov ecx,edi |
653 | mov ecx,edi |
609 | sbb ecx,[0x1CC2C] |
654 | sbb ecx,[lastPosSlotFillingPos+4] |
610 | mov [0x1AEFC],esi |
655 | mov [_additionalOffset],esi |
611 | mov [0x1B400],ebp |
656 | mov [nowPos64],ebp |
612 | mov [0x1B404],edi |
657 | mov [nowPos64+4],edi |
613 | mov [esp+0x28],ecx |
658 | mov [esp+40],ecx |
614 | jne .labl_25 |
659 | jne .labl_25 |
- | 660 | ||
615 | cmp eax,0x200 |
661 | cmp eax,512 |
616 | jb .labl_26 |
662 | jb .labl_26 |
617 | ;---------------------------------------------------------- |
663 | ;---------------------------------------------------------- |
618 | .labl_25: |
664 | .labl_25: |
619 | call cm_pr_07 |
665 | call FillPosSlotPrices |
620 | call cm_pr_08 |
666 | call FillDistancesPrices |
621 | mov [0x1CC28],ebp |
667 | mov [lastPosSlotFillingPos],ebp |
622 | mov [0x1CC2C],edi |
668 | mov [lastPosSlotFillingPos+4],edi |
623 | ;---------------------------------------------------------- |
669 | ;---------------------------------------------------------- |
624 | .labl_26: |
670 | .labl_26: |
625 | test esi,esi |
671 | test esi,esi |
626 | jne .labl_06 |
672 | jne .labl_06 |
- | 673 | ||
627 | mov eax,[0x52630] |
674 | mov eax,[_streamPos] |
628 | sub eax,ebx |
675 | sub eax,ebx |
629 | je .labl_29 |
676 | je .labl_29 |
- | 677 | ||
630 | mov ecx,ebp |
678 | mov ecx,ebp |
631 | sub ecx,[esp+0x34] |
679 | sub ecx,[esp+52] |
632 | mov eax,edi |
680 | mov eax,edi |
633 | sbb eax,[esp+0x38] |
681 | sbb eax,[esp+56] |
634 | test eax,eax |
682 | test eax,eax |
635 | ja .labl_27 |
683 | ja .labl_27 |
- | 684 | ||
636 | jb .labl_06 |
685 | jb .labl_06 |
- | 686 | ||
637 | cmp ecx,0x1000 |
687 | cmp ecx,0x1000 |
638 | jb .labl_06 |
688 | jb .labl_06 |
639 | ;---------------------------------------------------------- |
689 | ;---------------------------------------------------------- |
640 | .labl_27: |
690 | .labl_27: |
641 | mov byte [0x19FA8],0 |
691 | mov byte [_finished],0 |
642 | mov al,1 |
692 | mov al,1 |
643 | ;---------------------------------------------------------- |
693 | ;---------------------------------------------------------- |
644 | .labl_28: |
694 | .labl_28: |
645 | pop edi |
695 | pop edi |
646 | pop esi |
696 | pop esi |
647 | pop ebp |
697 | pop ebp |
648 | pop ebx |
698 | pop ebx |
649 | add esp,0x2C |
699 | add esp,44 |
650 | ret |
700 | ret |
651 | ;---------------------------------------------------------- |
701 | ;---------------------------------------------------------- |
652 | .labl_29: |
702 | .labl_29: |
653 | push 5 |
703 | push 5 |
654 | pop esi |
704 | pop esi |
655 | ;---------------------------------------------------------- |
705 | ;---------------------------------------------------------- |
656 | .labl_30: |
706 | .labl_30: |
657 | call cm_pr_13 |
707 | call RangeEncoder_ShiftLow |
658 | dec esi |
708 | dec esi |
659 | jne .labl_30 |
709 | jne .labl_30 |
- | 710 | ||
660 | jmp .labl_00 |
711 | jmp .labl_00 |
661 | ;***************************************************************************** |
712 | ;***************************************************************************** |
Line 662... | Line 713... | ||
662 | 713 | ||
663 | ;* Call: *************************************************************** |
714 | ;* Call: *************************************************************** |
664 | lz_cm_03: |
715 | GetOptimum: |
665 | push ebp |
716 | push ebp |
666 | mov ebp,esp |
717 | mov ebp,esp |
667 | mov ecx,[0x1AEF8] |
718 | mov ecx,[_optimumCurrentIndex] |
668 | sub esp,0x74 |
719 | sub esp,116 |
669 | push esi |
720 | push esi |
670 | cmp [0x29574],ecx |
721 | cmp [_optimumEndIndex],ecx |
- | 722 | je .labl_00 |
|
671 | je .labl_00 |
723 | |
672 | mov eax,ecx |
724 | mov eax,ecx |
673 | imul eax,eax,0x28 |
725 | imul eax,eax,40 |
674 | add eax,0x29578 |
726 | add eax,state.State |
675 | mov edx,[eax+0x10] |
727 | mov edx,[eax+16] |
676 | mov eax,[eax+0x14] |
728 | mov eax,[eax+20] |
677 | mov esi,edx |
729 | mov esi,edx |
678 | sub esi,ecx |
730 | sub esi,ecx |
679 | mov ecx,[ebp+0x10] |
731 | mov ecx,[ebp+16] |
680 | mov [ecx],esi |
732 | mov [ecx],esi |
681 | mov ecx,[ebp+0xC] |
733 | mov ecx,[ebp+12] |
682 | mov [ecx],eax |
734 | mov [ecx],eax |
683 | mov [0x1AEF8],edx |
735 | mov [_optimumCurrentIndex],edx |
684 | jmp .labl_76 |
736 | jmp .labl_76 |
685 | ;---------------------------------------------------------- |
737 | ;---------------------------------------------------------- |
686 | .labl_00: |
738 | .labl_00: |
687 | push edi |
739 | push edi |
688 | xor edi,edi |
740 | xor edi,edi |
689 | cmp byte [0x19FAA],0 ;0x1B238 |
741 | cmp byte [_longestMatchWasFound],0 |
690 | mov [0x29574],edi |
742 | mov [_optimumEndIndex],edi |
691 | mov [0x1AEF8],edi |
743 | mov [_optimumCurrentIndex],edi |
- | 744 | jne .labl_01 |
|
692 | jne .labl_01 |
745 | |
693 | call cm_pr_06 |
746 | call ReadMatchDistances |
694 | jmp .labl_02 |
747 | jmp .labl_02 |
695 | ;---------------------------------------------------------- |
748 | ;---------------------------------------------------------- |
696 | .labl_01: |
749 | .labl_01: |
697 | mov eax,[0x19FAC] |
750 | mov eax,[_longestMatchLength] |
698 | mov byte [0x19FAA],0 ;0x1B238 |
751 | mov byte [_longestMatchWasFound],0 |
699 | ;---------------------------------------------------------- |
752 | ;---------------------------------------------------------- |
700 | .labl_02: |
753 | .labl_02: |
701 | push ebx |
754 | push ebx |
702 | mov ebx,[ebp+8] |
755 | mov ebx,[ebp+8] |
703 | mov [ebp-0x10],eax |
756 | mov [ebp-16],eax |
704 | mov eax,ebx |
757 | mov eax,ebx |
705 | shl eax,2 |
758 | shl eax,2 |
706 | mov [ebp-0x4C],eax |
759 | mov [ebp-76],eax |
707 | ;---------------------------------------------------------- |
760 | ;---------------------------------------------------------- |
708 | .labl_03: |
761 | .labl_03: |
709 | mov esi,edi |
762 | mov esi,edi |
710 | shl esi,2 |
763 | shl esi,2 |
711 | mov eax,[esi+0x1BC08] |
764 | mov eax,[esi+_repDistances] |
712 | push eax |
765 | push eax |
713 | mov [ebp+esi-0x64],eax |
766 | mov [ebp+esi-100],eax |
714 | push dword 0xFFFFFFFF |
767 | push dword 0xFFFFFFFF |
715 | mov eax,0x111 |
768 | mov eax,273 |
716 | call cm_pr_18 |
769 | call GetMatchLen |
717 | mov [ebp+esi-0x74],eax |
770 | mov [ebp+esi-116],eax |
718 | test edi,edi |
771 | test edi,edi |
- | 772 | je .labl_04 |
|
719 | je .labl_04 |
773 | |
720 | mov ecx,[ebp-0x4C] |
774 | mov ecx,[ebp-76] |
721 | cmp eax,[ebp+ecx-0x74] |
775 | cmp eax,[ebp+ecx-116] |
722 | jbe .labl_05 |
776 | jbe .labl_05 |
723 | ;---------------------------------------------------------- |
777 | ;---------------------------------------------------------- |
724 | .labl_04: |
778 | .labl_04: |
725 | mov ebx,edi |
779 | mov ebx,edi |
726 | mov [ebp-0x4C],esi |
780 | mov [ebp-76],esi |
727 | ;---------------------------------------------------------- |
781 | ;---------------------------------------------------------- |
728 | .labl_05: |
782 | .labl_05: |
729 | inc edi |
783 | inc edi |
730 | cmp edi,4 |
784 | cmp edi,4 |
- | 785 | jb .labl_03 |
|
731 | jb .labl_03 |
786 | |
732 | mov eax,[ebp+ebx*4-0x74] |
787 | mov eax,[ebp+ebx*4-116] |
733 | mov ecx,0x80 ;'' |
788 | mov ecx,128 |
734 | mov [ebp-0x44],eax |
789 | mov [ebp-68],eax |
735 | cmp eax,ecx |
790 | cmp eax,ecx |
- | 791 | jb .labl_06 |
|
736 | jb .labl_06 |
792 | |
737 | mov ecx,[ebp+0xC] |
793 | mov ecx,[ebp+12] |
738 | mov [ecx],ebx |
794 | mov [ecx],ebx |
739 | jmp .labl_07 |
795 | jmp .labl_07 |
740 | ;---------------------------------------------------------- |
796 | ;---------------------------------------------------------- |
741 | .labl_06: |
797 | .labl_06: |
742 | cmp [ebp-0x10],ecx |
798 | cmp [ebp-16],ecx |
- | 799 | jb .labl_08 |
|
743 | jb .labl_08 |
800 | |
744 | mov eax,[0x1ACB0] |
801 | mov eax,[distances+512] |
745 | mov ecx,[ebp+0xC] |
802 | mov ecx,[ebp+12] |
746 | add eax,4 |
803 | add eax,4 |
747 | mov [ecx],eax |
804 | mov [ecx],eax |
748 | mov eax,[ebp-0x10] |
805 | mov eax,[ebp-16] |
749 | ;---------------------------------------------------------- |
806 | ;---------------------------------------------------------- |
750 | .labl_07: |
807 | .labl_07: |
751 | mov ecx,[ebp+0x10] |
808 | mov ecx,[ebp+16] |
752 | mov [ecx],eax |
809 | mov [ecx],eax |
753 | dec eax |
810 | dec eax |
754 | call lz_cm_07 |
811 | call MovePos |
755 | jmp .labl_75 |
812 | jmp .labl_75 |
756 | ;---------------------------------------------------------- |
813 | ;---------------------------------------------------------- |
757 | .labl_08: |
814 | .labl_08: |
758 | mov ecx,[0x52628] |
815 | mov ecx,[_buffer] |
759 | mov eax,[0x5262C] |
816 | mov eax,[_pos] |
760 | mov dl,[eax+ecx-1] |
817 | mov dl,[eax+ecx-1] |
761 | sub eax,[0x1BC08] |
818 | sub eax,[_repDistances] |
762 | mov bl,[0x519EC] |
819 | mov bl,[_state] |
763 | mov [0x29578],bl |
820 | mov [state.State],bl |
764 | mov al,[eax+ecx-2] |
821 | mov al,[eax+ecx-2] |
765 | mov [ebp-0x34],al |
822 | mov [ebp-52],al |
766 | mov eax,[ebp+8] |
823 | mov eax,[ebp+8] |
767 | and eax,3 |
824 | and eax,3 |
768 | movzx ecx,bl |
825 | movzx ecx,bl |
769 | shl ecx,4 |
826 | shl ecx,4 |
770 | add ecx,eax |
827 | add ecx,eax |
771 | mov esi,[0x1AF30+ecx*4] |
828 | mov esi,[_isMatch+ecx*4] |
772 | mov [ebp-0x1C],eax |
829 | mov [ebp-28],eax |
773 | cmp bl,7 |
830 | cmp bl,7 |
774 | sbb al,al |
831 | sbb al,al |
775 | mov [ebp-0x30],dl |
832 | mov [ebp-48],dl |
776 | push dword [ebp-0x30] |
833 | push dword [ebp-48] |
777 | inc al |
834 | inc al |
778 | push dword [ebp-0x34] |
835 | push dword [ebp-52] |
779 | movzx eax,al |
836 | movzx eax,al |
780 | push eax |
837 | push eax |
781 | push dword [ebp+8] |
838 | push dword [ebp+8] |
782 | mov al,[0x19FAB] |
839 | mov al,[_previousByte] |
783 | mov [ebp-0x4C],esi |
840 | mov [ebp-76],esi |
784 | call cm_pr_05 |
841 | call CLiteralEncoder_GetPrice |
785 | or dword [0x295B4],0xFFFFFFFF |
842 | or dword [state.BackPrev+40],0xFFFFFFFF |
786 | and dword [0x295B0],0 |
843 | and dword [state.PosPrev+40],0 |
787 | shr esi,2 |
844 | shr esi,2 |
788 | add eax,[0x51A18+esi*4] |
845 | add eax,[Models+esi*4] |
789 | mov byte [0x295A1],0 |
846 | mov byte [state.Prev1IsChar+40],0 |
790 | mov [0x295AC],eax |
847 | mov [state.Price+40],eax |
791 | lea esi,[ebp-0x64] |
848 | lea esi,[ebp-100] |
792 | mov edi,0x29590 |
849 | mov edi,state.Backs |
793 | movsd |
850 | movsd |
794 | movsd |
851 | movsd |
795 | mov eax,0x800 |
852 | mov eax,2048 |
796 | mov ecx,eax |
853 | mov ecx,eax |
797 | sub ecx,[ebp-0x4C] |
854 | sub ecx,[ebp-76] |
798 | movsd |
855 | movsd |
799 | shr ecx,2 |
856 | shr ecx,2 |
800 | mov edx,[0x51A18+ecx*4] |
857 | mov edx,[Models+ecx*4] |
801 | movzx ecx,bl |
858 | movzx ecx,bl |
802 | movsd |
859 | movsd |
803 | mov esi,[0x515B8+ecx*4] |
860 | mov esi,[_isRep+ecx*4] |
804 | sub eax,esi |
861 | sub eax,esi |
805 | shr eax,2 |
862 | shr eax,2 |
806 | mov edi,[0x51A18+eax*4] |
863 | mov edi,[Models+eax*4] |
807 | mov al,[ebp-0x30] |
864 | mov al,[ebp-48] |
808 | add edi,edx |
865 | add edi,edx |
809 | mov [ebp-0x4C],edx |
866 | mov [ebp-76],edx |
810 | cmp [ebp-0x34],al |
867 | cmp [ebp-52],al |
- | 868 | jne .labl_09 |
|
811 | jne .labl_09 |
869 | |
812 | push dword [ebp-0x1C] |
870 | push dword [ebp-28] |
813 | mov al,bl |
871 | mov al,bl |
814 | call cm_pr_10 |
872 | call GetRepLen1Price |
815 | add eax,edi |
873 | add eax,edi |
816 | cmp eax,[0x295AC] |
874 | cmp eax,[state.Price+40] |
- | 875 | jnb .labl_09 |
|
817 | jnb .labl_09 |
876 | |
818 | and dword [0x295B4],0 |
877 | and dword [state.BackPrev+40],0 |
819 | mov [0x295AC],eax |
878 | mov [state.Price+40],eax |
820 | mov byte [0x295A1],0 |
879 | mov byte [state.Prev1IsChar+40],0 |
821 | ;---------------------------------------------------------- |
880 | ;---------------------------------------------------------- |
822 | .labl_09: |
881 | .labl_09: |
823 | push 2 |
882 | push 2 |
824 | pop eax |
883 | pop eax |
825 | cmp [ebp-0x10],eax |
884 | cmp [ebp-16],eax |
- | 885 | jnb .labl_10 |
|
826 | jnb .labl_10 |
886 | |
827 | mov eax,[ebp+0xC] |
887 | mov eax,[ebp+12] |
828 | mov ecx,[0x295B4] |
888 | mov ecx,[state.BackPrev+40] |
829 | mov [eax],ecx |
889 | mov [eax],ecx |
830 | mov eax,[ebp+0x10] |
890 | mov eax,[ebp+16] |
831 | mov dword [eax],1 |
891 | mov dword [eax],1 |
832 | jmp .labl_75 |
892 | jmp .labl_75 |
833 | ;---------------------------------------------------------- |
893 | ;---------------------------------------------------------- |
834 | .labl_10: |
894 | .labl_10: |
835 | mov ecx,[ebp-0x10] |
895 | mov ecx,[ebp-16] |
836 | shr esi,2 |
896 | shr esi,2 |
837 | mov esi,[0x51A18+esi*4] |
897 | mov esi,[Models+esi*4] |
838 | add esi,[ebp-0x4C] |
898 | add esi,[ebp-76] |
839 | mov [ebp-0x4C],esi |
899 | mov [ebp-76],esi |
840 | cmp ecx,[ebp-0x44] |
900 | cmp ecx,[ebp-68] |
- | 901 | ja .labl_11 |
|
841 | ja .labl_11 |
902 | |
842 | and dword [ebp-0x10],0 |
903 | and dword [ebp-16],0 |
843 | ;---------------------------------------------------------- |
904 | ;---------------------------------------------------------- |
844 | .labl_11: |
905 | .labl_11: |
845 | mov [ebp-0x18],eax |
906 | mov [ebp-24],eax |
846 | cmp [ebp-0x10],eax |
907 | cmp [ebp-16],eax |
- | 908 | jb .labl_13 |
|
847 | jb .labl_13 |
909 | |
848 | mov esi,0x295DC |
910 | mov esi,state.BackPrev+40*2 |
849 | ;---------------------------------------------------------- |
911 | ;---------------------------------------------------------- |
850 | .labl_12: |
912 | .labl_12: |
851 | mov eax,[ebp-0x18] |
913 | mov eax,[ebp-24] |
852 | mov edx,[0x1AAB0+eax*4] |
914 | mov edx,[distances+eax*4] |
853 | push dword [ebp-0x1C] |
915 | push dword [ebp-28] |
854 | and dword [esi-4],0 |
916 | and dword [esi-4],0 |
855 | lea ecx,[edx+4] |
917 | lea ecx,[edx+4] |
856 | mov [esi],ecx |
918 | mov [esi],ecx |
857 | call cm_pr_12 |
919 | call GetPosLenPrice |
858 | add eax,[ebp-0x4C] |
920 | add eax,[ebp-76] |
859 | inc dword [ebp-0x18] |
921 | inc dword [ebp-24] |
860 | mov [esi-8],eax |
922 | mov [esi-8],eax |
861 | mov eax,[ebp-0x18] |
923 | mov eax,[ebp-24] |
862 | mov byte [esi-0x13],0 |
924 | mov byte [esi-19],0 |
863 | add esi,0x28 ;'(' |
925 | add esi,40 |
864 | cmp eax,[ebp-0x10] |
926 | cmp eax,[ebp-16] |
865 | jbe .labl_12 |
927 | jbe .labl_12 |
866 | ;---------------------------------------------------------- |
928 | ;---------------------------------------------------------- |
867 | .labl_13: |
929 | .labl_13: |
868 | mov ecx,[ebp-0x10] |
930 | mov ecx,[ebp-16] |
869 | cmp ecx,[ebp-0x44] |
931 | cmp ecx,[ebp-68] |
- | 932 | jnb .labl_14 |
|
870 | jnb .labl_14 |
933 | |
871 | mov ecx,[ebp-0x44] |
934 | mov ecx,[ebp-68] |
872 | mov [ebp-0x10],ecx |
935 | mov [ebp-16],ecx |
873 | ;---------------------------------------------------------- |
936 | ;---------------------------------------------------------- |
874 | .labl_14: |
937 | .labl_14: |
875 | cmp [ebp-0x18],ecx |
938 | cmp [ebp-24],ecx |
- | 939 | ja .labl_16 |
|
876 | ja .labl_16 |
940 | |
877 | mov eax,[ebp-0x18] |
941 | mov eax,[ebp-24] |
878 | sub ecx,[ebp-0x18] |
942 | sub ecx,[ebp-24] |
879 | imul eax,eax,0x28 |
943 | imul eax,eax,40 |
880 | add eax,0x29584 |
944 | add eax,state.Price |
881 | inc ecx |
945 | inc ecx |
882 | ;---------------------------------------------------------- |
946 | ;---------------------------------------------------------- |
883 | .labl_15: |
947 | .labl_15: |
884 | mov dword [eax],0x0FFFFFFF |
948 | mov dword [eax],kIfinityPrice |
885 | add eax,0x28 ;'(' |
949 | add eax,40 |
886 | dec ecx |
950 | dec ecx |
887 | jne .labl_15 |
951 | jne .labl_15 |
888 | ;---------------------------------------------------------- |
952 | ;---------------------------------------------------------- |
889 | .labl_16: |
953 | .labl_16: |
890 | and dword [ebp-0x18],0 |
954 | and dword [ebp-24],0 |
891 | ;---------------------------------------------------------- |
955 | ;---------------------------------------------------------- |
892 | .labl_17: |
956 | .labl_17: |
893 | mov eax,[ebp-0x18] |
957 | mov eax,[ebp-24] |
894 | mov eax,[ebp+eax*4-0x74] |
958 | mov eax,[ebp+eax*4-116] |
895 | push 2 |
959 | push 2 |
896 | pop ecx |
960 | pop ecx |
897 | mov [ebp-0x20],ecx |
961 | mov [ebp-32],ecx |
898 | cmp eax,ecx |
962 | cmp eax,ecx |
- | 963 | jb .labl_20 |
|
899 | jb .labl_20 |
964 | |
900 | mov esi,0x295D4 |
965 | mov esi,state.Price+40*2 |
901 | ;---------------------------------------------------------- |
966 | ;---------------------------------------------------------- |
902 | .labl_18: |
967 | .labl_18: |
903 | push dword [ebp-0x1C] |
968 | push dword [ebp-28] |
904 | mov edx,[ebp-0x18] |
969 | mov edx,[ebp-24] |
905 | movzx eax,bl |
970 | movzx eax,bl |
906 | push eax |
971 | push eax |
907 | mov eax,[ebp-0x20] |
972 | mov eax,[ebp-32] |
908 | call cm_pr_11 |
973 | call GetRepPrice |
909 | add eax,edi |
974 | add eax,edi |
910 | cmp eax,[esi] |
975 | cmp eax,[esi] |
- | 976 | jnb .labl_19 |
|
911 | jnb .labl_19 |
977 | |
912 | and dword [esi+4],0 |
978 | and dword [esi+4],0 |
913 | mov [esi],eax |
979 | mov [esi],eax |
914 | mov eax,[ebp-0x18] |
980 | mov eax,[ebp-24] |
915 | mov [esi+8],eax |
981 | mov [esi+8],eax |
916 | mov byte [esi-0xB],0 |
982 | mov byte [esi-11],0 |
917 | ;---------------------------------------------------------- |
983 | ;---------------------------------------------------------- |
918 | .labl_19: |
984 | .labl_19: |
919 | inc dword [ebp-0x20] |
985 | inc dword [ebp-32] |
920 | mov eax,[ebp-0x18] |
986 | mov eax,[ebp-24] |
921 | mov ecx,[ebp-0x20] |
987 | mov ecx,[ebp-32] |
922 | add esi,0x28 ;'(' |
988 | add esi,40 |
923 | cmp ecx,[ebp+eax*4-0x74] |
989 | cmp ecx,[ebp+eax*4-116] |
924 | jbe .labl_18 |
990 | jbe .labl_18 |
925 | ;---------------------------------------------------------- |
991 | ;---------------------------------------------------------- |
926 | .labl_20: |
992 | .labl_20: |
927 | inc dword [ebp-0x18] |
993 | inc dword [ebp-24] |
928 | cmp dword [ebp-0x18],4 |
994 | cmp dword [ebp-24],4 |
- | 995 | jb .labl_17 |
|
929 | jb .labl_17 |
996 | |
930 | mov eax,[ebp-0x10] |
997 | mov eax,[ebp-16] |
931 | xor ecx,ecx |
998 | xor ecx,ecx |
932 | inc ecx |
999 | inc ecx |
933 | mov [ebp-8],eax |
1000 | mov [ebp-8],eax |
934 | mov [ebp-0xC],ecx |
1001 | mov [ebp-12],ecx |
935 | cmp eax,ecx |
1002 | cmp eax,ecx |
936 | je .labl_74 |
1003 | je .labl_74 |
937 | ;---------------------------------------------------------- |
1004 | ;---------------------------------------------------------- |
938 | .labl_21: |
1005 | .labl_21: |
939 | mov edi,[ebp-0xC] |
1006 | mov edi,[ebp-12] |
940 | inc dword [ebp+8] |
1007 | inc dword [ebp+8] |
941 | mov ebx,edi |
1008 | mov ebx,edi |
942 | imul ebx,ebx,0x28 |
1009 | imul ebx,ebx,40 |
943 | mov dl,[ebx+0x29579] |
1010 | mov dl,[ebx+state.Prev1IsChar] |
944 | mov esi,[ebx+0x29588] |
1011 | mov esi,[ebx+state.PosPrev] |
945 | test dl,dl |
1012 | test dl,dl |
- | 1013 | je .labl_25 |
|
946 | je .labl_25 |
1014 | |
947 | dec esi |
1015 | dec esi |
948 | cmp byte [ebx+0x2957A],0 |
1016 | cmp byte [ebx+state.Prev2],0 |
- | 1017 | je .labl_23 |
|
949 | je .labl_23 |
1018 | |
950 | mov eax,[ebx+0x2957C] |
1019 | mov eax,[ebx+state.PosPrev2] |
951 | imul eax,eax,0x28 |
1020 | imul eax,eax,40 |
952 | cmp dword [ebx+0x29580],4 |
1021 | cmp dword [ebx+state.BackPrev2],4 |
953 | mov al,[eax+0x29578] |
1022 | mov al,[eax+state.State] |
954 | movzx eax,al |
1023 | movzx eax,al |
- | 1024 | jnb .labl_22 |
|
955 | jnb .labl_22 |
1025 | |
956 | mov al,[eax+RepNextStates] |
1026 | mov al,[eax+RepNextStates] |
957 | jmp .labl_24 |
1027 | jmp .labl_24 |
958 | ;---------------------------------------------------------- |
1028 | ;---------------------------------------------------------- |
959 | .labl_22: |
1029 | .labl_22: |
960 | mov al,[eax+MatchNextStates] |
1030 | mov al,[eax+MatchNextStates] |
961 | jmp .labl_24 |
1031 | jmp .labl_24 |
962 | ;---------------------------------------------------------- |
1032 | ;---------------------------------------------------------- |
963 | .labl_23: |
1033 | .labl_23: |
964 | mov eax,esi |
1034 | mov eax,esi |
965 | imul eax,eax,0x28 |
1035 | imul eax,eax,40 |
966 | mov al,[eax+0x29578] |
1036 | mov al,[eax+state.State] |
967 | ;---------------------------------------------------------- |
1037 | ;---------------------------------------------------------- |
968 | .labl_24: |
1038 | .labl_24: |
969 | movzx eax,al |
1039 | movzx eax,al |
970 | mov cl,[eax+LiteralNextStates] |
1040 | mov cl,[eax+LiteralNextStates] |
971 | jmp .labl_26 |
1041 | jmp .labl_26 |
972 | ;---------------------------------------------------------- |
1042 | ;---------------------------------------------------------- |
973 | .labl_25: |
1043 | .labl_25: |
974 | mov eax,esi |
1044 | mov eax,esi |
975 | imul eax,eax,0x28 |
1045 | imul eax,eax,40 |
976 | mov cl,[eax+0x29578] |
1046 | mov cl,[eax+state.State] |
977 | ;---------------------------------------------------------- |
1047 | ;---------------------------------------------------------- |
978 | .labl_26: |
1048 | .labl_26: |
979 | dec edi |
1049 | dec edi |
980 | cmp esi,edi |
1050 | cmp esi,edi |
- | 1051 | jne .labl_29 |
|
981 | jne .labl_29 |
1052 | |
982 | cmp dword [ebx+0x2958C],0 |
1053 | cmp dword [ebx+state.BackPrev],0 |
983 | movzx eax,cl |
1054 | movzx eax,cl |
- | 1055 | jne .labl_27 |
|
984 | jne .labl_27 |
1056 | |
985 | mov al,[eax+ShortRepNextStates] |
1057 | mov al,[eax+ShortRepNextStates] |
986 | jmp .labl_28 |
1058 | jmp .labl_28 |
987 | ;---------------------------------------------------------- |
1059 | ;---------------------------------------------------------- |
988 | .labl_27: |
1060 | .labl_27: |
989 | mov al,[eax+LiteralNextStates] |
1061 | mov al,[eax+LiteralNextStates] |
990 | ;---------------------------------------------------------- |
1062 | ;---------------------------------------------------------- |
991 | .labl_28: |
1063 | .labl_28: |
992 | mov [ebp-0x14],al |
1064 | mov [ebp-20],al |
993 | jmp .labl_35 |
1065 | jmp .labl_35 |
994 | ;---------------------------------------------------------- |
1066 | ;---------------------------------------------------------- |
995 | .labl_29: |
1067 | .labl_29: |
996 | test dl,dl |
1068 | test dl,dl |
- | 1069 | je .labl_31 |
|
997 | je .labl_31 |
1070 | |
998 | cmp byte [ebx+0x2957A],0 |
1071 | cmp byte [ebx+state.Prev2],0 |
- | 1072 | je .labl_31 |
|
999 | je .labl_31 |
1073 | |
1000 | mov esi,[ebx+0x2957C] |
1074 | mov esi,[ebx+state.PosPrev2] |
1001 | mov eax,[ebx+0x29580] |
1075 | mov eax,[ebx+state.BackPrev2] |
1002 | movzx ecx,cl |
1076 | movzx ecx,cl |
1003 | ;---------------------------------------------------------- |
1077 | ;---------------------------------------------------------- |
1004 | .labl_30: |
1078 | .labl_30: |
1005 | mov cl,[ecx+RepNextStates] |
1079 | mov cl,[ecx+RepNextStates] |
1006 | jmp .labl_32 |
1080 | jmp .labl_32 |
1007 | ;---------------------------------------------------------- |
1081 | ;---------------------------------------------------------- |
1008 | .labl_31: |
1082 | .labl_31: |
1009 | mov eax,[ebx+0x2958C] |
1083 | mov eax,[ebx+state.BackPrev] |
1010 | movzx ecx,cl |
1084 | movzx ecx,cl |
1011 | cmp eax,4 |
1085 | cmp eax,4 |
- | 1086 | jb .labl_30 |
|
1012 | jb .labl_30 |
1087 | |
1013 | mov cl,[ecx+MatchNextStates] |
1088 | mov cl,[ecx+MatchNextStates] |
1014 | ;---------------------------------------------------------- |
1089 | ;---------------------------------------------------------- |
1015 | .labl_32: |
1090 | .labl_32: |
1016 | imul esi,esi,0x28 |
1091 | imul esi,esi,40 |
1017 | add esi,0x29578 |
1092 | add esi,state.State |
1018 | mov [ebp-0x14],cl |
1093 | mov [ebp-20],cl |
1019 | mov edx,esi |
1094 | mov edx,esi |
1020 | cmp eax,4 |
1095 | cmp eax,4 |
- | 1096 | jnb .labl_34 |
|
1021 | jnb .labl_34 |
1097 | |
1022 | mov ecx,[edx+eax*4+0x18] |
1098 | mov ecx,[edx+eax*4+24] |
1023 | xor esi,esi |
1099 | xor esi,esi |
1024 | inc esi |
1100 | inc esi |
1025 | mov [ebp-0x64],ecx |
1101 | mov [ebp-100],ecx |
1026 | cmp eax,esi |
1102 | cmp eax,esi |
- | 1103 | jb .labl_33 |
|
1027 | jb .labl_33 |
1104 | |
1028 | lea esi,[edx+0x18] |
1105 | lea esi,[edx+24] |
1029 | mov ecx,eax |
1106 | mov ecx,eax |
1030 | lea edi,[ebp-0x60] |
1107 | lea edi,[ebp-96] |
1031 | rep movsd |
1108 | rep movsd |
1032 | lea esi,[eax+1] |
1109 | lea esi,[eax+1] |
1033 | cmp esi,4 |
1110 | cmp esi,4 |
1034 | jnb .labl_35 |
1111 | jnb .labl_35 |
1035 | ;---------------------------------------------------------- |
1112 | ;---------------------------------------------------------- |
1036 | .labl_33: |
1113 | .labl_33: |
1037 | push 4 |
1114 | push 4 |
1038 | lea edx,[edx+esi*4+0x18] |
1115 | lea edx,[edx+esi*4+24] |
1039 | pop ecx |
1116 | pop ecx |
1040 | lea edi,[ebp+esi*4-0x64] |
1117 | lea edi,[ebp+esi*4-100] |
1041 | sub ecx,esi |
1118 | sub ecx,esi |
1042 | mov esi,edx |
1119 | mov esi,edx |
1043 | rep movsd |
1120 | rep movsd |
1044 | jmp .labl_35 |
1121 | jmp .labl_35 |
1045 | ;---------------------------------------------------------- |
1122 | ;---------------------------------------------------------- |
1046 | .labl_34: |
1123 | .labl_34: |
1047 | add eax,0xFFFFFFFC |
1124 | add eax,0xFFFFFFFC |
1048 | mov [ebp-0x64],eax |
1125 | mov [ebp-100],eax |
1049 | lea esi,[edx+0x18] |
1126 | lea esi,[edx+24] |
1050 | lea edi,[ebp-0x60] |
1127 | lea edi,[ebp-96] |
1051 | movsd |
1128 | movsd |
1052 | movsd |
1129 | movsd |
1053 | movsd |
1130 | movsd |
1054 | ;---------------------------------------------------------- |
1131 | ;---------------------------------------------------------- |
1055 | .labl_35: |
1132 | .labl_35: |
1056 | mov al,[ebp-0x14] |
1133 | mov al,[ebp-20] |
1057 | mov [ebx+0x29578],al |
1134 | mov [ebx+state.State],al |
1058 | lea edi,[ebx+0x29590] |
1135 | lea edi,[ebx+state.Backs] |
1059 | lea esi,[ebp-0x64] |
1136 | lea esi,[ebp-100] |
1060 | movsd |
1137 | movsd |
1061 | movsd |
1138 | movsd |
1062 | movsd |
1139 | movsd |
1063 | movsd |
1140 | movsd |
1064 | call cm_pr_06 |
1141 | call ReadMatchDistances |
1065 | mov [ebp-0x2C],eax |
1142 | mov [ebp-44],eax |
1066 | cmp eax,0x80 ;'' |
1143 | cmp eax,128 |
- | 1144 | jnb .labl_73 |
|
1067 | jnb .labl_73 |
1145 | |
1068 | mov eax,[ebx+0x29584] |
1146 | mov eax,[ebx+state.Price] |
1069 | mov edi,[0x5262C] |
1147 | mov edi,[_pos] |
1070 | mov esi,[ebp+8] |
1148 | mov esi,[ebp+8] |
1071 | mov [ebp-0x48],eax |
1149 | mov [ebp-72],eax |
1072 | mov eax,[0x52628] |
1150 | mov eax,[_buffer] |
1073 | lea eax,[edi+eax-1] |
1151 | lea eax,[edi+eax-1] |
1074 | mov cl,[eax] |
1152 | mov cl,[eax] |
1075 | mov [ebp-0x30],cl |
1153 | mov [ebp-48],cl |
1076 | push dword [ebp-0x30] |
1154 | push dword [ebp-48] |
1077 | mov ecx,eax |
1155 | mov ecx,eax |
1078 | sub ecx,[ebp-0x64] |
1156 | sub ecx,[ebp-100] |
1079 | and esi,3 |
1157 | and esi,3 |
1080 | mov cl,[ecx-1] |
1158 | mov cl,[ecx-1] |
1081 | mov [ebp-0x34],cl |
1159 | mov [ebp-52],cl |
1082 | movzx ecx,byte [ebp-0x14] |
1160 | movzx ecx,byte [ebp-20] |
1083 | push dword [ebp-0x34] |
1161 | push dword [ebp-52] |
1084 | mov [ebp-0x40],ecx |
1162 | mov [ebp-64],ecx |
1085 | shl ecx,4 |
1163 | shl ecx,4 |
1086 | add ecx,esi |
1164 | add ecx,esi |
1087 | mov ecx,[0x1AF30+ecx*4] |
1165 | mov ecx,[_isMatch+ecx*4] |
1088 | cmp byte [ebp-0x14],7 |
1166 | cmp byte [ebp-20],7 |
1089 | mov [ebp-0x4C],ecx |
1167 | mov [ebp-76],ecx |
1090 | sbb cl,cl |
1168 | sbb cl,cl |
1091 | inc cl |
1169 | inc cl |
1092 | movzx ecx,cl |
1170 | movzx ecx,cl |
1093 | push ecx |
1171 | push ecx |
1094 | push dword [ebp+8] |
1172 | push dword [ebp+8] |
1095 | mov [ebp-0x28],eax |
1173 | mov [ebp-40],eax |
1096 | mov al,[eax-1] |
1174 | mov al,[eax-1] |
1097 | mov [ebp-0x1C],esi |
1175 | mov [ebp-28],esi |
1098 | call cm_pr_05 |
1176 | call CLiteralEncoder_GetPrice |
1099 | mov esi,eax |
1177 | mov esi,eax |
1100 | mov eax,[ebp-0x4C] |
1178 | mov eax,[ebp-76] |
1101 | shr eax,2 |
1179 | shr eax,2 |
1102 | add esi,[0x51A18+eax*4] |
1180 | add esi,[Models+eax*4] |
1103 | mov byte [ebp-1],0 |
1181 | mov byte [ebp-1],0 |
1104 | add esi,[ebp-0x48] |
1182 | add esi,[ebp-72] |
1105 | cmp esi,[ebx+0x295AC] |
1183 | cmp esi,[ebx+state.Price+40] |
- | 1184 | jnb .labl_36 |
|
1106 | jnb .labl_36 |
1185 | |
1107 | mov eax,[ebp-0xC] |
1186 | mov eax,[ebp-12] |
1108 | or dword [ebx+0x295B4],0xFFFFFFFF |
1187 | or dword [ebx+state.BackPrev+40],0xFFFFFFFF |
1109 | mov [ebx+0x295AC],esi |
1188 | mov [ebx+state.Price+40],esi |
1110 | mov [ebx+0x295B0],eax |
1189 | mov [ebx+state.PosPrev+40],eax |
1111 | mov byte [ebx+0x295A1],0 |
1190 | mov byte [ebx+state.Prev1IsChar+40],0 |
1112 | mov byte [ebp-1],1 |
1191 | mov byte [ebp-1],1 |
1113 | ;---------------------------------------------------------- |
1192 | ;---------------------------------------------------------- |
1114 | .labl_36: |
1193 | .labl_36: |
1115 | mov edx,[ebp-0x40] |
1194 | mov edx,[ebp-64] |
1116 | mov edx,[0x515B8+edx*4] |
1195 | mov edx,[_isRep+edx*4] |
1117 | mov ecx,0x800 |
1196 | mov ecx,2048 |
1118 | mov eax,ecx |
1197 | mov eax,ecx |
1119 | sub eax,[ebp-0x4C] |
1198 | sub eax,[ebp-76] |
1120 | sub ecx,edx |
1199 | sub ecx,edx |
1121 | shr eax,2 |
1200 | shr eax,2 |
1122 | mov eax,[0x51A18+eax*4] |
1201 | mov eax,[Models+eax*4] |
1123 | add eax,[ebp-0x48] |
1202 | add eax,[ebp-72] |
1124 | shr ecx,2 |
1203 | shr ecx,2 |
1125 | mov ecx,[0x51A18+ecx*4] |
1204 | mov ecx,[Models+ecx*4] |
1126 | add ecx,eax |
1205 | add ecx,eax |
1127 | mov [ebp-0x4C],eax |
1206 | mov [ebp-76],eax |
1128 | mov al,[ebp-0x30] |
1207 | mov al,[ebp-48] |
1129 | mov [ebp-0x54],edx |
1208 | mov [ebp-84],edx |
1130 | mov [ebp-0x48],ecx |
1209 | mov [ebp-72],ecx |
1131 | cmp [ebp-0x34],al |
1210 | cmp [ebp-52],al |
- | 1211 | jne .labl_38 |
|
1132 | jne .labl_38 |
1212 | |
1133 | mov eax,[ebp-0xC] |
1213 | mov eax,[ebp-12] |
1134 | cmp [ebx+0x295B0],eax |
1214 | cmp [ebx+state.PosPrev+40],eax |
- | 1215 | jnb .labl_37 |
|
1135 | jnb .labl_37 |
1216 | |
1136 | cmp dword [ebx+0x295B4],0 |
1217 | cmp dword [ebx+state.BackPrev+40],0 |
1137 | je .labl_38 |
1218 | je .labl_38 |
1138 | ;---------------------------------------------------------- |
1219 | ;---------------------------------------------------------- |
1139 | .labl_37: |
1220 | .labl_37: |
1140 | push dword [ebp-0x1C] |
1221 | push dword [ebp-28] |
1141 | mov al,[ebp-0x14] |
1222 | mov al,[ebp-20] |
1142 | call cm_pr_10 |
1223 | call GetRepLen1Price |
1143 | add eax,[ebp-0x48] |
1224 | add eax,[ebp-72] |
1144 | cmp eax,[ebx+0x295AC] |
1225 | cmp eax,[ebx+state.Price+40] |
- | 1226 | ja .labl_38 |
|
1145 | ja .labl_38 |
1227 | |
1146 | and dword [ebx+0x295B4],0 |
1228 | and dword [ebx+state.BackPrev+40],0 |
1147 | mov [ebx+0x295AC],eax |
1229 | mov [ebx+state.Price+40],eax |
1148 | mov eax,[ebp-0xC] |
1230 | mov eax,[ebp-12] |
1149 | mov [ebx+0x295B0],eax |
1231 | mov [ebx+state.PosPrev+40],eax |
1150 | mov byte [ebx+0x295A1],0 |
1232 | mov byte [ebx+state.Prev1IsChar+40],0 |
1151 | ;---------------------------------------------------------- |
1233 | ;---------------------------------------------------------- |
1152 | .labl_38: |
1234 | .labl_38: |
1153 | mov eax,[0x52630] |
1235 | mov eax,[_streamPos] |
1154 | sub eax,edi |
1236 | sub eax,edi |
1155 | mov ecx,0xFFF |
1237 | mov ecx,4095 |
1156 | sub ecx,[ebp-0xC] |
1238 | sub ecx,[ebp-12] |
1157 | inc eax |
1239 | inc eax |
1158 | mov [ebp-0x38],eax |
1240 | mov [ebp-56],eax |
1159 | cmp eax,ecx |
1241 | cmp eax,ecx |
- | 1242 | jbe .labl_39 |
|
1160 | jbe .labl_39 |
1243 | |
1161 | mov eax,ecx |
1244 | mov eax,ecx |
1162 | mov [ebp-0x38],ecx |
1245 | mov [ebp-56],ecx |
1163 | ;---------------------------------------------------------- |
1246 | ;---------------------------------------------------------- |
1164 | .labl_39: |
1247 | .labl_39: |
1165 | mov [ebp-0x24],eax |
1248 | mov [ebp-36],eax |
1166 | cmp eax,2 |
1249 | cmp eax,2 |
- | 1250 | jb .labl_72 |
|
1167 | jb .labl_72 |
1251 | |
1168 | mov ecx,0x80 ;'' |
1252 | mov ecx,128 |
1169 | cmp eax,ecx |
1253 | cmp eax,ecx |
- | 1254 | jbe .labl_40 |
|
1170 | jbe .labl_40 |
1255 | |
1171 | mov [ebp-0x24],ecx |
1256 | mov [ebp-36],ecx |
1172 | ;---------------------------------------------------------- |
1257 | ;---------------------------------------------------------- |
1173 | .labl_40: |
1258 | .labl_40: |
1174 | cmp dword [ebp-0x24],3 |
1259 | cmp dword [ebp-36],3 |
- | 1260 | jb .labl_45 |
|
1175 | jb .labl_45 |
1261 | |
1176 | cmp byte [ebp-1],0 |
1262 | cmp byte [ebp-1],0 |
- | 1263 | jne .labl_45 |
|
1177 | jne .labl_45 |
1264 | |
1178 | mov ecx,[ebp-0x64] |
1265 | mov ecx,[ebp-100] |
1179 | xor eax,eax |
1266 | xor eax,eax |
1180 | inc eax |
1267 | inc eax |
1181 | inc ecx |
1268 | inc ecx |
1182 | cmp [ebp-0x24],eax |
1269 | cmp [ebp-36],eax |
- | 1270 | jbe .labl_42 |
|
1183 | jbe .labl_42 |
1271 | |
1184 | mov edi,[ebp-0x28] |
1272 | mov edi,[ebp-40] |
1185 | mov edx,edi |
1273 | mov edx,edi |
1186 | sub edx,ecx |
1274 | sub edx,ecx |
1187 | ;---------------------------------------------------------- |
1275 | ;---------------------------------------------------------- |
1188 | .labl_41: |
1276 | .labl_41: |
1189 | mov cl,[eax+edi] |
1277 | mov cl,[eax+edi] |
1190 | cmp cl,[edx+eax] |
1278 | cmp cl,[edx+eax] |
- | 1279 | jne .labl_42 |
|
1191 | jne .labl_42 |
1280 | |
1192 | inc eax |
1281 | inc eax |
1193 | cmp eax,[ebp-0x24] |
1282 | cmp eax,[ebp-36] |
1194 | jb .labl_41 |
1283 | jb .labl_41 |
1195 | ;---------------------------------------------------------- |
1284 | ;---------------------------------------------------------- |
1196 | .labl_42: |
1285 | .labl_42: |
1197 | dec eax |
1286 | dec eax |
1198 | mov [ebp-0x20],eax |
1287 | mov [ebp-32],eax |
1199 | cmp eax,2 |
1288 | cmp eax,2 |
- | 1289 | jb .labl_45 |
|
1200 | jb .labl_45 |
1290 | |
1201 | mov eax,[ebp-0x40] |
1291 | mov eax,[ebp-64] |
1202 | mov al,[eax+LiteralNextStates] |
1292 | mov al,[eax+LiteralNextStates] |
1203 | mov ecx,[ebp+8] |
1293 | mov ecx,[ebp+8] |
1204 | movzx edx,al |
1294 | movzx edx,al |
1205 | mov [ebp-0x3C],al |
1295 | mov [ebp-60],al |
1206 | mov eax,edx |
1296 | mov eax,edx |
1207 | shl eax,4 |
1297 | shl eax,4 |
1208 | inc ecx |
1298 | inc ecx |
1209 | mov edi,0x800 |
1299 | mov edi,2048 |
1210 | and ecx,3 |
1300 | and ecx,3 |
1211 | add eax,ecx |
1301 | add eax,ecx |
1212 | mov ebx,edi |
1302 | mov ebx,edi |
1213 | sub ebx,[0x1AF30+eax*4] |
1303 | sub ebx,[_isMatch+eax*4] |
1214 | mov eax,edi |
1304 | mov eax,edi |
1215 | sub eax,[0x515B8+edx*4] |
1305 | sub eax,[_isRep+edx*4] |
1216 | mov edx,[ebp-0xC] |
1306 | mov edx,[ebp-12] |
1217 | shr ebx,2 |
1307 | shr ebx,2 |
1218 | mov edi,[0x51A18+ebx*4] |
1308 | mov edi,[Models+ebx*4] |
1219 | shr eax,2 |
1309 | shr eax,2 |
1220 | add edi,[0x51A18+eax*4] |
1310 | add edi,[Models+eax*4] |
1221 | mov eax,[ebp-0x20] |
1311 | mov eax,[ebp-32] |
1222 | add edi,esi |
1312 | add edi,esi |
1223 | lea esi,[edx+eax] |
1313 | lea esi,[edx+eax] |
1224 | mov eax,[ebp-8] |
1314 | mov eax,[ebp-8] |
1225 | lea edx,[esi+1] |
1315 | lea edx,[esi+1] |
1226 | cmp eax,edx |
1316 | cmp eax,edx |
- | 1317 | jnb .labl_44 |
|
1227 | jnb .labl_44 |
1318 | |
1228 | sub edx,[ebp-8] |
1319 | sub edx,[ebp-8] |
1229 | imul eax,eax,0x28 |
1320 | imul eax,eax,40 |
1230 | add eax,0x29584 |
1321 | add eax,state.Price |
1231 | add [ebp-8],edx |
1322 | add [ebp-8],edx |
1232 | ;---------------------------------------------------------- |
1323 | ;---------------------------------------------------------- |
1233 | .labl_43: |
1324 | .labl_43: |
1234 | add eax,0x28 ;'(' |
1325 | add eax,40 |
1235 | dec edx |
1326 | dec edx |
1236 | mov dword [eax],0x0FFFFFFF |
1327 | mov dword [eax],kIfinityPrice |
1237 | jne .labl_43 |
1328 | jne .labl_43 |
1238 | ;---------------------------------------------------------- |
1329 | ;---------------------------------------------------------- |
1239 | .labl_44: |
1330 | .labl_44: |
1240 | mov eax,[ebp-0x20] |
1331 | mov eax,[ebp-32] |
1241 | push ecx |
1332 | push ecx |
1242 | push dword [ebp-0x3C] |
1333 | push dword [ebp-60] |
1243 | xor edx,edx |
1334 | xor edx,edx |
1244 | call cm_pr_11 |
1335 | call GetRepPrice |
1245 | imul esi,esi,0x28 |
1336 | imul esi,esi,40 |
1246 | add eax,edi |
1337 | add eax,edi |
1247 | add esi,0x295A0 |
1338 | add esi,state.State+40 |
1248 | cmp eax,[esi+0xC] |
1339 | cmp eax,[esi+12] |
- | 1340 | jnb .labl_45 |
|
1249 | jnb .labl_45 |
1341 | |
1250 | mov [esi+0xC],eax |
1342 | mov [esi+12],eax |
1251 | mov eax,[ebp-0xC] |
1343 | mov eax,[ebp-12] |
1252 | inc eax |
1344 | inc eax |
1253 | and dword [esi+0x14],0 |
1345 | and dword [esi+20],0 |
1254 | mov [esi+0x10],eax |
1346 | mov [esi+16],eax |
1255 | mov byte [esi+1],1 |
1347 | mov byte [esi+1],1 |
1256 | mov byte [esi+2],0 |
1348 | mov byte [esi+2],0 |
1257 | ;---------------------------------------------------------- |
1349 | ;---------------------------------------------------------- |
1258 | .labl_45: |
1350 | .labl_45: |
1259 | and dword [ebp-0x18],0 |
1351 | and dword [ebp-24],0 |
1260 | ;---------------------------------------------------------- |
1352 | ;---------------------------------------------------------- |
1261 | .labl_46: |
1353 | .labl_46: |
1262 | mov eax,[ebp-0x18] |
1354 | mov eax,[ebp-24] |
1263 | mov eax,[ebp+eax*4-0x64] |
1355 | mov eax,[ebp+eax*4-100] |
1264 | mov edx,[ebp-0x28] |
1356 | mov edx,[ebp-40] |
1265 | inc eax |
1357 | inc eax |
1266 | mov ecx,edx |
1358 | mov ecx,edx |
1267 | sub ecx,eax |
1359 | sub ecx,eax |
1268 | mov [ebp-0x44],eax |
1360 | mov [ebp-68],eax |
1269 | mov al,[edx] |
1361 | mov al,[edx] |
1270 | mov [ebp-0x50],ecx |
1362 | mov [ebp-80],ecx |
1271 | cmp al,[ecx] |
1363 | cmp al,[ecx] |
- | 1364 | jne .labl_58 |
|
1272 | jne .labl_58 |
1365 | |
1273 | mov al,[edx+1] |
1366 | mov al,[edx+1] |
1274 | cmp al,[ecx+1] |
1367 | cmp al,[ecx+1] |
- | 1368 | jne .labl_58 |
|
1275 | jne .labl_58 |
1369 | |
1276 | push 2 |
1370 | push 2 |
1277 | pop esi |
1371 | pop esi |
1278 | cmp [ebp-0x24],esi |
1372 | cmp [ebp-36],esi |
1279 | jbe .labl_48 |
1373 | jbe .labl_48 |
1280 | ;---------------------------------------------------------- |
1374 | ;---------------------------------------------------------- |
1281 | .labl_47: |
1375 | .labl_47: |
1282 | mov al,[edx+esi] |
1376 | mov al,[edx+esi] |
1283 | cmp al,[ecx+esi] |
1377 | cmp al,[ecx+esi] |
- | 1378 | jne .labl_48 |
|
1284 | jne .labl_48 |
1379 | |
1285 | inc esi |
1380 | inc esi |
1286 | cmp esi,[ebp-0x24] |
1381 | cmp esi,[ebp-36] |
1287 | jb .labl_47 |
1382 | jb .labl_47 |
1288 | ;---------------------------------------------------------- |
1383 | ;---------------------------------------------------------- |
1289 | .labl_48: |
1384 | .labl_48: |
1290 | mov eax,[ebp-0xC] |
1385 | mov eax,[ebp-12] |
1291 | lea ebx,[eax+esi] |
1386 | lea ebx,[eax+esi] |
1292 | mov [ebp-0x20],ebx |
1387 | mov [ebp-32],ebx |
1293 | imul ebx,ebx,0x28 |
1388 | imul ebx,ebx,40 |
1294 | mov edi,esi |
1389 | mov edi,esi |
1295 | add ebx,0x29584 |
1390 | add ebx,state.Price |
1296 | ;---------------------------------------------------------- |
1391 | ;---------------------------------------------------------- |
1297 | .labl_49: |
1392 | .labl_49: |
1298 | mov eax,[ebp-8] |
1393 | mov eax,[ebp-8] |
1299 | mov ecx,[ebp-0x20] |
1394 | mov ecx,[ebp-32] |
1300 | cmp eax,ecx |
1395 | cmp eax,ecx |
- | 1396 | jnb .labl_51 |
|
1301 | jnb .labl_51 |
1397 | |
1302 | sub ecx,[ebp-8] |
1398 | sub ecx,[ebp-8] |
1303 | imul eax,eax,0x28 |
1399 | imul eax,eax,40 |
1304 | add eax,0x29584 |
1400 | add eax,state.Price |
1305 | add [ebp-8],ecx |
1401 | add [ebp-8],ecx |
1306 | ;---------------------------------------------------------- |
1402 | ;---------------------------------------------------------- |
1307 | .labl_50: |
1403 | .labl_50: |
1308 | add eax,0x28 ;'(' |
1404 | add eax,40 |
1309 | dec ecx |
1405 | dec ecx |
1310 | mov dword [eax],0x0FFFFFFF |
1406 | mov dword [eax],kIfinityPrice |
1311 | jne .labl_50 |
1407 | jne .labl_50 |
1312 | ;---------------------------------------------------------- |
1408 | ;---------------------------------------------------------- |
1313 | .labl_51: |
1409 | .labl_51: |
1314 | push dword [ebp-0x1C] |
1410 | push dword [ebp-28] |
1315 | mov edx,[ebp-0x18] |
1411 | mov edx,[ebp-24] |
1316 | push dword [ebp-0x14] |
1412 | push dword [ebp-20] |
1317 | mov eax,esi |
1413 | mov eax,esi |
1318 | call cm_pr_11 |
1414 | call GetRepPrice |
1319 | add eax,[ebp-0x48] |
1415 | add eax,[ebp-72] |
1320 | cmp eax,[ebx] |
1416 | cmp eax,[ebx] |
- | 1417 | jnb .labl_52 |
|
1321 | jnb .labl_52 |
1418 | |
1322 | mov [ebx],eax |
1419 | mov [ebx],eax |
1323 | mov eax,[ebp-0xC] |
1420 | mov eax,[ebp-12] |
1324 | mov [ebx+4],eax |
1421 | mov [ebx+4],eax |
1325 | mov eax,[ebp-0x18] |
1422 | mov eax,[ebp-24] |
1326 | mov [ebx+8],eax |
1423 | mov [ebx+8],eax |
1327 | mov byte [ebx-0xB],0 |
1424 | mov byte [ebx-11],0 |
1328 | ;---------------------------------------------------------- |
1425 | ;---------------------------------------------------------- |
1329 | .labl_52: |
1426 | .labl_52: |
1330 | dec esi |
1427 | dec esi |
1331 | sub ebx,0x28 ;'(' |
1428 | sub ebx,40 |
1332 | dec dword [ebp-0x20] |
1429 | dec dword [ebp-32] |
1333 | cmp esi,2 |
1430 | cmp esi,2 |
- | 1431 | jnb .labl_49 |
|
1334 | jnb .labl_49 |
1432 | |
1335 | lea eax,[edi+1] |
1433 | lea eax,[edi+1] |
1336 | lea esi,[eax+0x80] |
1434 | lea esi,[eax+128] |
1337 | cmp esi,[ebp-0x38] |
1435 | cmp esi,[ebp-56] |
- | 1436 | jbe .labl_53 |
|
1338 | jbe .labl_53 |
1437 | |
1339 | mov esi,[ebp-0x38] |
1438 | mov esi,[ebp-56] |
1340 | ;---------------------------------------------------------- |
1439 | ;---------------------------------------------------------- |
1341 | .labl_53: |
1440 | .labl_53: |
1342 | cmp eax,esi |
1441 | cmp eax,esi |
- | 1442 | jnb .labl_55 |
|
1343 | jnb .labl_55 |
1443 | |
1344 | mov edx,[ebp-0x28] |
1444 | mov edx,[ebp-40] |
1345 | mov ecx,eax |
1445 | mov ecx,eax |
1346 | sub ecx,[ebp-0x44] |
1446 | sub ecx,[ebp-68] |
1347 | add ecx,edx |
1447 | add ecx,edx |
1348 | ;---------------------------------------------------------- |
1448 | ;---------------------------------------------------------- |
1349 | .labl_54: |
1449 | .labl_54: |
1350 | mov bl,[eax+edx] |
1450 | mov bl,[eax+edx] |
1351 | cmp bl,[ecx] |
1451 | cmp bl,[ecx] |
- | 1452 | jne .labl_55 |
|
1352 | jne .labl_55 |
1453 | |
1353 | inc eax |
1454 | inc eax |
1354 | inc ecx |
1455 | inc ecx |
1355 | cmp eax,esi |
1456 | cmp eax,esi |
1356 | jb .labl_54 |
1457 | jb .labl_54 |
1357 | ;---------------------------------------------------------- |
1458 | ;---------------------------------------------------------- |
1358 | .labl_55: |
1459 | .labl_55: |
1359 | or ecx,0xFFFFFFFF |
1460 | or ecx,0xFFFFFFFF |
1360 | sub ecx,edi |
1461 | sub ecx,edi |
1361 | add eax,ecx |
1462 | add eax,ecx |
1362 | mov [ebp-0x10],eax |
1463 | mov [ebp-16],eax |
1363 | cmp eax,2 |
1464 | cmp eax,2 |
- | 1465 | jb .labl_58 |
|
1364 | jb .labl_58 |
1466 | |
1365 | mov eax,[ebp-0x40] |
1467 | mov eax,[ebp-64] |
1366 | mov al,[eax+RepNextStates] |
1468 | mov al,[eax+RepNextStates] |
1367 | mov edx,[ebp+8] |
1469 | mov edx,[ebp+8] |
1368 | movzx eax,al |
1470 | movzx eax,al |
1369 | mov ebx,eax |
1471 | mov ebx,eax |
1370 | mov al,[eax+LiteralNextStates] |
1472 | mov al,[eax+LiteralNextStates] |
1371 | lea ecx,[edi+edx] |
1473 | lea ecx,[edi+edx] |
1372 | mov [ebp-0x3C],al |
1474 | mov [ebp-60],al |
1373 | movzx eax,al |
1475 | movzx eax,al |
1374 | mov esi,ecx |
1476 | mov esi,ecx |
1375 | and esi,3 |
1477 | and esi,3 |
1376 | shl ebx,4 |
1478 | shl ebx,4 |
1377 | add esi,ebx |
1479 | add esi,ebx |
1378 | mov esi,[0x1AF30+esi*4] |
1480 | mov esi,[_isMatch+esi*4] |
1379 | lea ebx,[edi+edx+1] |
1481 | lea ebx,[edi+edx+1] |
1380 | mov [ebp-0x20],eax |
1482 | mov [ebp-32],eax |
1381 | mov eax,[ebp-0x28] |
1483 | mov eax,[ebp-40] |
1382 | movzx edx,byte [edi+eax] |
1484 | movzx edx,byte [edi+eax] |
1383 | mov al,[eax+edi-1] |
1485 | mov al,[eax+edi-1] |
1384 | push edx |
1486 | push edx |
1385 | mov edx,[ebp-0x50] |
1487 | mov edx,[ebp-80] |
1386 | movzx edx,byte [edx+edi] |
1488 | movzx edx,byte [edx+edi] |
1387 | push edx |
1489 | push edx |
1388 | shr esi,02 |
1490 | shr esi,2 |
1389 | mov esi,[0x51A18+esi*4] |
1491 | mov esi,[Models+esi*4] |
1390 | push 1 |
1492 | push 1 |
1391 | push ecx |
1493 | push ecx |
1392 | mov [ebp-0x44],esi |
1494 | mov [ebp-68],esi |
1393 | and ebx,3 |
1495 | and ebx,3 |
1394 | call cm_pr_05 |
1496 | call CLiteralEncoder_GetPrice |
1395 | push dword [ebp-0x1C] |
1497 | push dword [ebp-28] |
1396 | mov edx,[ebp-0x18] |
1498 | mov edx,[ebp-24] |
1397 | push dword [ebp-0x14] |
1499 | push dword [ebp-20] |
1398 | mov esi,eax |
1500 | mov esi,eax |
1399 | mov eax,edi |
1501 | mov eax,edi |
1400 | call cm_pr_11 |
1502 | call GetRepPrice |
1401 | mov ecx,[ebp-0x20] |
1503 | mov ecx,[ebp-32] |
1402 | add esi,eax |
1504 | add esi,eax |
1403 | shl ecx,4 |
1505 | shl ecx,4 |
1404 | add ecx,ebx |
1506 | add ecx,ebx |
1405 | mov eax,0x800 |
1507 | mov eax,2048 |
1406 | mov edx,eax |
1508 | mov edx,eax |
1407 | sub edx,[0x1AF30+ecx*4] |
1509 | sub edx,[_isMatch+ecx*4] |
1408 | mov ecx,[ebp-0x20] |
1510 | mov ecx,[ebp-32] |
1409 | sub eax,[0x515B8+ecx*4] |
1511 | sub eax,[_isRep+ecx*4] |
1410 | mov ecx,[ebp-0xC] |
1512 | mov ecx,[ebp-12] |
1411 | shr edx,2 |
1513 | shr edx,2 |
1412 | add esi,[0x51A18+edx*4] |
1514 | add esi,[Models+edx*4] |
1413 | shr eax,2 |
1515 | shr eax,2 |
1414 | add esi,[0x51A18+eax*4] |
1516 | add esi,[Models+eax*4] |
1415 | mov eax,[ebp-0x10] |
1517 | mov eax,[ebp-16] |
1416 | add esi,[ebp-0x44] |
1518 | add esi,[ebp-68] |
1417 | lea eax,[eax+edi+1] |
1519 | lea eax,[eax+edi+1] |
1418 | add esi,[ebp-0x48] |
1520 | add esi,[ebp-72] |
1419 | add eax,ecx |
1521 | add eax,ecx |
1420 | mov [ebp-0x44],eax |
1522 | mov [ebp-68],eax |
1421 | cmp [ebp-8],eax |
1523 | cmp [ebp-8],eax |
- | 1524 | jnb .labl_57 |
|
1422 | jnb .labl_57 |
1525 | |
1423 | mov eax,[ebp-8] |
1526 | mov eax,[ebp-8] |
1424 | mov ecx,[ebp-0x44] |
1527 | mov ecx,[ebp-68] |
1425 | imul eax,eax,0x28 |
1528 | imul eax,eax,40 |
1426 | sub ecx,[ebp-8] |
1529 | sub ecx,[ebp-8] |
1427 | add eax,0x29584 |
1530 | add eax,state.Price |
1428 | add [ebp-8],ecx |
1531 | add [ebp-8],ecx |
1429 | ;---------------------------------------------------------- |
1532 | ;---------------------------------------------------------- |
1430 | .labl_56: |
1533 | .labl_56: |
1431 | add eax,0x28 ;'(' |
1534 | add eax,40 |
1432 | dec ecx |
1535 | dec ecx |
1433 | mov dword [eax],0x0FFFFFFF |
1536 | mov dword [eax],kIfinityPrice |
1434 | jne .labl_56 |
1537 | jne .labl_56 |
1435 | ;---------------------------------------------------------- |
1538 | ;---------------------------------------------------------- |
1436 | .labl_57: |
1539 | .labl_57: |
1437 | mov eax,[ebp-0x10] |
1540 | mov eax,[ebp-16] |
1438 | push ebx |
1541 | push ebx |
1439 | push dword [ebp-0x3C] |
1542 | push dword [ebp-60] |
1440 | xor edx,edx |
1543 | xor edx,edx |
1441 | call cm_pr_11 |
1544 | call GetRepPrice |
1442 | mov ecx,[ebp-0x44] |
1545 | mov ecx,[ebp-68] |
1443 | imul ecx,ecx,0x28 |
1546 | imul ecx,ecx,40 |
1444 | add eax,esi |
1547 | add eax,esi |
1445 | add ecx,0x29578 |
1548 | add ecx,state.State |
1446 | cmp eax,[ecx+0xC] |
1549 | cmp eax,[ecx+12] |
- | 1550 | jnb .labl_58 |
|
1447 | jnb .labl_58 |
1551 | |
1448 | and dword [ecx+0x14],0 |
1552 | and dword [ecx+20],0 |
1449 | mov [ecx+0xC],eax |
1553 | mov [ecx+12],eax |
1450 | mov eax,[ebp-0xC] |
1554 | mov eax,[ebp-12] |
1451 | lea edx,[edi+eax+1] |
1555 | lea edx,[edi+eax+1] |
1452 | mov [ecx+4],eax |
1556 | mov [ecx+4],eax |
1453 | mov eax,[ebp-0x18] |
1557 | mov eax,[ebp-24] |
1454 | mov [ecx+0x10],edx |
1558 | mov [ecx+16],edx |
1455 | mov byte [ecx+1],1 |
1559 | mov byte [ecx+1],1 |
1456 | mov byte [ecx+2],1 |
1560 | mov byte [ecx+2],1 |
1457 | mov [ecx+8],eax |
1561 | mov [ecx+8],eax |
1458 | ;---------------------------------------------------------- |
1562 | ;---------------------------------------------------------- |
1459 | .labl_58: |
1563 | .labl_58: |
1460 | inc dword [ebp-0x18] |
1564 | inc dword [ebp-24] |
1461 | cmp dword [ebp-0x18],4 |
1565 | cmp dword [ebp-24],4 |
- | 1566 | jb .labl_46 |
|
1462 | jb .labl_46 |
1567 | |
1463 | mov eax,[ebp-0x24] |
1568 | mov eax,[ebp-36] |
1464 | cmp [ebp-0x2C],eax |
1569 | cmp [ebp-44],eax |
- | 1570 | jbe .labl_59 |
|
1465 | jbe .labl_59 |
1571 | |
1466 | mov [ebp-0x2C],eax |
1572 | mov [ebp-44],eax |
1467 | ;---------------------------------------------------------- |
1573 | ;---------------------------------------------------------- |
1468 | .labl_59: |
1574 | .labl_59: |
1469 | cmp dword [ebp-0x2C],2 |
1575 | cmp dword [ebp-44],2 |
- | 1576 | jb .labl_72 |
|
1470 | jb .labl_72 |
1577 | |
1471 | mov esi,[ebp-0x2C] |
1578 | mov esi,[ebp-44] |
1472 | cmp esi,2 |
1579 | cmp esi,2 |
- | 1580 | jne .labl_60 |
|
1473 | jne .labl_60 |
1581 | |
1474 | cmp dword [0x1AAB8],0x80 ;'' |
1582 | cmp dword [distances+8],0x80 |
1475 | jnb .labl_72 |
1583 | jnb .labl_72 |
1476 | ;---------------------------------------------------------- |
1584 | ;---------------------------------------------------------- |
1477 | .labl_60: |
1585 | .labl_60: |
1478 | mov eax,[ebp-0x54] |
1586 | mov eax,[ebp-84] |
1479 | shr eax,2 |
1587 | shr eax,2 |
1480 | mov eax,[0x51A18+eax*4] |
1588 | mov eax,[Models+eax*4] |
1481 | add eax,[ebp-0x4C] |
1589 | add eax,[ebp-76] |
1482 | mov [ebp-0x4C],eax |
1590 | mov [ebp-76],eax |
1483 | mov eax,[ebp-0xC] |
1591 | mov eax,[ebp-12] |
1484 | lea ecx,[esi+eax] |
1592 | lea ecx,[esi+eax] |
1485 | cmp [ebp-8],ecx |
1593 | cmp [ebp-8],ecx |
- | 1594 | jnb .labl_62 |
|
1486 | jnb .labl_62 |
1595 | |
1487 | mov eax,[ebp-8] |
1596 | mov eax,[ebp-8] |
1488 | imul eax,eax,0x28 |
1597 | imul eax,eax,40 |
1489 | mov edx,ecx |
1598 | mov edx,ecx |
1490 | sub edx,[ebp-8] |
1599 | sub edx,[ebp-8] |
1491 | add eax,0x29584 |
1600 | add eax,state.Price |
1492 | add [ebp-8],edx |
1601 | add [ebp-8],edx |
1493 | ;---------------------------------------------------------- |
1602 | ;---------------------------------------------------------- |
1494 | .labl_61: |
1603 | .labl_61: |
1495 | add eax,0x28 ;'(' |
1604 | add eax,40 |
1496 | dec edx |
1605 | dec edx |
1497 | mov dword [eax],0x0FFFFFFF |
1606 | mov dword [eax],kIfinityPrice |
1498 | jne .labl_61 |
1607 | jne .labl_61 |
1499 | ;---------------------------------------------------------- |
1608 | ;---------------------------------------------------------- |
1500 | .labl_62: |
1609 | .labl_62: |
1501 | imul ecx,ecx,0x28 |
1610 | imul ecx,ecx,40 |
1502 | add ecx,0x29584 |
1611 | add ecx,state.Price |
1503 | lea eax,[0x1AAB4+esi*4] |
1612 | lea eax,[distances+4+esi*4] |
1504 | lea edi,[esi+1] |
1613 | lea edi,[esi+1] |
1505 | mov [ebp-0x24],eax |
1614 | mov [ebp-36],eax |
1506 | mov ebx,ecx |
1615 | mov ebx,ecx |
1507 | mov [ebp-0x48],ecx |
1616 | mov [ebp-72],ecx |
1508 | ;---------------------------------------------------------- |
1617 | ;---------------------------------------------------------- |
1509 | .labl_63: |
1618 | .labl_63: |
1510 | mov eax,[ebp-0x24] |
1619 | mov eax,[ebp-36] |
1511 | mov esi,[eax-4] |
1620 | mov esi,[eax-4] |
1512 | push dword [ebp-0x1C] |
1621 | push dword [ebp-28] |
1513 | lea eax,[edi-1] |
1622 | lea eax,[edi-1] |
1514 | mov edx,esi |
1623 | mov edx,esi |
1515 | call cm_pr_12 |
1624 | call GetPosLenPrice |
1516 | add eax,[ebp-0x4C] |
1625 | add eax,[ebp-76] |
1517 | mov [ebp-0x50],eax |
1626 | mov [ebp-80],eax |
1518 | cmp eax,[ebx] |
1627 | cmp eax,[ebx] |
- | 1628 | jnb .labl_64 |
|
1519 | jnb .labl_64 |
1629 | |
1520 | mov [ebx],eax |
1630 | mov [ebx],eax |
1521 | mov eax,[ebp-0xC] |
1631 | mov eax,[ebp-12] |
1522 | mov [ebx+4],eax |
1632 | mov [ebx+4],eax |
1523 | lea eax,[esi+4] |
1633 | lea eax,[esi+4] |
1524 | mov [ebx+8],eax |
1634 | mov [ebx+8],eax |
1525 | mov byte [ebx-0xB],0 |
1635 | mov byte [ebx-11],0 |
1526 | ;---------------------------------------------------------- |
1636 | ;---------------------------------------------------------- |
1527 | .labl_64: |
1637 | .labl_64: |
1528 | lea eax,[edi-1] |
1638 | lea eax,[edi-1] |
1529 | cmp eax,[ebp-0x2C] |
1639 | cmp eax,[ebp-44] |
- | 1640 | je .labl_65 |
|
1530 | je .labl_65 |
1641 | |
1531 | mov eax,[ebp-0x24] |
1642 | mov eax,[ebp-36] |
1532 | cmp esi,[eax] |
1643 | cmp esi,[eax] |
1533 | je .labl_71 |
1644 | je .labl_71 |
1534 | ;---------------------------------------------------------- |
1645 | ;---------------------------------------------------------- |
1535 | .labl_65: |
1646 | .labl_65: |
1536 | inc esi |
1647 | inc esi |
1537 | lea ecx,[edi+0x80] |
1648 | lea ecx,[edi+128] |
1538 | mov [ebp-0x44],esi |
1649 | mov [ebp-68],esi |
1539 | mov [ebp-0x10],edi |
1650 | mov [ebp-16],edi |
1540 | cmp ecx,[ebp-0x38] |
1651 | cmp ecx,[ebp-56] |
- | 1652 | jbe .labl_66 |
|
1541 | jbe .labl_66 |
1653 | |
1542 | mov ecx,[ebp-0x38] |
1654 | mov ecx,[ebp-56] |
1543 | ;---------------------------------------------------------- |
1655 | ;---------------------------------------------------------- |
1544 | .labl_66: |
1656 | .labl_66: |
1545 | cmp edi,ecx |
1657 | cmp edi,ecx |
- | 1658 | jnb .labl_68 |
|
1546 | jnb .labl_68 |
1659 | |
1547 | mov eax,edi |
1660 | mov eax,edi |
1548 | sub eax,esi |
1661 | sub eax,esi |
1549 | add eax,[ebp-0x28] |
1662 | add eax,[ebp-40] |
1550 | ;---------------------------------------------------------- |
1663 | ;---------------------------------------------------------- |
1551 | .labl_67: |
1664 | .labl_67: |
1552 | mov edx,[ebp-0x10] |
1665 | mov edx,[ebp-16] |
1553 | mov esi,[ebp-0x28] |
1666 | mov esi,[ebp-40] |
1554 | mov dl,[edx+esi] |
1667 | mov dl,[edx+esi] |
1555 | cmp dl,[eax] |
1668 | cmp dl,[eax] |
- | 1669 | jne .labl_68 |
|
1556 | jne .labl_68 |
1670 | |
1557 | inc dword [ebp-0x10] |
1671 | inc dword [ebp-16] |
1558 | inc eax |
1672 | inc eax |
1559 | cmp [ebp-0x10],ecx |
1673 | cmp [ebp-16],ecx |
1560 | jb .labl_67 |
1674 | jb .labl_67 |
1561 | ;---------------------------------------------------------- |
1675 | ;---------------------------------------------------------- |
1562 | .labl_68: |
1676 | .labl_68: |
1563 | or ecx,0xFFFFFFFF |
1677 | or ecx,0xFFFFFFFF |
1564 | lea eax,[edi-1] |
1678 | lea eax,[edi-1] |
1565 | sub ecx,eax |
1679 | sub ecx,eax |
1566 | add [ebp-0x10],ecx |
1680 | add [ebp-16],ecx |
1567 | cmp dword [ebp-0x10],2 |
1681 | cmp dword [ebp-16],2 |
- | 1682 | jb .labl_71 |
|
1568 | jb .labl_71 |
1683 | |
1569 | mov eax,[ebp-0x40] |
1684 | mov eax,[ebp-64] |
1570 | mov al,[eax+MatchNextStates] |
1685 | mov al,[eax+MatchNextStates] |
1571 | mov ecx,[ebp+8] |
1686 | mov ecx,[ebp+8] |
1572 | movzx eax,al |
1687 | movzx eax,al |
1573 | mov esi,eax |
1688 | mov esi,eax |
1574 | mov al,[eax+LiteralNextStates] |
1689 | mov al,[eax+LiteralNextStates] |
1575 | lea edx,[edi+ecx-1] |
1690 | lea edx,[edi+ecx-1] |
1576 | mov [ebp-0x3C],al |
1691 | mov [ebp-60],al |
1577 | movzx eax,al |
1692 | movzx eax,al |
1578 | shl esi,4 |
1693 | shl esi,4 |
1579 | mov ebx,edx |
1694 | mov ebx,edx |
1580 | and ebx,3 |
1695 | and ebx,3 |
1581 | add esi,ebx |
1696 | add esi,ebx |
1582 | mov esi,[0x1AF30+esi*4] |
1697 | mov esi,[_isMatch+esi*4] |
1583 | lea ebx,[edi+ecx] |
1698 | lea ebx,[edi+ecx] |
1584 | mov [ebp-0x20],eax |
1699 | mov [ebp-32],eax |
1585 | mov eax,[ebp-0x28] |
1700 | mov eax,[ebp-40] |
1586 | movzx ecx,byte [edi+eax-1] |
1701 | movzx ecx,byte [edi+eax-1] |
1587 | push ecx |
1702 | push ecx |
1588 | mov ecx,edi |
1703 | mov ecx,edi |
1589 | sub ecx,[ebp-0x44] |
1704 | sub ecx,[ebp-68] |
1590 | shr esi,2 |
1705 | shr esi,2 |
1591 | movzx ecx,byte [ecx+eax-1] |
1706 | movzx ecx,byte [ecx+eax-1] |
1592 | mov esi,[0x51A18+esi*4] |
1707 | mov esi,[Models+esi*4] |
1593 | mov al,[edi+eax-2] |
1708 | mov al,[edi+eax-2] |
1594 | push ecx |
1709 | push ecx |
1595 | push 1 |
1710 | push 1 |
1596 | push edx |
1711 | push edx |
1597 | mov [ebp-0x54],esi |
1712 | mov [ebp-84],esi |
1598 | and ebx,3 |
1713 | and ebx,3 |
1599 | call cm_pr_05 |
1714 | call CLiteralEncoder_GetPrice |
1600 | mov ecx,[ebp-0x20] |
1715 | mov ecx,[ebp-32] |
1601 | mov esi,eax |
1716 | mov esi,eax |
1602 | shl ecx,4 |
1717 | shl ecx,4 |
1603 | add ecx,ebx |
1718 | add ecx,ebx |
1604 | mov eax,0x800 |
1719 | mov eax,2048 |
1605 | mov edx,eax |
1720 | mov edx,eax |
1606 | sub edx,[0x1AF30+ecx*4] |
1721 | sub edx,[_isMatch+ecx*4] |
1607 | mov ecx,[ebp-0x20] |
1722 | mov ecx,[ebp-32] |
1608 | sub eax,[0x515B8+ecx*4] |
1723 | sub eax,[_isRep+ecx*4] |
1609 | mov ecx,[ebp-0xC] |
1724 | mov ecx,[ebp-12] |
1610 | shr edx,2 |
1725 | shr edx,2 |
1611 | add esi,[0x51A18+edx*4] |
1726 | add esi,[Models+edx*4] |
1612 | shr eax,2 |
1727 | shr eax,2 |
1613 | add esi,[0x51A18+eax*4] |
1728 | add esi,[Models+eax*4] |
1614 | mov eax,[ebp-0x10] |
1729 | mov eax,[ebp-16] |
1615 | add esi,[ebp-0x54] |
1730 | add esi,[ebp-84] |
1616 | add eax,edi |
1731 | add eax,edi |
1617 | add esi,[ebp-0x50] |
1732 | add esi,[ebp-80] |
1618 | add eax,ecx |
1733 | add eax,ecx |
1619 | mov [ebp-0x20],eax |
1734 | mov [ebp-32],eax |
1620 | cmp [ebp-8],eax |
1735 | cmp [ebp-8],eax |
- | 1736 | jnb .labl_70 |
|
1621 | jnb .labl_70 |
1737 | |
1622 | mov eax,[ebp-8] |
1738 | mov eax,[ebp-8] |
1623 | mov ecx,[ebp-0x20] |
1739 | mov ecx,[ebp-32] |
1624 | imul eax,eax,0x28 |
1740 | imul eax,eax,40 |
1625 | sub ecx,[ebp-8] |
1741 | sub ecx,[ebp-8] |
1626 | add eax,0x29584 |
1742 | add eax,state.Price |
1627 | add [ebp-8],ecx |
1743 | add [ebp-8],ecx |
1628 | ;---------------------------------------------------------- |
1744 | ;---------------------------------------------------------- |
1629 | .labl_69: |
1745 | .labl_69: |
1630 | add eax,0x28 ;'(' |
1746 | add eax,40 |
1631 | dec ecx |
1747 | dec ecx |
1632 | mov dword [eax],0x0FFFFFFF |
1748 | mov dword [eax],kIfinityPrice |
1633 | jne .labl_69 |
1749 | jne .labl_69 |
1634 | ;---------------------------------------------------------- |
1750 | ;---------------------------------------------------------- |
1635 | .labl_70: |
1751 | .labl_70: |
1636 | mov eax,[ebp-0x10] |
1752 | mov eax,[ebp-16] |
1637 | push ebx |
1753 | push ebx |
1638 | push dword [ebp-0x3C] |
1754 | push dword [ebp-60] |
1639 | xor edx,edx |
1755 | xor edx,edx |
1640 | call cm_pr_11 |
1756 | call GetRepPrice |
1641 | mov ecx,[ebp-0x20] |
1757 | mov ecx,[ebp-32] |
1642 | mov ebx,[ebp-0x48] |
1758 | mov ebx,[ebp-72] |
1643 | imul ecx,ecx,0x28 |
1759 | imul ecx,ecx,40 |
1644 | add eax,esi |
1760 | add eax,esi |
1645 | add ecx,0x29578 |
1761 | add ecx,state.State |
1646 | cmp eax,[ecx+0xC] |
1762 | cmp eax,[ecx+12] |
- | 1763 | jnb .labl_71 |
|
1647 | jnb .labl_71 |
1764 | |
1648 | and dword [ecx+0x14],0 |
1765 | and dword [ecx+20],0 |
1649 | mov [ecx+0xC],eax |
1766 | mov [ecx+12],eax |
1650 | mov eax,[ebp-0xC] |
1767 | mov eax,[ebp-12] |
1651 | lea edx,[edi+eax] |
1768 | lea edx,[edi+eax] |
1652 | mov [ecx+4],eax |
1769 | mov [ecx+4],eax |
1653 | mov eax,[ebp-0x44] |
1770 | mov eax,[ebp-68] |
1654 | add eax,3 |
1771 | add eax,3 |
1655 | mov [ecx+0x10],edx |
1772 | mov [ecx+16],edx |
1656 | mov byte [ecx+1],1 |
1773 | mov byte [ecx+1],1 |
1657 | mov byte [ecx+2],1 |
1774 | mov byte [ecx+2],1 |
1658 | mov [ecx+8],eax |
1775 | mov [ecx+8],eax |
1659 | ;---------------------------------------------------------- |
1776 | ;---------------------------------------------------------- |
1660 | .labl_71: |
1777 | .labl_71: |
1661 | sub dword [ebp-0x24],4 |
1778 | sub dword [ebp-36],4 |
1662 | sub ebx,0x28 ;'(' |
1779 | sub ebx,40 |
1663 | dec edi |
1780 | dec edi |
1664 | lea eax,[edi-1] |
1781 | lea eax,[edi-1] |
1665 | mov [ebp-0x48],ebx |
1782 | mov [ebp-72],ebx |
1666 | cmp eax,2 |
1783 | cmp eax,2 |
1667 | jnb .labl_63 |
1784 | jnb .labl_63 |
1668 | ;---------------------------------------------------------- |
1785 | ;---------------------------------------------------------- |
1669 | .labl_72: |
1786 | .labl_72: |
1670 | inc dword [ebp-0xC] |
1787 | inc dword [ebp-12] |
1671 | mov eax,[ebp-0xC] |
1788 | mov eax,[ebp-12] |
1672 | cmp eax,[ebp-8] |
1789 | cmp eax,[ebp-8] |
- | 1790 | jne .labl_21 |
|
1673 | jne .labl_21 |
1791 | |
1674 | jmp .labl_74 |
1792 | jmp .labl_74 |
1675 | ;---------------------------------------------------------- |
1793 | ;---------------------------------------------------------- |
1676 | .labl_73: |
1794 | .labl_73: |
1677 | mov eax,[ebp-0x2C] |
1795 | mov eax,[ebp-44] |
1678 | mov [0x19FAC],eax |
1796 | mov [_longestMatchLength],eax |
1679 | mov byte [0x19FAA],1 ;0x1B238 |
1797 | mov byte [_longestMatchWasFound],1 |
1680 | ;---------------------------------------------------------- |
1798 | ;---------------------------------------------------------- |
1681 | .labl_74: |
1799 | .labl_74: |
1682 | push dword [ebp-0xC] |
1800 | push dword [ebp-12] |
1683 | push dword [ebp+0xC] |
1801 | push dword [ebp+12] |
1684 | call lz_cm_08 |
1802 | call Backward |
1685 | mov ecx,[ebp+0x10] |
1803 | mov ecx,[ebp+16] |
1686 | mov [ecx],eax |
1804 | mov [ecx],eax |
1687 | ;---------------------------------------------------------- |
1805 | ;---------------------------------------------------------- |
1688 | .labl_75: |
1806 | .labl_75: |
1689 | pop ebx |
1807 | pop ebx |
1690 | pop edi |
1808 | pop edi |
1691 | ;---------------------------------------------------------- |
1809 | ;---------------------------------------------------------- |
1692 | .labl_76: |
1810 | .labl_76: |
1693 | pop esi |
1811 | pop esi |
1694 | leave |
1812 | leave |
1695 | ret 0xC |
1813 | ret 12 |
Line 1696... | Line 1814... | ||
1696 | ;***************************************************************************** |
1814 | ;***************************************************************************** |
1697 | 1815 | ||
1698 | ;* Call: *************************************************************** |
1816 | ;* Call: *************************************************************** |
1699 | lz_cm_04: |
1817 | CLiteralEncoder2_EncodeMatched: |
1700 | push ebp |
1818 | push ebp |
1701 | mov ebp,esp |
1819 | mov ebp,esp |
1702 | push ecx |
1820 | push ecx |
Line 1708... | Line 1826... | ||
1708 | mov dword [ebp-4],8 |
1826 | mov dword [ebp-4],8 |
1709 | ;---------------------------------------------------------- |
1827 | ;---------------------------------------------------------- |
1710 | .labl_00: |
1828 | .labl_00: |
1711 | dec dword [ebp-4] |
1829 | dec dword [ebp-4] |
1712 | movzx ecx,byte [ebp-4] |
1830 | movzx ecx,byte [ebp-4] |
1713 | movzx esi,byte [ebp+0xC] |
1831 | movzx esi,byte [ebp+12] |
1714 | movzx edi,byte [ebp+0x10] |
1832 | movzx edi,byte [ebp+16] |
1715 | shr esi,cl |
1833 | shr esi,cl |
1716 | shr edi,cl |
1834 | shr edi,cl |
1717 | mov ecx,[ebp+8] |
1835 | mov ecx,[ebp+8] |
1718 | and esi,1 |
1836 | and esi,1 |
1719 | lea eax,[esi+1] |
1837 | lea eax,[esi+1] |
1720 | shl eax,8 |
1838 | shl eax,8 |
1721 | add eax,ebx |
1839 | add eax,ebx |
1722 | and edi,1 |
1840 | and edi,1 |
1723 | push edi |
1841 | push edi |
1724 | lea edx,[ecx+eax*4] |
1842 | lea edx,[ecx+eax*4] |
1725 | call cm_pr_14 |
1843 | call CMyBitEncoder_Encode |
1726 | add ebx,ebx |
1844 | add ebx,ebx |
1727 | or ebx,edi |
1845 | or ebx,edi |
1728 | cmp esi,edi |
1846 | cmp esi,edi |
1729 | jne .labl_02 |
1847 | jne .labl_02 |
- | 1848 | ||
1730 | cmp dword [ebp-4],0 |
1849 | cmp dword [ebp-4],0 |
1731 | jne .labl_00 |
1850 | jne .labl_00 |
- | 1851 | ||
1732 | jmp .labl_03 |
1852 | jmp .labl_03 |
1733 | ;---------------------------------------------------------- |
1853 | ;---------------------------------------------------------- |
1734 | .labl_01: |
1854 | .labl_01: |
1735 | dec dword [ebp-4] |
1855 | dec dword [ebp-4] |
1736 | movzx esi,byte [ebp+0x10] |
1856 | movzx esi,byte [ebp+16] |
1737 | mov cl,[ebp-4] |
1857 | mov cl,[ebp-4] |
1738 | mov eax,[ebp+8] |
1858 | mov eax,[ebp+8] |
1739 | shr esi,cl |
1859 | shr esi,cl |
1740 | lea edx,[eax+ebx*4] |
1860 | lea edx,[eax+ebx*4] |
1741 | and esi,1 |
1861 | and esi,1 |
1742 | push esi |
1862 | push esi |
1743 | call cm_pr_14 |
1863 | call CMyBitEncoder_Encode |
1744 | add ebx,ebx |
1864 | add ebx,ebx |
1745 | or ebx,esi |
1865 | or ebx,esi |
1746 | ;---------------------------------------------------------- |
1866 | ;---------------------------------------------------------- |
1747 | .labl_02: |
1867 | .labl_02: |
1748 | cmp dword [ebp-4],0 |
1868 | cmp dword [ebp-4],0 |
Line 1751... | Line 1871... | ||
1751 | .labl_03: |
1871 | .labl_03: |
1752 | pop edi |
1872 | pop edi |
1753 | pop esi |
1873 | pop esi |
1754 | pop ebx |
1874 | pop ebx |
1755 | leave |
1875 | leave |
1756 | ret 0xC |
1876 | ret 12 |
1757 | ;***************************************************************************** |
1877 | ;***************************************************************************** |
Line 1758... | Line 1878... | ||
1758 | 1878 | ||
1759 | ;* Call: *************************************************************** |
1879 | ;* Call: *************************************************************** |
1760 | lz_cm_05: |
1880 | RangeEncoder_EncodeDirectBits: |
1761 | push esi |
1881 | push esi |
1762 | mov esi,eax |
1882 | mov esi,eax |
1763 | jmp .labl_02 |
1883 | jmp .labl_02 |
1764 | ;---------------------------------------------------------- |
1884 | ;---------------------------------------------------------- |
1765 | .labl_00: |
1885 | .labl_00: |
1766 | mov eax,[esp+8] |
1886 | mov eax,[esp+8] |
1767 | shr dword [0x51A04],1 |
1887 | shr dword [range],1 |
1768 | dec esi |
1888 | dec esi |
1769 | mov ecx,esi |
1889 | mov ecx,esi |
1770 | shr eax,cl |
1890 | shr eax,cl |
1771 | test al,1 |
1891 | test al,1 |
- | 1892 | je .labl_01 |
|
1772 | je .labl_01 |
1893 | |
1773 | mov eax,[0x51A04] |
1894 | mov eax,[range] |
1774 | add [0x51A10],eax |
1895 | add [low],eax |
1775 | adc dword [0x51A14],0 |
1896 | adc dword [low+4],0 |
1776 | ;---------------------------------------------------------- |
1897 | ;---------------------------------------------------------- |
1777 | .labl_01: |
1898 | .labl_01: |
1778 | cmp dword [0x51A04],0x1000000 |
1899 | cmp dword [range],0x1000000 |
- | 1900 | jnb .labl_02 |
|
1779 | jnb .labl_02 |
1901 | |
1780 | shl dword [0x51A04],8 |
1902 | shl dword [range],8 |
1781 | call cm_pr_13 |
1903 | call RangeEncoder_ShiftLow |
1782 | ;---------------------------------------------------------- |
1904 | ;---------------------------------------------------------- |
1783 | .labl_02: |
1905 | .labl_02: |
1784 | test esi,esi |
1906 | test esi,esi |
- | 1907 | jne .labl_00 |
|
1785 | jne .labl_00 |
1908 | |
1786 | pop esi |
1909 | pop esi |
1787 | ret 4 |
1910 | ret 4 |
Line 1788... | Line 1911... | ||
1788 | ;***************************************************************************** |
1911 | ;***************************************************************************** |
1789 | 1912 | ||
1790 | ;* Call: *************************************************************** |
1913 | ;* Call: *************************************************************** |
1791 | lz_cm_06: |
1914 | CBitTreeEncoder_ReverseEncode: |
1792 | push esi |
1915 | push esi |
1793 | xor esi,esi |
1916 | xor esi,esi |
1794 | push edi |
1917 | push edi |
1795 | mov edi,[0x519E8] |
1918 | mov edi,[i_01] |
1796 | inc esi |
1919 | inc esi |
1797 | ;---------------------------------------------------------- |
1920 | ;---------------------------------------------------------- |
1798 | .labl_00: |
1921 | .labl_00: |
1799 | mov eax,[esp+0xC] |
1922 | mov eax,[esp+12] |
1800 | and eax,1 |
1923 | and eax,1 |
1801 | lea edx,[0x515E8+esi*4] |
1924 | lea edx,[_posAlignEncoder+esi*4] |
1802 | push eax |
1925 | push eax |
1803 | lea esi,[eax+esi*2] |
1926 | lea esi,[eax+esi*2] |
1804 | call cm_pr_14 |
1927 | call CMyBitEncoder_Encode |
1805 | shr dword [esp+0xC],1 |
1928 | shr dword [esp+12],1 |
- | 1929 | dec edi |
|
1806 | dec edi |
1930 | jne .labl_00 |
1807 | jne .labl_00 |
1931 | |
1808 | pop edi |
1932 | pop edi |
1809 | pop esi |
1933 | pop esi |
Line 1810... | Line 1934... | ||
1810 | ret 4 |
1934 | ret 4 |
1811 | ;***************************************************************************** |
1935 | ;***************************************************************************** |
1812 | 1936 | ||
1813 | ;* Call: *************************************************************** |
1937 | ;* Call: *************************************************************** |
1814 | lz_cm_07: |
1938 | MovePos: |
1815 | push esi |
1939 | push esi |
- | 1940 | mov esi,eax |
|
1816 | mov esi,eax |
1941 | test esi,esi |
1817 | test esi,esi |
1942 | je .labl_01 |
1818 | je .labl_01 |
1943 | |
1819 | add [0x1AEFC],esi |
1944 | add [_additionalOffset],esi |
1820 | ;---------------------------------------------------------- |
1945 | ;---------------------------------------------------------- |
1821 | .labl_00: |
1946 | .labl_00: |
1822 | dec esi |
1947 | dec esi |
1823 | call lz_cm_09 |
1948 | call lz_cm_09 |
1824 | call cm_pr_19 |
1949 | call MatchFinder_MovePos |
1825 | test esi,esi |
1950 | test esi,esi |
1826 | jne .labl_00 |
1951 | jne .labl_00 |
1827 | ;---------------------------------------------------------- |
1952 | ;---------------------------------------------------------- |
1828 | .labl_01: |
1953 | .labl_01: |
Line 1829... | Line 1954... | ||
1829 | pop esi |
1954 | pop esi |
1830 | ret |
1955 | ret |
1831 | ;***************************************************************************** |
1956 | ;***************************************************************************** |
1832 | 1957 | ||
1833 | ;* Call: *************************************************************** |
1958 | ;* Call: *************************************************************** |
1834 | lz_cm_08: |
1959 | Backward: |
1835 | push ebp |
1960 | push ebp |
1836 | mov ebp,esp |
1961 | mov ebp,esp |
1837 | push ecx |
1962 | push ecx |
1838 | mov ecx,[ebp+0xC] |
1963 | mov ecx,[ebp+12] |
1839 | mov eax,ecx |
1964 | mov eax,ecx |
1840 | imul eax,eax,0x28 |
1965 | imul eax,eax,40 |
1841 | mov edx,[eax+0x29588] |
1966 | mov edx,[eax+state.PosPrev] |
1842 | mov eax,[eax+0x2958C] |
1967 | mov eax,[eax+state.BackPrev] |
1843 | push ebx |
1968 | push ebx |
1844 | push esi |
1969 | push esi |
1845 | mov [0x29574],ecx |
1970 | mov [_optimumEndIndex],ecx |
1846 | mov [ebp-4],eax |
1971 | mov [ebp-4],eax |
1847 | push edi |
1972 | push edi |
1848 | ;---------------------------------------------------------- |
1973 | ;---------------------------------------------------------- |
- | 1974 | .labl_00: |
|
1849 | .labl_00: |
1975 | imul ecx,ecx,40 |
1850 | imul ecx,ecx,0x28 |
1976 | cmp byte [ecx+state.Prev1IsChar],0 |
1851 | cmp byte [ecx+0x29579],0 |
1977 | je .labl_01 |
1852 | je .labl_01 |
1978 | |
1853 | mov eax,edx |
1979 | mov eax,edx |
1854 | imul eax,eax,0x28 |
1980 | imul eax,eax,40 |
1855 | or dword [eax+0x2958C],0xFFFFFFFF |
1981 | or dword [eax+state.BackPrev],0xFFFFFFFF |
1856 | lea esi,[eax+0x29579] |
1982 | lea esi,[eax+state.Prev1IsChar] |
1857 | lea edi,[eax+0x29588] |
1983 | lea edi,[eax+state.PosPrev] |
1858 | lea ebx,[edx-1] |
1984 | lea ebx,[edx-1] |
- | 1985 | mov byte [esi],0 |
|
1859 | mov byte [esi],0 |
1986 | mov [edi],ebx |
1860 | mov [edi],ebx |
1987 | cmp byte [ecx+state.Prev2],0 |
1861 | cmp byte [ecx+0x2957A],0 |
1988 | je .labl_01 |
1862 | je .labl_01 |
1989 | |
1863 | mov byte [esi-0x28],0 |
1990 | mov byte [esi-40],0 |
1864 | mov esi,[ecx+0x2957C] |
1991 | mov esi,[ecx+state.PosPrev2] |
1865 | mov [edi-0x28],esi |
1992 | mov [edi-40],esi |
1866 | mov ecx,[ecx+0x29580] |
1993 | mov ecx,[ecx+state.BackPrev2] |
1867 | mov [eax+0x29564],ecx |
1994 | mov [eax+state.BackPrev-40],ecx |
1868 | ;---------------------------------------------------------- |
1995 | ;---------------------------------------------------------- |
1869 | .labl_01: |
1996 | .labl_01: |
1870 | mov ecx,[ebp-4] |
1997 | mov ecx,[ebp-4] |
1871 | mov eax,edx |
1998 | mov eax,edx |
1872 | imul eax,eax,0x28 |
1999 | imul eax,eax,40 |
1873 | mov esi,edx |
2000 | mov esi,edx |
1874 | mov edx,[eax+0x2958C] |
2001 | mov edx,[eax+state.BackPrev] |
1875 | mov [eax+0x2958C],ecx |
2002 | mov [eax+state.BackPrev],ecx |
1876 | mov ecx,[ebp+0xC] |
2003 | mov ecx,[ebp+12] |
1877 | mov [ebp-4],edx |
2004 | mov [ebp-4],edx |
1878 | mov edx,[eax+0x29588] |
2005 | mov edx,[eax+state.PosPrev] |
1879 | mov [eax+0x29588],ecx |
2006 | mov [eax+state.PosPrev],ecx |
- | 2007 | mov ecx,esi |
|
1880 | mov ecx,esi |
2008 | mov [ebp+12],ecx |
1881 | mov [ebp+0xC],ecx |
2009 | test esi,esi |
1882 | test esi,esi |
2010 | jne .labl_00 |
1883 | jne .labl_00 |
2011 | |
1884 | mov eax,[0x2958C] |
2012 | mov eax,[state.BackPrev] |
1885 | mov ecx,[ebp+8] |
2013 | mov ecx,[ebp+8] |
1886 | pop edi |
2014 | pop edi |
1887 | mov [ecx],eax |
2015 | mov [ecx],eax |
1888 | mov eax,[0x29588] |
2016 | mov eax,[state.PosPrev] |
1889 | pop esi |
2017 | pop esi |
1890 | mov [0x1AEF8],eax |
2018 | mov [_optimumCurrentIndex],eax |
Line 1891... | Line 2019... | ||
1891 | pop ebx |
2019 | pop ebx |
1892 | leave |
2020 | leave |
1893 | ret 8 |
2021 | ret 8 |
1894 | ;***************************************************************************** |
2022 | ;***************************************************************************** |
1895 | 2023 | ||
1896 | ;* Call: *************************************************************** |
2024 | ;* Call: *************************************************************** |
1897 | lz_cm_09: |
2025 | lz_cm_09: |
1898 | push ebp |
2026 | push ebp |
1899 | mov ebp,esp |
2027 | mov ebp,esp |
1900 | mov edx,[0x52218] |
2028 | mov edx,[_matchMaxLen] |
1901 | mov eax,[0x5262C] |
2029 | mov eax,[_pos] |
1902 | mov ecx,[0x52630] |
2030 | mov ecx,[_streamPos] |
- | 2031 | sub esp,44 |
|
1903 | sub esp,0x2C |
2032 | push esi |
1904 | push esi |
2033 | lea esi,[edx+eax] |
1905 | lea esi,[edx+eax] |
2034 | cmp esi,ecx |
1906 | cmp esi,ecx |
2035 | ja .labl_00 |
1907 | ja .labl_00 |
2036 | |
1908 | mov [ebp-0x18],edx |
2037 | mov [ebp-24],edx |
1909 | jmp .labl_01 |
2038 | jmp .labl_01 |
1910 | ;---------------------------------------------------------- |
2039 | ;---------------------------------------------------------- |
1911 | .labl_00: |
2040 | .labl_00: |
1912 | sub ecx,eax |
2041 | sub ecx,eax |
1913 | mov [ebp-0x18],ecx |
2042 | mov [ebp-24],ecx |
1914 | cmp ecx,3 |
2043 | cmp ecx,3 |
1915 | jb .labl_13 |
2044 | jb .labl_13 |
1916 | ;---------------------------------------------------------- |
2045 | ;---------------------------------------------------------- |
1917 | .labl_01: |
2046 | .labl_01: |
1918 | mov ecx,[0x51A0C] |
2047 | mov ecx,[_cyclicBufferSize] |
1919 | mov edx,eax |
2048 | mov edx,eax |
1920 | sub edx,ecx |
2049 | sub edx,ecx |
1921 | cmp ecx,eax |
2050 | cmp ecx,eax |
1922 | mov ecx,[0x52628] |
2051 | mov ecx,[_buffer] |
1923 | lea esi,[ecx+eax] |
2052 | lea esi,[ecx+eax] |
1924 | movzx ecx,byte [esi+2] |
2053 | movzx ecx,byte [esi+2] |
1925 | push ebx |
2054 | push ebx |
1926 | movzx ebx,word [esi] |
2055 | movzx ebx,word [esi] |
1927 | push edi |
2056 | push edi |
1928 | sbb edi,edi |
2057 | sbb edi,edi |
1929 | and dword [ebp-0x1C],0 |
2058 | and dword [ebp-28],0 |
1930 | and dword [ebp-0x28],0 |
2059 | and dword [ebp-40],0 |
1931 | shl ecx,8 |
2060 | shl ecx,8 |
1932 | and edi,edx |
2061 | and edi,edx |
1933 | movzx edx,byte [esi] |
2062 | movzx edx,byte [esi] |
1934 | xor ecx,[0x52228+edx*4] |
2063 | xor ecx,[crc_table+edx*4] |
1935 | movzx edx,byte [esi+1] |
2064 | movzx edx,byte [esi+1] |
1936 | xor ecx,edx |
2065 | xor ecx,edx |
1937 | mov edx,[0x52224] |
2066 | mov edx,[_hash] |
1938 | and ecx,0xFFFFF |
2067 | and ecx,0xFFFFF |
1939 | lea ecx,[edx+ecx*4] |
2068 | lea ecx,[edx+ecx*4] |
1940 | mov [edx+ebx*4+0x400000],eax |
2069 | mov [edx+ebx*4+0x400000],eax |
1941 | mov ebx,[ecx] |
2070 | mov ebx,[ecx] |
1942 | mov [ecx],eax |
2071 | mov [ecx],eax |
1943 | mov ecx,[0x5221C] |
2072 | mov ecx,[pack_pos] |
1944 | lea ecx,[edx+ecx*8+0x440000] |
2073 | lea ecx,[edx+ecx*8+0x440000] |
1945 | mov [ebp-4],ebx |
2074 | mov [ebp-4],ebx |
1946 | lea ebx,[ecx+4] |
2075 | lea ebx,[ecx+4] |
1947 | mov [ebp-0xC],ecx |
2076 | mov [ebp-12],ecx |
1948 | mov ecx,[0x52220] |
2077 | mov ecx,[_cutValue] |
1949 | mov [ebp-0x10],ebx |
2078 | mov [ebp-16],ebx |
1950 | mov [ebp-0x14],ecx |
2079 | mov [ebp-20],ecx |
1951 | cmp [ebp-4],edi |
2080 | cmp [ebp-4],edi |
1952 | jbe .labl_11 |
2081 | jbe .labl_11 |
1953 | ;---------------------------------------------------------- |
2082 | ;---------------------------------------------------------- |
- | 2083 | .labl_02: |
|
1954 | .labl_02: |
2084 | mov ecx,[ebp-20] |
1955 | mov ecx,[ebp-0x14] |
2085 | dec dword [ebp-20] |
1956 | dec dword [ebp-0x14] |
2086 | test ecx,ecx |
1957 | test ecx,ecx |
2087 | je .labl_11 |
1958 | je .labl_11 |
2088 | |
1959 | mov ecx,[0x52628] |
2089 | mov ecx,[_buffer] |
1960 | mov ebx,[ebp-4] |
2090 | mov ebx,[ebp-4] |
- | 2091 | add ecx,ebx |
|
1961 | add ecx,ebx |
2092 | mov [ebp-36],ecx |
1962 | mov [ebp-0x24],ecx |
2093 | mov ecx,[ebp-40] |
1963 | mov ecx,[ebp-0x28] |
2094 | cmp ecx,[ebp-28] |
1964 | cmp ecx,[ebp-0x1C] |
2095 | jb .labl_03 |
1965 | jb .labl_03 |
2096 | |
1966 | mov ecx,[ebp-0x1C] |
2097 | mov ecx,[ebp-28] |
1967 | ;---------------------------------------------------------- |
2098 | ;---------------------------------------------------------- |
1968 | .labl_03: |
2099 | .labl_03: |
1969 | mov ebx,[ebp-0x24] |
2100 | mov ebx,[ebp-36] |
1970 | mov [ebp-8],ecx |
2101 | mov [ebp-8],ecx |
1971 | add ecx,esi |
2102 | add ecx,esi |
1972 | sub ebx,esi |
2103 | sub ebx,esi |
1973 | mov [ebp-0x20],ebx |
2104 | mov [ebp-32],ebx |
1974 | jmp .labl_05 |
2105 | jmp .labl_05 |
1975 | ;---------------------------------------------------------- |
2106 | ;---------------------------------------------------------- |
1976 | .labl_04: |
2107 | .labl_04: |
1977 | mov ecx,[ebp-0x2C] |
2108 | mov ecx,[ebp-44] |
1978 | mov ebx,[ebp-0x20] |
2109 | mov ebx,[ebp-32] |
- | 2110 | ;---------------------------------------------------------- |
|
1979 | ;---------------------------------------------------------- |
2111 | .labl_05: |
1980 | .labl_05: |
2112 | mov bl,[ebx+ecx] |
1981 | mov bl,[ebx+ecx] |
2113 | cmp bl,[ecx] |
1982 | cmp bl,[ecx] |
2114 | jne .labl_06 |
1983 | jne .labl_06 |
2115 | |
1984 | inc dword [ebp-8] |
2116 | inc dword [ebp-8] |
1985 | inc ecx |
2117 | inc ecx |
1986 | mov [ebp-0x2C],ecx |
2118 | mov [ebp-44],ecx |
1987 | mov ecx,[ebp-8] |
2119 | mov ecx,[ebp-8] |
1988 | cmp ecx,[ebp-0x18] |
2120 | cmp ecx,[ebp-24] |
1989 | jne .labl_04 |
2121 | jne .labl_04 |
1990 | ;---------------------------------------------------------- |
2122 | ;---------------------------------------------------------- |
1991 | .labl_06: |
2123 | .labl_06: |
- | 2124 | mov ecx,[pack_pos] |
|
1992 | mov ecx,[0x5221C] |
2125 | mov ebx,eax |
1993 | mov ebx,eax |
2126 | sub ebx,[ebp-4] |
1994 | sub ebx,[ebp-4] |
2127 | cmp ebx,ecx |
1995 | cmp ebx,ecx |
2128 | ja .labl_07 |
1996 | ja .labl_07 |
2129 | |
1997 | sub ecx,ebx |
2130 | sub ecx,ebx |
1998 | jmp .labl_08 |
2131 | jmp .labl_08 |
1999 | ;---------------------------------------------------------- |
2132 | ;---------------------------------------------------------- |
2000 | .labl_07: |
2133 | .labl_07: |
2001 | sub ecx,ebx |
2134 | sub ecx,ebx |
2002 | add ecx,[0x51A0C] |
2135 | add ecx,[_cyclicBufferSize] |
2003 | ;---------------------------------------------------------- |
2136 | ;---------------------------------------------------------- |
2004 | .labl_08: |
2137 | .labl_08: |
- | 2138 | lea ecx,[edx+ecx*8+0x440000] |
|
2005 | lea ecx,[edx+ecx*8+0x440000] |
2139 | mov [ebp-32],ecx |
2006 | mov [ebp-0x20],ecx |
2140 | mov ecx,[ebp-8] |
2007 | mov ecx,[ebp-8] |
2141 | cmp ecx,[ebp-24] |
2008 | cmp ecx,[ebp-0x18] |
2142 | je .labl_14 |
2009 | je .labl_14 |
2143 | |
- | 2144 | mov ebx,[ebp-36] |
|
2010 | mov ebx,[ebp-0x24] |
2145 | mov bl,[ecx+ebx] |
2011 | mov bl,[ecx+ebx] |
2146 | cmp bl,[ecx+esi] |
2012 | cmp bl,[ecx+esi] |
2147 | mov ecx,[ebp-4] |
2013 | mov ecx,[ebp-4] |
2148 | jnb .labl_09 |
2014 | jnb .labl_09 |
2149 | |
2015 | mov ebx,[ebp-0xC] |
2150 | mov ebx,[ebp-12] |
2016 | mov [ebx],ecx |
2151 | mov [ebx],ecx |
2017 | mov ecx,[ebp-0x20] |
2152 | mov ecx,[ebp-32] |
2018 | mov ebx,[ebp-8] |
2153 | mov ebx,[ebp-8] |
2019 | add ecx,4 |
2154 | add ecx,4 |
2020 | mov [ebp-0xC],ecx |
2155 | mov [ebp-12],ecx |
2021 | mov [ebp-0x1C],ebx |
2156 | mov [ebp-28],ebx |
2022 | jmp .labl_10 |
2157 | jmp .labl_10 |
2023 | ;---------------------------------------------------------- |
2158 | ;---------------------------------------------------------- |
2024 | .labl_09: |
2159 | .labl_09: |
2025 | mov ebx,[ebp-0x10] |
2160 | mov ebx,[ebp-16] |
2026 | mov [ebx],ecx |
2161 | mov [ebx],ecx |
2027 | mov ecx,[ebp-0x20] |
2162 | mov ecx,[ebp-32] |
2028 | mov ebx,[ebp-8] |
2163 | mov ebx,[ebp-8] |
2029 | mov [ebp-0x10],ecx |
2164 | mov [ebp-16],ecx |
2030 | mov [ebp-0x28],ebx |
2165 | mov [ebp-40],ebx |
2031 | ;---------------------------------------------------------- |
2166 | ;---------------------------------------------------------- |
2032 | .labl_10: |
2167 | .labl_10: |
2033 | mov ecx,[ecx] |
2168 | mov ecx,[ecx] |
2034 | mov [ebp-4],ecx |
2169 | mov [ebp-4],ecx |
2035 | cmp ecx,edi |
2170 | cmp ecx,edi |
2036 | ja .labl_02 |
2171 | ja .labl_02 |
2037 | ;---------------------------------------------------------- |
2172 | ;---------------------------------------------------------- |
2038 | .labl_11: |
2173 | .labl_11: |
2039 | mov eax,[ebp-0xC] |
2174 | mov eax,[ebp-12] |
2040 | and dword [eax],0 |
2175 | and dword [eax],0 |
2041 | mov eax,[ebp-0x10] |
2176 | mov eax,[ebp-16] |
Line 2049... | Line 2184... | ||
2049 | pop esi |
2184 | pop esi |
2050 | leave |
2185 | leave |
2051 | ret |
2186 | ret |
2052 | ;---------------------------------------------------------- |
2187 | ;---------------------------------------------------------- |
2053 | .labl_14: |
2188 | .labl_14: |
2054 | mov eax,[ebp-0x20] |
2189 | mov eax,[ebp-32] |
2055 | mov ecx,[eax] |
2190 | mov ecx,[eax] |
2056 | mov edx,[ebp-0xC] |
2191 | mov edx,[ebp-12] |
2057 | mov [edx],ecx |
2192 | mov [edx],ecx |
2058 | mov eax,[eax+4] |
2193 | mov eax,[eax+4] |
2059 | mov ecx,[ebp-0x10] |
2194 | mov ecx,[ebp-16] |
2060 | mov [ecx],eax |
2195 | mov [ecx],eax |
2061 | jmp .labl_12 |
2196 | jmp .labl_12 |
2062 | ;***************************************************************************** |
2197 | ;***************************************************************************** |
Line 2063... | Line 2198... | ||
2063 | 2198 | ||
2064 | ;* Call: *************************************************************** |
2199 | ;* Call: *************************************************************** |
2065 | cm_pr_000: |
2200 | GetPosSlot: |
2066 | cmp eax,0x400 |
2201 | cmp eax,1024 |
- | 2202 | jnb .labl_00 |
|
2067 | jnb .labl_00 |
2203 | |
2068 | movzx eax,byte [eax+0x19FB0] |
2204 | movzx eax,byte [eax+g_FastPos] |
2069 | ret |
2205 | ret |
2070 | ;---------------------------------------------------------- |
2206 | ;---------------------------------------------------------- |
2071 | .labl_00: |
2207 | .labl_00: |
2072 | cmp eax,0x80000 |
2208 | cmp eax,0x80000 |
- | 2209 | jnb .labl_01 |
|
2073 | jnb .labl_01 |
2210 | |
2074 | shr eax,9 |
2211 | shr eax,9 |
2075 | movzx eax,byte [eax+0x19FB0] |
2212 | movzx eax,byte [eax+g_FastPos] |
2076 | add eax,0x12 |
2213 | add eax,18 |
2077 | ret |
2214 | ret |
2078 | ;---------------------------------------------------------- |
2215 | ;---------------------------------------------------------- |
2079 | .labl_01: |
2216 | .labl_01: |
2080 | shr eax,0x12 |
2217 | shr eax,18 |
2081 | movzx eax,byte [eax+0x19FB0] |
2218 | movzx eax,byte [eax+g_FastPos] |
2082 | add eax,0x24 ;'$' |
2219 | add eax,36 ;'$' |
2083 | ret |
2220 | ret |
Line 2084... | Line 2221... | ||
2084 | ;***************************************************************************** |
2221 | ;***************************************************************************** |
2085 | 2222 | ||
2086 | ;* Call: *************************************************************** |
2223 | ;* Call: *************************************************************** |
2087 | cm_pr_00: |
2224 | CPriceTableEncoder_Init: |
2088 | push ebx |
2225 | push ebx |
2089 | push edi |
2226 | push edi |
2090 | mov eax,0x400 |
2227 | mov eax,1024 |
2091 | push 4 |
2228 | push 4 |
2092 | mov [esi],eax |
2229 | mov [esi],eax |
2093 | mov [esi+4],eax |
2230 | mov [esi+4],eax |
2094 | lea edi,[esi+0x4048] |
2231 | lea edi,[esi+0x4048] |
2095 | pop ebx |
2232 | pop ebx |
2096 | ;---------------------------------------------------------- |
2233 | ;---------------------------------------------------------- |
2097 | .labl_00: |
2234 | .labl_00: |
2098 | push 3 |
2235 | push 3 |
2099 | lea eax,[edi-0x4040] |
2236 | lea eax,[edi-0x4040] |
2100 | pop ecx |
2237 | pop ecx |
2101 | call cm_pr_15 |
2238 | call CBitTreeEncoder_Init |
2102 | push 3 |
2239 | push 3 |
2103 | pop ecx |
2240 | pop ecx |
2104 | mov eax,edi |
2241 | mov eax,edi |
2105 | call cm_pr_15 |
2242 | call CBitTreeEncoder_Init |
2106 | add edi,0x404 |
2243 | add edi,1028 |
- | 2244 | dec ebx |
|
2107 | dec ebx |
2245 | jne .labl_00 |
2108 | jne .labl_00 |
2246 | |
2109 | push 8 |
2247 | push 8 |
2110 | pop ecx |
2248 | pop ecx |
2111 | pop edi |
2249 | pop edi |
2112 | lea eax,[esi+0x8088] |
2250 | lea eax,[esi+0x8088] |
2113 | pop ebx |
2251 | pop ebx |
Line 2114... | Line 2252... | ||
2114 | jmp cm_pr_15 |
2252 | jmp CBitTreeEncoder_Init |
2115 | ;***************************************************************************** |
2253 | ;***************************************************************************** |
2116 | 2254 | ||
2117 | ;* Call: *************************************************************** |
2255 | ;* Call: *************************************************************** |
2118 | cm_pr_01: |
2256 | CPriceTableEncoder_UpdateTable: |
2119 | push ebx |
2257 | push ebx |
2120 | push edi |
2258 | push edi |
2121 | mov edi,eax |
2259 | mov edi,eax |
- | 2260 | xor ebx,ebx |
|
2122 | xor ebx,ebx |
2261 | cmp [edi+0xC88C],ebx |
2123 | cmp [edi+0xC88C],ebx |
2262 | jbe .labl_01 |
2124 | jbe .labl_01 |
2263 | |
2125 | mov eax,[esp+0xC] |
2264 | mov eax,[esp+12] |
2126 | push esi |
2265 | push esi |
2127 | lea esi,[edi+eax*4+0x848C] |
2266 | lea esi,[edi+eax*4+0x848C] |
2128 | ;---------------------------------------------------------- |
2267 | ;---------------------------------------------------------- |
2129 | .labl_00: |
2268 | .labl_00: |
2130 | mov eax,[esp+0x10] |
2269 | mov eax,[esp+16] |
2131 | mov edx,ebx |
2270 | mov edx,ebx |
2132 | call lz_cm_10 |
2271 | call NLength_CEncoder_GetPrice |
2133 | mov [esi],eax |
2272 | mov [esi],eax |
2134 | inc ebx |
2273 | inc ebx |
- | 2274 | add esi,64 |
|
2135 | add esi,0x40 ;'@' |
2275 | cmp ebx,[edi+0xC88C] |
2136 | cmp ebx,[edi+0xC88C] |
2276 | jb .labl_00 |
2137 | jb .labl_00 |
2277 | |
2138 | pop esi |
2278 | pop esi |
2139 | ;---------------------------------------------------------- |
2279 | ;---------------------------------------------------------- |
2140 | .labl_01: |
2280 | .labl_01: |
2141 | mov eax,[edi+0xC88C] |
2281 | mov eax,[edi+0xC88C] |
2142 | mov ecx,[esp+0xC] |
2282 | mov ecx,[esp+12] |
2143 | mov [edi+ecx*4+0xC890],eax |
2283 | mov [edi+ecx*4+0xC890],eax |
2144 | pop edi |
2284 | pop edi |
Line 2145... | Line 2285... | ||
2145 | pop ebx |
2285 | pop ebx |
2146 | ret 4 |
2286 | ret 4 |
2147 | ;***************************************************************************** |
2287 | ;***************************************************************************** |
2148 | 2288 | ||
2149 | ;* Call: *************************************************************** |
2289 | ;* Call: *************************************************************** |
2150 | lz_cm_10: |
2290 | NLength_CEncoder_GetPrice: |
2151 | push ebp |
2291 | push ebp |
2152 | mov ebp,esp |
2292 | mov ebp,esp |
- | 2293 | push ecx |
|
2153 | push ecx |
2294 | push esi |
2154 | push esi |
2295 | cmp edx,8 |
2155 | cmp edx,8 |
2296 | jnb .labl_00 |
2156 | jnb .labl_00 |
2297 | |
2157 | imul eax,eax,0x404 |
2298 | imul eax,eax,1028 |
2158 | lea esi,[eax+edi+8] |
2299 | lea esi,[eax+edi+8] |
2159 | call cm_pr_17 |
2300 | call CBitTreeEncoder_GetPrice |
2160 | mov ecx,[edi] |
2301 | mov ecx,[edi] |
2161 | shr ecx,2 |
2302 | shr ecx,2 |
2162 | add eax,[0x51A18+ecx*4] |
2303 | add eax,[Models+ecx*4] |
2163 | jmp .labl_03 |
2304 | jmp .labl_03 |
2164 | ;---------------------------------------------------------- |
2305 | ;---------------------------------------------------------- |
2165 | .labl_00: |
2306 | .labl_00: |
2166 | push ebx |
2307 | push ebx |
2167 | mov ebx,0x800 |
2308 | mov ebx,2048 |
2168 | mov ecx,ebx |
2309 | mov ecx,ebx |
2169 | sub ecx,[edi] |
2310 | sub ecx,[edi] |
2170 | shr ecx,2 |
2311 | shr ecx,2 |
- | 2312 | mov ecx,[Models+ecx*4] |
|
2171 | mov ecx,[0x51A18+ecx*4] |
2313 | mov [ebp-4],ecx |
2172 | mov [ebp-4],ecx |
2314 | cmp edx,16 |
2173 | cmp edx,0x10 |
2315 | jnb .labl_01 |
2174 | jnb .labl_01 |
2316 | |
2175 | imul eax,eax,0x404 |
2317 | imul eax,eax,1028 |
2176 | add edx,0xFFFFFFF8 |
2318 | add edx,0xFFFFFFF8 |
2177 | lea esi,[eax+edi+0x4048] |
2319 | lea esi,[eax+edi+0x4048] |
2178 | call cm_pr_17 |
2320 | call CBitTreeEncoder_GetPrice |
2179 | mov ecx,[edi+4] |
2321 | mov ecx,[edi+4] |
2180 | shr ecx,2 |
2322 | shr ecx,2 |
2181 | add eax,[0x51A18+ecx*4] |
2323 | add eax,[Models+ecx*4] |
2182 | jmp .labl_02 |
2324 | jmp .labl_02 |
2183 | ;---------------------------------------------------------- |
2325 | ;---------------------------------------------------------- |
2184 | .labl_01: |
2326 | .labl_01: |
2185 | add edx,0xFFFFFFF0 |
2327 | add edx,0xFFFFFFF0 |
2186 | lea esi,[edi+0x8088] |
2328 | lea esi,[edi+0x8088] |
2187 | call cm_pr_17 |
2329 | call CBitTreeEncoder_GetPrice |
2188 | sub ebx,[edi+4] |
2330 | sub ebx,[edi+4] |
2189 | shr ebx,2 |
2331 | shr ebx,2 |
2190 | add eax,[0x51A18+ebx*4] |
2332 | add eax,[Models+ebx*4] |
2191 | ;---------------------------------------------------------- |
2333 | ;---------------------------------------------------------- |
Line 2199... | Line 2341... | ||
2199 | leave |
2341 | leave |
2200 | ret |
2342 | ret |
2201 | ;***************************************************************************** |
2343 | ;***************************************************************************** |
Line 2202... | Line 2344... | ||
2202 | 2344 | ||
2203 | ;* Call: *************************************************************** |
2345 | ;* Call: *************************************************************** |
2204 | cm_pr_02: |
2346 | CPriceTableEncoder_Encode: |
2205 | push edi |
2347 | push edi |
2206 | mov edi,eax |
2348 | mov edi,eax |
2207 | mov edx,esi |
2349 | mov edx,esi |
2208 | cmp edi,8 |
2350 | cmp edi,8 |
- | 2351 | jnb .labl_00 |
|
2209 | jnb .labl_00 |
2352 | |
2210 | push 0 |
2353 | push 0 |
2211 | call cm_pr_14 |
2354 | call CMyBitEncoder_Encode |
2212 | mov eax,ebx |
2355 | mov eax,ebx |
2213 | imul eax,eax,0x404 |
2356 | imul eax,eax,1028 |
2214 | push edi |
2357 | push edi |
2215 | lea edi,[eax+esi+8] |
2358 | lea edi,[eax+esi+8] |
2216 | jmp .labl_02 |
2359 | jmp .labl_02 |
2217 | ;---------------------------------------------------------- |
2360 | ;---------------------------------------------------------- |
2218 | .labl_00: |
2361 | .labl_00: |
2219 | push 1 |
2362 | push 1 |
2220 | call cm_pr_14 |
2363 | call CMyBitEncoder_Encode |
2221 | lea edx,[esi+4] |
2364 | lea edx,[esi+4] |
2222 | cmp edi,0x10 |
2365 | cmp edi,16 |
- | 2366 | jnb .labl_01 |
|
2223 | jnb .labl_01 |
2367 | |
2224 | push 0 |
2368 | push 0 |
2225 | call cm_pr_14 |
2369 | call CMyBitEncoder_Encode |
2226 | add edi,0xFFFFFFF8 |
2370 | add edi,0xFFFFFFF8 |
2227 | mov eax,ebx |
2371 | mov eax,ebx |
2228 | imul eax,eax,0x404 |
2372 | imul eax,eax,1028 |
2229 | push edi |
2373 | push edi |
2230 | lea edi,[eax+esi+0x4048] |
2374 | lea edi,[eax+esi+0x4048] |
2231 | jmp .labl_02 |
2375 | jmp .labl_02 |
2232 | ;---------------------------------------------------------- |
2376 | ;---------------------------------------------------------- |
2233 | .labl_01: |
2377 | .labl_01: |
2234 | push 1 |
2378 | push 1 |
2235 | call cm_pr_14 |
2379 | call CMyBitEncoder_Encode |
2236 | add edi,0xFFFFFFF0 |
2380 | add edi,0xFFFFFFF0 |
2237 | push edi |
2381 | push edi |
2238 | lea edi,[esi+0x8088] |
2382 | lea edi,[esi+0x8088] |
2239 | ;---------------------------------------------------------- |
2383 | ;---------------------------------------------------------- |
2240 | .labl_02: |
2384 | .labl_02: |
2241 | call cm_pr_16 |
2385 | call cm_pr_16 |
2242 | dec dword [esi+ebx*4+0xC890] |
2386 | dec dword [esi+ebx*4+0xC890] |
2243 | pop edi |
2387 | pop edi |
- | 2388 | jne .labl_03 |
|
2244 | jne .labl_03 |
2389 | |
2245 | push ebx |
2390 | push ebx |
2246 | mov eax,esi |
2391 | mov eax,esi |
2247 | call cm_pr_01 |
2392 | call CPriceTableEncoder_UpdateTable |
2248 | ;---------------------------------------------------------- |
2393 | ;---------------------------------------------------------- |
2249 | .labl_03: |
2394 | .labl_03: |
2250 | ret |
2395 | ret |
Line 2251... | Line 2396... | ||
2251 | ;***************************************************************************** |
2396 | ;***************************************************************************** |
2252 | 2397 | ||
2253 | ;* Call: *************************************************************** |
2398 | ;* Call: *************************************************************** |
2254 | cm_pr_03: |
2399 | CLiteralEncoder2_Encode: |
2255 | push ebx |
2400 | push ebx |
2256 | push esi |
2401 | push esi |
2257 | push edi |
2402 | push edi |
2258 | xor edi,edi |
2403 | xor edi,edi |
2259 | push 8 |
2404 | push 8 |
2260 | inc edi |
2405 | inc edi |
2261 | pop ebx |
2406 | pop ebx |
2262 | ;---------------------------------------------------------- |
2407 | ;---------------------------------------------------------- |
2263 | .labl_00: |
2408 | .labl_00: |
2264 | movzx esi,byte [esp+0x14] |
2409 | movzx esi,byte [esp+20] |
2265 | mov eax,[esp+0x10] |
2410 | mov eax,[esp+16] |
2266 | dec ebx |
2411 | dec ebx |
2267 | mov cl,bl |
2412 | mov cl,bl |
2268 | shr esi,cl |
2413 | shr esi,cl |
2269 | lea edx,[eax+edi*4] |
2414 | lea edx,[eax+edi*4] |
2270 | and esi,1 |
2415 | and esi,1 |
2271 | push esi |
2416 | push esi |
2272 | call cm_pr_14 |
2417 | call CMyBitEncoder_Encode |
2273 | add edi,edi |
2418 | add edi,edi |
2274 | or edi,esi |
2419 | or edi,esi |
- | 2420 | test ebx,ebx |
|
2275 | test ebx,ebx |
2421 | jne .labl_00 |
2276 | jne .labl_00 |
2422 | |
2277 | pop edi |
2423 | pop edi |
2278 | pop esi |
2424 | pop esi |
2279 | pop ebx |
2425 | pop ebx |
Line 2280... | Line 2426... | ||
2280 | ret 8 |
2426 | ret 8 |
2281 | ;***************************************************************************** |
2427 | ;***************************************************************************** |
2282 | 2428 | ||
2283 | ;* Call: *************************************************************** |
2429 | ;* Call: *************************************************************** |
2284 | cm_pr_04: |
2430 | CState_IsCharState: |
2285 | mov edx,[0x519F4] |
2431 | mov edx,[_numPrevBits] |
2286 | push esi |
2432 | push esi |
2287 | mov esi,[0x519FC] |
2433 | mov esi,[_posMask] |
2288 | and esi,[esp+8] |
2434 | and esi,[esp+8] |
2289 | push 8 |
2435 | push 8 |
Line 2297... | Line 2443... | ||
2297 | pop esi |
2443 | pop esi |
2298 | ret 4 |
2444 | ret 4 |
2299 | ;***************************************************************************** |
2445 | ;***************************************************************************** |
Line 2300... | Line 2446... | ||
2300 | 2446 | ||
2301 | ;* Call: *************************************************************** |
2447 | ;* Call: *************************************************************** |
2302 | cm_pr_05: |
2448 | CLiteralEncoder_GetPrice: |
2303 | push dword [esp+0x10] |
2449 | push dword [esp+16] |
2304 | push dword [esp+0x10] |
2450 | push dword [esp+16] |
2305 | push dword [esp+0x10] |
2451 | push dword [esp+16] |
2306 | push dword [esp+0x10] |
2452 | push dword [esp+16] |
2307 | call cm_pr_04 |
2453 | call CState_IsCharState |
2308 | imul eax,eax,0xC00 |
2454 | imul eax,eax,3072 |
2309 | add eax,[0x519F0] |
2455 | add eax,[_posEncoders] |
2310 | push eax |
2456 | push eax |
2311 | call lz_cm_11 |
2457 | call lz_cm_11 |
2312 | ret 0x10 |
2458 | ret 16 |
Line 2313... | Line 2459... | ||
2313 | ;***************************************************************************** |
2459 | ;***************************************************************************** |
2314 | 2460 | ||
2315 | ;* Call: *************************************************************** |
2461 | ;* Call: *************************************************************** |
Line 2322... | Line 2468... | ||
2322 | xor esi,esi |
2468 | xor esi,esi |
2323 | xor eax,eax |
2469 | xor eax,eax |
2324 | inc esi |
2470 | inc esi |
2325 | push edi |
2471 | push edi |
2326 | mov dword [ebp-4],8 |
2472 | mov dword [ebp-4],8 |
2327 | cmp [ebp+0xC],al |
2473 | cmp [ebp+12],al |
2328 | je .labl_02 |
2474 | je .labl_02 |
- | 2475 | ||
2329 | movzx ecx,byte [ebp+0x14] |
2476 | movzx ecx,byte [ebp+20] |
2330 | mov [ebp+0xC],ecx |
2477 | mov [ebp+12],ecx |
2331 | ;---------------------------------------------------------- |
2478 | ;---------------------------------------------------------- |
2332 | .labl_00: |
2479 | .labl_00: |
2333 | dec dword [ebp-4] |
2480 | dec dword [ebp-4] |
2334 | movzx ecx,byte [ebp-4] |
2481 | movzx ecx,byte [ebp-4] |
2335 | movzx edi,byte [ebp+0x10] |
2482 | movzx edi,byte [ebp+16] |
2336 | mov edx,[ebp+0xC] |
2483 | mov edx,[ebp+12] |
2337 | mov ebx,[ebp+8] |
2484 | mov ebx,[ebp+8] |
2338 | shr edi,cl |
2485 | shr edi,cl |
2339 | shr edx,cl |
2486 | shr edx,cl |
2340 | and edi,1 |
2487 | and edi,1 |
2341 | mov ecx,edi |
2488 | mov ecx,edi |
2342 | shl ecx,8 |
2489 | shl ecx,8 |
2343 | add ecx,esi |
2490 | add ecx,esi |
2344 | mov ecx,[ebx+ecx*4+0x400] |
2491 | mov ecx,[ebx+ecx*4+1024] |
2345 | and edx,1 |
2492 | and edx,1 |
2346 | sub ecx,edx |
2493 | sub ecx,edx |
2347 | mov ebx,edx |
2494 | mov ebx,edx |
2348 | neg ebx |
2495 | neg ebx |
2349 | xor ecx,ebx |
2496 | xor ecx,ebx |
2350 | shr ecx,2 |
2497 | shr ecx,2 |
2351 | and ecx,0x1FF |
2498 | and ecx,0x1FF |
2352 | add eax,[0x51A18+ecx*4] |
2499 | add eax,[Models+ecx*4] |
2353 | add esi,esi |
2500 | add esi,esi |
2354 | or esi,edx |
2501 | or esi,edx |
2355 | cmp edi,edx |
2502 | cmp edi,edx |
2356 | jne .labl_01 |
2503 | jne .labl_01 |
- | 2504 | ||
2357 | cmp dword [ebp-4],0 |
2505 | cmp dword [ebp-4],0 |
2358 | jne .labl_00 |
2506 | jne .labl_00 |
- | 2507 | ||
2359 | jmp .labl_04 |
2508 | jmp .labl_04 |
2360 | ;---------------------------------------------------------- |
2509 | ;---------------------------------------------------------- |
2361 | .labl_01: |
2510 | .labl_01: |
2362 | cmp dword [ebp-4],0 |
2511 | cmp dword [ebp-4],0 |
2363 | je .labl_04 |
2512 | je .labl_04 |
2364 | ;---------------------------------------------------------- |
2513 | ;---------------------------------------------------------- |
2365 | .labl_02: |
2514 | .labl_02: |
2366 | movzx edi,byte [ebp+0x14] |
2515 | movzx edi,byte [ebp+20] |
2367 | ;---------------------------------------------------------- |
2516 | ;---------------------------------------------------------- |
2368 | .labl_03: |
2517 | .labl_03: |
2369 | dec dword [ebp-4] |
2518 | dec dword [ebp-4] |
2370 | mov cl,[ebp-4] |
2519 | mov cl,[ebp-4] |
2371 | mov edx,edi |
2520 | mov edx,edi |
Line 2378... | Line 2527... | ||
2378 | mov ebx,edx |
2527 | mov ebx,edx |
2379 | neg ebx |
2528 | neg ebx |
2380 | xor ecx,ebx |
2529 | xor ecx,ebx |
2381 | shr ecx,2 |
2530 | shr ecx,2 |
2382 | and ecx,0x1FF |
2531 | and ecx,0x1FF |
2383 | add eax,[0x51A18+ecx*4] |
2532 | add eax,[Models+ecx*4] |
2384 | or esi,edx |
2533 | or esi,edx |
2385 | cmp dword [ebp-4],0 |
2534 | cmp dword [ebp-4],0 |
2386 | jne .labl_03 |
2535 | jne .labl_03 |
2387 | ;---------------------------------------------------------- |
2536 | ;---------------------------------------------------------- |
2388 | .labl_04: |
2537 | .labl_04: |
2389 | pop edi |
2538 | pop edi |
2390 | pop esi |
2539 | pop esi |
2391 | pop ebx |
2540 | pop ebx |
2392 | leave |
2541 | leave |
2393 | ret 0x10 |
2542 | ret 16 |
2394 | ;***************************************************************************** |
2543 | ;***************************************************************************** |
Line 2395... | Line 2544... | ||
2395 | 2544 | ||
2396 | ;* Call: *************************************************************** |
2545 | ;* Call: *************************************************************** |
2397 | cm_pr_06: |
2546 | ReadMatchDistances: |
2398 | push esi |
2547 | push esi |
2399 | call lz_cm_12 |
2548 | call GetLongestMatch |
2400 | mov ecx,eax |
2549 | mov ecx,eax |
2401 | mov esi,0x80 ;'' |
2550 | mov esi,0x80 |
2402 | cmp ecx,esi |
2551 | cmp ecx,esi |
- | 2552 | jne .labl_00 |
|
2403 | jne .labl_00 |
2553 | |
2404 | push dword [0x1ACB0] |
2554 | push dword [distances+512] |
2405 | lea eax,[esi+0x11] |
2555 | lea eax,[esi+17] |
2406 | push esi |
2556 | push esi |
2407 | call cm_pr_18 |
2557 | call GetMatchLen |
2408 | mov ecx,eax |
2558 | mov ecx,eax |
2409 | add ecx,esi |
2559 | add ecx,esi |
2410 | ;---------------------------------------------------------- |
2560 | ;---------------------------------------------------------- |
2411 | .labl_00: |
2561 | .labl_00: |
2412 | inc dword [0x1AEFC] |
2562 | inc dword [_additionalOffset] |
2413 | call cm_pr_19 |
2563 | call MatchFinder_MovePos |
2414 | mov eax,ecx |
2564 | mov eax,ecx |
2415 | pop esi |
2565 | pop esi |
2416 | ret |
2566 | ret |
Line 2417... | Line 2567... | ||
2417 | ;***************************************************************************** |
2567 | ;***************************************************************************** |
2418 | 2568 | ||
2419 | ;* Call: *************************************************************** |
2569 | ;* Call: *************************************************************** |
2420 | lz_cm_12: |
2570 | GetLongestMatch: |
2421 | push ebp |
2571 | push ebp |
2422 | mov ebp,esp |
2572 | mov ebp,esp |
2423 | sub esp,0x34 |
2573 | sub esp,0x34 |
2424 | mov edx,[0x52218] |
2574 | mov edx,[_matchMaxLen] |
2425 | mov ecx,[0x5262C] |
2575 | mov ecx,[_pos] |
2426 | mov eax,[0x52630] |
2576 | mov eax,[_streamPos] |
2427 | and dword [ebp-0x18],0 |
2577 | and dword [ebp-24],0 |
2428 | push esi |
2578 | push esi |
2429 | lea esi,[edx+ecx] |
2579 | lea esi,[edx+ecx] |
- | 2580 | cmp esi,eax |
|
2430 | cmp esi,eax |
2581 | ja .labl_02 |
2431 | ja .labl_02 |
2582 | |
2432 | mov [ebp-0x20],edx |
2583 | mov [ebp-32],edx |
2433 | ;---------------------------------------------------------- |
2584 | ;---------------------------------------------------------- |
2434 | .labl_00: |
2585 | .labl_00: |
2435 | mov eax,[0x51A0C] |
2586 | mov eax,[_cyclicBufferSize] |
2436 | mov edx,ecx |
2587 | mov edx,ecx |
2437 | sub edx,eax |
2588 | sub edx,eax |
2438 | cmp eax,ecx |
2589 | cmp eax,ecx |
2439 | sbb eax,eax |
2590 | sbb eax,eax |
2440 | and eax,edx |
2591 | and eax,edx |
2441 | mov [ebp-0x28],eax |
2592 | mov [ebp-40],eax |
2442 | mov eax,[0x52628] |
2593 | mov eax,[_buffer] |
2443 | push ebx |
2594 | push ebx |
2444 | push edi |
2595 | push edi |
2445 | lea edi,[eax+ecx] |
2596 | lea edi,[eax+ecx] |
2446 | movzx edx,byte [edi+2] |
2597 | movzx edx,byte [edi+2] |
2447 | movzx esi,byte [edi] |
2598 | movzx esi,byte [edi] |
2448 | movzx eax,word [edi] |
2599 | movzx eax,word [edi] |
2449 | shl edx,8 |
2600 | shl edx,8 |
2450 | xor edx,[0x52228+esi*4] |
2601 | xor edx,[crc_table+esi*4] |
2451 | movzx esi,byte [edi+1] |
2602 | movzx esi,byte [edi+1] |
2452 | xor edx,esi |
2603 | xor edx,esi |
2453 | mov esi,[0x52224] |
2604 | mov esi,[_hash] |
2454 | and edx,0xFFFFF |
2605 | and edx,0xFFFFF |
2455 | lea edx,[esi+edx*4] |
2606 | lea edx,[esi+edx*4] |
2456 | mov ebx,[edx] |
2607 | mov ebx,[edx] |
2457 | lea eax,[esi+eax*4+0x400000] |
2608 | lea eax,[esi+eax*4+0x400000] |
2458 | mov [ebp-8],ebx |
2609 | mov [ebp-8],ebx |
2459 | mov ebx,[eax] |
2610 | mov ebx,[eax] |
2460 | mov [eax],ecx |
2611 | mov [eax],ecx |
2461 | or dword [0x01AAB8],0xFFFFFFFF |
2612 | or dword [distances+8],0xFFFFFFFF |
- | 2613 | cmp ebx,[ebp-40] |
|
2462 | cmp ebx,[ebp-0x28] |
2614 | jbe .labl_01 |
2463 | jbe .labl_01 |
2615 | |
2464 | mov eax,ecx |
2616 | mov eax,ecx |
2465 | sub eax,ebx |
2617 | sub eax,ebx |
2466 | dec eax |
2618 | dec eax |
2467 | mov [0x01AAB8],eax |
2619 | mov [distances+8],eax |
2468 | mov dword [ebp-0x18],2 |
2620 | mov dword [ebp-24],2 |
2469 | ;---------------------------------------------------------- |
2621 | ;---------------------------------------------------------- |
2470 | .labl_01: |
2622 | .labl_01: |
2471 | mov ebx,[0x5221C] |
2623 | mov ebx,[pack_pos] |
2472 | and dword [ebp-0x24],0 |
2624 | and dword [ebp-36],0 |
2473 | mov [edx],ecx |
2625 | mov [edx],ecx |
2474 | or dword [0x1AABC],0xFFFFFFFF |
2626 | or dword [distances+12],0xFFFFFFFF |
2475 | and dword [ebp-0x30],0 |
2627 | and dword [ebp-48],0 |
2476 | lea edx,[esi+ebx*8+0x440000] |
2628 | lea edx,[esi+ebx*8+0x440000] |
2477 | lea eax,[edx+4] |
2629 | lea eax,[edx+4] |
2478 | mov [ebp-0x14],eax |
2630 | mov [ebp-20],eax |
2479 | mov eax,[0x52220] |
2631 | mov eax,[_cutValue] |
2480 | mov [ebp-0x1C],eax |
2632 | mov [ebp-28],eax |
2481 | mov eax,[ebp-8] |
2633 | mov eax,[ebp-8] |
2482 | mov [ebp-0x10],edx |
2634 | mov [ebp-16],edx |
2483 | jmp .labl_13 |
2635 | jmp .labl_13 |
2484 | ;---------------------------------------------------------- |
2636 | ;---------------------------------------------------------- |
2485 | .labl_02: |
2637 | .labl_02: |
2486 | sub eax,ecx |
2638 | sub eax,ecx |
2487 | mov [ebp-0x20],eax |
2639 | mov [ebp-32],eax |
- | 2640 | cmp eax,3 |
|
2488 | cmp eax,3 |
2641 | jnb .labl_00 |
2489 | jnb .labl_00 |
2642 | |
2490 | xor eax,eax |
2643 | xor eax,eax |
2491 | jmp .labl_16 |
2644 | jmp .labl_16 |
2492 | ;---------------------------------------------------------- |
2645 | ;---------------------------------------------------------- |
2493 | .labl_03: |
2646 | .labl_03: |
2494 | mov eax,[ebp-0x1C] |
2647 | mov eax,[ebp-28] |
2495 | dec dword [ebp-0x1C] |
2648 | dec dword [ebp-28] |
- | 2649 | test eax,eax |
|
2496 | test eax,eax |
2650 | je .labl_14 |
2497 | je .labl_14 |
2651 | |
2498 | mov eax,[0x52628] |
2652 | mov eax,[_buffer] |
2499 | mov edx,[ebp-8] |
2653 | mov edx,[ebp-8] |
2500 | add eax,edx |
2654 | add eax,edx |
2501 | mov [ebp-0x2C],eax |
2655 | mov [ebp-44],eax |
2502 | mov eax,[ebp-0x30] |
2656 | mov eax,[ebp-48] |
- | 2657 | cmp eax,[ebp-36] |
|
2503 | cmp eax,[ebp-0x24] |
2658 | jb .labl_04 |
2504 | jb .labl_04 |
2659 | |
2505 | mov eax,[ebp-0x24] |
2660 | mov eax,[ebp-36] |
2506 | ;---------------------------------------------------------- |
2661 | ;---------------------------------------------------------- |
2507 | .labl_04: |
2662 | .labl_04: |
2508 | mov edx,[ebp-0x2C] |
2663 | mov edx,[ebp-44] |
2509 | mov [ebp-4],eax |
2664 | mov [ebp-4],eax |
2510 | add eax,edi |
2665 | add eax,edi |
2511 | sub edx,edi |
2666 | sub edx,edi |
2512 | mov [ebp-0xC],edx |
2667 | mov [ebp-12],edx |
2513 | jmp .labl_06 |
2668 | jmp .labl_06 |
2514 | ;---------------------------------------------------------- |
2669 | ;---------------------------------------------------------- |
2515 | .labl_05: |
2670 | .labl_05: |
2516 | mov edx,[ebp-0xC] |
2671 | mov edx,[ebp-12] |
2517 | mov eax,[ebp-0x34] |
2672 | mov eax,[ebp-52] |
2518 | ;---------------------------------------------------------- |
2673 | ;---------------------------------------------------------- |
2519 | .labl_06: |
2674 | .labl_06: |
2520 | mov dl,[edx+eax] |
2675 | mov dl,[edx+eax] |
- | 2676 | cmp dl,[eax] |
|
2521 | cmp dl,[eax] |
2677 | jne .labl_07 |
2522 | jne .labl_07 |
2678 | |
2523 | inc dword [ebp-4] |
2679 | inc dword [ebp-4] |
2524 | inc eax |
2680 | inc eax |
2525 | mov [ebp-0x34],eax |
2681 | mov [ebp-52],eax |
2526 | mov eax,[ebp-4] |
2682 | mov eax,[ebp-4] |
2527 | cmp eax,[ebp-0x20] |
2683 | cmp eax,[ebp-32] |
2528 | jne .labl_05 |
2684 | jne .labl_05 |
2529 | ;---------------------------------------------------------- |
2685 | ;---------------------------------------------------------- |
2530 | .labl_07: |
2686 | .labl_07: |
2531 | mov eax,ecx |
2687 | mov eax,ecx |
2532 | sub eax,[ebp-8] |
2688 | sub eax,[ebp-8] |
2533 | mov [ebp-0xC],eax |
2689 | mov [ebp-12],eax |
2534 | mov eax,[ebp-0x18] |
2690 | mov eax,[ebp-24] |
2535 | cmp eax,[ebp-4] |
2691 | cmp eax,[ebp-4] |
2536 | jnb .labl_09 |
2692 | jnb .labl_09 |
2537 | ;---------------------------------------------------------- |
2693 | ;---------------------------------------------------------- |
2538 | .labl_08: |
2694 | .labl_08: |
2539 | mov edx,[ebp-0xC] |
2695 | mov edx,[ebp-12] |
2540 | inc eax |
2696 | inc eax |
2541 | dec edx |
2697 | dec edx |
2542 | mov [0x1AAB0+eax*4],edx |
2698 | mov [distances+eax*4],edx |
- | 2699 | cmp eax,[ebp-4] |
|
2543 | cmp eax,[ebp-4] |
2700 | jb .labl_08 |
2544 | jb .labl_08 |
2701 | |
2545 | mov [ebp-0x18],eax |
2702 | mov [ebp-24],eax |
2546 | ;---------------------------------------------------------- |
2703 | ;---------------------------------------------------------- |
2547 | .labl_09: |
2704 | .labl_09: |
2548 | mov eax,ebx |
2705 | mov eax,ebx |
2549 | sub eax,[ebp-0xC] |
2706 | sub eax,[ebp-12] |
- | 2707 | cmp [ebp-12],ebx |
|
2550 | cmp [ebp-0xC],ebx |
2708 | jbe .labl_10 |
2551 | jbe .labl_10 |
2709 | |
2552 | add eax,[0x51A0C] |
2710 | add eax,[_cyclicBufferSize] |
2553 | ;---------------------------------------------------------- |
2711 | ;---------------------------------------------------------- |
2554 | .labl_10: |
2712 | .labl_10: |
2555 | lea eax,[esi+eax*8+0x440000] |
2713 | lea eax,[esi+eax*8+0x440000] |
2556 | mov [ebp-0xC],eax |
2714 | mov [ebp-12],eax |
2557 | mov eax,[ebp-4] |
2715 | mov eax,[ebp-4] |
- | 2716 | cmp eax,[ebp-32] |
|
2558 | cmp eax,[ebp-0x20] |
2717 | je .labl_17 |
2559 | je .labl_17 |
2718 | |
2560 | mov edx,[ebp-0x2C] |
2719 | mov edx,[ebp-44] |
2561 | mov dl,[eax+edx] |
2720 | mov dl,[eax+edx] |
2562 | cmp dl,[eax+edi] |
2721 | cmp dl,[eax+edi] |
- | 2722 | mov eax,[ebp-8] |
|
2563 | mov eax,[ebp-8] |
2723 | jnb .labl_11 |
2564 | jnb .labl_11 |
2724 | |
2565 | mov edx,[ebp-0x10] |
2725 | mov edx,[ebp-16] |
2566 | mov [edx],eax |
2726 | mov [edx],eax |
2567 | mov eax,[ebp-0xC] |
2727 | mov eax,[ebp-12] |
2568 | mov edx,[ebp-4] |
2728 | mov edx,[ebp-4] |
2569 | add eax,4 |
2729 | add eax,4 |
2570 | mov [ebp-0x10],eax |
2730 | mov [ebp-16],eax |
2571 | mov [ebp-0x24],edx |
2731 | mov [ebp-36],edx |
2572 | jmp .labl_12 |
2732 | jmp .labl_12 |
2573 | ;---------------------------------------------------------- |
2733 | ;---------------------------------------------------------- |
2574 | .labl_11: |
2734 | .labl_11: |
2575 | mov edx,[ebp-0x14] |
2735 | mov edx,[ebp-20] |
2576 | mov [edx],eax |
2736 | mov [edx],eax |
2577 | mov eax,[ebp-0xC] |
2737 | mov eax,[ebp-12] |
2578 | mov edx,[ebp-4] |
2738 | mov edx,[ebp-4] |
2579 | mov [ebp-0x14],eax |
2739 | mov [ebp-20],eax |
2580 | mov [ebp-0x30],edx |
2740 | mov [ebp-48],edx |
2581 | ;---------------------------------------------------------- |
2741 | ;---------------------------------------------------------- |
2582 | .labl_12: |
2742 | .labl_12: |
2583 | mov eax,[eax] |
2743 | mov eax,[eax] |
2584 | mov [ebp-8],eax |
2744 | mov [ebp-8],eax |
2585 | ;---------------------------------------------------------- |
2745 | ;---------------------------------------------------------- |
2586 | .labl_13: |
2746 | .labl_13: |
2587 | cmp eax,[ebp-0x28] |
2747 | cmp eax,[ebp-40] |
2588 | ja .labl_03 |
2748 | ja .labl_03 |
2589 | ;---------------------------------------------------------- |
2749 | ;---------------------------------------------------------- |
2590 | .labl_14: |
2750 | .labl_14: |
2591 | mov eax,[ebp-0x10] |
2751 | mov eax,[ebp-16] |
2592 | and dword [eax],0 |
2752 | and dword [eax],0 |
2593 | mov eax,[ebp-0x14] |
2753 | mov eax,[ebp-20] |
2594 | and dword [eax],0 |
2754 | and dword [eax],0 |
2595 | ;---------------------------------------------------------- |
2755 | ;---------------------------------------------------------- |
2596 | .labl_15: |
2756 | .labl_15: |
2597 | mov eax,[ebp-0x18] |
2757 | mov eax,[ebp-24] |
2598 | pop edi |
2758 | pop edi |
2599 | pop ebx |
2759 | pop ebx |
2600 | ;---------------------------------------------------------- |
2760 | ;---------------------------------------------------------- |
2601 | .labl_16: |
2761 | .labl_16: |
2602 | pop esi |
2762 | pop esi |
2603 | leave |
2763 | leave |
2604 | ret |
2764 | ret |
2605 | ;---------------------------------------------------------- |
2765 | ;---------------------------------------------------------- |
2606 | .labl_17: |
2766 | .labl_17: |
2607 | mov eax,[ebp-0xC] |
2767 | mov eax,[ebp-12] |
2608 | mov ecx,[eax] |
2768 | mov ecx,[eax] |
2609 | mov edx,[ebp-0x10] |
2769 | mov edx,[ebp-16] |
2610 | mov [edx],ecx |
2770 | mov [edx],ecx |
2611 | mov eax,[eax+4] |
2771 | mov eax,[eax+4] |
2612 | mov ecx,[ebp-0x14] |
2772 | mov ecx,[ebp-20] |
2613 | mov [ecx],eax |
2773 | mov [ecx],eax |
Line 2614... | Line 2774... | ||
2614 | jmp .labl_15 |
2774 | jmp .labl_15 |
2615 | ;***************************************************************************** |
2775 | ;***************************************************************************** |
2616 | 2776 | ||
2617 | ;* Call: *************************************************************** |
2777 | ;* Call: *************************************************************** |
2618 | cm_pr_07: |
2778 | FillPosSlotPrices: |
2619 | push ecx |
2779 | push ecx |
2620 | push ebx |
2780 | push ebx |
2621 | push ebp |
2781 | push ebp |
2622 | push esi |
2782 | push esi |
2623 | push edi |
2783 | push edi |
2624 | xor ebp,ebp |
2784 | xor ebp,ebp |
2625 | mov esi,0x1BC18 |
2785 | mov esi,_posSlotEncoder |
2626 | mov dword [esp+0x10],4 |
2786 | mov dword [esp+16],4 |
2627 | ;---------------------------------------------------------- |
2787 | ;---------------------------------------------------------- |
2628 | .labl_00: |
2788 | .labl_00: |
2629 | xor edi,edi |
2789 | xor edi,edi |
2630 | ;---------------------------------------------------------- |
2790 | ;---------------------------------------------------------- |
2631 | .labl_01: |
2791 | .labl_01: |
- | 2792 | mov ebx,[_distTableSize] |
|
2632 | mov ebx,[0x29570] |
2793 | cmp edi,ebx |
2633 | cmp edi,ebx |
2794 | jnb .labl_03 |
2634 | jnb .labl_03 |
2795 | |
2635 | mov edx,edi |
2796 | mov edx,edi |
2636 | call cm_pr_17 |
2797 | call CBitTreeEncoder_GetPrice |
2637 | lea ecx,[edi+ebp] |
2798 | lea ecx,[edi+ebp] |
2638 | inc edi |
2799 | inc edi |
- | 2800 | mov [_posSlotPrices+ecx*4],eax |
|
2639 | mov [0x1A3B0+ecx*4],eax |
2801 | cmp edi,14 |
2640 | cmp edi,0xE |
2802 | jb .labl_01 |
- | 2803 | ||
2641 | jb .labl_01 |
2804 | cmp edi,ebx |
2642 | cmp edi,ebx |
2805 | jnb .labl_03 |
2643 | jnb .labl_03 |
2806 | |
2644 | lea ebx,[edi+ebp] |
2807 | lea ebx,[edi+ebp] |
2645 | lea ebx,[0x1A3B0+ebx*4] |
2808 | lea ebx,[_posSlotPrices+ebx*4] |
2646 | ;---------------------------------------------------------- |
2809 | ;---------------------------------------------------------- |
2647 | .labl_02: |
2810 | .labl_02: |
2648 | mov edx,edi |
2811 | mov edx,edi |
2649 | call cm_pr_17 |
2812 | call CBitTreeEncoder_GetPrice |
2650 | mov ecx,edi |
2813 | mov ecx,edi |
2651 | shr ecx,1 |
2814 | shr ecx,1 |
2652 | sub ecx,5 |
2815 | sub ecx,5 |
2653 | shl ecx,6 |
2816 | shl ecx,6 |
2654 | add eax,ecx |
2817 | add eax,ecx |
2655 | mov [ebx],eax |
2818 | mov [ebx],eax |
2656 | inc edi |
2819 | inc edi |
2657 | add ebx,4 |
2820 | add ebx,4 |
2658 | cmp edi,[0x29570] |
2821 | cmp edi,[_distTableSize] |
2659 | jb .labl_02 |
2822 | jb .labl_02 |
2660 | ;---------------------------------------------------------- |
2823 | ;---------------------------------------------------------- |
2661 | .labl_03: |
2824 | .labl_03: |
2662 | add esi,0x404 |
2825 | add esi,1028 |
- | 2826 | add ebp,64 |
|
2663 | add ebp,0x40 ;'@' |
2827 | dec dword [esp+16] |
2664 | dec dword [esp+0x10] |
2828 | jne .labl_00 |
2665 | jne .labl_00 |
2829 | |
2666 | pop edi |
2830 | pop edi |
2667 | pop esi |
2831 | pop esi |
2668 | pop ebp |
2832 | pop ebp |
2669 | pop ebx |
2833 | pop ebx |
Line 2670... | Line 2834... | ||
2670 | pop ecx |
2834 | pop ecx |
2671 | ret |
2835 | ret |
2672 | ;*********************************************************************** |
2836 | ;*********************************************************************** |
2673 | 2837 | ||
2674 | ;* Call: *************************************************************** |
2838 | ;* Call: *************************************************************** |
2675 | cm_pr_08: |
2839 | FillDistancesPrices: |
2676 | push ebp |
2840 | push ebp |
2677 | mov ebp,esp |
2841 | mov ebp,esp |
2678 | sub esp,0x24 |
2842 | sub esp,36 |
2679 | and dword [ebp-0x14],0 |
2843 | and dword [ebp-20],0 |
2680 | push ebx |
2844 | push ebx |
2681 | push esi |
2845 | push esi |
2682 | push edi |
2846 | push edi |
2683 | push 4 |
2847 | push 4 |
2684 | pop ebx |
2848 | pop ebx |
2685 | mov dword [ebp-0x18],0x1B418 |
2849 | mov dword [ebp-24],_distancesPrices+16 |
2686 | mov dword [ebp-0x10],0x1A3B0 |
2850 | mov dword [ebp-16],_posSlotPrices |
2687 | mov [ebp-0x24],ebx |
2851 | mov [ebp-36],ebx |
2688 | ;---------------------------------------------------------- |
2852 | ;---------------------------------------------------------- |
2689 | .labl_00: |
2853 | .labl_00: |
2690 | mov eax,[ebp-0x18] |
2854 | mov eax,[ebp-24] |
2691 | mov esi,[ebp-0x10] |
2855 | mov esi,[ebp-16] |
2692 | lea edi,[eax-0x10] |
2856 | lea edi,[eax-16] |
2693 | movsd |
2857 | movsd |
2694 | movsd |
2858 | movsd |
2695 | movsd |
2859 | movsd |
2696 | movsd |
2860 | movsd |
2697 | mov [ebp-4],ebx |
2861 | mov [ebp-4],ebx |
2698 | mov [ebp-0xC],eax |
2862 | mov [ebp-12],eax |
2699 | ;---------------------------------------------------------- |
2863 | ;---------------------------------------------------------- |
2700 | .labl_01: |
2864 | .labl_01: |
2701 | mov esi,[ebp-4] |
2865 | mov esi,[ebp-4] |
2702 | mov eax,esi |
2866 | mov eax,esi |
2703 | call cm_pr_000 |
2867 | call GetPosSlot |
2704 | mov edx,eax |
2868 | mov edx,eax |
2705 | mov ecx,edx |
2869 | mov ecx,edx |
2706 | xor eax,eax |
2870 | xor eax,eax |
2707 | inc eax |
2871 | inc eax |
2708 | mov [ebp-0x20],edx |
2872 | mov [ebp-32],edx |
2709 | and edx,eax |
2873 | and edx,eax |
2710 | shr ecx,1 |
2874 | shr ecx,1 |
2711 | dec ecx |
2875 | dec ecx |
2712 | or edx,2 |
2876 | or edx,2 |
2713 | shl edx,cl |
2877 | shl edx,cl |
2714 | xor edi,edi |
2878 | xor edi,edi |
2715 | mov [ebp-8],eax |
2879 | mov [ebp-8],eax |
2716 | mov [ebp-0x1C],ecx |
2880 | mov [ebp-28],ecx |
2717 | sub esi,edx |
2881 | sub esi,edx |
2718 | test ecx,ecx |
2882 | test ecx,ecx |
2719 | je .labl_03 |
2883 | je .labl_03 |
2720 | ;---------------------------------------------------------- |
2884 | ;---------------------------------------------------------- |
2721 | .labl_02: |
2885 | .labl_02: |
2722 | mov eax,[ebp-8] |
2886 | mov eax,[ebp-8] |
2723 | sub eax,[ebp-0x20] |
2887 | sub eax,[ebp-32] |
2724 | mov ecx,esi |
2888 | mov ecx,esi |
2725 | add eax,edx |
2889 | add eax,edx |
2726 | mov eax,[0x1B234+eax*4] |
2890 | mov eax,[_numLiteralContextBits+eax*4] |
2727 | and ecx,1 |
2891 | and ecx,1 |
2728 | sub eax,ecx |
2892 | sub eax,ecx |
2729 | mov ebx,ecx |
2893 | mov ebx,ecx |
2730 | neg ebx |
2894 | neg ebx |
2731 | xor eax,ebx |
2895 | xor eax,ebx |
2732 | shr eax,2 |
2896 | shr eax,2 |
2733 | and eax,0x1FF |
2897 | and eax,0x1FF |
2734 | add edi,[0x51A18+eax*4] |
2898 | add edi,[Models+eax*4] |
2735 | mov eax,[ebp-8] |
2899 | mov eax,[ebp-8] |
2736 | shr esi,1 |
2900 | shr esi,1 |
- | 2901 | dec dword [ebp-28] |
|
2737 | dec dword [ebp-0x1C] |
2902 | lea eax,[ecx+eax*2] |
2738 | lea eax,[ecx+eax*2] |
2903 | mov [ebp-8],eax |
2739 | mov [ebp-8],eax |
2904 | jne .labl_02 |
2740 | jne .labl_02 |
2905 | |
2741 | push 4 |
2906 | push 4 |
2742 | pop ebx |
2907 | pop ebx |
2743 | ;---------------------------------------------------------- |
2908 | ;---------------------------------------------------------- |
2744 | .labl_03: |
2909 | .labl_03: |
2745 | mov eax,[ebp-0x20] |
2910 | mov eax,[ebp-32] |
2746 | mov ecx,[ebp-0x14] |
2911 | mov ecx,[ebp-20] |
2747 | add ecx,eax |
2912 | add ecx,eax |
2748 | mov eax,[0x1A3B0+ecx*4] |
2913 | mov eax,[_posSlotPrices+ecx*4] |
2749 | mov ecx,[ebp-0xC] |
2914 | mov ecx,[ebp-12] |
2750 | add [ebp-0xC],ebx |
2915 | add [ebp-12],ebx |
2751 | add eax,edi |
2916 | add eax,edi |
- | 2917 | inc dword [ebp-4] |
|
2752 | inc dword [ebp-4] |
2918 | cmp dword [ebp-4],0x80 |
2753 | cmp dword [ebp-4],0x80 ;'' |
2919 | mov [ecx],eax |
2754 | mov [ecx],eax |
2920 | jb .labl_01 |
2755 | jb .labl_01 |
2921 | |
2756 | add dword [ebp-0x10],0x100 |
2922 | add dword [ebp-16],256 |
- | 2923 | add dword [ebp-20],64 |
|
2757 | add dword [ebp-0x14],0x40 ;'@' |
2924 | add dword [ebp-24],512 |
2758 | add dword [ebp-0x18],0x200 |
2925 | dec dword [ebp-36] |
2759 | dec dword [ebp-0x24] |
2926 | jne .labl_00 |
2760 | jne .labl_00 |
2927 | |
2761 | pop edi |
2928 | pop edi |
2762 | pop esi |
2929 | pop esi |
Line 2763... | Line 2930... | ||
2763 | pop ebx |
2930 | pop ebx |
2764 | leave |
2931 | leave |
2765 | ret |
2932 | ret |
2766 | ;*********************************************************************** |
2933 | ;*********************************************************************** |
2767 | 2934 | ||
2768 | ;* Call: *************************************************************** |
2935 | ;* Call: *************************************************************** |
2769 | cm_pr_09: |
2936 | FillAlignPrices: |
Line 2776... | Line 2943... | ||
2776 | xor esi,esi |
2943 | xor esi,esi |
2777 | push edi |
2944 | push edi |
2778 | mov [ebp-8],esi |
2945 | mov [ebp-8],esi |
2779 | ;---------------------------------------------------------- |
2946 | ;---------------------------------------------------------- |
2780 | .labl_00: |
2947 | .labl_00: |
2781 | mov eax,[0x519E8] |
2948 | mov eax,[i_01] |
2782 | xor edx,edx |
2949 | xor edx,edx |
2783 | xor ecx,ecx |
2950 | xor ecx,ecx |
2784 | inc edx |
2951 | inc edx |
2785 | mov [ebp-4],eax |
2952 | mov [ebp-4],eax |
2786 | ;---------------------------------------------------------- |
2953 | ;---------------------------------------------------------- |
2787 | .labl_01: |
2954 | .labl_01: |
2788 | mov edi,[0x515E8+edx*4] |
2955 | mov edi,[_posAlignEncoder+edx*4] |
2789 | mov eax,esi |
2956 | mov eax,esi |
2790 | and eax,1 |
2957 | and eax,1 |
2791 | sub edi,eax |
2958 | sub edi,eax |
2792 | mov ebx,eax |
2959 | mov ebx,eax |
2793 | neg ebx |
2960 | neg ebx |
2794 | xor edi,ebx |
2961 | xor edi,ebx |
2795 | shr edi,2 |
2962 | shr edi,2 |
2796 | and edi,0x1FF |
2963 | and edi,0x1FF |
2797 | add ecx,[0x51A18+edi*4] |
2964 | add ecx,[Models+edi*4] |
2798 | shr esi,1 |
2965 | shr esi,1 |
2799 | dec dword [ebp-4] |
2966 | dec dword [ebp-4] |
2800 | lea edx,[eax+edx*2] |
2967 | lea edx,[eax+edx*2] |
2801 | jne .labl_01 |
2968 | jne .labl_01 |
- | 2969 | ||
2802 | mov esi,[ebp-8] |
2970 | mov esi,[ebp-8] |
2803 | push 0x10 |
2971 | push 16 |
2804 | mov [0x51578+esi*4],ecx |
2972 | mov [_alignPrices+esi*4],ecx |
2805 | inc esi |
2973 | inc esi |
2806 | pop eax |
2974 | pop eax |
2807 | mov [ebp-8],esi |
2975 | mov [ebp-8],esi |
2808 | cmp esi,eax |
2976 | cmp esi,eax |
2809 | jb .labl_00 |
2977 | jb .labl_00 |
- | 2978 | ||
2810 | pop edi |
2979 | pop edi |
2811 | pop esi |
2980 | pop esi |
2812 | mov [0x1B230],eax |
2981 | mov [_alignPriceCount],eax |
2813 | pop ebx |
2982 | pop ebx |
2814 | leave |
2983 | leave |
2815 | ret |
2984 | ret |
2816 | ;*********************************************************************** |
2985 | ;*********************************************************************** |
Line 2817... | Line 2986... | ||
2817 | 2986 | ||
2818 | ;* Call: *************************************************************** |
2987 | ;* Call: *************************************************************** |
2819 | cm_pr_10: |
2988 | GetRepLen1Price: |
2820 | movzx eax,al |
2989 | movzx eax,al |
2821 | mov edx,[0x1CC38+eax*4] |
2990 | mov edx,[_isRepG0+eax*4] |
2822 | mov ecx,eax |
2991 | mov ecx,eax |
2823 | shl ecx,4 |
2992 | shl ecx,4 |
2824 | add ecx,[esp+4] |
2993 | add ecx,[esp+4] |
2825 | shr edx,2 |
2994 | shr edx,2 |
2826 | mov ecx,[0x1A7B0+ecx*4] |
2995 | mov ecx,[_isRep0Long+ecx*4] |
2827 | shr ecx,2 |
2996 | shr ecx,2 |
2828 | mov eax,[0x51A18+ecx*4] |
2997 | mov eax,[Models+ecx*4] |
2829 | add eax,[0x51A18+edx*4] |
2998 | add eax,[Models+edx*4] |
2830 | ret 4 |
2999 | ret 4 |
Line 2831... | Line 3000... | ||
2831 | ;*********************************************************************** |
3000 | ;*********************************************************************** |
2832 | 3001 | ||
2833 | ;* Call: *************************************************************** |
3002 | ;* Call: *************************************************************** |
2834 | cm_pr_11: |
3003 | GetRepPrice: |
2835 | movzx ecx,byte [esp+4] |
3004 | movzx ecx,byte [esp+4] |
2836 | shl eax,4 |
3005 | shl eax,4 |
2837 | add eax,[esp+8] |
3006 | add eax,[esp+8] |
2838 | push esi |
3007 | push esi |
2839 | mov eax,[0x25074+eax*4] |
3008 | mov eax,[_repMatchLenEncoder+0x840C+eax*4] |
2840 | mov esi,0x800 |
3009 | mov esi,2048 |
- | 3010 | test edx,edx |
|
2841 | test edx,edx |
3011 | jne .labl_00 |
2842 | jne .labl_00 |
3012 | |
2843 | mov edx,ecx |
3013 | mov edx,ecx |
2844 | mov ecx,[0x1CC38+ecx*4] |
3014 | mov ecx,[_isRepG0+ecx*4] |
2845 | shl edx,4 |
3015 | shl edx,4 |
2846 | add edx,[esp+0xC] |
3016 | add edx,[esp+12] |
2847 | sub esi,[0x1A7B0+edx*4] |
3017 | sub esi,[_isRep0Long+edx*4] |
2848 | shr ecx,2 |
3018 | shr ecx,2 |
2849 | jmp .labl_02 |
3019 | jmp .labl_02 |
2850 | ;---------------------------------------------------------- |
3020 | ;---------------------------------------------------------- |
2851 | .labl_00: |
3021 | .labl_00: |
2852 | push edi |
3022 | push edi |
2853 | shl ecx,2 |
3023 | shl ecx,2 |
2854 | mov edi,esi |
3024 | mov edi,esi |
2855 | sub edi,[ecx+0x1CC38] |
3025 | sub edi,[ecx+_isRepG0] |
2856 | shr edi,2 |
3026 | shr edi,2 |
2857 | add eax,[0x51A18+edi*4] |
3027 | add eax,[Models+edi*4] |
2858 | pop edi |
3028 | pop edi |
- | 3029 | cmp edx,1 |
|
2859 | cmp edx,1 |
3030 | jne .labl_01 |
2860 | jne .labl_01 |
3031 | |
2861 | mov ecx,[ecx+0x1AF00] |
3032 | mov ecx,[ecx+_isRepG1] |
2862 | shr ecx,2 |
3033 | shr ecx,2 |
2863 | add eax,[0x51A18+ecx*4] |
3034 | add eax,[Models+ecx*4] |
2864 | jmp .labl_03 |
3035 | jmp .labl_03 |
2865 | ;---------------------------------------------------------- |
3036 | ;---------------------------------------------------------- |
2866 | .labl_01: |
3037 | .labl_01: |
2867 | sub esi,[ecx+0x1AF00] |
3038 | sub esi,[ecx+_isRepG1] |
2868 | mov ecx,[ecx+0x29538] |
3039 | mov ecx,[ecx+_isRepG2] |
2869 | add edx,0xFFFFFFFE |
3040 | add edx,0xFFFFFFFE |
2870 | sub ecx,edx |
3041 | sub ecx,edx |
2871 | neg edx |
3042 | neg edx |
2872 | xor ecx,edx |
3043 | xor ecx,edx |
2873 | shr ecx,2 |
3044 | shr ecx,2 |
2874 | and ecx,0x1FF |
3045 | and ecx,0x1FF |
2875 | ;---------------------------------------------------------- |
3046 | ;---------------------------------------------------------- |
2876 | .labl_02: |
3047 | .labl_02: |
2877 | shr esi,2 |
3048 | shr esi,2 |
2878 | mov edx,[0x51A18+esi*4] |
3049 | mov edx,[Models+esi*4] |
2879 | add edx,[0x51A18+ecx*4] |
3050 | add edx,[Models+ecx*4] |
2880 | add eax,edx |
3051 | add eax,edx |
2881 | ;---------------------------------------------------------- |
3052 | ;---------------------------------------------------------- |
2882 | .labl_03: |
3053 | .labl_03: |
2883 | pop esi |
3054 | pop esi |
Line 2884... | Line 3055... | ||
2884 | ret 8 |
3055 | ret 8 |
2885 | ;*********************************************************************** |
3056 | ;*********************************************************************** |
2886 | 3057 | ||
2887 | ;* Call: *************************************************************** |
3058 | ;* Call: *************************************************************** |
2888 | cm_pr_12: |
3059 | GetPosLenPrice: |
2889 | push esi |
3060 | push esi |
2890 | mov esi,eax |
3061 | mov esi,eax |
- | 3062 | mov ecx,0x80 |
|
2891 | mov ecx,0x80 ;'' |
3063 | cmp esi,2 |
2892 | cmp esi,2 |
3064 | jne .labl_00 |
- | 3065 | ||
2893 | jne .labl_00 |
3066 | cmp edx,ecx |
2894 | cmp edx,ecx |
3067 | jb .labl_01 |
2895 | jb .labl_01 |
3068 | |
2896 | mov eax,0x0FFFFFFF |
3069 | mov eax,kIfinityPrice |
2897 | jmp .labl_09 |
3070 | jmp .labl_09 |
2898 | ;---------------------------------------------------------- |
3071 | ;---------------------------------------------------------- |
Line 2909... | Line 3082... | ||
2909 | pop eax |
3082 | pop eax |
2910 | ;---------------------------------------------------------- |
3083 | ;---------------------------------------------------------- |
2911 | .labl_03: |
3084 | .labl_03: |
2912 | cmp edx,ecx |
3085 | cmp edx,ecx |
2913 | jnb .labl_04 |
3086 | jnb .labl_04 |
- | 3087 | ||
2914 | shl eax,7 |
3088 | shl eax,7 |
2915 | add eax,edx |
3089 | add eax,edx |
2916 | mov ecx,[0x1B408+eax*4] |
3090 | mov ecx,[_distancesPrices+eax*4] |
2917 | jmp .labl_08 |
3091 | jmp .labl_08 |
2918 | ;---------------------------------------------------------- |
3092 | ;---------------------------------------------------------- |
2919 | .labl_04: |
3093 | .labl_04: |
2920 | mov ecx,edx |
3094 | mov ecx,edx |
- | 3095 | ;GetPosSlot2 |
|
2921 | cmp edx,0x10000 |
3096 | cmp edx,0x10000 ;if (pos < (1<<16)) |
2922 | jnb .labl_05 |
3097 | jnb .labl_05 |
- | 3098 | ||
2923 | shr ecx,6 |
3099 | shr ecx,6 |
2924 | movzx ecx,byte [ecx+0x19FB0] |
3100 | movzx ecx,byte [ecx+g_FastPos] |
2925 | add ecx,0xC |
3101 | add ecx,12 |
2926 | jmp .labl_07 |
3102 | jmp .labl_07 |
2927 | ;---------------------------------------------------------- |
3103 | ;---------------------------------------------------------- |
2928 | .labl_05: |
3104 | .labl_05: |
2929 | cmp edx,0x2000000 |
3105 | cmp edx,0x2000000 ;if (pos < (1<<25)) |
2930 | jnb .labl_06 |
3106 | jnb .labl_06 |
- | 3107 | ||
2931 | shr ecx,0xF |
3108 | shr ecx,15 |
2932 | movzx ecx,byte [ecx+0x19FB0] |
3109 | movzx ecx,byte [ecx+g_FastPos] |
2933 | add ecx,0x1E |
3110 | add ecx,30 |
2934 | jmp .labl_07 |
3111 | jmp .labl_07 |
2935 | ;---------------------------------------------------------- |
3112 | ;---------------------------------------------------------- |
2936 | .labl_06: |
3113 | .labl_06: |
2937 | shr ecx,0x18 |
3114 | shr ecx,24 |
2938 | movzx ecx,byte [ecx+0x19FB0] |
3115 | movzx ecx,byte [ecx+g_FastPos] |
2939 | add ecx,0x30 ;'0' |
3116 | add ecx,48 |
2940 | ;---------------------------------------------------------- |
3117 | ;---------------------------------------------------------- |
2941 | .labl_07: |
3118 | .labl_07: |
2942 | shl eax,6 |
3119 | shl eax,6 |
2943 | add eax,ecx |
3120 | add eax,ecx |
2944 | mov ecx,[0x1A3B0+eax*4] |
3121 | mov ecx,[_posSlotPrices+eax*4] |
2945 | and edx,0xF |
3122 | and edx,15 |
2946 | add ecx,[0x51578+edx*4] |
3123 | add ecx,[_alignPrices+edx*4] |
2947 | ;---------------------------------------------------------- |
3124 | ;---------------------------------------------------------- |
2948 | .labl_08: |
3125 | .labl_08: |
2949 | shl esi,4 |
3126 | shl esi,4 |
2950 | add esi,[esp+8] |
3127 | add esi,[esp+8] |
2951 | mov eax,[0x15AE4+esi*4] |
3128 | mov eax,[_prices+esi*4] |
2952 | add eax,ecx |
3129 | add eax,ecx |
2953 | ;---------------------------------------------------------- |
3130 | ;---------------------------------------------------------- |
2954 | .labl_09: |
3131 | .labl_09: |
2955 | pop esi |
3132 | pop esi |
2956 | ret 4 |
3133 | ret 4 |
2957 | ;*********************************************************************** |
3134 | ;*********************************************************************** |
Line 2958... | Line 3135... | ||
2958 | 3135 | ||
2959 | ;* Call: *************************************************************** |
3136 | ;* Call: *************************************************************** |
2960 | cm_pr_13: |
3137 | RangeEncoder_ShiftLow: |
2961 | push ecx |
3138 | push ecx |
2962 | push ecx |
3139 | push ecx |
2963 | mov eax,[0x51A10] |
3140 | mov eax,[low] |
2964 | push esi |
3141 | push esi |
2965 | mov esi,[0x51A14] |
3142 | mov esi,[low+4] |
2966 | cmp eax,0xFF000000 |
3143 | cmp eax,0xFF000000 |
- | 3144 | jb .labl_00 |
|
2967 | jb .labl_00 |
3145 | |
2968 | test esi,esi |
3146 | test esi,esi |
2969 | je .labl_02 |
3147 | je .labl_02 |
2970 | ;---------------------------------------------------------- |
3148 | ;---------------------------------------------------------- |
2971 | .labl_00: |
3149 | .labl_00: |
2972 | mov cl,[0x519ED] |
3150 | mov cl,[_cache] |
2973 | and dword [esp+8],0 |
3151 | and dword [esp+8],0 |
2974 | mov edx,esi |
3152 | mov edx,esi |
2975 | push ebx |
3153 | push ebx |
2976 | ;---------------------------------------------------------- |
3154 | ;---------------------------------------------------------- |
2977 | .labl_01: |
3155 | .labl_01: |
2978 | mov bl,dl |
3156 | mov bl,dl |
2979 | add bl,cl |
3157 | add bl,cl |
2980 | mov ecx,[0x52634] |
3158 | mov ecx,[pack_length] |
2981 | inc dword [0x52634] |
3159 | inc dword [pack_length] |
2982 | mov [ecx],bl |
3160 | mov [ecx],bl |
2983 | or cl,0xFF |
3161 | or cl,0xFF |
2984 | dec dword [0x51A08] |
3162 | dec dword [_cacheSize] |
- | 3163 | jne .labl_01 |
|
2985 | jne .labl_01 |
3164 | |
2986 | mov cl,[0x51A13] |
3165 | mov cl,[low+3] |
2987 | mov [0x519ED],cl |
3166 | mov [_cache],cl |
2988 | pop ebx |
3167 | pop ebx |
2989 | ;---------------------------------------------------------- |
3168 | ;---------------------------------------------------------- |
2990 | .labl_02: |
3169 | .labl_02: |
2991 | inc dword [0x51A08] |
3170 | inc dword [_cacheSize] |
2992 | shl eax,8 |
3171 | shl eax,8 |
2993 | and dword [0x51A14],0 |
3172 | and dword [low+4],0 |
2994 | mov [0x51A10],eax |
3173 | mov [low],eax |
2995 | pop esi |
3174 | pop esi |
2996 | pop ecx |
3175 | pop ecx |
2997 | pop ecx |
3176 | pop ecx |
2998 | ret |
3177 | ret |
Line 2999... | Line 3178... | ||
2999 | ;*********************************************************************** |
3178 | ;*********************************************************************** |
3000 | 3179 | ||
3001 | ;* Call: *************************************************************** |
3180 | ;* Call: *************************************************************** |
3002 | cm_pr_14: |
3181 | CMyBitEncoder_Encode: |
3003 | mov ecx,[0x51A04] |
3182 | mov ecx,[range] |
3004 | mov eax,[edx] |
3183 | mov eax,[edx] |
3005 | shr ecx,0xB |
3184 | shr ecx,0xB |
3006 | imul ecx,eax |
3185 | imul ecx,eax |
- | 3186 | cmp dword [esp+4],0 |
|
3007 | cmp dword [esp+4],0 |
3187 | jne .labl_00 |
3008 | jne .labl_00 |
3188 | |
3009 | mov [0x51A04],ecx |
3189 | mov [range],ecx |
3010 | mov ecx,0x800 |
3190 | mov ecx,2048 |
3011 | sub ecx,eax |
3191 | sub ecx,eax |
3012 | shr ecx,5 |
3192 | shr ecx,5 |
3013 | add ecx,eax |
3193 | add ecx,eax |
3014 | mov [edx],ecx |
3194 | mov [edx],ecx |
3015 | jmp .labl_01 |
3195 | jmp .labl_01 |
3016 | ;---------------------------------------------------------- |
3196 | ;---------------------------------------------------------- |
3017 | .labl_00: |
3197 | .labl_00: |
3018 | add [0x51A10],ecx |
3198 | add [low],ecx |
3019 | adc dword [0x51A14],0 |
3199 | adc dword [low+4],0 |
3020 | sub [0x51A04],ecx |
3200 | sub [range],ecx |
3021 | mov ecx,eax |
3201 | mov ecx,eax |
3022 | shr ecx,5 |
3202 | shr ecx,5 |
3023 | sub eax,ecx |
3203 | sub eax,ecx |
3024 | mov [edx],eax |
3204 | mov [edx],eax |
3025 | ;---------------------------------------------------------- |
3205 | ;---------------------------------------------------------- |
3026 | .labl_01: |
3206 | .labl_01: |
- | 3207 | cmp dword [range],0x1000000 |
|
3027 | cmp dword [0x51A04],0x1000000 |
3208 | jnb .labl_02 |
3028 | jnb .labl_02 |
3209 | |
3029 | shl dword [0x51A04],8 |
3210 | shl dword [range],8 |
3030 | call cm_pr_13 |
3211 | call RangeEncoder_ShiftLow |
3031 | ;---------------------------------------------------------- |
3212 | ;---------------------------------------------------------- |
3032 | .labl_02: |
3213 | .labl_02: |
Line 3033... | Line 3214... | ||
3033 | ret 4 |
3214 | ret 4 |
3034 | ;*********************************************************************** |
3215 | ;*********************************************************************** |
3035 | 3216 | ||
3036 | ;* Call: *************************************************************** |
3217 | ;* Call: *************************************************************** |
3037 | cm_pr_15: |
3218 | CBitTreeEncoder_Init: |
3038 | xor edx,edx |
3219 | xor edx,edx |
3039 | inc edx |
3220 | inc edx |
3040 | shl edx,cl |
3221 | shl edx,cl |
3041 | mov [eax+0x400],ecx |
3222 | mov [eax+1024],ecx |
- | 3223 | lea ecx,[edx-1] |
|
3042 | lea ecx,[edx-1] |
3224 | test ecx,ecx |
3043 | test ecx,ecx |
3225 | jbe .labl_00 |
3044 | jbe .labl_00 |
3226 | |
3045 | push edi |
3227 | push edi |
3046 | lea edi,[eax+4] |
3228 | lea edi,[eax+4] |
3047 | mov eax,0x400 |
3229 | mov eax,1024 |
3048 | rep stosd |
3230 | rep stosd |
3049 | pop edi |
3231 | pop edi |
Line 3054... | Line 3236... | ||
3054 | 3236 | ||
3055 | ;* Call: *************************************************************** |
3237 | ;* Call: *************************************************************** |
3056 | cm_pr_16: |
3238 | cm_pr_16: |
3057 | mov eax,[esp+4] |
3239 | mov eax,[esp+4] |
3058 | push ebx |
3240 | push ebx |
3059 | mov ebx,[edi+0x400] |
3241 | mov ebx,[edi+1024] |
3060 | push esi |
3242 | push esi |
3061 | xor esi,esi |
3243 | xor esi,esi |
3062 | inc esi |
3244 | inc esi |
3063 | add eax,eax |
3245 | add eax,eax |
3064 | mov [esp+0xC],eax |
3246 | mov [esp+12],eax |
3065 | ;---------------------------------------------------------- |
3247 | ;---------------------------------------------------------- |
3066 | .labl_00: |
3248 | .labl_00: |
3067 | mov eax,[esp+0xC] |
3249 | mov eax,[esp+12] |
3068 | mov ecx,ebx |
3250 | mov ecx,ebx |
3069 | shr eax,cl |
3251 | shr eax,cl |
3070 | lea edx,[edi+esi*4] |
3252 | lea edx,[edi+esi*4] |
3071 | and eax,1 |
3253 | and eax,1 |
3072 | push eax |
3254 | push eax |
3073 | lea esi,[eax+esi*2] |
3255 | lea esi,[eax+esi*2] |
3074 | call cm_pr_14 |
3256 | call CMyBitEncoder_Encode |
3075 | dec ebx |
3257 | dec ebx |
- | 3258 | jne .labl_00 |
|
3076 | jne .labl_00 |
3259 | |
3077 | pop esi |
3260 | pop esi |
3078 | pop ebx |
3261 | pop ebx |
3079 | ret 4 |
3262 | ret 4 |
Line 3080... | Line 3263... | ||
3080 | ;*********************************************************************** |
3263 | ;*********************************************************************** |
3081 | 3264 | ||
3082 | ;* Call: *************************************************************** |
3265 | ;* Call: *************************************************************** |
3083 | cm_pr_17: |
3266 | CBitTreeEncoder_GetPrice: |
3084 | mov ecx,[esi+0x400] |
3267 | mov ecx,[esi+1024] |
3085 | push edi |
3268 | push edi |
3086 | xor edi,edi |
3269 | xor edi,edi |
3087 | inc edi |
3270 | inc edi |
Line 3097... | Line 3280... | ||
3097 | sub edi,ecx |
3280 | sub edi,ecx |
3098 | neg ecx |
3281 | neg ecx |
3099 | xor edi,ecx |
3282 | xor edi,ecx |
3100 | shr edi,2 |
3283 | shr edi,2 |
3101 | and edi,0x1FF |
3284 | and edi,0x1FF |
3102 | add eax,[0x51A18+edi*4] |
3285 | add eax,[Models+edi*4] |
3103 | cmp edx,1 |
3286 | cmp edx,1 |
3104 | jne .labl_00 |
3287 | jne .labl_00 |
- | 3288 | ||
3105 | pop edi |
3289 | pop edi |
3106 | ret |
3290 | ret |
3107 | ;*********************************************************************** |
3291 | ;*********************************************************************** |
Line 3108... | Line 3292... | ||
3108 | 3292 | ||
3109 | ;* Call: *************************************************************** |
3293 | ;* Call: *************************************************************** |
3110 | cm_pr_18: |
3294 | GetMatchLen: |
3111 | mov ecx,[0x52630] |
3295 | mov ecx,[_streamPos] |
3112 | push edi |
3296 | push edi |
3113 | mov edi,eax |
3297 | mov edi,eax |
3114 | mov eax,[0x5262C] |
3298 | mov eax,[_pos] |
3115 | sub ecx,eax |
3299 | sub ecx,eax |
3116 | sub ecx,[esp+8] |
3300 | sub ecx,[esp+8] |
3117 | cmp edi,ecx |
3301 | cmp edi,ecx |
- | 3302 | jbe .labl_00 |
|
3118 | jbe .labl_00 |
3303 | |
3119 | mov edi,ecx |
3304 | mov edi,ecx |
3120 | ;---------------------------------------------------------- |
3305 | ;---------------------------------------------------------- |
3121 | .labl_00: |
3306 | .labl_00: |
3122 | mov ecx,[0x52628] |
3307 | mov ecx,[_buffer] |
3123 | inc dword [esp+0xC] |
3308 | inc dword [esp+12] |
3124 | add ecx,eax |
3309 | add ecx,eax |
3125 | add ecx,[esp+8] |
3310 | add ecx,[esp+8] |
3126 | xor eax,eax |
3311 | xor eax,eax |
3127 | test edi,edi |
3312 | test edi,edi |
- | 3313 | jbe .labl_03 |
|
3128 | jbe .labl_03 |
3314 | |
3129 | push esi |
3315 | push esi |
3130 | mov esi,ecx |
3316 | mov esi,ecx |
3131 | sub esi,[esp+0x10] |
3317 | sub esi,[esp+16] |
3132 | ;---------------------------------------------------------- |
3318 | ;---------------------------------------------------------- |
3133 | .labl_01: |
3319 | .labl_01: |
3134 | mov dl,[eax+ecx] |
3320 | mov dl,[eax+ecx] |
3135 | cmp dl,[esi+eax] |
3321 | cmp dl,[esi+eax] |
- | 3322 | jne .labl_02 |
|
3136 | jne .labl_02 |
3323 | |
3137 | inc eax |
3324 | inc eax |
3138 | cmp eax,edi |
3325 | cmp eax,edi |
3139 | jb .labl_01 |
3326 | jb .labl_01 |
3140 | ;---------------------------------------------------------- |
3327 | ;---------------------------------------------------------- |
Line 3145... | Line 3332... | ||
3145 | pop edi |
3332 | pop edi |
3146 | ret 8 |
3333 | ret 8 |
3147 | ;*********************************************************************** |
3334 | ;*********************************************************************** |
Line 3148... | Line 3335... | ||
3148 | 3335 | ||
3149 | ;* Call: *************************************************************** |
3336 | ;* Call: *************************************************************** |
3150 | cm_pr_19: |
3337 | MatchFinder_MovePos: |
3151 | inc dword [0x5221C] |
3338 | inc dword [pack_pos] |
3152 | mov eax,[0x5221C] |
3339 | mov eax,[pack_pos] |
3153 | cmp eax,[0x51A0C] |
3340 | cmp eax,[_cyclicBufferSize] |
- | 3341 | jne .labl_00 |
|
3154 | jne .labl_00 |
3342 | |
3155 | and dword [0x5221C],0 |
3343 | and dword [pack_pos],0 |
3156 | ;---------------------------------------------------------- |
3344 | ;---------------------------------------------------------- |
3157 | .labl_00: |
3345 | .labl_00: |
3158 | inc dword [0x5262C] |
3346 | inc dword [_pos] |
3159 | ret |
3347 | ret |