Function at 0x14000dafc
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
mov r14d, edx
mov rsi, rcx
call fcn.14000e9a0
xor edi, edi
test eax, eax
jne 0x14000e48e
cmp r14d, 5
ja 0x14000e48e
mov rbx, qword [rsi + 0x28]
cmp qword [rsi + 0x10], rdi
je 0x14000e483
cmp dword [rsi + 8], edi
je 0x14000db53
cmp qword [rsi], rdi
je 0x14000e483
mov r9d, dword [rbx + 8]
mov r15d, 0x29a
cmp r9d, r15d
jne 0x14000db6c
cmp r14d, 4
jne 0x14000e483
cmp dword [rsi + 0x18], edi
je 0x14000dbda
mov ebp, 9
mov edx, dword [rbx + 0x40]
mov dword [rbx + 0x40], r14d
cmp dword [rbx + 0x28], edi
je 0x14000db99
mov rcx, rsi
call fcn.14000f0cc
cmp dword [rsi + 0x18], edi
je 0x14000e47b
mov r8d, dword [rbx + 8]
jmp 0x14000dbc6
mov r8d, r9d
cmp dword [rsi + 8], edi
jne 0x14000dbc6
cmp edx, 4
mov eax, edi
mov ecx, edi
cmovg eax, ebp
add edx, edx
sub edx, eax
lea eax, [r14 + r14]
cmp r14d, 4
cmovg ecx, ebp
sub eax, ecx
cmp eax, edx
jg 0x14000dbc6
cmp r14d, 4
jne 0x14000dbda
mov r13d, 1
cmp r8d, r15d
jne 0x14000dbef
cmp dword [rsi + 8], edi
je 0x14000dd13
mov rax, qword [str.buffer_error]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x14000e493
cmp r8d, 0x2a
jne 0x14000dd13
mov ecx, dword [rbx + 0x48]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [rbx + 0xb0], 2
mov r8d, ecx
jge 0x14000dc41
mov eax, dword [rbx + 0xac]
cmp eax, 2
jl 0x14000dc41
cmp eax, 6
jge 0x14000dc2b
mov eax, 0x40
lea edx, [rax + 0x20]
jmp 0x14000dc48
jne 0x14000dc37
mov eax, 0x80
lea edx, [rax + 0x20]
jmp 0x14000dc48
mov eax, 0xc0
lea edx, [rax + 0x20]
jmp 0x14000dc48
mov eax, edi
mov edx, 0x20
or ecx, eax
cmp dword [rbx + 0x94], edi
je 0x14000dc57
mov ecx, r8d
or ecx, edx
mov eax, 0x8421085
mul ecx
mov rax, qword [rbx + 0x10]
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 4
add ecx, r13d
imul r8d, ecx, 0x1f
mov ecx, dword [rbx + 0x28]
mov edx, r8d
shr edx, 8
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
mov ecx, dword [rbx + 0x28]
inc ecx
mov dword [rbx + 0x28], ecx
cmp dword [rbx + 0x94], edi
je 0x14000dcec
movzx r8d, word [rsi + 0x4e]
mov rax, qword [rbx + 0x10]
mov edx, r8d
shr edx, 8
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
add dword [rbx + 0x28], r13d
mov eax, dword [rsi + 0x4c]
mov edx, dword [rbx + 0x28]
movzx r8d, ax
mov rax, qword [rbx + 0x10]
mov ecx, r8d
shr ecx, 8
mov byte [rdx + rax], cl
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
add dword [rbx + 0x28], r13d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.14000f3e0
mov dword [rsi + 0x4c], eax
mov rcx, rsi
mov dword [rbx + 8], 0x71
call fcn.14000f0cc
cmp dword [rbx + 0x28], edi
jne 0x14000e47b
mov eax, dword [rbx + 8]
cmp eax, 0x39
jne 0x14000de0e
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.14000f6d0
mov dword [rsi + 0x4c], eax
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 0x1f
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 0x8b
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 8
add dword [rbx + 0x28], r13d
mov r8, qword [rbx + 0x30]
mov r9d, dword [rbx + 0x28]
test r8, r8
jne 0x14000df11
mov rax, qword [rbx + 0x10]
mov byte [r9 + rax], dil
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
mov ecx, dword [rbx + 0x28]
mov eax, dword [rbx + 0xac]
inc ecx
mov dword [rbx + 0x28], ecx
cmp eax, ebp
jne 0x14000ddc6
mov dl, 2
jmp 0x14000ddd9
cmp dword [rbx + 0xb0], 2
jge 0x14000ddd7
mov dl, dil
cmp eax, 2
jge 0x14000ddd9
mov dl, 4
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 0xa
mov rcx, rsi
add dword [rbx + 0x28], r13d
mov dword [rbx + 8], 0x71
call fcn.14000f0cc
cmp dword [rbx + 0x28], edi
jne 0x14000e47b
mov eax, dword [rbx + 8]
cmp eax, 0x45
jne 0x14000e055
mov rcx, qword [rbx + 0x30]
cmp qword [rcx + 0x10], rdi
je 0x14000df05
mov eax, dword [rcx + 0x18]
mov edx, dword [rbx + 0x38]
mov r15d, dword [rbx + 0x28]
mov ebp, dword [rbx + 0x18]
movzx r12d, ax
sub r12d, edx
lea eax, [r15 + r12]
cmp eax, ebp
jbe 0x14000deb3
mov ecx, r15d
mov rax, qword [rbx + 0x30]
sub ebp, ecx
mov edx, dword [rbx + 0x38]
add rcx, qword [rbx + 0x10]
mov r8d, ebp
add rdx, qword [rax + 0x10]
call fcn.140018440
mov rax, qword [rbx + 0x30]
mov r8d, dword [rbx + 0x18]
mov dword [rbx + 0x28], r8d
cmp dword [rax + 0x3c], edi
je 0x14000de88
cmp r8d, r15d
jbe 0x14000de88
mov ecx, dword [rsi + 0x4c]
sub r8d, r15d
mov edx, r15d
add rdx, qword [rbx + 0x10]
call fcn.14000f6d0
mov dword [rsi + 0x4c], eax
add dword [rbx + 0x38], ebp
mov rcx, rsi
call fcn.14000f0cc
cmp dword [rbx + 0x28], edi
jne 0x14000e47b
sub r12d, ebp
mov ecx, edi
mov ebp, dword [rbx + 0x18]
mov r15d, edi
cmp r12d, ebp
ja 0x14000de44
mov rcx, qword [rbx + 0x30]
mov edx, dword [rbx + 0x38]
add rdx, qword [rcx + 0x10]
mov rcx, qword [rbx + 0x10]
mov ebp, r15d
add rcx, rbp
mov r8d, r12d
call fcn.140018440
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
add ecx, r12d
mov dword [rbx + 0x28], ecx
cmp dword [rax + 0x3c], edi
je 0x14000defc
cmp ecx, r15d
jbe 0x14000defc
lfence
mov r8d, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
sub r8d, r15d
mov ecx, dword [rsi + 0x4c]
add rdx, rbp
call fcn.14000f6d0
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov r15d, 0x29a
mov dword [rbx + 8], 0x49
jmp 0x14000e05e
mov rax, qword [r8 + 0x30]
neg rax
mov eax, dword [r8 + 0x3c]
sbb dl, dl
and dl, 0x10
neg eax
mov rax, qword [r8 + 0x20]
sbb cl, cl
and cl, 2
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
cmp dword [r8], edi
setne al
add dl, al
mov rax, qword [rbx + 0x10]
mov byte [r9 + rax], dl
add dword [rbx + 0x28], r13d
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], r13d
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], r13d
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], r13d
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
mov ecx, dword [rbx + 0x28]
mov eax, dword [rbx + 0xac]
inc ecx
mov dword [rbx + 0x28], ecx
cmp eax, ebp
jne 0x14000dfc0
mov dl, 2
jmp 0x14000dfd3
cmp dword [rbx + 0xb0], 2
jge 0x14000dfd1
mov dl, dil
cmp eax, 2
jge 0x14000dfd3
mov dl, 4
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r13d
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
mov eax, dword [rbx + 0x28]
mov r8, qword [rbx + 0x30]
inc eax
mov dword [rbx + 0x28], eax
cmp qword [r8 + 0x10], rdi
je 0x14000e02e
mov rcx, qword [rbx + 0x10]
mov edx, eax
mov al, byte [r8 + 0x18]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r13d
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], r13d
mov eax, dword [rbx + 0x28]
mov r8, qword [rbx + 0x30]
cmp dword [r8 + 0x3c], edi
je 0x14000e046
mov rdx, qword [rbx + 0x10]
mov r8d, eax
mov ecx, dword [rsi + 0x4c]
call fcn.14000f6d0
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], 0x45
jmp 0x14000de17
cmp eax, 0x49
jne 0x14000e116
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x20], rdi
je 0x14000e10d
mov r9d, dword [rbx + 0x28]
mov r8d, r9d
cmp r8d, dword [rbx + 0x18]
jne 0x14000e0b3
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000e09c
cmp r8d, r9d
jbe 0x14000e09c
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.14000f6d0
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.14000f0cc
cmp dword [rbx + 0x28], edi
jne 0x14000e47b
mov r9d, edi
mov r8d, edi
mov ecx, dword [rbx + 0x38]
mov rax, qword [rbx + 0x30]
mov rax, qword [rax + 0x20]
mov dl, byte [rcx + rax]
lea eax, [rcx + 1]
mov ecx, r8d
mov dword [rbx + 0x38], eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
mov r8d, dword [rbx + 0x28]
inc r8d
mov dword [rbx + 0x28], r8d
test dl, dl
jne 0x14000e073
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000e10a
cmp r8d, r9d
jbe 0x14000e10a
lfence
mov r8d, dword [rbx + 0x28]
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.14000f6d0
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], 0x5b
jmp 0x14000e11f
cmp eax, 0x5b
jne 0x14000e1d4
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x30], rdi
je 0x14000e1cb
mov r9d, dword [rbx + 0x28]
mov r8d, r9d
cmp r8d, dword [rbx + 0x18]
jne 0x14000e174
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000e15d
cmp r8d, r9d
jbe 0x14000e15d
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.14000f6d0
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.14000f0cc
cmp dword [rbx + 0x28], edi
jne 0x14000e47b
mov r9d, edi
mov r8d, edi
mov ecx, dword [rbx + 0x38]
mov rax, qword [rbx + 0x30]
mov rax, qword [rax + 0x30]
mov dl, byte [rcx + rax]
lea eax, [rcx + 1]
mov ecx, r8d
mov dword [rbx + 0x38], eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
mov r8d, dword [rbx + 0x28]
inc r8d
mov dword [rbx + 0x28], r8d
test dl, dl
jne 0x14000e134
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000e1cb
cmp r8d, r9d
jbe 0x14000e1cb
lfence
mov r8d, dword [rbx + 0x28]
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.14000f6d0
mov dword [rsi + 0x4c], eax
mov dword [rbx + 8], 0x67
jmp 0x14000e1d9
cmp eax, 0x67
jne 0x14000e248
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000e230
mov ecx, dword [rbx + 0x28]
lea eax, [rcx + 2]
cmp eax, dword [rbx + 0x18]
jbe 0x14000e200
mov rcx, rsi
call fcn.14000f0cc
mov ecx, dword [rbx + 0x28]
test ecx, ecx
jne 0x14000e47b
mov al, byte [rsi + 0x4c]
xor r8d, r8d
mov edx, ecx
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r13d
mov edx, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
mov al, byte [rsi + 0x4d]
mov byte [rdx + rcx], al
xor edx, edx
add dword [rbx + 0x28], r13d
xor ecx, ecx
call fcn.14000f6d0
mov dword [rsi + 0x4c], eax
mov rcx, rsi
mov dword [rbx + 8], 0x71
call fcn.14000f0cc
cmp dword [rbx + 0x28], edi
jne 0x14000e47b
cmp dword [rsi + 8], edi
jne 0x14000e268
cmp dword [rbx + 0x9c], edi
jne 0x14000e268
test r14d, r14d
je 0x14000e47f
cmp dword [rbx + 8], r15d
je 0x14000e35d
mov edx, r14d
cmp dword [rbx + 0xac], edi
jne 0x14000e280
lfence
mov rcx, rbx
call fcn.14000cdb0
jmp 0x14000e2c5
mov eax, dword [rbx + 0xb0]
lfence
cmp eax, 2
jne 0x14000e298
mov rcx, rbx
call fcn.14000e9f4
jmp 0x14000e2c5
cmp eax, 3
jne 0x14000e2a7
mov rcx, rbx
call fcn.14000ebac
jmp 0x14000e2c5
movsxd rax, dword [rbx + 0xac]
lea rcx, fcn.14000cdb0
add rax, rax
mov rax, qword [rcx + rax*8]
mov rcx, rbx
call qword [0x14001a3a0]
mov ecx, eax
lea eax, [rax - 2]
cmp eax, r13d
ja 0x14000e2d3
mov dword [rbx + 8], r15d
test ecx, 0xfffffffd
je 0x14000e476
cmp ecx, r13d
jne 0x14000e35d
cmp r14d, r13d
jne 0x14000e2f3
mov rcx, rbx
call fcn.140010278
jmp 0x14000e34c
cmp r14d, 5
je 0x14000e34c
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.1400106e8
cmp r14d, 3
jne 0x14000e34c
mov ecx, dword [rbx + 0x74]
xor edx, edx
mov rax, qword [rbx + 0x68]
sub ecx, r13d
mov word [rax + rcx*2], di
mov r8d, dword [rbx + 0x74]
mov rcx, qword [rbx + 0x68]
sub r8d, r13d
add r8, r8
call fcn.140018240
cmp dword [rbx + 0x9c], edi
jne 0x14000e34c
mov dword [rbx + 0x94], edi
mov dword [rbx + 0x84], edi
mov dword [rbx + 0x170c], edi
mov rcx, rsi
call fcn.14000f0cc
cmp dword [rsi + 0x18], edi
je 0x14000e47b
cmp r14d, 4
jne 0x14000e47f
mov ecx, dword [rbx + 0x2c]
test ecx, ecx
jg 0x14000e376
mov eax, r13d
jmp 0x14000e493
cmp ecx, 2
jne 0x14000e405
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0x4c]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r13d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0x4d]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r13d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0x4e]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r13d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0x4f]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r13d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0xc]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r13d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0xd]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r13d
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0xe]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r13d
mov edx, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
mov al, byte [rsi + 0xf]
mov byte [rdx + rcx], al
jmp 0x14000e453
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], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
add dword [rbx + 0x28], r13d
mov eax, dword [rsi + 0x4c]
mov edx, dword [rbx + 0x28]
movzx r8d, ax
mov rax, qword [rbx + 0x10]
mov ecx, r8d
shr ecx, 8
mov byte [rdx + rax], cl
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
add dword [rbx + 0x28], r13d
mov rcx, rsi
call fcn.14000f0cc
mov eax, dword [rbx + 0x2c]
test eax, eax
jle 0x14000e46b
neg eax
mov dword [rbx + 0x2c], eax
cmp dword [rbx + 0x28], edi
sete dil
mov eax, edi
jmp 0x14000e493
cmp dword [rsi + 0x18], edi
jne 0x14000e47f
or dword [rbx + 0x40], 0xffffffff
xor eax, eax
jmp 0x14000e493
mov rax, qword [str.stream_error]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffe
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