Function at 0x4ef200
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
push edi
mov edi, ecx
mov ebx, edx
mov dword [ebp - 0x10], ebx
test edi, edi
je 0x4efb94
cmp dword [edi + 0x20], 0
je 0x4efb94
cmp dword [edi + 0x24], 0
je 0x4efb94
mov esi, dword [edi + 0x1c]
test esi, esi
je 0x4efb94
cmp dword [esi], edi
jne 0x4efb94
mov eax, dword [esi + 4]
cmp eax, 0x2a
je 0x4ef270
cmp eax, 0x39
je 0x4ef270
cmp eax, 0x45
je 0x4ef270
cmp eax, 0x49
je 0x4ef270
cmp eax, 0x5b
je 0x4ef270
cmp eax, 0x67
je 0x4ef270
cmp eax, 0x71
je 0x4ef270
cmp eax, 0x29a
jne 0x4efb94
cmp dword [edi + 0xc], 0
je 0x4efb8d
cmp dword [edi + 4], 0
je 0x4ef289
cmp dword [edi], 0
je 0x4efb8d
cmp eax, 0x29a
jne 0x4ef299
cmp ebx, 4
jne 0x4efb8d
cmp dword [edi + 0x10], 0
je 0x4ef30c
cmp dword [esi + 0x14], 0
mov edx, dword [esi + 0x28]
mov dword [esi + 0x28], ebx
je 0x4ef2c6
call fcn.004eea40
cmp dword [edi + 0x10], 0
jne 0x4ef2f8
mov dword [esi + 0x28], 0xffffffff
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [edi + 4], 0
jne 0x4ef2f8
xor eax, eax
mov ecx, 9
cmp edx, 4
cmovg eax, ecx
add edx, edx
sub edx, eax
xor ecx, ecx
cmp ebx, 4
mov eax, 9
cmovg ecx, eax
lea eax, [ebx + ebx]
sub eax, ecx
cmp eax, edx
jg 0x4ef2f8
cmp ebx, 4
jne 0x4ef30c
mov eax, dword [esi + 4]
cmp eax, 0x29a
jne 0x4ef31f
cmp dword [edi + 4], 0
je 0x4ef3dc
mov dword [edi + 0x18], str.buffer_error
mov eax, 0xfffffffb
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 0x2a
jne 0x4ef3dc
mov ecx, dword [esi + 0x30]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [esi + 0x88], 2
mov dword [ebp - 8], ecx
jge 0x4ef370
mov eax, dword [esi + 0x84]
cmp eax, 2
jl 0x4ef370
cmp eax, 6
jge 0x4ef35a
mov edx, 0x40
lea eax, [edx + 0x20]
jmp 0x4ef375
jne 0x4ef366
mov edx, 0x80
lea eax, [edx + 0x20]
jmp 0x4ef375
mov edx, 0xc0
lea eax, [edx + 0x20]
jmp 0x4ef375
xor edx, edx
lea eax, [edx + 0x20]
or ecx, edx
cmp dword [esi + 0x6c], 0
je 0x4ef382
mov ecx, dword [ebp - 8]
or ecx, eax
mov eax, 0x8421085
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 4
inc ecx
mov edx, ecx
shl edx, 5
sub edx, ecx
mov ecx, esi
call fcn.004eea90
cmp dword [esi + 0x6c], 0
je 0x4ef3bd
movzx edx, word [edi + 0x32]
mov ecx, esi
call fcn.004eea90
movzx edx, word [edi + 0x30]
mov ecx, esi
call fcn.004eea90
mov dword [edi + 0x30], 1
mov ecx, edi
mov dword [esi + 4], 0x71
call fcn.004eea40
cmp dword [esi + 0x14], 0
jne 0x4ef2b6
cmp dword [esi + 4], 0x39
jne 0x4ef5fb
mov dword [edi + 0x30], 0
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], 0x1f
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0x8b
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 8
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov dword [esi + 0x14], edx
test eax, eax
jne 0x4ef4c2
mov eax, dword [esi + 8]
mov byte [edx + eax], 0
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x84]
inc edx
mov dword [esi + 0x14], edx
cmp eax, 9
jne 0x4ef47a
mov cl, 2
jmp 0x4ef48e
cmp dword [esi + 0x88], 2
jge 0x4ef48c
cmp eax, 2
jl 0x4ef48c
xor cl, cl
jmp 0x4ef48e
mov cl, 4
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
mov dword [esi + 0x14], ecx
mov byte [ecx + eax], 0xa
mov ecx, edi
inc dword [esi + 0x14]
mov dword [esi + 4], 0x71
call fcn.004eea40
cmp dword [esi + 0x14], 0
jne 0x4ef2b6
jmp 0x4ef5fb
mov ecx, dword [eax + 0x2c]
mov eax, dword [eax + 0x10]
neg ecx
sbb cl, cl
and cl, 2
neg eax
sbb al, al
and al, 4
add cl, al
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + 0x1c]
neg eax
sbb al, al
and al, 8
add cl, al
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + 0x24]
neg eax
sbb al, al
and al, 0x10
add cl, al
mov eax, dword [esi + 0x1c]
cmp dword [eax], 0
setne al
add cl, al
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 4]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 5]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 6]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 7]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x84]
inc edx
mov dword [esi + 0x14], edx
cmp eax, 9
jne 0x4ef56a
mov cl, 2
jmp 0x4ef57e
cmp dword [esi + 0x88], 2
jge 0x4ef57c
cmp eax, 2
jl 0x4ef57c
xor cl, cl
jmp 0x4ef57e
mov cl, 4
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
mov al, byte [eax + 0xc]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov dword [esi + 0x14], edx
cmp dword [eax + 0x10], 0
je 0x4ef5cc
mov ecx, dword [esi + 8]
movzx eax, byte [eax + 0x14]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
inc edx
mov ecx, dword [esi + 8]
mov dword [esi + 0x14], edx
movzx eax, byte [eax + 0x15]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
inc edx
mov dword [esi + 0x14], edx
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x4ef5ed
mov eax, dword [esi + 8]
test eax, eax
je 0x4ef5ea
mov ecx, dword [edi + 0x30]
push edx
mov edx, eax
call fcn.004ecfc0
add esp, 4
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], 0
mov dword [esi + 4], 0x45
mov eax, dword [esi + 4]
cmp eax, 0x45
jne 0x4ef752
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x10], 0
je 0x4ef749
movzx eax, word [eax + 0x14]
sub eax, dword [esi + 0x20]
mov edx, dword [esi + 0x14]
mov ecx, edx
mov ebx, dword [esi + 0xc]
mov dword [ebp - 4], eax
add eax, edx
mov dword [ebp - 8], edx
cmp eax, ebx
jbe 0x4ef6f2
mov eax, dword [esi + 0x1c]
sub ebx, ecx
push ebx
mov dword [ebp - 0xc], ebx
mov eax, dword [eax + 0x10]
add eax, dword [esi + 0x20]
push eax
mov eax, dword [esi + 8]
add eax, ecx
push eax
call fcn.00435260
mov eax, dword [esi + 0x1c]
add esp, 0xc
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x4ef683
mov eax, dword [ebp - 8]
cmp ecx, eax
jbe 0x4ef683
mov edx, dword [esi + 8]
sub ecx, eax
add edx, eax
jne 0x4ef674
xor eax, eax
jmp 0x4ef680
push ecx
mov ecx, dword [edi + 0x30]
call fcn.004ecfc0
add esp, 4
mov dword [edi + 0x30], eax
add dword [esi + 0x20], ebx
mov ebx, dword [edi + 0x1c]
mov ecx, ebx
mov dword [ebp - 8], ebx
call fcn.004f2b50
mov eax, dword [ebx + 0x14]
mov ebx, dword [edi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x4ef6ce
mov eax, dword [ebp - 8]
push ebx
push dword [eax + 0x10]
push dword [edi + 0xc]
call fcn.00435260
mov ecx, dword [ebp - 8]
add esp, 0xc
add dword [edi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x4ef6ce
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov ecx, dword [esi + 0x14]
test ecx, ecx
jne 0x4ef2b6
mov eax, dword [ebp - 4]
sub eax, dword [ebp - 0xc]
mov ebx, dword [esi + 0xc]
mov dword [ebp - 4], eax
add eax, ecx
mov dword [ebp - 8], ecx
cmp eax, ebx
ja 0x4ef633
mov eax, dword [esi + 0x1c]
mov ebx, dword [ebp - 4]
push ebx
mov eax, dword [eax + 0x10]
add eax, dword [esi + 0x20]
push eax
mov eax, dword [esi + 8]
add eax, ecx
push eax
call fcn.00435260
mov ecx, dword [esi + 0x14]
add esp, 0xc
mov eax, dword [esi + 0x1c]
add ecx, ebx
mov dword [esi + 0x14], ecx
cmp dword [eax + 0x2c], 0
je 0x4ef742
mov eax, dword [ebp - 8]
cmp ecx, eax
jbe 0x4ef742
mov edx, dword [esi + 8]
sub ecx, eax
add edx, eax
jne 0x4ef733
xor eax, eax
jmp 0x4ef73f
push ecx
mov ecx, dword [edi + 0x30]
call fcn.004ecfc0
add esp, 4
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], 0
mov dword [esi + 4], 0x49
jmp 0x4ef75b
cmp eax, 0x49
jne 0x4ef85b
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x1c], 0
je 0x4ef852
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp - 8], ecx
cmp ebx, dword [esi + 0xc]
jne 0x4ef7f4
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x4ef79e
cmp ebx, ecx
jbe 0x4ef79e
mov edx, dword [esi + 8]
sub ebx, ecx
add edx, ecx
jne 0x4ef78f
xor eax, eax
jmp 0x4ef79b
mov ecx, dword [edi + 0x30]
push ebx
call fcn.004ecfc0
add esp, 4
mov dword [edi + 0x30], eax
mov ebx, dword [edi + 0x1c]
mov ecx, ebx
mov dword [ebp - 8], ebx
call fcn.004f2b50
mov eax, dword [ebx + 0x14]
mov ebx, dword [edi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x4ef7e6
mov eax, dword [ebp - 8]
push ebx
push dword [eax + 0x10]
push dword [edi + 0xc]
call fcn.00435260
mov ecx, dword [ebp - 8]
add esp, 0xc
add dword [edi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x4ef7e6
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov ebx, dword [esi + 0x14]
test ebx, ebx
jne 0x4ef2b6
mov dword [ebp - 8], ebx
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [eax + 0x1c]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [esi + 0x14]
inc ebx
mov dword [esi + 0x14], ebx
test dl, dl
je 0x4ef81f
mov ecx, dword [ebp - 8]
jmp 0x4ef770
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x4ef84b
mov eax, dword [ebp - 8]
cmp ebx, eax
jbe 0x4ef84b
mov edx, dword [esi + 8]
sub ebx, eax
add edx, eax
jne 0x4ef83c
xor eax, eax
jmp 0x4ef848
mov ecx, dword [edi + 0x30]
push ebx
call fcn.004ecfc0
add esp, 4
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], 0
mov dword [esi + 4], 0x5b
jmp 0x4ef864
cmp eax, 0x5b
jne 0x4ef974
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x24], 0
je 0x4ef968
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp - 8], ecx
nop dword [eax]
cmp ebx, dword [esi + 0xc]
jne 0x4ef904
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x4ef8ae
cmp ebx, ecx
jbe 0x4ef8ae
mov edx, dword [esi + 8]
sub ebx, ecx
add edx, ecx
jne 0x4ef89f
xor eax, eax
jmp 0x4ef8ab
mov ecx, dword [edi + 0x30]
push ebx
call fcn.004ecfc0
add esp, 4
mov dword [edi + 0x30], eax
mov ebx, dword [edi + 0x1c]
mov ecx, ebx
mov dword [ebp - 8], ebx
call fcn.004f2b50
mov eax, dword [ebx + 0x14]
mov ebx, dword [edi + 0x10]
cmp eax, ebx
cmovbe ebx, eax
test ebx, ebx
je 0x4ef8f6
mov eax, dword [ebp - 8]
push ebx
push dword [eax + 0x10]
push dword [edi + 0xc]
call fcn.00435260
mov ecx, dword [ebp - 8]
add esp, 0xc
add dword [edi + 0xc], ebx
add dword [ecx + 0x10], ebx
add dword [edi + 0x14], ebx
sub dword [edi + 0x10], ebx
sub dword [ecx + 0x14], ebx
jne 0x4ef8f6
mov eax, dword [ecx + 8]
mov dword [ecx + 0x10], eax
mov ebx, dword [esi + 0x14]
test ebx, ebx
jne 0x4ef2b6
mov dword [ebp - 8], ebx
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [eax + 0x24]
mov dl, byte [ecx + eax]
lea eax, [ecx + 1]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [esi + 0x14]
inc ebx
mov dword [esi + 0x14], ebx
test dl, dl
je 0x4ef92f
mov ecx, dword [ebp - 8]
jmp 0x4ef880
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x4ef968
mov eax, dword [ebp - 8]
cmp ebx, eax
jbe 0x4ef968
mov edx, dword [esi + 8]
sub ebx, eax
add edx, eax
jne 0x4ef959
mov ebx, dword [ebp - 0x10]
xor eax, eax
mov dword [edi + 0x30], eax
mov dword [esi + 4], 0x67
jmp 0x4ef979
mov ecx, dword [edi + 0x30]
push ebx
call fcn.004ecfc0
add esp, 4
mov dword [edi + 0x30], eax
mov ebx, dword [ebp - 0x10]
mov dword [esi + 4], 0x67
jmp 0x4ef979
cmp eax, 0x67
jne 0x4ef9dc
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x4ef9c4
mov edx, dword [esi + 0x14]
lea eax, [edx + 2]
cmp eax, dword [esi + 0xc]
jbe 0x4ef99f
mov ecx, edi
call fcn.004eea40
mov edx, dword [esi + 0x14]
test edx, edx
jne 0x4ef2b6
mov ecx, dword [esi + 8]
movzx eax, byte [edi + 0x30]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x31]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov dword [edi + 0x30], 0
mov ecx, edi
mov dword [esi + 4], 0x71
call fcn.004eea40
cmp dword [esi + 0x14], 0
jne 0x4ef2b6
cmp dword [edi + 4], 0
jne 0x4ef9fd
cmp dword [esi + 0x74], 0
jne 0x4ef9fd
test ebx, ebx
je 0x4ef2bd
cmp dword [esi + 4], 0x29a
je 0x4efa8f
mov eax, dword [esi + 0x84]
test eax, eax
jne 0x4efa10
push ebx
push esi
call fcn.004ee150
jmp 0x4efa44
mov ecx, dword [esi + 0x88]
cmp ecx, 2
jne 0x4efa26
mov edx, ebx
mov ecx, esi
call fcn.004ed2a0
jmp 0x4efa47
cmp ecx, 3
jne 0x4efa36
mov edx, ebx
mov ecx, esi
call fcn.004ed490
jmp 0x4efa47
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x566690]
push ebx
push esi
call eax
add esp, 8
cmp eax, 2
je 0x4efa51
cmp eax, 3
jne 0x4efa58
mov dword [esi + 4], 0x29a
test eax, eax
je 0x4efb73
cmp eax, 2
je 0x4efb73
cmp eax, 1
jne 0x4efa8f
push 0
push 0
xor edx, edx
mov ecx, esi
call fcn.004f4590
add esp, 8
mov ecx, edi
call fcn.004eea40
cmp dword [edi + 0x10], 0
je 0x4ef2b6
cmp ebx, 4
jne 0x4ef2bd
mov eax, dword [esi + 0x18]
test eax, eax
jg 0x4efaa9
pop edi
pop esi
lea eax, [ebx - 3]
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x4efb3b
mov edx, dword [esi + 0x14]
movzx eax, byte [edi + 0x30]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x31]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x32]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0x33]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 8]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 9]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0xa]
mov byte [edx + ecx], al
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
inc edx
mov dword [esi + 0x14], edx
movzx eax, byte [edi + 0xb]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
jmp 0x4efb51
movzx edx, word [edi + 0x32]
mov ecx, esi
call fcn.004eea90
movzx edx, word [edi + 0x30]
mov ecx, esi
call fcn.004eea90
mov ecx, edi
call fcn.004eea40
mov eax, dword [esi + 0x18]
test eax, eax
jle 0x4efb64
neg eax
mov dword [esi + 0x18], eax
xor eax, eax
cmp dword [esi + 0x14], eax
pop edi
pop esi
sete al
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [edi + 0x10], 0
jne 0x4ef2bd
pop edi
mov dword [esi + 0x28], 0xffffffff
xor eax, eax
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [edi + 0x18], str.stream_error
pop edi
pop esi
mov eax, 0xfffffffe
pop ebx
mov esp, ebp
pop ebp
ret