Subversion Repositories Kolibri OS

Rev

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