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

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
test edi, edi
je 0x630118
mov esi, dword [edi + 0x1c]
test esi, esi
je 0x630118
cmp eax, 5
ja 0x630118
xor ebx, ebx
cmp dword [edi + 0xc], ebx
je 0x630110
cmp dword [edi], ebx
jne 0x62f998
cmp dword [edi + 4], ebx
jne 0x630110
cmp dword [esi + 4], 0x29a
jne 0x62f9aa
cmp eax, 4
jne 0x630110
cmp dword [edi + 0x10], ebx
je 0x62ff7d
cmp dword [esi + 4], 0x2a
mov ecx, dword [esi + 0x28]
mov dword [esi], edi
mov dword [ebp - 8], ecx
mov dword [esi + 0x28], eax
jne 0x62fc4d
cmp dword [esi + 0x18], 2
jne 0x62fbb4
push ebx
push ebx
push ebx
call fcn.0062eda7
mov dword [edi + 0x30], eax
add esp, 0xc
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov byte [ecx + eax], 0x1f
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], 0x8b
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], 8
mov edx, dword [esi + 0x14]
mov ebx, dword [esi + 0x1c]
inc edx
mov dword [esi + 0x14], edx
test ebx, ebx
jne 0x62fa8d
mov eax, dword [esi + 8]
mov byte [edx + eax], bl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], bl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], bl
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x84]
inc edx
mov dword [esi + 0x14], edx
cmp eax, 9
jne 0x62fa5e
mov cl, 2
jmp 0x62fa70
cmp dword [esi + 0x88], 2
jge 0x62fa6e
mov cl, bl
cmp eax, 2
jge 0x62fa70
mov cl, 4
mov eax, dword [esi + 8]
push 0x71
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 8]
mov byte [ecx + eax], 0xb
inc dword [esi + 0x14]
jmp 0x62fbab
cmp dword [ebx + 0x24], 0
sete cl
dec cl
and cl, 0x10
cmp dword [ebx + 0x2c], 0
sete al
dec al
and al, 2
add cl, al
cmp dword [ebx + 0x1c], 0
sete al
dec al
and al, 8
add cl, al
cmp dword [ebx + 0x10], 0
sete al
dec al
and al, 4
add cl, al
cmp dword [ebx], 0
setne al
add cl, al
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 8]
mov al, byte [eax + 4]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 8]
mov al, byte [eax + 5]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [eax + 6]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, 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 0x62fb2c
mov cl, 2
jmp 0x62fb42
cmp dword [esi + 0x88], 2
jge 0x62fb40
cmp eax, 2
jl 0x62fb40
xor ebx, ebx
mov cl, bl
jmp 0x62fb44
mov cl, 4
xor ebx, ebx
mov eax, dword [esi + 8]
mov byte [edx + eax], cl
inc dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
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], ebx
je 0x62fb8f
mov al, byte [eax + 0x14]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [eax + 0x15]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], ebx
je 0x62fba6
push edx
push dword [esi + 8]
push dword [edi + 0x30]
call fcn.0062eda7
add esp, 0xc
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], ebx
push 0x45
pop eax
mov dword [esi + 4], eax
jmp 0x62fc4d
mov eax, dword [esi + 0x30]
shl eax, 0xc
sub eax, 0x7800
cmp dword [esi + 0x88], 2
jge 0x62fbf5
mov ecx, dword [esi + 0x84]
cmp ecx, 2
jl 0x62fbf5
cmp ecx, 6
jge 0x62fbdf
push 0x40
pop edx
push 0x60
jmp 0x62fbf9
jne 0x62fbeb
mov edx, 0x80
lea ecx, [edx + 0x20]
jmp 0x62fbfa
mov edx, 0xc0
lea ecx, [edx + 0x20]
jmp 0x62fbfa
mov edx, ebx
push 0x20
pop ecx
cmp dword [esi + 0x6c], ebx
push 0x1f
cmove ecx, edx
mov dword [esi + 4], 0x71
or ecx, eax
xor edx, edx
mov eax, ecx
pop ebx
div ebx
sub ecx, edx
add ecx, ebx
push ecx
push esi
call fcn.0063103d
xor ebx, ebx
pop ecx
pop ecx
cmp dword [esi + 0x6c], ebx
je 0x62fc3f
movzx eax, word [edi + 0x32]
push eax
push esi
call fcn.0063103d
movzx eax, word [edi + 0x30]
push eax
push esi
call fcn.0063103d
add esp, 0x10
push ebx
push ebx
push ebx
call fcn.00631069
add esp, 0xc
mov dword [edi + 0x30], eax
mov eax, dword [esi + 4]
cmp eax, 0x45
jne 0x62fd11
mov edx, dword [esi + 0x1c]
cmp dword [edx + 0x10], ebx
je 0x62fd0b
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
jmp 0x62fccb
cmp ebx, dword [esi + 0xc]
jne 0x62fca9
cmp dword [edx + 0x2c], 0
je 0x62fc95
cmp ebx, ecx
jbe 0x62fc95
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.0062eda7
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.00630e10
pop ecx
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ecx, dword [esi + 0xc]
je 0x62fcd4
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 8]
mov edx, dword [eax + 0x10]
mov eax, dword [esi + 0x20]
mov al, byte [edx + eax]
mov byte [ebx + ecx], al
mov ebx, dword [esi + 0x14]
mov ecx, dword [ebp + 8]
inc ebx
inc dword [esi + 0x20]
mov dword [esi + 0x14], ebx
mov edx, dword [esi + 0x1c]
movzx eax, word [edx + 0x14]
cmp dword [esi + 0x20], eax
jb 0x62fc6f
mov edx, dword [esi + 0x1c]
cmp dword [edx + 0x2c], 0
je 0x62fcfb
cmp ebx, ecx
jbe 0x62fcfb
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.0062eda7
mov dword [edi + 0x30], eax
add esp, 0xc
mov edx, dword [esi + 0x1c]
mov eax, dword [esi + 0x20]
cmp eax, dword [edx + 0x14]
jne 0x62fd9c
and dword [esi + 0x20], 0
push 0x49
pop eax
mov dword [esi + 4], eax
cmp eax, 0x49
jne 0x62fde3
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x1c], 0
je 0x62fddd
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ebx, dword [esi + 0xc]
jne 0x62fd6c
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x62fd58
cmp ebx, ecx
jbe 0x62fd58
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.0062eda7
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.00630e10
pop ecx
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ecx, dword [esi + 0xc]
je 0x62fda4
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [eax + 0x1c]
mov dl, byte [ecx + eax]
movzx eax, dl
mov dword [ebp - 4], eax
lea eax, [ecx + 1]
mov ecx, dword [ebp + 8]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [esi + 0x14]
inc ebx
cmp dword [ebp - 4], 0
mov dword [esi + 0x14], ebx
je 0x62fdab
jmp 0x62fd2f
mov eax, dword [esi + 4]
jmp 0x62fd11
mov dword [ebp - 4], 1
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x62fdcf
cmp ebx, ecx
jbe 0x62fdcf
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.0062eda7
add esp, 0xc
mov dword [edi + 0x30], eax
cmp dword [ebp - 4], 0
jne 0x62fe6e
and dword [esi + 0x20], 0
push 0x5b
pop eax
mov dword [esi + 4], eax
cmp eax, 0x5b
jne 0x62feb2
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x24], 0
je 0x62feac
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ebx, dword [esi + 0xc]
jne 0x62fe3e
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x62fe2a
cmp ebx, ecx
jbe 0x62fe2a
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.0062eda7
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.00630e10
pop ecx
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ecx, dword [esi + 0xc]
je 0x62fe76
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov eax, dword [eax + 0x24]
mov dl, byte [ecx + eax]
movzx eax, dl
mov dword [ebp - 4], eax
lea eax, [ecx + 1]
mov ecx, dword [ebp + 8]
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
mov byte [ebx + eax], dl
mov ebx, dword [esi + 0x14]
inc ebx
cmp dword [ebp - 4], 0
mov dword [esi + 0x14], ebx
je 0x62fe7d
jmp 0x62fe01
mov eax, dword [esi + 4]
jmp 0x62fde3
mov dword [ebp - 4], 1
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x62fea1
cmp ebx, ecx
jbe 0x62fea1
mov eax, dword [esi + 8]
sub ebx, ecx
push ebx
add eax, ecx
push eax
push dword [edi + 0x30]
call fcn.0062eda7
add esp, 0xc
mov dword [edi + 0x30], eax
cmp dword [ebp - 4], 0
je 0x62feac
mov eax, dword [esi + 4]
jmp 0x62feb2
push 0x67
pop eax
mov dword [esi + 4], eax
xor ebx, ebx
cmp eax, 0x67
jne 0x62ff12
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], ebx
je 0x62ff0b
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 0xc]
lea eax, [edx + 2]
cmp eax, ecx
jbe 0x62fedb
push edi
call fcn.00630e10
mov edx, dword [esi + 0x14]
pop ecx
mov ecx, dword [esi + 0xc]
lea eax, [edx + 2]
cmp eax, ecx
ja 0x62ff12
mov ecx, dword [esi + 8]
mov al, byte [edi + 0x30]
push ebx
push ebx
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [edi + 0x31]
push ebx
mov byte [edx + ecx], al
inc dword [esi + 0x14]
call fcn.0062eda7
add esp, 0xc
mov dword [edi + 0x30], eax
mov dword [esi + 4], 0x71
cmp dword [esi + 0x14], ebx
je 0x62ff6b
push edi
call fcn.00630e10
pop ecx
cmp dword [edi + 0x10], ebx
je 0x630108
mov ebx, dword [ebp + 0xc]
mov eax, 0x29a
cmp dword [esi + 4], eax
jne 0x62ff3a
cmp dword [edi + 4], 0
jne 0x62ff7d
cmp dword [edi + 4], 0
jne 0x62ff57
cmp dword [esi + 0x74], 0
jne 0x62ff57
test ebx, ebx
je 0x630035
cmp dword [esi + 4], eax
je 0x630035
mov eax, dword [esi + 0x88]
push ebx
push esi
cmp eax, 2
jne 0x62ff8c
call fcn.0063091a
jmp 0x62ffa5
cmp dword [edi + 4], ebx
mov ebx, dword [ebp + 0xc]
jne 0x62ff2a
cmp ebx, dword [ebp - 8]
jg 0x62ff2a
cmp ebx, 4
je 0x62ff2a
mov eax, dword [str.buffer_error]
mov dword [edi + 0x18], eax
push 0xfffffffffffffffb
jmp 0x63011a
cmp eax, 3
jne 0x62ff98
call fcn.00630a26
jmp 0x62ffa5
imul eax, dword [esi + 0x84], 0xc
call dword [eax + 0x747da8]
pop ecx
pop ecx
cmp eax, 2
je 0x62ffb1
cmp eax, 3
jne 0x62ffb8
mov dword [esi + 4], 0x29a
test eax, eax
je 0x630102
cmp eax, 2
je 0x630102
cmp eax, 1
jne 0x630035
cmp ebx, eax
jne 0x62ffdb
push esi
call fcn.00631bb7
pop ecx
jmp 0x630024
cmp ebx, 5
je 0x630024
xor eax, eax
push eax
push eax
push eax
push esi
call fcn.00631ff3
add esp, 0x10
cmp ebx, 3
jne 0x630024
mov eax, dword [esi + 0x44]
xor edx, edx
mov ecx, dword [esi + 0x4c]
mov word [eax + ecx*2 - 2], dx
mov eax, dword [esi + 0x4c]
lea eax, [eax*2 - 2]
push eax
push edx
push dword [esi + 0x44]
call fcn.00668940
xor eax, eax
add esp, 0xc
cmp dword [esi + 0x74], eax
jne 0x630024
mov dword [esi + 0x6c], eax
mov dword [esi + 0x5c], eax
push edi
call fcn.00630e10
cmp dword [edi + 0x10], 0
pop ecx
je 0x630108
cmp ebx, 4
jne 0x63010c
cmp dword [esi + 0x18], 0
jg 0x63004c
xor eax, eax
inc eax
jmp 0x63011b
cmp dword [esi + 0x18], 2
jne 0x6300cc
mov ecx, dword [esi + 0x14]
mov al, byte [edi + 0x30]
mov edx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov al, byte [edi + 0x31]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov al, byte [edi + 0x32]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov al, byte [edi + 0x33]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov al, byte [edi + 8]
mov ecx, dword [esi + 8]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [edi + 9]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [edi + 0xa]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [edi + 0xb]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
jmp 0x6300e5
movzx eax, word [edi + 0x32]
push eax
push esi
call fcn.0063103d
movzx eax, word [edi + 0x30]
push eax
push esi
call fcn.0063103d
add esp, 0x10
push edi
call fcn.00630e10
mov eax, dword [esi + 0x18]
pop ecx
test eax, eax
jle 0x6300f8
neg eax
mov dword [esi + 0x18], eax
xor eax, eax
cmp dword [esi + 0x14], eax
sete al
jmp 0x63011b
cmp dword [edi + 0x10], 0
jne 0x63010c
or dword [esi + 0x28], 0xffffffff
xor eax, eax
jmp 0x63011b
mov eax, dword [str.stream_error]
mov dword [edi + 0x18], eax
push 0xfffffffffffffffe
pop eax
pop edi
pop esi
pop ebx
leave
ret