mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-24 23:56:49 +03:00
08c1ac1aa8
Disassemled and corrected specially for FASM git-svn-id: svn://kolibrios.org@1671 a494cfbc-eb01-0410-851d-a64ba20cac60
3161 lines
64 KiB
PHP
3161 lines
64 KiB
PHP
;* Call: ***************************************************************
|
||
lzma_compress:
|
||
push ebp
|
||
mov ebp,esp
|
||
and esp,0xFFFFFFF8
|
||
sub esp,0xC
|
||
push ebx
|
||
push esi
|
||
push edi
|
||
push 2
|
||
pop esi
|
||
xor ebx,ebx
|
||
mov [esp+0x14],esi
|
||
mov [0x19FB0],bl
|
||
mov byte [0x19FB1],1
|
||
mov [esp+0x10],esi
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov ecx,[esp+0x10]
|
||
xor edi,edi
|
||
sar ecx,1
|
||
dec ecx
|
||
inc edi
|
||
shl edi,cl
|
||
cmp edi,ebx
|
||
jbe .labl_01
|
||
mov eax,[esp+0x14]
|
||
push edi
|
||
push dword [esp+0x14]
|
||
lea eax,[eax+0x19FB0]
|
||
push eax
|
||
call _memset
|
||
add esp,0xC
|
||
add [esp+0x14],edi
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
inc dword [esp+0x10]
|
||
cmp dword [esp+0x10],0x14
|
||
jl .labl_00
|
||
mov edi,[ebp+0x14]
|
||
push 3
|
||
pop eax
|
||
mov ecx,edi
|
||
and ecx,eax
|
||
mov edx,0x80 ;'€'
|
||
mov [0x1CC30],edx
|
||
mov [0x51A00],esi
|
||
mov [0x1CC34],eax
|
||
mov [0x1B234],eax
|
||
mov [0x2956C],ebx
|
||
mov [0x19FA9],bl
|
||
mov [0x19FA8],bl
|
||
je .labl_02
|
||
sub edi,ecx
|
||
add edi,4
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
mov [0x519F4],eax
|
||
mov eax,[0x29568]
|
||
mov [0x519F0],edi
|
||
add edi,0x6000
|
||
inc eax
|
||
mov [0x519F8],ebx
|
||
mov [0x519FC],ebx
|
||
mov [0x52218],edx
|
||
mov [0x51A0C],eax
|
||
mov [0x52224],edi
|
||
mov dword [0x52220],0xFF ;'ÿ'
|
||
call lz_cm_01
|
||
call cm_pr_07
|
||
call cm_pr_08
|
||
call cm_pr_09
|
||
push 0x7F ;''
|
||
pop esi
|
||
mov [0x19F64],esi
|
||
mov [esp+0x10],ebx
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
push dword [esp+0x10]
|
||
mov eax,0xD6D8
|
||
call cm_pr_01
|
||
inc dword [esp+0x10]
|
||
cmp dword [esp+0x10],4
|
||
jb .labl_03
|
||
mov [0x294F4],esi
|
||
xor esi,esi
|
||
;----------------------------------------------------------
|
||
.labl_04:
|
||
push esi
|
||
mov eax,0x1CC68
|
||
call cm_pr_01
|
||
inc esi
|
||
cmp esi,4
|
||
jb .labl_04
|
||
mov eax,[ebp+8]
|
||
mov esi,[ebp+0xC]
|
||
dec eax
|
||
mov [0x52628],eax
|
||
mov eax,[ebp+0x10]
|
||
inc eax
|
||
mov [0x52630],eax
|
||
mov ecx,0x110000
|
||
xor eax,eax
|
||
mov [0x1CC28],ebx
|
||
mov [0x1CC2C],ebx
|
||
mov [0x1B400],ebx
|
||
mov [0x1B404],ebx
|
||
mov [0x52634],esi
|
||
mov dword [0x5262C],1
|
||
rep stosd
|
||
mov [0x5221C],ebx
|
||
;----------------------------------------------------------
|
||
.labl_08:
|
||
push 8
|
||
mov eax,ebx
|
||
pop ecx
|
||
;----------------------------------------------------------
|
||
.labl_07:
|
||
test al,1
|
||
je .labl_05
|
||
shr eax,1
|
||
xor eax,0xEDB88320
|
||
jmp .labl_06
|
||
;----------------------------------------------------------
|
||
.labl_05:
|
||
shr eax,1
|
||
;----------------------------------------------------------
|
||
.labl_06:
|
||
dec ecx
|
||
jne .labl_07
|
||
mov [0x52228+ebx*4],eax
|
||
inc ebx
|
||
cmp ebx,0x100
|
||
jb .labl_08
|
||
;----------------------------------------------------------
|
||
.labl_09:
|
||
call lz_cm_02
|
||
test al,al
|
||
jne .labl_09
|
||
mov eax,[0x52634]
|
||
pop edi
|
||
sub eax,esi
|
||
pop esi
|
||
pop ebx
|
||
mov esp,ebp
|
||
pop ebp
|
||
ret 0x10
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
_memset:
|
||
push edi
|
||
mov edi,[esp+8]
|
||
mov al,[esp+12]
|
||
mov ecx,[esp+16]
|
||
rep stosb
|
||
pop edi
|
||
ret
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_01:
|
||
and dword [0x51A10],0
|
||
and dword [0x51A14],0
|
||
or dword [0x51A04],0xFFFFFFFF
|
||
push ebx
|
||
push esi
|
||
push edi
|
||
xor eax,eax
|
||
mov edi,0x1BC08
|
||
stosd
|
||
stosd
|
||
xor ebx,ebx
|
||
stosd
|
||
inc ebx
|
||
mov byte [0x519EC],0
|
||
mov byte [0x19FAB],0
|
||
stosd
|
||
mov [0x51A08],ebx
|
||
mov byte [0x519ED],0
|
||
xor ecx,ecx
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov eax,ebx
|
||
shl eax,cl
|
||
push 8
|
||
pop edx
|
||
sub edx,ecx
|
||
lea esi,[0x51A18+eax*4]
|
||
shl edx,6
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov edi,eax
|
||
shl edi,6
|
||
shr edi,cl
|
||
add edi,edx
|
||
mov [esi],edi
|
||
add esi,4
|
||
dec eax
|
||
jne .labl_01
|
||
inc ecx
|
||
cmp ecx,9
|
||
jl .labl_00
|
||
push 0xC
|
||
pop edx
|
||
mov esi,0x400
|
||
mov eax,esi
|
||
mov ecx,edx
|
||
mov edi,0x29538
|
||
rep stosd
|
||
mov ecx,edx
|
||
mov edi,0x1AF00
|
||
rep stosd
|
||
mov ecx,edx
|
||
mov edi,0x1CC38
|
||
rep stosd
|
||
mov ecx,edx
|
||
mov edi,0x515B8
|
||
rep stosd
|
||
xor ecx,ecx
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
lea edi,[ecx+0x1A7B0]
|
||
mov eax,esi
|
||
stosd
|
||
stosd
|
||
stosd
|
||
stosd
|
||
lea edi,[ecx+0x1AF30]
|
||
mov eax,esi
|
||
stosd
|
||
stosd
|
||
stosd
|
||
add ecx,0x40 ;'@'
|
||
cmp ecx,0x300
|
||
stosd
|
||
jl .labl_02
|
||
mov eax,[0x519F4]
|
||
mov ecx,[0x519F8]
|
||
add ecx,eax
|
||
mov eax,ebx
|
||
shl eax,cl
|
||
test eax,eax
|
||
jbe .labl_04
|
||
xor edx,edx
|
||
mov ebx,eax
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
mov eax,[0x519F0]
|
||
lea edi,[edx+eax]
|
||
mov ecx,0x300
|
||
mov eax,esi
|
||
add edx,0xC00
|
||
dec ebx
|
||
rep stosd
|
||
jne .labl_03
|
||
;----------------------------------------------------------
|
||
.labl_04:
|
||
mov edi,0x1BC18
|
||
;----------------------------------------------------------
|
||
.labl_05:
|
||
push 6
|
||
pop ecx
|
||
mov eax,edi
|
||
call cm_pr_15
|
||
add edi,0x404
|
||
cmp edi,0x1CC28
|
||
jl .labl_05
|
||
push 0x72 ;'r'
|
||
mov eax,esi
|
||
pop ecx
|
||
mov edi,0x1B238
|
||
mov esi,0xD6D8
|
||
rep stosd
|
||
call cm_pr_00
|
||
mov esi,0x1CC68
|
||
call cm_pr_00
|
||
push 4
|
||
pop ecx
|
||
mov eax,0x515E8
|
||
call cm_pr_15
|
||
pop edi
|
||
xor eax,eax
|
||
pop esi
|
||
mov byte [0x19FAA],0 ;0x1B238
|
||
mov [0x29574],eax
|
||
mov [0x1AEF8],eax
|
||
mov [0x1AEFC],eax
|
||
pop ebx
|
||
ret
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_02:
|
||
sub esp,0x2C
|
||
cmp byte [0x19FA8],0
|
||
push ebx
|
||
push ebp
|
||
push esi
|
||
push edi
|
||
je .labl_01
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
xor al,al
|
||
jmp .labl_28
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov ebp,[0x1B400]
|
||
mov edi,[0x1B404]
|
||
mov eax,ebp
|
||
or eax,edi
|
||
mov byte [0x19FA8],1
|
||
mov [esp+0x34],ebp
|
||
mov [esp+0x38],edi
|
||
jne .labl_04
|
||
mov eax,[0x52630]
|
||
sub eax,[0x5262C]
|
||
jne .labl_03
|
||
push 5
|
||
pop esi
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
call cm_pr_13
|
||
dec esi
|
||
jne .labl_02
|
||
jmp .labl_00
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
call cm_pr_06
|
||
movzx esi,byte [0x519EC]
|
||
mov edx,esi
|
||
shl edx,6
|
||
xor edi,edi
|
||
push edi
|
||
add edx,0x1AF30
|
||
call cm_pr_14
|
||
mov al,[esi+LiteralNextStates]
|
||
mov ecx,[0x5262C]
|
||
mov [0x519EC],al
|
||
mov eax,[0x52628]
|
||
sub eax,[0x1AEFC]
|
||
mov bl,[eax+ecx]
|
||
mov al,[0x19FAB]
|
||
mov [esp+0x18],bl
|
||
push dword [esp+0x18]
|
||
push edi
|
||
call cm_pr_04
|
||
imul eax,eax,0xC00
|
||
add eax,[0x519F0]
|
||
push eax
|
||
call cm_pr_03
|
||
dec dword [0x1AEFC]
|
||
xor ebp,ebp
|
||
inc ebp
|
||
mov [0x19FAB],bl
|
||
mov [0x1B400],ebp
|
||
mov [0x1B404],edi
|
||
;----------------------------------------------------------
|
||
.labl_04:
|
||
mov eax,[0x52630]
|
||
sub eax,[0x5262C]
|
||
jne .labl_06
|
||
push 5
|
||
pop esi
|
||
;----------------------------------------------------------
|
||
.labl_05:
|
||
call cm_pr_13
|
||
dec esi
|
||
jne .labl_05
|
||
jmp .labl_00
|
||
;----------------------------------------------------------
|
||
.labl_06:
|
||
lea eax,[esp+0x14]
|
||
push eax
|
||
lea eax,[esp+0x14]
|
||
push eax
|
||
mov ebx,ebp
|
||
push ebp
|
||
and ebx,3
|
||
call lz_cm_03
|
||
cmp dword [esp+0x14],1
|
||
jne .labl_09
|
||
cmp dword [esp+0x10],0xFFFFFFFF
|
||
jne .labl_09
|
||
movzx eax,byte [0x519EC]
|
||
shl eax,4
|
||
add eax,ebx
|
||
push 0
|
||
lea edx,[0x1AF30+eax*4]
|
||
call cm_pr_14
|
||
mov eax,[0x52628]
|
||
mov esi,[0x1AEFC]
|
||
mov ebx,[0x5262C]
|
||
sub eax,esi
|
||
mov al,[eax+ebx]
|
||
mov [esp+0x18],al
|
||
mov al,[0x19FAB]
|
||
push ebp
|
||
call cm_pr_04
|
||
imul eax,eax,0xC00
|
||
add eax,[0x519F0]
|
||
cmp byte [0x519EC],7
|
||
push dword [esp+0x18]
|
||
jb .labl_07
|
||
mov ecx,[0x52628]
|
||
sub ecx,[0x1BC08]
|
||
sub ecx,esi
|
||
mov cl,[ecx+ebx-1]
|
||
mov [esp+0x34],cl
|
||
push dword [esp+0x34]
|
||
push eax
|
||
call lz_cm_04
|
||
jmp .labl_08
|
||
;----------------------------------------------------------
|
||
.labl_07:
|
||
push eax
|
||
call cm_pr_03
|
||
;----------------------------------------------------------
|
||
.labl_08:
|
||
movzx eax,byte [0x519EC]
|
||
mov al,[eax+LiteralNextStates]
|
||
mov [0x519EC],al
|
||
mov al,[esp+0x18]
|
||
jmp .labl_24
|
||
;----------------------------------------------------------
|
||
.labl_09:
|
||
movzx edi,byte [0x519EC]
|
||
mov eax,edi
|
||
shl eax,4
|
||
add eax,ebx
|
||
shl eax,2
|
||
push 1
|
||
lea edx,[eax+0x1AF30]
|
||
mov [esp+0x28],eax
|
||
call cm_pr_14
|
||
cmp dword [esp+0x10],4
|
||
jnb .labl_17
|
||
mov esi,edi
|
||
shl esi,2
|
||
push 1
|
||
lea edx,[esi+0x515B8]
|
||
call cm_pr_14
|
||
cmp dword [esp+0x10],0
|
||
lea edx,[esi+0x1CC38]
|
||
jne .labl_10
|
||
push 0
|
||
call cm_pr_14
|
||
mov edx,[esp+0x24]
|
||
xor eax,eax
|
||
cmp dword [esp+0x14],1
|
||
lea edx,[edx+0x1A7B0]
|
||
setne al
|
||
jmp .labl_12
|
||
;----------------------------------------------------------
|
||
.labl_10:
|
||
push 1
|
||
call cm_pr_14
|
||
cmp dword [esp+0x10],1
|
||
lea edx,[esi+0x1AF00]
|
||
jne .labl_11
|
||
push 0
|
||
jmp .labl_13
|
||
;----------------------------------------------------------
|
||
.labl_11:
|
||
push 1
|
||
call cm_pr_14
|
||
mov eax,[esp+0x10]
|
||
add eax,0xFFFFFFFE
|
||
lea edx,[esi+0x29538]
|
||
;----------------------------------------------------------
|
||
.labl_12:
|
||
push eax
|
||
;----------------------------------------------------------
|
||
.labl_13:
|
||
call cm_pr_14
|
||
mov eax,[esp+0x14]
|
||
cmp eax,1
|
||
jne .labl_14
|
||
mov al,[edi+ShortRepNextStates]
|
||
jmp .labl_15
|
||
;----------------------------------------------------------
|
||
.labl_14:
|
||
add eax,0xFFFFFFFE
|
||
mov esi,0x1CC68
|
||
call cm_pr_02
|
||
mov al,[edi+RepNextStates]
|
||
;----------------------------------------------------------
|
||
.labl_15:
|
||
mov [0x519EC],al
|
||
mov eax,[esp+0x10]
|
||
mov ecx,[0x1BC08+eax*4]
|
||
test eax,eax
|
||
je .labl_23
|
||
;----------------------------------------------------------
|
||
.labl_16:
|
||
dec eax
|
||
mov edx,[0x1BC08+eax*4]
|
||
mov [0x1BC0C+eax*4],edx
|
||
jne .labl_16
|
||
mov [0x1BC08],ecx
|
||
jmp .labl_23
|
||
;----------------------------------------------------------
|
||
.labl_17:
|
||
push 0
|
||
lea edx,[0x515B8+edi*4]
|
||
call cm_pr_14
|
||
mov al,[edi+MatchNextStates]
|
||
mov edi,[esp+0x14]
|
||
mov [0x519EC],al
|
||
add edi,0xFFFFFFFE
|
||
mov eax,edi
|
||
mov esi,0xD6D8
|
||
call cm_pr_02
|
||
sub dword [esp+0x10],4
|
||
mov eax,[esp+0x10]
|
||
call cm_pr_000
|
||
cmp dword [esp+0x14],6
|
||
mov ebx,eax
|
||
jb .labl_18
|
||
push 3
|
||
pop edi
|
||
;----------------------------------------------------------
|
||
.labl_18:
|
||
imul edi,edi,0x404
|
||
push ebx
|
||
add edi,0x1BC18
|
||
call cm_pr_16
|
||
cmp ebx,4
|
||
jb .labl_21
|
||
mov esi,[esp+0x10]
|
||
xor eax,eax
|
||
inc eax
|
||
mov ecx,ebx
|
||
mov edi,ebx
|
||
and edi,eax
|
||
shr ecx,1
|
||
dec ecx
|
||
or edi,2
|
||
shl edi,cl
|
||
sub esi,edi
|
||
cmp ebx,0xE
|
||
jnb .labl_20
|
||
mov [esp+0x20],esi
|
||
mov [esp+0x1C],eax
|
||
test ecx,ecx
|
||
jle .labl_21
|
||
mov [esp+0x24],ecx
|
||
;----------------------------------------------------------
|
||
.labl_19:
|
||
mov edx,[esp+0x1C]
|
||
mov esi,[esp+0x20]
|
||
sub edx,ebx
|
||
add edx,edi
|
||
and esi,1
|
||
push esi
|
||
lea edx,[0x1B234+edx*4]
|
||
call cm_pr_14
|
||
mov eax,[esp+0x1C]
|
||
shr dword [esp+0x20],1
|
||
dec dword [esp+0x24]
|
||
lea eax,[esi+eax*2]
|
||
mov [esp+0x1C],eax
|
||
jne .labl_19
|
||
jmp .labl_21
|
||
;----------------------------------------------------------
|
||
.labl_20:
|
||
lea eax,[ecx-4]
|
||
mov ecx,esi
|
||
shr ecx,4
|
||
push ecx
|
||
call lz_cm_05
|
||
and esi,0xF
|
||
push esi
|
||
call lz_cm_06
|
||
dec dword [0x1B230]
|
||
jne .labl_21
|
||
call cm_pr_09
|
||
;----------------------------------------------------------
|
||
.labl_21:
|
||
mov eax,0x1BC14
|
||
;----------------------------------------------------------
|
||
.labl_22:
|
||
mov ecx,[eax-4]
|
||
mov [eax],ecx
|
||
sub eax,4
|
||
cmp eax,0x1BC08
|
||
jne .labl_22
|
||
mov eax,[esp+0x10]
|
||
mov [0x1BC08],eax
|
||
;----------------------------------------------------------
|
||
.labl_23:
|
||
mov eax,[0x52628]
|
||
mov esi,[0x1AEFC]
|
||
mov ebx,[0x5262C]
|
||
mov ecx,[esp+0x14]
|
||
mov edi,[0x1B404]
|
||
sub eax,esi
|
||
add eax,ebx
|
||
mov al,[eax+ecx-1]
|
||
;----------------------------------------------------------
|
||
.labl_24:
|
||
sub esi,[esp+0x14]
|
||
add ebp,[esp+0x14]
|
||
mov [0x19FAB],al
|
||
adc edi,0
|
||
mov eax,ebp
|
||
sub eax,[0x1CC28]
|
||
mov ecx,edi
|
||
sbb ecx,[0x1CC2C]
|
||
mov [0x1AEFC],esi
|
||
mov [0x1B400],ebp
|
||
mov [0x1B404],edi
|
||
mov [esp+0x28],ecx
|
||
jne .labl_25
|
||
cmp eax,0x200
|
||
jb .labl_26
|
||
;----------------------------------------------------------
|
||
.labl_25:
|
||
call cm_pr_07
|
||
call cm_pr_08
|
||
mov [0x1CC28],ebp
|
||
mov [0x1CC2C],edi
|
||
;----------------------------------------------------------
|
||
.labl_26:
|
||
test esi,esi
|
||
jne .labl_06
|
||
mov eax,[0x52630]
|
||
sub eax,ebx
|
||
je .labl_29
|
||
mov ecx,ebp
|
||
sub ecx,[esp+0x34]
|
||
mov eax,edi
|
||
sbb eax,[esp+0x38]
|
||
test eax,eax
|
||
ja .labl_27
|
||
jb .labl_06
|
||
cmp ecx,0x1000
|
||
jb .labl_06
|
||
;----------------------------------------------------------
|
||
.labl_27:
|
||
mov byte [0x19FA8],0
|
||
mov al,1
|
||
;----------------------------------------------------------
|
||
.labl_28:
|
||
pop edi
|
||
pop esi
|
||
pop ebp
|
||
pop ebx
|
||
add esp,0x2C
|
||
ret
|
||
;----------------------------------------------------------
|
||
.labl_29:
|
||
push 5
|
||
pop esi
|
||
;----------------------------------------------------------
|
||
.labl_30:
|
||
call cm_pr_13
|
||
dec esi
|
||
jne .labl_30
|
||
jmp .labl_00
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_03:
|
||
push ebp
|
||
mov ebp,esp
|
||
mov ecx,[0x1AEF8]
|
||
sub esp,0x74
|
||
push esi
|
||
cmp [0x29574],ecx
|
||
je .labl_00
|
||
mov eax,ecx
|
||
imul eax,eax,0x28
|
||
add eax,0x29578
|
||
mov edx,[eax+0x10]
|
||
mov eax,[eax+0x14]
|
||
mov esi,edx
|
||
sub esi,ecx
|
||
mov ecx,[ebp+0x10]
|
||
mov [ecx],esi
|
||
mov ecx,[ebp+0xC]
|
||
mov [ecx],eax
|
||
mov [0x1AEF8],edx
|
||
jmp .labl_76
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
push edi
|
||
xor edi,edi
|
||
cmp byte [0x19FAA],0 ;0x1B238
|
||
mov [0x29574],edi
|
||
mov [0x1AEF8],edi
|
||
jne .labl_01
|
||
call cm_pr_06
|
||
jmp .labl_02
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov eax,[0x19FAC]
|
||
mov byte [0x19FAA],0 ;0x1B238
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
push ebx
|
||
mov ebx,[ebp+8]
|
||
mov [ebp-0x10],eax
|
||
mov eax,ebx
|
||
shl eax,2
|
||
mov [ebp-0x4C],eax
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
mov esi,edi
|
||
shl esi,2
|
||
mov eax,[esi+0x1BC08]
|
||
push eax
|
||
mov [ebp+esi-0x64],eax
|
||
push dword 0xFFFFFFFF
|
||
mov eax,0x111
|
||
call cm_pr_18
|
||
mov [ebp+esi-0x74],eax
|
||
test edi,edi
|
||
je .labl_04
|
||
mov ecx,[ebp-0x4C]
|
||
cmp eax,[ebp+ecx-0x74]
|
||
jbe .labl_05
|
||
;----------------------------------------------------------
|
||
.labl_04:
|
||
mov ebx,edi
|
||
mov [ebp-0x4C],esi
|
||
;----------------------------------------------------------
|
||
.labl_05:
|
||
inc edi
|
||
cmp edi,4
|
||
jb .labl_03
|
||
mov eax,[ebp+ebx*4-0x74]
|
||
mov ecx,0x80 ;'€'
|
||
mov [ebp-0x44],eax
|
||
cmp eax,ecx
|
||
jb .labl_06
|
||
mov ecx,[ebp+0xC]
|
||
mov [ecx],ebx
|
||
jmp .labl_07
|
||
;----------------------------------------------------------
|
||
.labl_06:
|
||
cmp [ebp-0x10],ecx
|
||
jb .labl_08
|
||
mov eax,[0x1ACB0]
|
||
mov ecx,[ebp+0xC]
|
||
add eax,4
|
||
mov [ecx],eax
|
||
mov eax,[ebp-0x10]
|
||
;----------------------------------------------------------
|
||
.labl_07:
|
||
mov ecx,[ebp+0x10]
|
||
mov [ecx],eax
|
||
dec eax
|
||
call lz_cm_07
|
||
jmp .labl_75
|
||
;----------------------------------------------------------
|
||
.labl_08:
|
||
mov ecx,[0x52628]
|
||
mov eax,[0x5262C]
|
||
mov dl,[eax+ecx-1]
|
||
sub eax,[0x1BC08]
|
||
mov bl,[0x519EC]
|
||
mov [0x29578],bl
|
||
mov al,[eax+ecx-2]
|
||
mov [ebp-0x34],al
|
||
mov eax,[ebp+8]
|
||
and eax,3
|
||
movzx ecx,bl
|
||
shl ecx,4
|
||
add ecx,eax
|
||
mov esi,[0x1AF30+ecx*4]
|
||
mov [ebp-0x1C],eax
|
||
cmp bl,7
|
||
sbb al,al
|
||
mov [ebp-0x30],dl
|
||
push dword [ebp-0x30]
|
||
inc al
|
||
push dword [ebp-0x34]
|
||
movzx eax,al
|
||
push eax
|
||
push dword [ebp+8]
|
||
mov al,[0x19FAB]
|
||
mov [ebp-0x4C],esi
|
||
call cm_pr_05
|
||
or dword [0x295B4],0xFFFFFFFF
|
||
and dword [0x295B0],0
|
||
shr esi,2
|
||
add eax,[0x51A18+esi*4]
|
||
mov byte [0x295A1],0
|
||
mov [0x295AC],eax
|
||
lea esi,[ebp-0x64]
|
||
mov edi,0x29590
|
||
movsd
|
||
movsd
|
||
mov eax,0x800
|
||
mov ecx,eax
|
||
sub ecx,[ebp-0x4C]
|
||
movsd
|
||
shr ecx,2
|
||
mov edx,[0x51A18+ecx*4]
|
||
movzx ecx,bl
|
||
movsd
|
||
mov esi,[0x515B8+ecx*4]
|
||
sub eax,esi
|
||
shr eax,2
|
||
mov edi,[0x51A18+eax*4]
|
||
mov al,[ebp-0x30]
|
||
add edi,edx
|
||
mov [ebp-0x4C],edx
|
||
cmp [ebp-0x34],al
|
||
jne .labl_09
|
||
push dword [ebp-0x1C]
|
||
mov al,bl
|
||
call cm_pr_10
|
||
add eax,edi
|
||
cmp eax,[0x295AC]
|
||
jnb .labl_09
|
||
and dword [0x295B4],0
|
||
mov [0x295AC],eax
|
||
mov byte [0x295A1],0
|
||
;----------------------------------------------------------
|
||
.labl_09:
|
||
push 2
|
||
pop eax
|
||
cmp [ebp-0x10],eax
|
||
jnb .labl_10
|
||
mov eax,[ebp+0xC]
|
||
mov ecx,[0x295B4]
|
||
mov [eax],ecx
|
||
mov eax,[ebp+0x10]
|
||
mov dword [eax],1
|
||
jmp .labl_75
|
||
;----------------------------------------------------------
|
||
.labl_10:
|
||
mov ecx,[ebp-0x10]
|
||
shr esi,2
|
||
mov esi,[0x51A18+esi*4]
|
||
add esi,[ebp-0x4C]
|
||
mov [ebp-0x4C],esi
|
||
cmp ecx,[ebp-0x44]
|
||
ja .labl_11
|
||
and dword [ebp-0x10],0
|
||
;----------------------------------------------------------
|
||
.labl_11:
|
||
mov [ebp-0x18],eax
|
||
cmp [ebp-0x10],eax
|
||
jb .labl_13
|
||
mov esi,0x295DC
|
||
;----------------------------------------------------------
|
||
.labl_12:
|
||
mov eax,[ebp-0x18]
|
||
mov edx,[0x1AAB0+eax*4]
|
||
push dword [ebp-0x1C]
|
||
and dword [esi-4],0
|
||
lea ecx,[edx+4]
|
||
mov [esi],ecx
|
||
call cm_pr_12
|
||
add eax,[ebp-0x4C]
|
||
inc dword [ebp-0x18]
|
||
mov [esi-8],eax
|
||
mov eax,[ebp-0x18]
|
||
mov byte [esi-0x13],0
|
||
add esi,0x28 ;'('
|
||
cmp eax,[ebp-0x10]
|
||
jbe .labl_12
|
||
;----------------------------------------------------------
|
||
.labl_13:
|
||
mov ecx,[ebp-0x10]
|
||
cmp ecx,[ebp-0x44]
|
||
jnb .labl_14
|
||
mov ecx,[ebp-0x44]
|
||
mov [ebp-0x10],ecx
|
||
;----------------------------------------------------------
|
||
.labl_14:
|
||
cmp [ebp-0x18],ecx
|
||
ja .labl_16
|
||
mov eax,[ebp-0x18]
|
||
sub ecx,[ebp-0x18]
|
||
imul eax,eax,0x28
|
||
add eax,0x29584
|
||
inc ecx
|
||
;----------------------------------------------------------
|
||
.labl_15:
|
||
mov dword [eax],0x0FFFFFFF
|
||
add eax,0x28 ;'('
|
||
dec ecx
|
||
jne .labl_15
|
||
;----------------------------------------------------------
|
||
.labl_16:
|
||
and dword [ebp-0x18],0
|
||
;----------------------------------------------------------
|
||
.labl_17:
|
||
mov eax,[ebp-0x18]
|
||
mov eax,[ebp+eax*4-0x74]
|
||
push 2
|
||
pop ecx
|
||
mov [ebp-0x20],ecx
|
||
cmp eax,ecx
|
||
jb .labl_20
|
||
mov esi,0x295D4
|
||
;----------------------------------------------------------
|
||
.labl_18:
|
||
push dword [ebp-0x1C]
|
||
mov edx,[ebp-0x18]
|
||
movzx eax,bl
|
||
push eax
|
||
mov eax,[ebp-0x20]
|
||
call cm_pr_11
|
||
add eax,edi
|
||
cmp eax,[esi]
|
||
jnb .labl_19
|
||
and dword [esi+4],0
|
||
mov [esi],eax
|
||
mov eax,[ebp-0x18]
|
||
mov [esi+8],eax
|
||
mov byte [esi-0xB],0
|
||
;----------------------------------------------------------
|
||
.labl_19:
|
||
inc dword [ebp-0x20]
|
||
mov eax,[ebp-0x18]
|
||
mov ecx,[ebp-0x20]
|
||
add esi,0x28 ;'('
|
||
cmp ecx,[ebp+eax*4-0x74]
|
||
jbe .labl_18
|
||
;----------------------------------------------------------
|
||
.labl_20:
|
||
inc dword [ebp-0x18]
|
||
cmp dword [ebp-0x18],4
|
||
jb .labl_17
|
||
mov eax,[ebp-0x10]
|
||
xor ecx,ecx
|
||
inc ecx
|
||
mov [ebp-8],eax
|
||
mov [ebp-0xC],ecx
|
||
cmp eax,ecx
|
||
je .labl_74
|
||
;----------------------------------------------------------
|
||
.labl_21:
|
||
mov edi,[ebp-0xC]
|
||
inc dword [ebp+8]
|
||
mov ebx,edi
|
||
imul ebx,ebx,0x28
|
||
mov dl,[ebx+0x29579]
|
||
mov esi,[ebx+0x29588]
|
||
test dl,dl
|
||
je .labl_25
|
||
dec esi
|
||
cmp byte [ebx+0x2957A],0
|
||
je .labl_23
|
||
mov eax,[ebx+0x2957C]
|
||
imul eax,eax,0x28
|
||
cmp dword [ebx+0x29580],4
|
||
mov al,[eax+0x29578]
|
||
movzx eax,al
|
||
jnb .labl_22
|
||
mov al,[eax+RepNextStates]
|
||
jmp .labl_24
|
||
;----------------------------------------------------------
|
||
.labl_22:
|
||
mov al,[eax+MatchNextStates]
|
||
jmp .labl_24
|
||
;----------------------------------------------------------
|
||
.labl_23:
|
||
mov eax,esi
|
||
imul eax,eax,0x28
|
||
mov al,[eax+0x29578]
|
||
;----------------------------------------------------------
|
||
.labl_24:
|
||
movzx eax,al
|
||
mov cl,[eax+LiteralNextStates]
|
||
jmp .labl_26
|
||
;----------------------------------------------------------
|
||
.labl_25:
|
||
mov eax,esi
|
||
imul eax,eax,0x28
|
||
mov cl,[eax+0x29578]
|
||
;----------------------------------------------------------
|
||
.labl_26:
|
||
dec edi
|
||
cmp esi,edi
|
||
jne .labl_29
|
||
cmp dword [ebx+0x2958C],0
|
||
movzx eax,cl
|
||
jne .labl_27
|
||
mov al,[eax+ShortRepNextStates]
|
||
jmp .labl_28
|
||
;----------------------------------------------------------
|
||
.labl_27:
|
||
mov al,[eax+LiteralNextStates]
|
||
;----------------------------------------------------------
|
||
.labl_28:
|
||
mov [ebp-0x14],al
|
||
jmp .labl_35
|
||
;----------------------------------------------------------
|
||
.labl_29:
|
||
test dl,dl
|
||
je .labl_31
|
||
cmp byte [ebx+0x2957A],0
|
||
je .labl_31
|
||
mov esi,[ebx+0x2957C]
|
||
mov eax,[ebx+0x29580]
|
||
movzx ecx,cl
|
||
;----------------------------------------------------------
|
||
.labl_30:
|
||
mov cl,[ecx+RepNextStates]
|
||
jmp .labl_32
|
||
;----------------------------------------------------------
|
||
.labl_31:
|
||
mov eax,[ebx+0x2958C]
|
||
movzx ecx,cl
|
||
cmp eax,4
|
||
jb .labl_30
|
||
mov cl,[ecx+MatchNextStates]
|
||
;----------------------------------------------------------
|
||
.labl_32:
|
||
imul esi,esi,0x28
|
||
add esi,0x29578
|
||
mov [ebp-0x14],cl
|
||
mov edx,esi
|
||
cmp eax,4
|
||
jnb .labl_34
|
||
mov ecx,[edx+eax*4+0x18]
|
||
xor esi,esi
|
||
inc esi
|
||
mov [ebp-0x64],ecx
|
||
cmp eax,esi
|
||
jb .labl_33
|
||
lea esi,[edx+0x18]
|
||
mov ecx,eax
|
||
lea edi,[ebp-0x60]
|
||
rep movsd
|
||
lea esi,[eax+1]
|
||
cmp esi,4
|
||
jnb .labl_35
|
||
;----------------------------------------------------------
|
||
.labl_33:
|
||
push 4
|
||
lea edx,[edx+esi*4+0x18]
|
||
pop ecx
|
||
lea edi,[ebp+esi*4-0x64]
|
||
sub ecx,esi
|
||
mov esi,edx
|
||
rep movsd
|
||
jmp .labl_35
|
||
;----------------------------------------------------------
|
||
.labl_34:
|
||
add eax,0xFFFFFFFC
|
||
mov [ebp-0x64],eax
|
||
lea esi,[edx+0x18]
|
||
lea edi,[ebp-0x60]
|
||
movsd
|
||
movsd
|
||
movsd
|
||
;----------------------------------------------------------
|
||
.labl_35:
|
||
mov al,[ebp-0x14]
|
||
mov [ebx+0x29578],al
|
||
lea edi,[ebx+0x29590]
|
||
lea esi,[ebp-0x64]
|
||
movsd
|
||
movsd
|
||
movsd
|
||
movsd
|
||
call cm_pr_06
|
||
mov [ebp-0x2C],eax
|
||
cmp eax,0x80 ;'€'
|
||
jnb .labl_73
|
||
mov eax,[ebx+0x29584]
|
||
mov edi,[0x5262C]
|
||
mov esi,[ebp+8]
|
||
mov [ebp-0x48],eax
|
||
mov eax,[0x52628]
|
||
lea eax,[edi+eax-1]
|
||
mov cl,[eax]
|
||
mov [ebp-0x30],cl
|
||
push dword [ebp-0x30]
|
||
mov ecx,eax
|
||
sub ecx,[ebp-0x64]
|
||
and esi,3
|
||
mov cl,[ecx-1]
|
||
mov [ebp-0x34],cl
|
||
movzx ecx,byte [ebp-0x14]
|
||
push dword [ebp-0x34]
|
||
mov [ebp-0x40],ecx
|
||
shl ecx,4
|
||
add ecx,esi
|
||
mov ecx,[0x1AF30+ecx*4]
|
||
cmp byte [ebp-0x14],7
|
||
mov [ebp-0x4C],ecx
|
||
sbb cl,cl
|
||
inc cl
|
||
movzx ecx,cl
|
||
push ecx
|
||
push dword [ebp+8]
|
||
mov [ebp-0x28],eax
|
||
mov al,[eax-1]
|
||
mov [ebp-0x1C],esi
|
||
call cm_pr_05
|
||
mov esi,eax
|
||
mov eax,[ebp-0x4C]
|
||
shr eax,2
|
||
add esi,[0x51A18+eax*4]
|
||
mov byte [ebp-1],0
|
||
add esi,[ebp-0x48]
|
||
cmp esi,[ebx+0x295AC]
|
||
jnb .labl_36
|
||
mov eax,[ebp-0xC]
|
||
or dword [ebx+0x295B4],0xFFFFFFFF
|
||
mov [ebx+0x295AC],esi
|
||
mov [ebx+0x295B0],eax
|
||
mov byte [ebx+0x295A1],0
|
||
mov byte [ebp-1],1
|
||
;----------------------------------------------------------
|
||
.labl_36:
|
||
mov edx,[ebp-0x40]
|
||
mov edx,[0x515B8+edx*4]
|
||
mov ecx,0x800
|
||
mov eax,ecx
|
||
sub eax,[ebp-0x4C]
|
||
sub ecx,edx
|
||
shr eax,2
|
||
mov eax,[0x51A18+eax*4]
|
||
add eax,[ebp-0x48]
|
||
shr ecx,2
|
||
mov ecx,[0x51A18+ecx*4]
|
||
add ecx,eax
|
||
mov [ebp-0x4C],eax
|
||
mov al,[ebp-0x30]
|
||
mov [ebp-0x54],edx
|
||
mov [ebp-0x48],ecx
|
||
cmp [ebp-0x34],al
|
||
jne .labl_38
|
||
mov eax,[ebp-0xC]
|
||
cmp [ebx+0x295B0],eax
|
||
jnb .labl_37
|
||
cmp dword [ebx+0x295B4],0
|
||
je .labl_38
|
||
;----------------------------------------------------------
|
||
.labl_37:
|
||
push dword [ebp-0x1C]
|
||
mov al,[ebp-0x14]
|
||
call cm_pr_10
|
||
add eax,[ebp-0x48]
|
||
cmp eax,[ebx+0x295AC]
|
||
ja .labl_38
|
||
and dword [ebx+0x295B4],0
|
||
mov [ebx+0x295AC],eax
|
||
mov eax,[ebp-0xC]
|
||
mov [ebx+0x295B0],eax
|
||
mov byte [ebx+0x295A1],0
|
||
;----------------------------------------------------------
|
||
.labl_38:
|
||
mov eax,[0x52630]
|
||
sub eax,edi
|
||
mov ecx,0xFFF
|
||
sub ecx,[ebp-0xC]
|
||
inc eax
|
||
mov [ebp-0x38],eax
|
||
cmp eax,ecx
|
||
jbe .labl_39
|
||
mov eax,ecx
|
||
mov [ebp-0x38],ecx
|
||
;----------------------------------------------------------
|
||
.labl_39:
|
||
mov [ebp-0x24],eax
|
||
cmp eax,2
|
||
jb .labl_72
|
||
mov ecx,0x80 ;'€'
|
||
cmp eax,ecx
|
||
jbe .labl_40
|
||
mov [ebp-0x24],ecx
|
||
;----------------------------------------------------------
|
||
.labl_40:
|
||
cmp dword [ebp-0x24],3
|
||
jb .labl_45
|
||
cmp byte [ebp-1],0
|
||
jne .labl_45
|
||
mov ecx,[ebp-0x64]
|
||
xor eax,eax
|
||
inc eax
|
||
inc ecx
|
||
cmp [ebp-0x24],eax
|
||
jbe .labl_42
|
||
mov edi,[ebp-0x28]
|
||
mov edx,edi
|
||
sub edx,ecx
|
||
;----------------------------------------------------------
|
||
.labl_41:
|
||
mov cl,[eax+edi]
|
||
cmp cl,[edx+eax]
|
||
jne .labl_42
|
||
inc eax
|
||
cmp eax,[ebp-0x24]
|
||
jb .labl_41
|
||
;----------------------------------------------------------
|
||
.labl_42:
|
||
dec eax
|
||
mov [ebp-0x20],eax
|
||
cmp eax,2
|
||
jb .labl_45
|
||
mov eax,[ebp-0x40]
|
||
mov al,[eax+LiteralNextStates]
|
||
mov ecx,[ebp+8]
|
||
movzx edx,al
|
||
mov [ebp-0x3C],al
|
||
mov eax,edx
|
||
shl eax,4
|
||
inc ecx
|
||
mov edi,0x800
|
||
and ecx,3
|
||
add eax,ecx
|
||
mov ebx,edi
|
||
sub ebx,[0x1AF30+eax*4]
|
||
mov eax,edi
|
||
sub eax,[0x515B8+edx*4]
|
||
mov edx,[ebp-0xC]
|
||
shr ebx,2
|
||
mov edi,[0x51A18+ebx*4]
|
||
shr eax,2
|
||
add edi,[0x51A18+eax*4]
|
||
mov eax,[ebp-0x20]
|
||
add edi,esi
|
||
lea esi,[edx+eax]
|
||
mov eax,[ebp-8]
|
||
lea edx,[esi+1]
|
||
cmp eax,edx
|
||
jnb .labl_44
|
||
sub edx,[ebp-8]
|
||
imul eax,eax,0x28
|
||
add eax,0x29584
|
||
add [ebp-8],edx
|
||
;----------------------------------------------------------
|
||
.labl_43:
|
||
add eax,0x28 ;'('
|
||
dec edx
|
||
mov dword [eax],0x0FFFFFFF
|
||
jne .labl_43
|
||
;----------------------------------------------------------
|
||
.labl_44:
|
||
mov eax,[ebp-0x20]
|
||
push ecx
|
||
push dword [ebp-0x3C]
|
||
xor edx,edx
|
||
call cm_pr_11
|
||
imul esi,esi,0x28
|
||
add eax,edi
|
||
add esi,0x295A0
|
||
cmp eax,[esi+0xC]
|
||
jnb .labl_45
|
||
mov [esi+0xC],eax
|
||
mov eax,[ebp-0xC]
|
||
inc eax
|
||
and dword [esi+0x14],0
|
||
mov [esi+0x10],eax
|
||
mov byte [esi+1],1
|
||
mov byte [esi+2],0
|
||
;----------------------------------------------------------
|
||
.labl_45:
|
||
and dword [ebp-0x18],0
|
||
;----------------------------------------------------------
|
||
.labl_46:
|
||
mov eax,[ebp-0x18]
|
||
mov eax,[ebp+eax*4-0x64]
|
||
mov edx,[ebp-0x28]
|
||
inc eax
|
||
mov ecx,edx
|
||
sub ecx,eax
|
||
mov [ebp-0x44],eax
|
||
mov al,[edx]
|
||
mov [ebp-0x50],ecx
|
||
cmp al,[ecx]
|
||
jne .labl_58
|
||
mov al,[edx+1]
|
||
cmp al,[ecx+1]
|
||
jne .labl_58
|
||
push 2
|
||
pop esi
|
||
cmp [ebp-0x24],esi
|
||
jbe .labl_48
|
||
;----------------------------------------------------------
|
||
.labl_47:
|
||
mov al,[edx+esi]
|
||
cmp al,[ecx+esi]
|
||
jne .labl_48
|
||
inc esi
|
||
cmp esi,[ebp-0x24]
|
||
jb .labl_47
|
||
;----------------------------------------------------------
|
||
.labl_48:
|
||
mov eax,[ebp-0xC]
|
||
lea ebx,[eax+esi]
|
||
mov [ebp-0x20],ebx
|
||
imul ebx,ebx,0x28
|
||
mov edi,esi
|
||
add ebx,0x29584
|
||
;----------------------------------------------------------
|
||
.labl_49:
|
||
mov eax,[ebp-8]
|
||
mov ecx,[ebp-0x20]
|
||
cmp eax,ecx
|
||
jnb .labl_51
|
||
sub ecx,[ebp-8]
|
||
imul eax,eax,0x28
|
||
add eax,0x29584
|
||
add [ebp-8],ecx
|
||
;----------------------------------------------------------
|
||
.labl_50:
|
||
add eax,0x28 ;'('
|
||
dec ecx
|
||
mov dword [eax],0x0FFFFFFF
|
||
jne .labl_50
|
||
;----------------------------------------------------------
|
||
.labl_51:
|
||
push dword [ebp-0x1C]
|
||
mov edx,[ebp-0x18]
|
||
push dword [ebp-0x14]
|
||
mov eax,esi
|
||
call cm_pr_11
|
||
add eax,[ebp-0x48]
|
||
cmp eax,[ebx]
|
||
jnb .labl_52
|
||
mov [ebx],eax
|
||
mov eax,[ebp-0xC]
|
||
mov [ebx+4],eax
|
||
mov eax,[ebp-0x18]
|
||
mov [ebx+8],eax
|
||
mov byte [ebx-0xB],0
|
||
;----------------------------------------------------------
|
||
.labl_52:
|
||
dec esi
|
||
sub ebx,0x28 ;'('
|
||
dec dword [ebp-0x20]
|
||
cmp esi,2
|
||
jnb .labl_49
|
||
lea eax,[edi+1]
|
||
lea esi,[eax+0x80]
|
||
cmp esi,[ebp-0x38]
|
||
jbe .labl_53
|
||
mov esi,[ebp-0x38]
|
||
;----------------------------------------------------------
|
||
.labl_53:
|
||
cmp eax,esi
|
||
jnb .labl_55
|
||
mov edx,[ebp-0x28]
|
||
mov ecx,eax
|
||
sub ecx,[ebp-0x44]
|
||
add ecx,edx
|
||
;----------------------------------------------------------
|
||
.labl_54:
|
||
mov bl,[eax+edx]
|
||
cmp bl,[ecx]
|
||
jne .labl_55
|
||
inc eax
|
||
inc ecx
|
||
cmp eax,esi
|
||
jb .labl_54
|
||
;----------------------------------------------------------
|
||
.labl_55:
|
||
or ecx,0xFFFFFFFF
|
||
sub ecx,edi
|
||
add eax,ecx
|
||
mov [ebp-0x10],eax
|
||
cmp eax,2
|
||
jb .labl_58
|
||
mov eax,[ebp-0x40]
|
||
mov al,[eax+RepNextStates]
|
||
mov edx,[ebp+8]
|
||
movzx eax,al
|
||
mov ebx,eax
|
||
mov al,[eax+LiteralNextStates]
|
||
lea ecx,[edi+edx]
|
||
mov [ebp-0x3C],al
|
||
movzx eax,al
|
||
mov esi,ecx
|
||
and esi,3
|
||
shl ebx,4
|
||
add esi,ebx
|
||
mov esi,[0x1AF30+esi*4]
|
||
lea ebx,[edi+edx+1]
|
||
mov [ebp-0x20],eax
|
||
mov eax,[ebp-0x28]
|
||
movzx edx,byte [edi+eax]
|
||
mov al,[eax+edi-1]
|
||
push edx
|
||
mov edx,[ebp-0x50]
|
||
movzx edx,byte [edx+edi]
|
||
push edx
|
||
shr esi,02
|
||
mov esi,[0x51A18+esi*4]
|
||
push 1
|
||
push ecx
|
||
mov [ebp-0x44],esi
|
||
and ebx,3
|
||
call cm_pr_05
|
||
push dword [ebp-0x1C]
|
||
mov edx,[ebp-0x18]
|
||
push dword [ebp-0x14]
|
||
mov esi,eax
|
||
mov eax,edi
|
||
call cm_pr_11
|
||
mov ecx,[ebp-0x20]
|
||
add esi,eax
|
||
shl ecx,4
|
||
add ecx,ebx
|
||
mov eax,0x800
|
||
mov edx,eax
|
||
sub edx,[0x1AF30+ecx*4]
|
||
mov ecx,[ebp-0x20]
|
||
sub eax,[0x515B8+ecx*4]
|
||
mov ecx,[ebp-0xC]
|
||
shr edx,2
|
||
add esi,[0x51A18+edx*4]
|
||
shr eax,2
|
||
add esi,[0x51A18+eax*4]
|
||
mov eax,[ebp-0x10]
|
||
add esi,[ebp-0x44]
|
||
lea eax,[eax+edi+1]
|
||
add esi,[ebp-0x48]
|
||
add eax,ecx
|
||
mov [ebp-0x44],eax
|
||
cmp [ebp-8],eax
|
||
jnb .labl_57
|
||
mov eax,[ebp-8]
|
||
mov ecx,[ebp-0x44]
|
||
imul eax,eax,0x28
|
||
sub ecx,[ebp-8]
|
||
add eax,0x29584
|
||
add [ebp-8],ecx
|
||
;----------------------------------------------------------
|
||
.labl_56:
|
||
add eax,0x28 ;'('
|
||
dec ecx
|
||
mov dword [eax],0x0FFFFFFF
|
||
jne .labl_56
|
||
;----------------------------------------------------------
|
||
.labl_57:
|
||
mov eax,[ebp-0x10]
|
||
push ebx
|
||
push dword [ebp-0x3C]
|
||
xor edx,edx
|
||
call cm_pr_11
|
||
mov ecx,[ebp-0x44]
|
||
imul ecx,ecx,0x28
|
||
add eax,esi
|
||
add ecx,0x29578
|
||
cmp eax,[ecx+0xC]
|
||
jnb .labl_58
|
||
and dword [ecx+0x14],0
|
||
mov [ecx+0xC],eax
|
||
mov eax,[ebp-0xC]
|
||
lea edx,[edi+eax+1]
|
||
mov [ecx+4],eax
|
||
mov eax,[ebp-0x18]
|
||
mov [ecx+0x10],edx
|
||
mov byte [ecx+1],1
|
||
mov byte [ecx+2],1
|
||
mov [ecx+8],eax
|
||
;----------------------------------------------------------
|
||
.labl_58:
|
||
inc dword [ebp-0x18]
|
||
cmp dword [ebp-0x18],4
|
||
jb .labl_46
|
||
mov eax,[ebp-0x24]
|
||
cmp [ebp-0x2C],eax
|
||
jbe .labl_59
|
||
mov [ebp-0x2C],eax
|
||
;----------------------------------------------------------
|
||
.labl_59:
|
||
cmp dword [ebp-0x2C],2
|
||
jb .labl_72
|
||
mov esi,[ebp-0x2C]
|
||
cmp esi,2
|
||
jne .labl_60
|
||
cmp dword [0x1AAB8],0x80 ;'€'
|
||
jnb .labl_72
|
||
;----------------------------------------------------------
|
||
.labl_60:
|
||
mov eax,[ebp-0x54]
|
||
shr eax,2
|
||
mov eax,[0x51A18+eax*4]
|
||
add eax,[ebp-0x4C]
|
||
mov [ebp-0x4C],eax
|
||
mov eax,[ebp-0xC]
|
||
lea ecx,[esi+eax]
|
||
cmp [ebp-8],ecx
|
||
jnb .labl_62
|
||
mov eax,[ebp-8]
|
||
imul eax,eax,0x28
|
||
mov edx,ecx
|
||
sub edx,[ebp-8]
|
||
add eax,0x29584
|
||
add [ebp-8],edx
|
||
;----------------------------------------------------------
|
||
.labl_61:
|
||
add eax,0x28 ;'('
|
||
dec edx
|
||
mov dword [eax],0x0FFFFFFF
|
||
jne .labl_61
|
||
;----------------------------------------------------------
|
||
.labl_62:
|
||
imul ecx,ecx,0x28
|
||
add ecx,0x29584
|
||
lea eax,[0x1AAB4+esi*4]
|
||
lea edi,[esi+1]
|
||
mov [ebp-0x24],eax
|
||
mov ebx,ecx
|
||
mov [ebp-0x48],ecx
|
||
;----------------------------------------------------------
|
||
.labl_63:
|
||
mov eax,[ebp-0x24]
|
||
mov esi,[eax-4]
|
||
push dword [ebp-0x1C]
|
||
lea eax,[edi-1]
|
||
mov edx,esi
|
||
call cm_pr_12
|
||
add eax,[ebp-0x4C]
|
||
mov [ebp-0x50],eax
|
||
cmp eax,[ebx]
|
||
jnb .labl_64
|
||
mov [ebx],eax
|
||
mov eax,[ebp-0xC]
|
||
mov [ebx+4],eax
|
||
lea eax,[esi+4]
|
||
mov [ebx+8],eax
|
||
mov byte [ebx-0xB],0
|
||
;----------------------------------------------------------
|
||
.labl_64:
|
||
lea eax,[edi-1]
|
||
cmp eax,[ebp-0x2C]
|
||
je .labl_65
|
||
mov eax,[ebp-0x24]
|
||
cmp esi,[eax]
|
||
je .labl_71
|
||
;----------------------------------------------------------
|
||
.labl_65:
|
||
inc esi
|
||
lea ecx,[edi+0x80]
|
||
mov [ebp-0x44],esi
|
||
mov [ebp-0x10],edi
|
||
cmp ecx,[ebp-0x38]
|
||
jbe .labl_66
|
||
mov ecx,[ebp-0x38]
|
||
;----------------------------------------------------------
|
||
.labl_66:
|
||
cmp edi,ecx
|
||
jnb .labl_68
|
||
mov eax,edi
|
||
sub eax,esi
|
||
add eax,[ebp-0x28]
|
||
;----------------------------------------------------------
|
||
.labl_67:
|
||
mov edx,[ebp-0x10]
|
||
mov esi,[ebp-0x28]
|
||
mov dl,[edx+esi]
|
||
cmp dl,[eax]
|
||
jne .labl_68
|
||
inc dword [ebp-0x10]
|
||
inc eax
|
||
cmp [ebp-0x10],ecx
|
||
jb .labl_67
|
||
;----------------------------------------------------------
|
||
.labl_68:
|
||
or ecx,0xFFFFFFFF
|
||
lea eax,[edi-1]
|
||
sub ecx,eax
|
||
add [ebp-0x10],ecx
|
||
cmp dword [ebp-0x10],2
|
||
jb .labl_71
|
||
mov eax,[ebp-0x40]
|
||
mov al,[eax+MatchNextStates]
|
||
mov ecx,[ebp+8]
|
||
movzx eax,al
|
||
mov esi,eax
|
||
mov al,[eax+LiteralNextStates]
|
||
lea edx,[edi+ecx-1]
|
||
mov [ebp-0x3C],al
|
||
movzx eax,al
|
||
shl esi,4
|
||
mov ebx,edx
|
||
and ebx,3
|
||
add esi,ebx
|
||
mov esi,[0x1AF30+esi*4]
|
||
lea ebx,[edi+ecx]
|
||
mov [ebp-0x20],eax
|
||
mov eax,[ebp-0x28]
|
||
movzx ecx,byte [edi+eax-1]
|
||
push ecx
|
||
mov ecx,edi
|
||
sub ecx,[ebp-0x44]
|
||
shr esi,2
|
||
movzx ecx,byte [ecx+eax-1]
|
||
mov esi,[0x51A18+esi*4]
|
||
mov al,[edi+eax-2]
|
||
push ecx
|
||
push 1
|
||
push edx
|
||
mov [ebp-0x54],esi
|
||
and ebx,3
|
||
call cm_pr_05
|
||
mov ecx,[ebp-0x20]
|
||
mov esi,eax
|
||
shl ecx,4
|
||
add ecx,ebx
|
||
mov eax,0x800
|
||
mov edx,eax
|
||
sub edx,[0x1AF30+ecx*4]
|
||
mov ecx,[ebp-0x20]
|
||
sub eax,[0x515B8+ecx*4]
|
||
mov ecx,[ebp-0xC]
|
||
shr edx,2
|
||
add esi,[0x51A18+edx*4]
|
||
shr eax,2
|
||
add esi,[0x51A18+eax*4]
|
||
mov eax,[ebp-0x10]
|
||
add esi,[ebp-0x54]
|
||
add eax,edi
|
||
add esi,[ebp-0x50]
|
||
add eax,ecx
|
||
mov [ebp-0x20],eax
|
||
cmp [ebp-8],eax
|
||
jnb .labl_70
|
||
mov eax,[ebp-8]
|
||
mov ecx,[ebp-0x20]
|
||
imul eax,eax,0x28
|
||
sub ecx,[ebp-8]
|
||
add eax,0x29584
|
||
add [ebp-8],ecx
|
||
;----------------------------------------------------------
|
||
.labl_69:
|
||
add eax,0x28 ;'('
|
||
dec ecx
|
||
mov dword [eax],0x0FFFFFFF
|
||
jne .labl_69
|
||
;----------------------------------------------------------
|
||
.labl_70:
|
||
mov eax,[ebp-0x10]
|
||
push ebx
|
||
push dword [ebp-0x3C]
|
||
xor edx,edx
|
||
call cm_pr_11
|
||
mov ecx,[ebp-0x20]
|
||
mov ebx,[ebp-0x48]
|
||
imul ecx,ecx,0x28
|
||
add eax,esi
|
||
add ecx,0x29578
|
||
cmp eax,[ecx+0xC]
|
||
jnb .labl_71
|
||
and dword [ecx+0x14],0
|
||
mov [ecx+0xC],eax
|
||
mov eax,[ebp-0xC]
|
||
lea edx,[edi+eax]
|
||
mov [ecx+4],eax
|
||
mov eax,[ebp-0x44]
|
||
add eax,3
|
||
mov [ecx+0x10],edx
|
||
mov byte [ecx+1],1
|
||
mov byte [ecx+2],1
|
||
mov [ecx+8],eax
|
||
;----------------------------------------------------------
|
||
.labl_71:
|
||
sub dword [ebp-0x24],4
|
||
sub ebx,0x28 ;'('
|
||
dec edi
|
||
lea eax,[edi-1]
|
||
mov [ebp-0x48],ebx
|
||
cmp eax,2
|
||
jnb .labl_63
|
||
;----------------------------------------------------------
|
||
.labl_72:
|
||
inc dword [ebp-0xC]
|
||
mov eax,[ebp-0xC]
|
||
cmp eax,[ebp-8]
|
||
jne .labl_21
|
||
jmp .labl_74
|
||
;----------------------------------------------------------
|
||
.labl_73:
|
||
mov eax,[ebp-0x2C]
|
||
mov [0x19FAC],eax
|
||
mov byte [0x19FAA],1 ;0x1B238
|
||
;----------------------------------------------------------
|
||
.labl_74:
|
||
push dword [ebp-0xC]
|
||
push dword [ebp+0xC]
|
||
call lz_cm_08
|
||
mov ecx,[ebp+0x10]
|
||
mov [ecx],eax
|
||
;----------------------------------------------------------
|
||
.labl_75:
|
||
pop ebx
|
||
pop edi
|
||
;----------------------------------------------------------
|
||
.labl_76:
|
||
pop esi
|
||
leave
|
||
ret 0xC
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_04:
|
||
push ebp
|
||
mov ebp,esp
|
||
push ecx
|
||
push ebx
|
||
push esi
|
||
xor ebx,ebx
|
||
push edi
|
||
inc ebx
|
||
mov dword [ebp-4],8
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
dec dword [ebp-4]
|
||
movzx ecx,byte [ebp-4]
|
||
movzx esi,byte [ebp+0xC]
|
||
movzx edi,byte [ebp+0x10]
|
||
shr esi,cl
|
||
shr edi,cl
|
||
mov ecx,[ebp+8]
|
||
and esi,1
|
||
lea eax,[esi+1]
|
||
shl eax,8
|
||
add eax,ebx
|
||
and edi,1
|
||
push edi
|
||
lea edx,[ecx+eax*4]
|
||
call cm_pr_14
|
||
add ebx,ebx
|
||
or ebx,edi
|
||
cmp esi,edi
|
||
jne .labl_02
|
||
cmp dword [ebp-4],0
|
||
jne .labl_00
|
||
jmp .labl_03
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
dec dword [ebp-4]
|
||
movzx esi,byte [ebp+0x10]
|
||
mov cl,[ebp-4]
|
||
mov eax,[ebp+8]
|
||
shr esi,cl
|
||
lea edx,[eax+ebx*4]
|
||
and esi,1
|
||
push esi
|
||
call cm_pr_14
|
||
add ebx,ebx
|
||
or ebx,esi
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
cmp dword [ebp-4],0
|
||
jne .labl_01
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
pop edi
|
||
pop esi
|
||
pop ebx
|
||
leave
|
||
ret 0xC
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_05:
|
||
push esi
|
||
mov esi,eax
|
||
jmp .labl_02
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov eax,[esp+8]
|
||
shr dword [0x51A04],1
|
||
dec esi
|
||
mov ecx,esi
|
||
shr eax,cl
|
||
test al,1
|
||
je .labl_01
|
||
mov eax,[0x51A04]
|
||
add [0x51A10],eax
|
||
adc dword [0x51A14],0
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
cmp dword [0x51A04],0x1000000
|
||
jnb .labl_02
|
||
shl dword [0x51A04],8
|
||
call cm_pr_13
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
test esi,esi
|
||
jne .labl_00
|
||
pop esi
|
||
ret 4
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_06:
|
||
push esi
|
||
xor esi,esi
|
||
push edi
|
||
mov edi,[0x519E8]
|
||
inc esi
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov eax,[esp+0xC]
|
||
and eax,1
|
||
lea edx,[0x515E8+esi*4]
|
||
push eax
|
||
lea esi,[eax+esi*2]
|
||
call cm_pr_14
|
||
shr dword [esp+0xC],1
|
||
dec edi
|
||
jne .labl_00
|
||
pop edi
|
||
pop esi
|
||
ret 4
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_07:
|
||
push esi
|
||
mov esi,eax
|
||
test esi,esi
|
||
je .labl_01
|
||
add [0x1AEFC],esi
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
dec esi
|
||
call lz_cm_09
|
||
call cm_pr_19
|
||
test esi,esi
|
||
jne .labl_00
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
pop esi
|
||
ret
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_08:
|
||
push ebp
|
||
mov ebp,esp
|
||
push ecx
|
||
mov ecx,[ebp+0xC]
|
||
mov eax,ecx
|
||
imul eax,eax,0x28
|
||
mov edx,[eax+0x29588]
|
||
mov eax,[eax+0x2958C]
|
||
push ebx
|
||
push esi
|
||
mov [0x29574],ecx
|
||
mov [ebp-4],eax
|
||
push edi
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
imul ecx,ecx,0x28
|
||
cmp byte [ecx+0x29579],0
|
||
je .labl_01
|
||
mov eax,edx
|
||
imul eax,eax,0x28
|
||
or dword [eax+0x2958C],0xFFFFFFFF
|
||
lea esi,[eax+0x29579]
|
||
lea edi,[eax+0x29588]
|
||
lea ebx,[edx-1]
|
||
mov byte [esi],0
|
||
mov [edi],ebx
|
||
cmp byte [ecx+0x2957A],0
|
||
je .labl_01
|
||
mov byte [esi-0x28],0
|
||
mov esi,[ecx+0x2957C]
|
||
mov [edi-0x28],esi
|
||
mov ecx,[ecx+0x29580]
|
||
mov [eax+0x29564],ecx
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov ecx,[ebp-4]
|
||
mov eax,edx
|
||
imul eax,eax,0x28
|
||
mov esi,edx
|
||
mov edx,[eax+0x2958C]
|
||
mov [eax+0x2958C],ecx
|
||
mov ecx,[ebp+0xC]
|
||
mov [ebp-4],edx
|
||
mov edx,[eax+0x29588]
|
||
mov [eax+0x29588],ecx
|
||
mov ecx,esi
|
||
mov [ebp+0xC],ecx
|
||
test esi,esi
|
||
jne .labl_00
|
||
mov eax,[0x2958C]
|
||
mov ecx,[ebp+8]
|
||
pop edi
|
||
mov [ecx],eax
|
||
mov eax,[0x29588]
|
||
pop esi
|
||
mov [0x1AEF8],eax
|
||
pop ebx
|
||
leave
|
||
ret 8
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_09:
|
||
push ebp
|
||
mov ebp,esp
|
||
mov edx,[0x52218]
|
||
mov eax,[0x5262C]
|
||
mov ecx,[0x52630]
|
||
sub esp,0x2C
|
||
push esi
|
||
lea esi,[edx+eax]
|
||
cmp esi,ecx
|
||
ja .labl_00
|
||
mov [ebp-0x18],edx
|
||
jmp .labl_01
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
sub ecx,eax
|
||
mov [ebp-0x18],ecx
|
||
cmp ecx,3
|
||
jb .labl_13
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov ecx,[0x51A0C]
|
||
mov edx,eax
|
||
sub edx,ecx
|
||
cmp ecx,eax
|
||
mov ecx,[0x52628]
|
||
lea esi,[ecx+eax]
|
||
movzx ecx,byte [esi+2]
|
||
push ebx
|
||
movzx ebx,word [esi]
|
||
push edi
|
||
sbb edi,edi
|
||
and dword [ebp-0x1C],0
|
||
and dword [ebp-0x28],0
|
||
shl ecx,8
|
||
and edi,edx
|
||
movzx edx,byte [esi]
|
||
xor ecx,[0x52228+edx*4]
|
||
movzx edx,byte [esi+1]
|
||
xor ecx,edx
|
||
mov edx,[0x52224]
|
||
and ecx,0xFFFFF
|
||
lea ecx,[edx+ecx*4]
|
||
mov [edx+ebx*4+0x400000],eax
|
||
mov ebx,[ecx]
|
||
mov [ecx],eax
|
||
mov ecx,[0x5221C]
|
||
lea ecx,[edx+ecx*8+0x440000]
|
||
mov [ebp-4],ebx
|
||
lea ebx,[ecx+4]
|
||
mov [ebp-0xC],ecx
|
||
mov ecx,[0x52220]
|
||
mov [ebp-0x10],ebx
|
||
mov [ebp-0x14],ecx
|
||
cmp [ebp-4],edi
|
||
jbe .labl_11
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
mov ecx,[ebp-0x14]
|
||
dec dword [ebp-0x14]
|
||
test ecx,ecx
|
||
je .labl_11
|
||
mov ecx,[0x52628]
|
||
mov ebx,[ebp-4]
|
||
add ecx,ebx
|
||
mov [ebp-0x24],ecx
|
||
mov ecx,[ebp-0x28]
|
||
cmp ecx,[ebp-0x1C]
|
||
jb .labl_03
|
||
mov ecx,[ebp-0x1C]
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
mov ebx,[ebp-0x24]
|
||
mov [ebp-8],ecx
|
||
add ecx,esi
|
||
sub ebx,esi
|
||
mov [ebp-0x20],ebx
|
||
jmp .labl_05
|
||
;----------------------------------------------------------
|
||
.labl_04:
|
||
mov ecx,[ebp-0x2C]
|
||
mov ebx,[ebp-0x20]
|
||
;----------------------------------------------------------
|
||
.labl_05:
|
||
mov bl,[ebx+ecx]
|
||
cmp bl,[ecx]
|
||
jne .labl_06
|
||
inc dword [ebp-8]
|
||
inc ecx
|
||
mov [ebp-0x2C],ecx
|
||
mov ecx,[ebp-8]
|
||
cmp ecx,[ebp-0x18]
|
||
jne .labl_04
|
||
;----------------------------------------------------------
|
||
.labl_06:
|
||
mov ecx,[0x5221C]
|
||
mov ebx,eax
|
||
sub ebx,[ebp-4]
|
||
cmp ebx,ecx
|
||
ja .labl_07
|
||
sub ecx,ebx
|
||
jmp .labl_08
|
||
;----------------------------------------------------------
|
||
.labl_07:
|
||
sub ecx,ebx
|
||
add ecx,[0x51A0C]
|
||
;----------------------------------------------------------
|
||
.labl_08:
|
||
lea ecx,[edx+ecx*8+0x440000]
|
||
mov [ebp-0x20],ecx
|
||
mov ecx,[ebp-8]
|
||
cmp ecx,[ebp-0x18]
|
||
je .labl_14
|
||
mov ebx,[ebp-0x24]
|
||
mov bl,[ecx+ebx]
|
||
cmp bl,[ecx+esi]
|
||
mov ecx,[ebp-4]
|
||
jnb .labl_09
|
||
mov ebx,[ebp-0xC]
|
||
mov [ebx],ecx
|
||
mov ecx,[ebp-0x20]
|
||
mov ebx,[ebp-8]
|
||
add ecx,4
|
||
mov [ebp-0xC],ecx
|
||
mov [ebp-0x1C],ebx
|
||
jmp .labl_10
|
||
;----------------------------------------------------------
|
||
.labl_09:
|
||
mov ebx,[ebp-0x10]
|
||
mov [ebx],ecx
|
||
mov ecx,[ebp-0x20]
|
||
mov ebx,[ebp-8]
|
||
mov [ebp-0x10],ecx
|
||
mov [ebp-0x28],ebx
|
||
;----------------------------------------------------------
|
||
.labl_10:
|
||
mov ecx,[ecx]
|
||
mov [ebp-4],ecx
|
||
cmp ecx,edi
|
||
ja .labl_02
|
||
;----------------------------------------------------------
|
||
.labl_11:
|
||
mov eax,[ebp-0xC]
|
||
and dword [eax],0
|
||
mov eax,[ebp-0x10]
|
||
and dword [eax],0
|
||
;----------------------------------------------------------
|
||
.labl_12:
|
||
pop edi
|
||
pop ebx
|
||
;----------------------------------------------------------
|
||
.labl_13:
|
||
pop esi
|
||
leave
|
||
ret
|
||
;----------------------------------------------------------
|
||
.labl_14:
|
||
mov eax,[ebp-0x20]
|
||
mov ecx,[eax]
|
||
mov edx,[ebp-0xC]
|
||
mov [edx],ecx
|
||
mov eax,[eax+4]
|
||
mov ecx,[ebp-0x10]
|
||
mov [ecx],eax
|
||
jmp .labl_12
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_000:
|
||
cmp eax,0x400
|
||
jnb .labl_00
|
||
movzx eax,byte [eax+0x19FB0]
|
||
ret
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
cmp eax,0x80000
|
||
jnb .labl_01
|
||
shr eax,9
|
||
movzx eax,byte [eax+0x19FB0]
|
||
add eax,0x12
|
||
ret
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
shr eax,0x12
|
||
movzx eax,byte [eax+0x19FB0]
|
||
add eax,0x24 ;'$'
|
||
ret
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_00:
|
||
push ebx
|
||
push edi
|
||
mov eax,0x400
|
||
push 4
|
||
mov [esi],eax
|
||
mov [esi+4],eax
|
||
lea edi,[esi+0x4048]
|
||
pop ebx
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
push 3
|
||
lea eax,[edi-0x4040]
|
||
pop ecx
|
||
call cm_pr_15
|
||
push 3
|
||
pop ecx
|
||
mov eax,edi
|
||
call cm_pr_15
|
||
add edi,0x404
|
||
dec ebx
|
||
jne .labl_00
|
||
push 8
|
||
pop ecx
|
||
pop edi
|
||
lea eax,[esi+0x8088]
|
||
pop ebx
|
||
jmp cm_pr_15
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_01:
|
||
push ebx
|
||
push edi
|
||
mov edi,eax
|
||
xor ebx,ebx
|
||
cmp [edi+0xC88C],ebx
|
||
jbe .labl_01
|
||
mov eax,[esp+0xC]
|
||
push esi
|
||
lea esi,[edi+eax*4+0x848C]
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov eax,[esp+0x10]
|
||
mov edx,ebx
|
||
call lz_cm_10
|
||
mov [esi],eax
|
||
inc ebx
|
||
add esi,0x40 ;'@'
|
||
cmp ebx,[edi+0xC88C]
|
||
jb .labl_00
|
||
pop esi
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov eax,[edi+0xC88C]
|
||
mov ecx,[esp+0xC]
|
||
mov [edi+ecx*4+0xC890],eax
|
||
pop edi
|
||
pop ebx
|
||
ret 4
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_10:
|
||
push ebp
|
||
mov ebp,esp
|
||
push ecx
|
||
push esi
|
||
cmp edx,8
|
||
jnb .labl_00
|
||
imul eax,eax,0x404
|
||
lea esi,[eax+edi+8]
|
||
call cm_pr_17
|
||
mov ecx,[edi]
|
||
shr ecx,2
|
||
add eax,[0x51A18+ecx*4]
|
||
jmp .labl_03
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
push ebx
|
||
mov ebx,0x800
|
||
mov ecx,ebx
|
||
sub ecx,[edi]
|
||
shr ecx,2
|
||
mov ecx,[0x51A18+ecx*4]
|
||
mov [ebp-4],ecx
|
||
cmp edx,0x10
|
||
jnb .labl_01
|
||
imul eax,eax,0x404
|
||
add edx,0xFFFFFFF8
|
||
lea esi,[eax+edi+0x4048]
|
||
call cm_pr_17
|
||
mov ecx,[edi+4]
|
||
shr ecx,2
|
||
add eax,[0x51A18+ecx*4]
|
||
jmp .labl_02
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
add edx,0xFFFFFFF0
|
||
lea esi,[edi+0x8088]
|
||
call cm_pr_17
|
||
sub ebx,[edi+4]
|
||
shr ebx,2
|
||
add eax,[0x51A18+ebx*4]
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
add [ebp-4],eax
|
||
mov eax,[ebp-4]
|
||
pop ebx
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
pop esi
|
||
leave
|
||
ret
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_02:
|
||
push edi
|
||
mov edi,eax
|
||
mov edx,esi
|
||
cmp edi,8
|
||
jnb .labl_00
|
||
push 0
|
||
call cm_pr_14
|
||
mov eax,ebx
|
||
imul eax,eax,0x404
|
||
push edi
|
||
lea edi,[eax+esi+8]
|
||
jmp .labl_02
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
push 1
|
||
call cm_pr_14
|
||
lea edx,[esi+4]
|
||
cmp edi,0x10
|
||
jnb .labl_01
|
||
push 0
|
||
call cm_pr_14
|
||
add edi,0xFFFFFFF8
|
||
mov eax,ebx
|
||
imul eax,eax,0x404
|
||
push edi
|
||
lea edi,[eax+esi+0x4048]
|
||
jmp .labl_02
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
push 1
|
||
call cm_pr_14
|
||
add edi,0xFFFFFFF0
|
||
push edi
|
||
lea edi,[esi+0x8088]
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
call cm_pr_16
|
||
dec dword [esi+ebx*4+0xC890]
|
||
pop edi
|
||
jne .labl_03
|
||
push ebx
|
||
mov eax,esi
|
||
call cm_pr_01
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
ret
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_03:
|
||
push ebx
|
||
push esi
|
||
push edi
|
||
xor edi,edi
|
||
push 8
|
||
inc edi
|
||
pop ebx
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
movzx esi,byte [esp+0x14]
|
||
mov eax,[esp+0x10]
|
||
dec ebx
|
||
mov cl,bl
|
||
shr esi,cl
|
||
lea edx,[eax+edi*4]
|
||
and esi,1
|
||
push esi
|
||
call cm_pr_14
|
||
add edi,edi
|
||
or edi,esi
|
||
test ebx,ebx
|
||
jne .labl_00
|
||
pop edi
|
||
pop esi
|
||
pop ebx
|
||
ret 8
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_04:
|
||
mov edx,[0x519F4]
|
||
push esi
|
||
mov esi,[0x519FC]
|
||
and esi,[esp+8]
|
||
push 8
|
||
pop ecx
|
||
movzx eax,al
|
||
sub cl,dl
|
||
shr eax,cl
|
||
mov ecx,edx
|
||
shl esi,cl
|
||
add eax,esi
|
||
pop esi
|
||
ret 4
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_05:
|
||
push dword [esp+0x10]
|
||
push dword [esp+0x10]
|
||
push dword [esp+0x10]
|
||
push dword [esp+0x10]
|
||
call cm_pr_04
|
||
imul eax,eax,0xC00
|
||
add eax,[0x519F0]
|
||
push eax
|
||
call lz_cm_11
|
||
ret 0x10
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_11:
|
||
push ebp
|
||
mov ebp,esp
|
||
push ecx
|
||
push ebx
|
||
push esi
|
||
xor esi,esi
|
||
xor eax,eax
|
||
inc esi
|
||
push edi
|
||
mov dword [ebp-4],8
|
||
cmp [ebp+0xC],al
|
||
je .labl_02
|
||
movzx ecx,byte [ebp+0x14]
|
||
mov [ebp+0xC],ecx
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
dec dword [ebp-4]
|
||
movzx ecx,byte [ebp-4]
|
||
movzx edi,byte [ebp+0x10]
|
||
mov edx,[ebp+0xC]
|
||
mov ebx,[ebp+8]
|
||
shr edi,cl
|
||
shr edx,cl
|
||
and edi,1
|
||
mov ecx,edi
|
||
shl ecx,8
|
||
add ecx,esi
|
||
mov ecx,[ebx+ecx*4+0x400]
|
||
and edx,1
|
||
sub ecx,edx
|
||
mov ebx,edx
|
||
neg ebx
|
||
xor ecx,ebx
|
||
shr ecx,2
|
||
and ecx,0x1FF
|
||
add eax,[0x51A18+ecx*4]
|
||
add esi,esi
|
||
or esi,edx
|
||
cmp edi,edx
|
||
jne .labl_01
|
||
cmp dword [ebp-4],0
|
||
jne .labl_00
|
||
jmp .labl_04
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
cmp dword [ebp-4],0
|
||
je .labl_04
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
movzx edi,byte [ebp+0x14]
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
dec dword [ebp-4]
|
||
mov cl,[ebp-4]
|
||
mov edx,edi
|
||
shr edx,cl
|
||
mov ecx,[ebp+8]
|
||
mov ecx,[ecx+esi*4]
|
||
add esi,esi
|
||
and edx,1
|
||
sub ecx,edx
|
||
mov ebx,edx
|
||
neg ebx
|
||
xor ecx,ebx
|
||
shr ecx,2
|
||
and ecx,0x1FF
|
||
add eax,[0x51A18+ecx*4]
|
||
or esi,edx
|
||
cmp dword [ebp-4],0
|
||
jne .labl_03
|
||
;----------------------------------------------------------
|
||
.labl_04:
|
||
pop edi
|
||
pop esi
|
||
pop ebx
|
||
leave
|
||
ret 0x10
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_06:
|
||
push esi
|
||
call lz_cm_12
|
||
mov ecx,eax
|
||
mov esi,0x80 ;'€'
|
||
cmp ecx,esi
|
||
jne .labl_00
|
||
push dword [0x1ACB0]
|
||
lea eax,[esi+0x11]
|
||
push esi
|
||
call cm_pr_18
|
||
mov ecx,eax
|
||
add ecx,esi
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
inc dword [0x1AEFC]
|
||
call cm_pr_19
|
||
mov eax,ecx
|
||
pop esi
|
||
ret
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
lz_cm_12:
|
||
push ebp
|
||
mov ebp,esp
|
||
sub esp,0x34
|
||
mov edx,[0x52218]
|
||
mov ecx,[0x5262C]
|
||
mov eax,[0x52630]
|
||
and dword [ebp-0x18],0
|
||
push esi
|
||
lea esi,[edx+ecx]
|
||
cmp esi,eax
|
||
ja .labl_02
|
||
mov [ebp-0x20],edx
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov eax,[0x51A0C]
|
||
mov edx,ecx
|
||
sub edx,eax
|
||
cmp eax,ecx
|
||
sbb eax,eax
|
||
and eax,edx
|
||
mov [ebp-0x28],eax
|
||
mov eax,[0x52628]
|
||
push ebx
|
||
push edi
|
||
lea edi,[eax+ecx]
|
||
movzx edx,byte [edi+2]
|
||
movzx esi,byte [edi]
|
||
movzx eax,word [edi]
|
||
shl edx,8
|
||
xor edx,[0x52228+esi*4]
|
||
movzx esi,byte [edi+1]
|
||
xor edx,esi
|
||
mov esi,[0x52224]
|
||
and edx,0xFFFFF
|
||
lea edx,[esi+edx*4]
|
||
mov ebx,[edx]
|
||
lea eax,[esi+eax*4+0x400000]
|
||
mov [ebp-8],ebx
|
||
mov ebx,[eax]
|
||
mov [eax],ecx
|
||
or dword [0x01AAB8],0xFFFFFFFF
|
||
cmp ebx,[ebp-0x28]
|
||
jbe .labl_01
|
||
mov eax,ecx
|
||
sub eax,ebx
|
||
dec eax
|
||
mov [0x01AAB8],eax
|
||
mov dword [ebp-0x18],2
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov ebx,[0x5221C]
|
||
and dword [ebp-0x24],0
|
||
mov [edx],ecx
|
||
or dword [0x1AABC],0xFFFFFFFF
|
||
and dword [ebp-0x30],0
|
||
lea edx,[esi+ebx*8+0x440000]
|
||
lea eax,[edx+4]
|
||
mov [ebp-0x14],eax
|
||
mov eax,[0x52220]
|
||
mov [ebp-0x1C],eax
|
||
mov eax,[ebp-8]
|
||
mov [ebp-0x10],edx
|
||
jmp .labl_13
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
sub eax,ecx
|
||
mov [ebp-0x20],eax
|
||
cmp eax,3
|
||
jnb .labl_00
|
||
xor eax,eax
|
||
jmp .labl_16
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
mov eax,[ebp-0x1C]
|
||
dec dword [ebp-0x1C]
|
||
test eax,eax
|
||
je .labl_14
|
||
mov eax,[0x52628]
|
||
mov edx,[ebp-8]
|
||
add eax,edx
|
||
mov [ebp-0x2C],eax
|
||
mov eax,[ebp-0x30]
|
||
cmp eax,[ebp-0x24]
|
||
jb .labl_04
|
||
mov eax,[ebp-0x24]
|
||
;----------------------------------------------------------
|
||
.labl_04:
|
||
mov edx,[ebp-0x2C]
|
||
mov [ebp-4],eax
|
||
add eax,edi
|
||
sub edx,edi
|
||
mov [ebp-0xC],edx
|
||
jmp .labl_06
|
||
;----------------------------------------------------------
|
||
.labl_05:
|
||
mov edx,[ebp-0xC]
|
||
mov eax,[ebp-0x34]
|
||
;----------------------------------------------------------
|
||
.labl_06:
|
||
mov dl,[edx+eax]
|
||
cmp dl,[eax]
|
||
jne .labl_07
|
||
inc dword [ebp-4]
|
||
inc eax
|
||
mov [ebp-0x34],eax
|
||
mov eax,[ebp-4]
|
||
cmp eax,[ebp-0x20]
|
||
jne .labl_05
|
||
;----------------------------------------------------------
|
||
.labl_07:
|
||
mov eax,ecx
|
||
sub eax,[ebp-8]
|
||
mov [ebp-0xC],eax
|
||
mov eax,[ebp-0x18]
|
||
cmp eax,[ebp-4]
|
||
jnb .labl_09
|
||
;----------------------------------------------------------
|
||
.labl_08:
|
||
mov edx,[ebp-0xC]
|
||
inc eax
|
||
dec edx
|
||
mov [0x1AAB0+eax*4],edx
|
||
cmp eax,[ebp-4]
|
||
jb .labl_08
|
||
mov [ebp-0x18],eax
|
||
;----------------------------------------------------------
|
||
.labl_09:
|
||
mov eax,ebx
|
||
sub eax,[ebp-0xC]
|
||
cmp [ebp-0xC],ebx
|
||
jbe .labl_10
|
||
add eax,[0x51A0C]
|
||
;----------------------------------------------------------
|
||
.labl_10:
|
||
lea eax,[esi+eax*8+0x440000]
|
||
mov [ebp-0xC],eax
|
||
mov eax,[ebp-4]
|
||
cmp eax,[ebp-0x20]
|
||
je .labl_17
|
||
mov edx,[ebp-0x2C]
|
||
mov dl,[eax+edx]
|
||
cmp dl,[eax+edi]
|
||
mov eax,[ebp-8]
|
||
jnb .labl_11
|
||
mov edx,[ebp-0x10]
|
||
mov [edx],eax
|
||
mov eax,[ebp-0xC]
|
||
mov edx,[ebp-4]
|
||
add eax,4
|
||
mov [ebp-0x10],eax
|
||
mov [ebp-0x24],edx
|
||
jmp .labl_12
|
||
;----------------------------------------------------------
|
||
.labl_11:
|
||
mov edx,[ebp-0x14]
|
||
mov [edx],eax
|
||
mov eax,[ebp-0xC]
|
||
mov edx,[ebp-4]
|
||
mov [ebp-0x14],eax
|
||
mov [ebp-0x30],edx
|
||
;----------------------------------------------------------
|
||
.labl_12:
|
||
mov eax,[eax]
|
||
mov [ebp-8],eax
|
||
;----------------------------------------------------------
|
||
.labl_13:
|
||
cmp eax,[ebp-0x28]
|
||
ja .labl_03
|
||
;----------------------------------------------------------
|
||
.labl_14:
|
||
mov eax,[ebp-0x10]
|
||
and dword [eax],0
|
||
mov eax,[ebp-0x14]
|
||
and dword [eax],0
|
||
;----------------------------------------------------------
|
||
.labl_15:
|
||
mov eax,[ebp-0x18]
|
||
pop edi
|
||
pop ebx
|
||
;----------------------------------------------------------
|
||
.labl_16:
|
||
pop esi
|
||
leave
|
||
ret
|
||
;----------------------------------------------------------
|
||
.labl_17:
|
||
mov eax,[ebp-0xC]
|
||
mov ecx,[eax]
|
||
mov edx,[ebp-0x10]
|
||
mov [edx],ecx
|
||
mov eax,[eax+4]
|
||
mov ecx,[ebp-0x14]
|
||
mov [ecx],eax
|
||
jmp .labl_15
|
||
;*****************************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_07:
|
||
push ecx
|
||
push ebx
|
||
push ebp
|
||
push esi
|
||
push edi
|
||
xor ebp,ebp
|
||
mov esi,0x1BC18
|
||
mov dword [esp+0x10],4
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
xor edi,edi
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov ebx,[0x29570]
|
||
cmp edi,ebx
|
||
jnb .labl_03
|
||
mov edx,edi
|
||
call cm_pr_17
|
||
lea ecx,[edi+ebp]
|
||
inc edi
|
||
mov [0x1A3B0+ecx*4],eax
|
||
cmp edi,0xE
|
||
jb .labl_01
|
||
cmp edi,ebx
|
||
jnb .labl_03
|
||
lea ebx,[edi+ebp]
|
||
lea ebx,[0x1A3B0+ebx*4]
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
mov edx,edi
|
||
call cm_pr_17
|
||
mov ecx,edi
|
||
shr ecx,1
|
||
sub ecx,5
|
||
shl ecx,6
|
||
add eax,ecx
|
||
mov [ebx],eax
|
||
inc edi
|
||
add ebx,4
|
||
cmp edi,[0x29570]
|
||
jb .labl_02
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
add esi,0x404
|
||
add ebp,0x40 ;'@'
|
||
dec dword [esp+0x10]
|
||
jne .labl_00
|
||
pop edi
|
||
pop esi
|
||
pop ebp
|
||
pop ebx
|
||
pop ecx
|
||
ret
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_08:
|
||
push ebp
|
||
mov ebp,esp
|
||
sub esp,0x24
|
||
and dword [ebp-0x14],0
|
||
push ebx
|
||
push esi
|
||
push edi
|
||
push 4
|
||
pop ebx
|
||
mov dword [ebp-0x18],0x1B418
|
||
mov dword [ebp-0x10],0x1A3B0
|
||
mov [ebp-0x24],ebx
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov eax,[ebp-0x18]
|
||
mov esi,[ebp-0x10]
|
||
lea edi,[eax-0x10]
|
||
movsd
|
||
movsd
|
||
movsd
|
||
movsd
|
||
mov [ebp-4],ebx
|
||
mov [ebp-0xC],eax
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov esi,[ebp-4]
|
||
mov eax,esi
|
||
call cm_pr_000
|
||
mov edx,eax
|
||
mov ecx,edx
|
||
xor eax,eax
|
||
inc eax
|
||
mov [ebp-0x20],edx
|
||
and edx,eax
|
||
shr ecx,1
|
||
dec ecx
|
||
or edx,2
|
||
shl edx,cl
|
||
xor edi,edi
|
||
mov [ebp-8],eax
|
||
mov [ebp-0x1C],ecx
|
||
sub esi,edx
|
||
test ecx,ecx
|
||
je .labl_03
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
mov eax,[ebp-8]
|
||
sub eax,[ebp-0x20]
|
||
mov ecx,esi
|
||
add eax,edx
|
||
mov eax,[0x1B234+eax*4]
|
||
and ecx,1
|
||
sub eax,ecx
|
||
mov ebx,ecx
|
||
neg ebx
|
||
xor eax,ebx
|
||
shr eax,2
|
||
and eax,0x1FF
|
||
add edi,[0x51A18+eax*4]
|
||
mov eax,[ebp-8]
|
||
shr esi,1
|
||
dec dword [ebp-0x1C]
|
||
lea eax,[ecx+eax*2]
|
||
mov [ebp-8],eax
|
||
jne .labl_02
|
||
push 4
|
||
pop ebx
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
mov eax,[ebp-0x20]
|
||
mov ecx,[ebp-0x14]
|
||
add ecx,eax
|
||
mov eax,[0x1A3B0+ecx*4]
|
||
mov ecx,[ebp-0xC]
|
||
add [ebp-0xC],ebx
|
||
add eax,edi
|
||
inc dword [ebp-4]
|
||
cmp dword [ebp-4],0x80 ;'€'
|
||
mov [ecx],eax
|
||
jb .labl_01
|
||
add dword [ebp-0x10],0x100
|
||
add dword [ebp-0x14],0x40 ;'@'
|
||
add dword [ebp-0x18],0x200
|
||
dec dword [ebp-0x24]
|
||
jne .labl_00
|
||
pop edi
|
||
pop esi
|
||
pop ebx
|
||
leave
|
||
ret
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_09:
|
||
push ebp
|
||
mov ebp,esp
|
||
push ecx
|
||
push ecx
|
||
push ebx
|
||
push esi
|
||
xor esi,esi
|
||
push edi
|
||
mov [ebp-8],esi
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov eax,[0x519E8]
|
||
xor edx,edx
|
||
xor ecx,ecx
|
||
inc edx
|
||
mov [ebp-4],eax
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov edi,[0x515E8+edx*4]
|
||
mov eax,esi
|
||
and eax,1
|
||
sub edi,eax
|
||
mov ebx,eax
|
||
neg ebx
|
||
xor edi,ebx
|
||
shr edi,2
|
||
and edi,0x1FF
|
||
add ecx,[0x51A18+edi*4]
|
||
shr esi,1
|
||
dec dword [ebp-4]
|
||
lea edx,[eax+edx*2]
|
||
jne .labl_01
|
||
mov esi,[ebp-8]
|
||
push 0x10
|
||
mov [0x51578+esi*4],ecx
|
||
inc esi
|
||
pop eax
|
||
mov [ebp-8],esi
|
||
cmp esi,eax
|
||
jb .labl_00
|
||
pop edi
|
||
pop esi
|
||
mov [0x1B230],eax
|
||
pop ebx
|
||
leave
|
||
ret
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_10:
|
||
movzx eax,al
|
||
mov edx,[0x1CC38+eax*4]
|
||
mov ecx,eax
|
||
shl ecx,4
|
||
add ecx,[esp+4]
|
||
shr edx,2
|
||
mov ecx,[0x1A7B0+ecx*4]
|
||
shr ecx,2
|
||
mov eax,[0x51A18+ecx*4]
|
||
add eax,[0x51A18+edx*4]
|
||
ret 4
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_11:
|
||
movzx ecx,byte [esp+4]
|
||
shl eax,4
|
||
add eax,[esp+8]
|
||
push esi
|
||
mov eax,[0x25074+eax*4]
|
||
mov esi,0x800
|
||
test edx,edx
|
||
jne .labl_00
|
||
mov edx,ecx
|
||
mov ecx,[0x1CC38+ecx*4]
|
||
shl edx,4
|
||
add edx,[esp+0xC]
|
||
sub esi,[0x1A7B0+edx*4]
|
||
shr ecx,2
|
||
jmp .labl_02
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
push edi
|
||
shl ecx,2
|
||
mov edi,esi
|
||
sub edi,[ecx+0x1CC38]
|
||
shr edi,2
|
||
add eax,[0x51A18+edi*4]
|
||
pop edi
|
||
cmp edx,1
|
||
jne .labl_01
|
||
mov ecx,[ecx+0x1AF00]
|
||
shr ecx,2
|
||
add eax,[0x51A18+ecx*4]
|
||
jmp .labl_03
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
sub esi,[ecx+0x1AF00]
|
||
mov ecx,[ecx+0x29538]
|
||
add edx,0xFFFFFFFE
|
||
sub ecx,edx
|
||
neg edx
|
||
xor ecx,edx
|
||
shr ecx,2
|
||
and ecx,0x1FF
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
shr esi,2
|
||
mov edx,[0x51A18+esi*4]
|
||
add edx,[0x51A18+ecx*4]
|
||
add eax,edx
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
pop esi
|
||
ret 8
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_12:
|
||
push esi
|
||
mov esi,eax
|
||
mov ecx,0x80 ;'€'
|
||
cmp esi,2
|
||
jne .labl_00
|
||
cmp edx,ecx
|
||
jb .labl_01
|
||
mov eax,0x0FFFFFFF
|
||
jmp .labl_09
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
cmp esi,6
|
||
jnb .labl_02
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
lea eax,[esi-2]
|
||
jmp .labl_03
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
push 3
|
||
pop eax
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
cmp edx,ecx
|
||
jnb .labl_04
|
||
shl eax,7
|
||
add eax,edx
|
||
mov ecx,[0x1B408+eax*4]
|
||
jmp .labl_08
|
||
;----------------------------------------------------------
|
||
.labl_04:
|
||
mov ecx,edx
|
||
cmp edx,0x10000
|
||
jnb .labl_05
|
||
shr ecx,6
|
||
movzx ecx,byte [ecx+0x19FB0]
|
||
add ecx,0xC
|
||
jmp .labl_07
|
||
;----------------------------------------------------------
|
||
.labl_05:
|
||
cmp edx,0x2000000
|
||
jnb .labl_06
|
||
shr ecx,0xF
|
||
movzx ecx,byte [ecx+0x19FB0]
|
||
add ecx,0x1E
|
||
jmp .labl_07
|
||
;----------------------------------------------------------
|
||
.labl_06:
|
||
shr ecx,0x18
|
||
movzx ecx,byte [ecx+0x19FB0]
|
||
add ecx,0x30 ;'0'
|
||
;----------------------------------------------------------
|
||
.labl_07:
|
||
shl eax,6
|
||
add eax,ecx
|
||
mov ecx,[0x1A3B0+eax*4]
|
||
and edx,0xF
|
||
add ecx,[0x51578+edx*4]
|
||
;----------------------------------------------------------
|
||
.labl_08:
|
||
shl esi,4
|
||
add esi,[esp+8]
|
||
mov eax,[0x15AE4+esi*4]
|
||
add eax,ecx
|
||
;----------------------------------------------------------
|
||
.labl_09:
|
||
pop esi
|
||
ret 4
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_13:
|
||
push ecx
|
||
push ecx
|
||
mov eax,[0x51A10]
|
||
push esi
|
||
mov esi,[0x51A14]
|
||
cmp eax,0xFF000000
|
||
jb .labl_00
|
||
test esi,esi
|
||
je .labl_02
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov cl,[0x519ED]
|
||
and dword [esp+8],0
|
||
mov edx,esi
|
||
push ebx
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov bl,dl
|
||
add bl,cl
|
||
mov ecx,[0x52634]
|
||
inc dword [0x52634]
|
||
mov [ecx],bl
|
||
or cl,0xFF
|
||
dec dword [0x51A08]
|
||
jne .labl_01
|
||
mov cl,[0x51A13]
|
||
mov [0x519ED],cl
|
||
pop ebx
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
inc dword [0x51A08]
|
||
shl eax,8
|
||
and dword [0x51A14],0
|
||
mov [0x51A10],eax
|
||
pop esi
|
||
pop ecx
|
||
pop ecx
|
||
ret
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_14:
|
||
mov ecx,[0x51A04]
|
||
mov eax,[edx]
|
||
shr ecx,0xB
|
||
imul ecx,eax
|
||
cmp dword [esp+4],0
|
||
jne .labl_00
|
||
mov [0x51A04],ecx
|
||
mov ecx,0x800
|
||
sub ecx,eax
|
||
shr ecx,5
|
||
add ecx,eax
|
||
mov [edx],ecx
|
||
jmp .labl_01
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
add [0x51A10],ecx
|
||
adc dword [0x51A14],0
|
||
sub [0x51A04],ecx
|
||
mov ecx,eax
|
||
shr ecx,5
|
||
sub eax,ecx
|
||
mov [edx],eax
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
cmp dword [0x51A04],0x1000000
|
||
jnb .labl_02
|
||
shl dword [0x51A04],8
|
||
call cm_pr_13
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
ret 4
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_15:
|
||
xor edx,edx
|
||
inc edx
|
||
shl edx,cl
|
||
mov [eax+0x400],ecx
|
||
lea ecx,[edx-1]
|
||
test ecx,ecx
|
||
jbe .labl_00
|
||
push edi
|
||
lea edi,[eax+4]
|
||
mov eax,0x400
|
||
rep stosd
|
||
pop edi
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
ret
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_16:
|
||
mov eax,[esp+4]
|
||
push ebx
|
||
mov ebx,[edi+0x400]
|
||
push esi
|
||
xor esi,esi
|
||
inc esi
|
||
add eax,eax
|
||
mov [esp+0xC],eax
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov eax,[esp+0xC]
|
||
mov ecx,ebx
|
||
shr eax,cl
|
||
lea edx,[edi+esi*4]
|
||
and eax,1
|
||
push eax
|
||
lea esi,[eax+esi*2]
|
||
call cm_pr_14
|
||
dec ebx
|
||
jne .labl_00
|
||
pop esi
|
||
pop ebx
|
||
ret 4
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_17:
|
||
mov ecx,[esi+0x400]
|
||
push edi
|
||
xor edi,edi
|
||
inc edi
|
||
shl edi,cl
|
||
xor eax,eax
|
||
or edx,edi
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov ecx,edx
|
||
shr edx,1
|
||
mov edi,[esi+edx*4]
|
||
and ecx,1
|
||
sub edi,ecx
|
||
neg ecx
|
||
xor edi,ecx
|
||
shr edi,2
|
||
and edi,0x1FF
|
||
add eax,[0x51A18+edi*4]
|
||
cmp edx,1
|
||
jne .labl_00
|
||
pop edi
|
||
ret
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_18:
|
||
mov ecx,[0x52630]
|
||
push edi
|
||
mov edi,eax
|
||
mov eax,[0x5262C]
|
||
sub ecx,eax
|
||
sub ecx,[esp+8]
|
||
cmp edi,ecx
|
||
jbe .labl_00
|
||
mov edi,ecx
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
mov ecx,[0x52628]
|
||
inc dword [esp+0xC]
|
||
add ecx,eax
|
||
add ecx,[esp+8]
|
||
xor eax,eax
|
||
test edi,edi
|
||
jbe .labl_03
|
||
push esi
|
||
mov esi,ecx
|
||
sub esi,[esp+0x10]
|
||
;----------------------------------------------------------
|
||
.labl_01:
|
||
mov dl,[eax+ecx]
|
||
cmp dl,[esi+eax]
|
||
jne .labl_02
|
||
inc eax
|
||
cmp eax,edi
|
||
jb .labl_01
|
||
;----------------------------------------------------------
|
||
.labl_02:
|
||
pop esi
|
||
;----------------------------------------------------------
|
||
.labl_03:
|
||
pop edi
|
||
ret 8
|
||
;***********************************************************************
|
||
|
||
;* Call: ***************************************************************
|
||
cm_pr_19:
|
||
inc dword [0x5221C]
|
||
mov eax,[0x5221C]
|
||
cmp eax,[0x51A0C]
|
||
jne .labl_00
|
||
and dword [0x5221C],0
|
||
;----------------------------------------------------------
|
||
.labl_00:
|
||
inc dword [0x5262C]
|
||
ret
|
||
;***********************************************************************
|