Function at 0x44af6c
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 0x44b6f5
mov esi, dword [edi + 0x1c]
test esi, esi
je 0x44b6f5
cmp eax, 4
ja 0x44b6f5
xor ebx, ebx
cmp dword [edi + 0xc], ebx
je 0x44b6ed
cmp dword [edi], ebx
jne 0x44afae
cmp dword [edi + 4], ebx
jne 0x44b6ed
cmp dword [esi + 4], 0x29a
jne 0x44afc0
cmp eax, 4
jne 0x44b6ed
cmp dword [edi + 0x10], ebx
je 0x44b5bb
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 0x44b25b
cmp dword [esi + 0x18], 2
jne 0x44b1c9
mov dword [edi + 0x30], ebx
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 0x44b098
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 0x44b069
mov cl, 2
jmp 0x44b07b
cmp dword [esi + 0x88], 2
jge 0x44b079
mov cl, bl
cmp eax, 2
jge 0x44b07b
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 0x44b1c0
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 0x44b137
mov cl, 2
jmp 0x44b14d
cmp dword [esi + 0x88], 2
jge 0x44b14b
cmp eax, 2
jl 0x44b14b
xor ebx, ebx
mov cl, bl
jmp 0x44b14f
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 0x44b19a
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 0x44b1bb
cmp dword [esi + 8], 0
jne 0x44b1a9
mov eax, ebx
jmp 0x44b1b8
push edx
push dword [esi + 8]
push dword [edi + 0x30]
call fcn.0043cc64
add esp, 0xc
mov dword [edi + 0x30], eax
mov dword [esi + 0x20], ebx
push 0x45
pop eax
mov dword [esi + 4], eax
jmp 0x44b25b
mov eax, dword [esi + 0x30]
shl eax, 0xc
sub eax, 0x7800
cmp dword [esi + 0x88], 2
jge 0x44b20a
mov ecx, dword [esi + 0x84]
cmp ecx, 2
jl 0x44b20a
cmp ecx, 6
jge 0x44b1f4
push 0x40
pop edx
push 0x60
jmp 0x44b20e
jne 0x44b200
mov edx, 0x80
lea ecx, [edx + 0x20]
jmp 0x44b20f
mov edx, 0xc0
lea ecx, [edx + 0x20]
jmp 0x44b20f
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.00444fb8
xor ebx, ebx
pop ecx
pop ecx
cmp dword [esi + 0x6c], ebx
je 0x44b254
movzx eax, word [edi + 0x32]
push eax
push esi
call fcn.00444fb8
movzx eax, word [edi + 0x30]
push eax
push esi
call fcn.00444fb8
add esp, 0x10
mov dword [edi + 0x30], 1
mov eax, dword [esi + 4]
cmp eax, 0x45
jne 0x44b31f
mov edx, dword [esi + 0x1c]
cmp dword [edx + 0x10], ebx
je 0x44b319
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
jmp 0x44b2db
cmp ebx, dword [esi + 0xc]
jne 0x44b2b9
cmp dword [edx + 0x2c], 0
je 0x44b2a5
cmp ebx, ecx
jbe 0x44b2a5
mov eax, dword [esi + 8]
sub ebx, ecx
add eax, ecx
je 0x44b2a2
push ebx
push eax
push dword [edi + 0x30]
call fcn.0043cc64
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.0043ef8a
pop ecx
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ecx, dword [esi + 0xc]
je 0x44b2e4
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 0x44b27d
mov edx, dword [esi + 0x1c]
cmp dword [edx + 0x2c], 0
je 0x44b30d
cmp ebx, ecx
jbe 0x44b30d
mov eax, dword [esi + 8]
sub ebx, ecx
add eax, ecx
je 0x44b307
push ebx
push eax
push dword [edi + 0x30]
call fcn.0043cc64
add esp, 0xc
mov dword [edi + 0x30], eax
mov edx, dword [esi + 0x1c]
mov eax, dword [esi + 0x20]
cmp eax, dword [edx + 0x14]
jne 0x44b35a
and dword [esi + 0x20], 0
push 0x49
pop eax
mov dword [esi + 4], eax
cmp eax, 0x49
jne 0x44b3f0
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x1c], 0
je 0x44b3ea
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ebx, dword [esi + 0xc]
jne 0x44b383
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x44b36f
cmp ebx, ecx
jbe 0x44b36f
mov eax, dword [esi + 8]
sub ebx, ecx
add eax, ecx
jne 0x44b35f
jmp 0x44b36c
mov eax, dword [esi + 4]
jmp 0x44b31f
push ebx
push eax
push dword [edi + 0x30]
call fcn.0043cc64
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.0043ef8a
pop ecx
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ecx, dword [esi + 0xc]
je 0x44b3b3
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 0x44b3ba
jmp 0x44b33d
mov dword [ebp - 4], 1
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x44b3e0
cmp ebx, ecx
jbe 0x44b3e0
mov eax, dword [esi + 8]
sub ebx, ecx
add eax, ecx
je 0x44b3dd
push ebx
push eax
push dword [edi + 0x30]
call fcn.0043cc64
add esp, 0xc
mov dword [edi + 0x30], eax
cmp dword [ebp - 4], 0
jne 0x44b42b
and dword [esi + 0x20], 0
push 0x5b
pop eax
mov dword [esi + 4], eax
cmp eax, 0x5b
jne 0x44b4c2
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x24], 0
je 0x44b4bc
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ebx, dword [esi + 0xc]
jne 0x44b454
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x44b440
cmp ebx, ecx
jbe 0x44b440
mov eax, dword [esi + 8]
sub ebx, ecx
add eax, ecx
jne 0x44b430
jmp 0x44b43d
mov eax, dword [esi + 4]
jmp 0x44b3f0
push ebx
push eax
push dword [edi + 0x30]
call fcn.0043cc64
add esp, 0xc
mov dword [edi + 0x30], eax
push edi
call fcn.0043ef8a
pop ecx
mov ecx, dword [esi + 0x14]
mov ebx, ecx
mov dword [ebp + 8], ecx
cmp ecx, dword [esi + 0xc]
je 0x44b484
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 0x44b48b
jmp 0x44b40e
mov dword [ebp - 4], 1
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], 0
je 0x44b4b1
cmp ebx, ecx
jbe 0x44b4b1
mov eax, dword [esi + 8]
sub ebx, ecx
add eax, ecx
je 0x44b4ae
push ebx
push eax
push dword [edi + 0x30]
call fcn.0043cc64
add esp, 0xc
mov dword [edi + 0x30], eax
cmp dword [ebp - 4], 0
je 0x44b4bc
mov eax, dword [esi + 4]
jmp 0x44b4c2
push 0x67
pop eax
mov dword [esi + 4], eax
xor ebx, ebx
cmp eax, 0x67
jne 0x44b517
mov eax, dword [esi + 0x1c]
cmp dword [eax + 0x2c], ebx
je 0x44b510
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 0xc]
lea eax, [edx + 2]
cmp eax, ecx
jbe 0x44b4eb
push edi
call fcn.0043ef8a
mov edx, dword [esi + 0x14]
pop ecx
mov ecx, dword [esi + 0xc]
lea eax, [edx + 2]
cmp eax, ecx
ja 0x44b517
mov ecx, dword [esi + 8]
mov al, byte [edi + 0x30]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov al, byte [edi + 0x31]
mov byte [edx + ecx], al
inc dword [esi + 0x14]
mov dword [edi + 0x30], ebx
mov dword [esi + 4], 0x71
cmp dword [esi + 0x14], ebx
je 0x44b5a5
push edi
call fcn.0043ef8a
pop ecx
cmp dword [edi + 0x10], ebx
je 0x44b6e5
mov ebx, dword [ebp + 0xc]
mov eax, 0x29a
cmp dword [esi + 4], eax
jne 0x44b543
cmp dword [edi + 4], 0
jne 0x44b5bb
cmp dword [edi + 4], 0
jne 0x44b560
cmp dword [esi + 0x74], 0
jne 0x44b560
test ebx, ebx
je 0x44b612
cmp dword [esi + 4], eax
je 0x44b612
imul eax, dword [esi + 0x84], 0xc
push ebx
push esi
call dword [eax + 0x6e2818]
pop ecx
pop ecx
cmp eax, 2
je 0x44b57b
cmp eax, 3
jne 0x44b582
mov dword [esi + 4], 0x29a
test eax, eax
je 0x44b6df
cmp eax, 2
je 0x44b6df
cmp eax, 1
jne 0x44b612
cmp ebx, eax
jne 0x44b5ca
push esi
call fcn.0043acce
pop ecx
jmp 0x44b601
cmp dword [edi + 4], ebx
mov ebx, dword [ebp + 0xc]
jne 0x44b533
cmp ebx, dword [ebp - 8]
jg 0x44b533
cmp ebx, 4
je 0x44b533
mov eax, dword [str.buffer_error]
mov dword [edi + 0x18], eax
push 0xfffffffffffffffb
jmp 0x44b6f7
xor eax, eax
push eax
push eax
push eax
push esi
call fcn.0043b109
add esp, 0x10
cmp ebx, 3
jne 0x44b601
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.005261d0
add esp, 0xc
push edi
call fcn.0043ef8a
cmp dword [edi + 0x10], 0
pop ecx
je 0x44b6e5
cmp ebx, 4
jne 0x44b6e9
cmp dword [esi + 0x18], 0
jg 0x44b629
xor eax, eax
inc eax
jmp 0x44b6f8
cmp dword [esi + 0x18], 2
jne 0x44b6a9
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 0x44b6c2
movzx eax, word [edi + 0x32]
push eax
push esi
call fcn.00444fb8
movzx eax, word [edi + 0x30]
push eax
push esi
call fcn.00444fb8
add esp, 0x10
push edi
call fcn.0043ef8a
mov eax, dword [esi + 0x18]
pop ecx
test eax, eax
jle 0x44b6d5
neg eax
mov dword [esi + 0x18], eax
xor eax, eax
cmp dword [esi + 0x14], eax
sete al
jmp 0x44b6f8
cmp dword [edi + 0x10], 0
jne 0x44b6e9
or dword [esi + 0x28], 0xffffffff
xor eax, eax
jmp 0x44b6f8
mov eax, dword [str.stream_error]
mov dword [edi + 0x18], eax
push 0xfffffffffffffffe
pop eax
pop edi
pop esi
pop ebx
leave
ret