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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
xor edi, edi
mov ebp, edx
mov rsi, rcx
test rcx, rcx
je 0x1800ade06
mov rbx, qword [rcx + 0x28]
test rbx, rbx
je 0x1800ade06
cmp qword [rcx + 0x10], rdi
je 0x1800addfb
cmp qword [rcx], rdi
je 0x180035c02
cmp dword [rbx + 8], 0x29a
je 0x180035d93
cmp dword [rcx + 0x18], edi
je 0x1800add01
cmp dword [rbx + 8], 0x2a
mov r9d, 2
mov r15d, dword [rbx + 0x40]
mov qword [rbx], rsi
mov dword [rbx + 0x40], ebp
lea r12d, [r9 - 1]
lea r10d, [r9 + 0x6f]
je 0x180035c33
mov eax, dword [rbx + 8]
mov r14d, 0x49
cmp eax, 0x45
je 0x1800ada48
mov r13d, 0x5b
cmp eax, r14d
je 0x1800adb16
mov r13d, 0x67
cmp eax, 0x5b
je 0x1800adbd9
cmp eax, r13d
je 0x1800adc99
cmp dword [rbx + 0x28], edi
jne 0x180035beb
cmp dword [rsi + 8], edi
je 0x180035ce5
mov r14d, 0x29a
cmp dword [rbx + 8], r14d
je 0x180035da1
cmp dword [rsi + 8], edi
je 0x180035c10
mov eax, dword [rbx + 0xb0]
cmp eax, 2
je 0x1800add16
cmp dword [rbx + 0xac], edi
je 0x1800add26
mov edx, ebp
mov rcx, rbx
call fcn.180035db8
mov ecx, eax
lea eax, [rax - 2]
cmp eax, r12d
jbe 0x180035cf3
test ecx, 0xfffffffd
jne 0x180035cfc
cmp dword [rsi + 0x18], edi
je 0x180035bfc
xor eax, eax
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
mov rcx, rsi
call fcn.18006ba70
cmp dword [rsi + 0x18], edi
jne 0x180035b6f
or dword [rbx + 0x40], 0xffffffff
jmp 0x180035bcc
cmp dword [rcx + 8], edi
je 0x180035aec
jmp 0x1800addfb
cmp dword [rbx + 0x9c], edi
jne 0x180035b88
test ebp, ebp
je 0x180035d05
cmp dword [rbx + 8], r14d
je 0x180035d05
jmp 0x180035b88
cmp dword [rbx + 0x2c], r9d
je 0x1800ad7ae
mov ecx, dword [rbx + 0x48]
shl ecx, 0xc
sub ecx, 0x7800
mov r8d, ecx
cmp dword [rbx + 0xb0], r9d
jge 0x1800ad9dd
mov eax, dword [rbx + 0xac]
cmp eax, r9d
jl 0x1800ad9dd
cmp eax, 6
jge 0x1800ad9c1
mov eax, 0x40
lea edx, [rax + 0x20]
or ecx, eax
cmp dword [rbx + 0x94], edi
jne 0x1800ad9e9
mov eax, 0x8421085
mov dword [rbx + 8], r10d
mul ecx
mov rax, qword [rbx + 0x10]
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 4
add ecx, r12d
imul r8d, ecx, 0x1f
mov ecx, dword [rbx + 0x28]
mov edx, r8d
shr edx, 8
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
add dword [rbx + 0x28], r12d
cmp dword [rbx + 0x94], edi
jne 0x1800ad9f3
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.18003784c
mov dword [rsi + 0x4c], eax
jmp 0x180035b24
cmp ebp, r15d
jg 0x180035b6f
jmp 0x1800adcf8
mov dword [rbx + 8], r14d
jmp 0x180035bbb
cmp ecx, r12d
je 0x1800add3f
cmp ebp, 4
jne 0x180035bcc
cmp dword [rbx + 0x2c], edi
jle 0x1800add6a
cmp dword [rbx + 0x2c], 2
je 0x1800add72
movzx r8d, word [rsi + 0x4e]
mov ecx, dword [rbx + 0x28]
mov edx, r8d
mov rax, qword [rbx + 0x10]
shr edx, 8
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
add dword [rbx + 0x28], r12d
movzx r8d, word [rsi + 0x4c]
mov edx, dword [rbx + 0x28]
mov ecx, r8d
mov rax, qword [rbx + 0x10]
shr ecx, 8
mov byte [rdx + rax], cl
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
add dword [rbx + 0x28], r12d
mov rcx, rsi
call fcn.18006ba70
mov ecx, dword [rbx + 0x2c]
test ecx, ecx
jle 0x180035d85
neg ecx
mov dword [rbx + 0x2c], ecx
cmp dword [rbx + 0x28], edi
sete dil
mov eax, edi
jmp 0x180035bce
cmp ebp, 4
je 0x180035af9
jmp 0x1800addfb
cmp dword [rsi + 8], edi
je 0x180035b7f
jmp 0x1800add01
mov dword [rcx + 0x4c], edi
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 0x1f
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 0x8b
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 8
add dword [rbx + 0x28], r12d
mov r8, qword [rbx + 0x30]
test r8, r8
jne 0x1800ad87e
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
add dword [rbx + 0x28], r12d
mov eax, dword [rbx + 0xac]
cmp eax, 9
jne 0x1800ad846
mov dl, r9b
jmp 0x1800ad859
cmp dword [rbx + 0xb0], r9d
jge 0x1800ad857
mov dl, dil
cmp eax, r9d
jge 0x1800ad859
mov dl, 4
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 0xb
mov eax, r10d
add dword [rbx + 0x28], r12d
jmp 0x1800ad9b9
mov eax, dword [r8 + 0x3c]
neg eax
mov rax, qword [r8 + 0x30]
sbb dl, dl
and dl, r9b
neg rax
mov rax, qword [r8 + 0x20]
sbb cl, cl
and cl, 0x10
add dl, cl
neg rax
mov rax, qword [r8 + 0x10]
sbb cl, cl
and cl, 8
add dl, cl
neg rax
sbb cl, cl
and cl, 4
add dl, cl
mov ecx, dword [rbx + 0x28]
cmp dword [r8], edi
setne al
add dl, al
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
mov rcx, qword [rbx + 0x10]
mov al, byte [rax + 4]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
mov rcx, qword [rbx + 0x10]
mov al, byte [rax + 5]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
mov rcx, qword [rbx + 0x10]
mov al, byte [rax + 6]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov rax, qword [rbx + 0x30]
mov edx, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
mov al, byte [rax + 7]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov eax, dword [rbx + 0xac]
cmp eax, 9
jne 0x1800ad92d
mov dl, r9b
jmp 0x1800ad940
cmp dword [rbx + 0xb0], r9d
jge 0x1800ad93e
mov dl, dil
cmp eax, r9d
jge 0x1800ad940
mov dl, 4
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r12d
mov rax, qword [rbx + 0x30]
mov edx, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
mov al, byte [rax + 0xc]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov rax, qword [rbx + 0x30]
mov r8d, dword [rbx + 0x28]
cmp qword [rax + 0x10], rdi
je 0x1800ad99d
mov al, byte [rax + 0x18]
mov rcx, qword [rbx + 0x10]
mov byte [r8 + rcx], al
add dword [rbx + 0x28], r12d
mov rax, qword [rbx + 0x30]
mov edx, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
mov al, byte [rax + 0x19]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov r8d, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x1800ad9b1
mov rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
call fcn.18004a8b0
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov eax, 0x45
mov dword [rbx + 8], eax
jmp 0x180035b24
jne 0x1800ad9d0
mov eax, 0x80
lea edx, [rax + 0x20]
jmp 0x180035c79
mov eax, 0xc0
lea edx, [rax + 0x20]
jmp 0x180035c79
mov eax, edi
mov edx, 0x20
jmp 0x180035c79
mov ecx, r8d
or ecx, edx
jmp 0x180035c87
movzx r8d, word [rsi + 0x4e]
mov ecx, dword [rbx + 0x28]
mov edx, r8d
mov rax, qword [rbx + 0x10]
shr edx, 8
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
add dword [rbx + 0x28], r12d
movzx r8d, word [rsi + 0x4c]
mov edx, dword [rbx + 0x28]
mov ecx, r8d
mov rax, qword [rbx + 0x10]
shr ecx, 8
mov byte [rdx + rax], cl
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
add dword [rbx + 0x28], r12d
jmp 0x180035cd1
mov rdx, qword [rbx + 0x30]
cmp qword [rdx + 0x10], rdi
je 0x1800adb02
mov r10d, dword [rbx + 0x28]
mov ecx, r10d
jmp 0x1800adac4
cmp ecx, dword [rbx + 0x18]
jne 0x1800ada99
cmp dword [rdx + 0x3c], edi
je 0x1800ada86
cmp ecx, r10d
jbe 0x1800ada86
sub ecx, r10d
mov edx, r10d
add rdx, qword [rbx + 0x10]
mov r8d, ecx
mov ecx, dword [rsi + 0x4c]
call fcn.18004a8b0
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.18006ba70
mov ecx, dword [rbx + 0x28]
mov r10d, ecx
cmp ecx, dword [rbx + 0x18]
je 0x1800adacd
mov rax, qword [rbx + 0x30]
mov r9d, dword [rbx + 0x38]
mov r8d, ecx
mov rcx, qword [rbx + 0x10]
mov rdx, qword [rax + 0x10]
mov al, byte [r9 + rdx]
mov byte [r8 + rcx], al
mov ecx, dword [rbx + 0x28]
inc ecx
add dword [rbx + 0x38], r12d
mov dword [rbx + 0x28], ecx
mov rdx, qword [rbx + 0x30]
movzx eax, word [rdx + 0x18]
cmp dword [rbx + 0x38], eax
jb 0x1800ada5f
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x1800adaf7
cmp ecx, r10d
jbe 0x1800adaf7
sub ecx, r10d
mov edx, r10d
add rdx, qword [rbx + 0x10]
mov r8d, ecx
mov ecx, dword [rsi + 0x4c]
call fcn.18004a8b0
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
mov eax, dword [rax + 0x18]
cmp dword [rbx + 0x38], eax
jne 0x1800adb0e
mov dword [rbx + 0x38], edi
mov eax, r14d
mov dword [rbx + 8], r14d
jmp 0x180035b36
mov eax, dword [rbx + 8]
jmp 0x180035b36
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x20], rdi
je 0x1800adbc5
mov edx, dword [rbx + 0x28]
mov r8d, edx
cmp r8d, dword [rbx + 0x18]
jne 0x1800adb6c
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x1800adb52
cmp r8d, edx
jbe 0x1800adb52
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
mov edx, edx
add rdx, qword [rbx + 0x10]
call fcn.18004a8b0
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.18006ba70
mov r8d, dword [rbx + 0x28]
mov edx, r8d
cmp r8d, dword [rbx + 0x18]
jne 0x1800adb6c
mov r14d, r12d
jmp 0x1800adb9d
mov ecx, dword [rbx + 0x38]
mov rax, qword [rbx + 0x30]
mov rax, qword [rax + 0x20]
movzx r14d, byte [rcx + rax]
lea eax, [rcx + 1]
mov ecx, r8d
mov dword [rbx + 0x38], eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r14b
mov r8d, dword [rbx + 0x28]
inc r8d
mov dword [rbx + 0x28], r8d
test r14d, r14d
jne 0x1800adb2a
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x1800adbbd
cmp r8d, edx
jbe 0x1800adbbd
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
add rdx, qword [rbx + 0x10]
call fcn.18004a8b0
mov dword [rsi + 0x4c], eax
test r14d, r14d
jne 0x1800adbd1
mov dword [rbx + 0x38], edi
mov eax, r13d
mov dword [rbx + 8], r13d
jmp 0x180035b45
mov eax, dword [rbx + 8]
jmp 0x180035b45
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x30], rdi
je 0x1800adc8d
mov edx, dword [rbx + 0x28]
mov r8d, edx
cmp r8d, dword [rbx + 0x18]
jne 0x1800adc2f
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x1800adc15
cmp r8d, edx
jbe 0x1800adc15
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
mov edx, edx
add rdx, qword [rbx + 0x10]
call fcn.18004a8b0
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.18006ba70
mov r8d, dword [rbx + 0x28]
mov edx, r8d
cmp r8d, dword [rbx + 0x18]
jne 0x1800adc2f
mov r14d, r12d
jmp 0x1800adc60
mov ecx, dword [rbx + 0x38]
mov rax, qword [rbx + 0x30]
mov rax, qword [rax + 0x30]
movzx r14d, byte [rcx + rax]
lea eax, [rcx + 1]
mov ecx, r8d
mov dword [rbx + 0x38], eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r14b
mov r8d, dword [rbx + 0x28]
inc r8d
mov dword [rbx + 0x28], r8d
test r14d, r14d
jne 0x1800adbed
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x1800adc80
cmp r8d, edx
jbe 0x1800adc80
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
add rdx, qword [rbx + 0x10]
call fcn.18004a8b0
mov dword [rsi + 0x4c], eax
test r14d, r14d
je 0x1800adc8d
mov eax, dword [rbx + 8]
jmp 0x180035b54
mov eax, r13d
mov dword [rbx + 8], r13d
jmp 0x180035b54
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x1800adcec
mov ecx, dword [rbx + 0x28]
mov edx, dword [rbx + 0x18]
lea eax, [rcx + 2]
cmp eax, edx
jbe 0x1800adcbd
mov rcx, rsi
call fcn.18006ba70
mov ecx, dword [rbx + 0x28]
mov edx, dword [rbx + 0x18]
lea eax, [rcx + 2]
cmp eax, edx
ja 0x180035b5d
mov al, byte [rsi + 0x4c]
mov edx, ecx
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0x4d]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov dword [rsi + 0x4c], edi
mov dword [rbx + 8], 0x71
jmp 0x180035b5d
cmp ebp, 4
je 0x180035b6f
mov rax, qword [str.buffer_error]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x180035bce
mov edx, ebp
mov rcx, rbx
call fcn.18013f97c
nop
jmp 0x180035bad
cmp eax, 3
je 0x180035ba3
mov edx, ebp
mov rcx, rbx
call fcn.18013ffb0
nop
jmp 0x180035bad
cmp ebp, 5
je 0x1800add54
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.180143508
mov rcx, rsi
call fcn.18006ba70
cmp dword [rsi + 0x18], edi
je 0x180035bfc
jmp 0x180035d05
mov eax, r12d
jmp 0x180035bce
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0x4c]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0x4d]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0x4e]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0x4f]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0xc]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0xd]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0xe]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov edx, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
mov al, byte [rsi + 0xf]
mov byte [rdx + rcx], al
jmp 0x180035d6d
mov rax, qword [str.stream_error]
mov qword [rcx + 0x20], rax
mov eax, 0xfffffffe
jmp 0x180035bce