Subversion Repositories Kolibri OS

Rev

Rev 1681 | Go to most recent revision | Details | Last modification | View Log | RSS feed

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