Function at 0x14000ec84
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.14000fb28
xor edi, edi
test eax, eax
jne 0x14000f654
cmp r14d, 5
ja 0x14000f654
mov rbx, qword [rsi + 0x28]
cmp qword [rsi + 0x10], rdi
je 0x14000f649
cmp dword [rsi + 8], edi
je 0x14000ecdb
cmp qword [rsi], rdi
je 0x14000f649
mov r12d, 0x29a
cmp dword [rbx + 8], r12d
jne 0x14000ecf1
cmp r14d, 4
jne 0x14000f649
cmp dword [rsi + 0x18], edi
je 0x14000ed62
mov ebp, 9
mov edx, dword [rbx + 0x40]
mov dword [rbx + 0x40], r14d
cmp dword [rbx + 0x28], edi
je 0x14000ed1f
mov rcx, rsi
call fcn.1400102b8
cmp dword [rsi + 0x18], edi
jne 0x14000ed49
or dword [rbx + 0x40], 0xffffffff
xor eax, eax
jmp 0x14000f659
cmp dword [rsi + 8], edi
jne 0x14000ed49
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 0x14000ed49
cmp r14d, 4
jne 0x14000ed62
mov r13d, 1
lea r15d, [r13 + 0x70]
cmp dword [rbx + 8], r12d
jne 0x14000ed77
cmp dword [rsi + 8], edi
je 0x14000eea6
mov rax, qword [str.buffer_error]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x14000f659
cmp dword [rbx + 8], 0x2a
jne 0x14000eea6
cmp dword [rbx + 0x2c], edi
jne 0x14000ed8f
mov dword [rbx + 8], r15d
jmp 0x14000eea6
mov ecx, dword [rbx + 0x48]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [rbx + 0xb0], 2
mov r8d, ecx
jge 0x14000edd7
mov eax, dword [rbx + 0xac]
cmp eax, 2
jl 0x14000edd7
cmp eax, 6
jge 0x14000edc1
mov eax, 0x40
lea edx, [rax + 0x20]
jmp 0x14000edde
jne 0x14000edcd
mov eax, 0x80
lea edx, [rax + 0x20]
jmp 0x14000edde
mov eax, 0xc0
lea edx, [rax + 0x20]
jmp 0x14000edde
mov eax, edi
mov edx, 0x20
or ecx, eax
cmp dword [rbx + 0x94], edi
je 0x14000eded
mov ecx, edx
or ecx, r8d
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 eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
cmp dword [rbx + 0x94], edi
je 0x14000ee82
movzx r8d, word [rsi + 0x4e]
mov ecx, eax
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
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], 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.14000dbc0
mov dword [rsi + 0x4c], eax
mov rcx, rsi
mov dword [rbx + 8], r15d
call fcn.1400102b8
cmp dword [rbx + 0x28], edi
jne 0x14000ed14
cmp dword [rbx + 8], 0x39
jne 0x14000f114
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.1400056a8
mov dword [rsi + 0x4c], eax
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 0x1f
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
mov ecx, eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 0x8b
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
mov ecx, eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 8
mov eax, dword [rbx + 0x28]
mov r8, qword [rbx + 0x30]
inc eax
mov dword [rbx + 0x28], eax
mov r9d, eax
test r8, r8
jne 0x14000efb6
mov rax, qword [rbx + 0x10]
mov byte [r9 + rax], dil
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
mov ecx, eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
mov ecx, eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
mov ecx, eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dil
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
mov ecx, eax
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 0x14000ef6c
mov dl, 2
jmp 0x14000ef7f
cmp dword [rbx + 0xb0], 2
jge 0x14000ef7d
mov dl, dil
cmp eax, 2
jge 0x14000ef7f
mov dl, 4
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
mov ecx, eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], 0xa
mov rcx, rsi
add dword [rbx + 0x28], r13d
mov dword [rbx + 8], r15d
call fcn.1400102b8
cmp dword [rbx + 0x28], edi
jne 0x14000ed14
jmp 0x14000f114
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
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x30]
inc eax
mov rcx, qword [rbx + 0x10]
mov dword [rbx + 0x28], eax
mov r8d, eax
mov al, byte [rdx + 4]
mov byte [r8 + rcx], al
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x30]
inc eax
mov rcx, qword [rbx + 0x10]
mov dword [rbx + 0x28], eax
mov r8d, eax
mov al, byte [rdx + 5]
mov byte [r8 + rcx], al
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x30]
inc eax
mov rcx, qword [rbx + 0x10]
mov dword [rbx + 0x28], eax
mov r8d, eax
mov al, byte [rdx + 6]
mov byte [r8 + rcx], al
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x30]
inc eax
mov rcx, qword [rbx + 0x10]
mov dword [rbx + 0x28], eax
mov r8d, eax
mov al, byte [rdx + 7]
mov byte [r8 + rcx], al
mov ecx, dword [rbx + 0x28]
mov eax, dword [rbx + 0xac]
inc ecx
mov dword [rbx + 0x28], ecx
cmp eax, ebp
jne 0x14000f079
mov dl, 2
jmp 0x14000f08c
cmp dword [rbx + 0xb0], 2
jge 0x14000f08a
mov dl, dil
cmp eax, 2
jge 0x14000f08c
mov dl, 4
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x30]
inc eax
mov rcx, qword [rbx + 0x10]
mov dword [rbx + 0x28], eax
mov r8d, eax
mov al, byte [rdx + 0xc]
mov byte [r8 + rcx], al
mov r8d, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
inc r8d
mov dword [rbx + 0x28], r8d
cmp qword [rax + 0x10], rdi
je 0x14000f0f2
mov al, byte [rax + 0x18]
mov rcx, qword [rbx + 0x10]
mov byte [r8 + rcx], al
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x30]
inc eax
mov rcx, qword [rbx + 0x10]
mov r8d, eax
mov dword [rbx + 0x28], eax
mov al, byte [rdx + 0x19]
mov byte [r8 + rcx], al
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
mov r8d, eax
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000f10a
mov rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
call fcn.1400056a8
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], 0x45
mov eax, dword [rbx + 8]
cmp eax, 0x45
jne 0x14000f21a
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x10], rdi
je 0x14000f211
movzx ebp, word [rax + 0x18]
sub ebp, dword [rbx + 0x38]
mov r15d, dword [rbx + 0x28]
mov r12d, dword [rbx + 0x18]
mov ecx, r15d
lea eax, [r15 + rbp]
cmp eax, r12d
jbe 0x14000f1bd
mov r9d, r15d
mov rax, qword [rbx + 0x30]
sub r12d, r9d
mov edx, dword [rbx + 0x38]
mov ecx, r9d
add rcx, qword [rbx + 0x10]
add rdx, qword [rax + 0x10]
mov r8d, r12d
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rbx + 0x30]
mov r8d, dword [rbx + 0x18]
mov dword [rbx + 0x28], r8d
cmp dword [rax + 0x3c], edi
je 0x14000f194
cmp r8d, r15d
jbe 0x14000f194
mov ecx, dword [rsi + 0x4c]
sub r8d, r15d
mov edx, r15d
add rdx, qword [rbx + 0x10]
call fcn.1400056a8
mov dword [rsi + 0x4c], eax
add dword [rbx + 0x38], r12d
mov rcx, rsi
call fcn.1400102b8
mov ecx, dword [rbx + 0x28]
test ecx, ecx
jne 0x14000ed14
sub ebp, r12d
mov r15d, edi
mov r12d, dword [rbx + 0x18]
mov r9d, edi
cmp ebp, r12d
ja 0x14000f14c
mov rax, qword [rbx + 0x30]
mov edx, dword [rbx + 0x38]
add rcx, qword [rbx + 0x10]
mov r8d, ebp
add rdx, qword [rax + 0x10]
call sub.VCRUNTIME140.dll_memcpy
mov r8d, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
add r8d, ebp
mov dword [rbx + 0x28], r8d
cmp dword [rax + 0x3c], edi
je 0x14000f202
cmp r8d, r15d
jbe 0x14000f202
mov ecx, dword [rsi + 0x4c]
sub r8d, r15d
mov edx, r15d
add rdx, qword [rbx + 0x10]
call fcn.1400056a8
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov r15d, 0x71
mov r12d, 0x29a
mov dword [rbx + 8], 0x49
jmp 0x14000f223
cmp eax, 0x49
jne 0x14000f2d4
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x20], rdi
je 0x14000f2cb
mov r9d, dword [rbx + 0x28]
mov r8d, r9d
cmp r8d, dword [rbx + 0x18]
jne 0x14000f278
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000f261
cmp r8d, r9d
jbe 0x14000f261
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.1400056a8
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.1400102b8
cmp dword [rbx + 0x28], edi
jne 0x14000ed14
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 0x14000f238
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000f2c8
cmp r8d, r9d
jbe 0x14000f2c8
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.1400056a8
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], 0x5b
jmp 0x14000f2dd
cmp eax, 0x5b
jne 0x14000f38b
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x30], rdi
je 0x14000f382
mov r9d, dword [rbx + 0x28]
mov r8d, r9d
cmp r8d, dword [rbx + 0x18]
jne 0x14000f332
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000f31b
cmp r8d, r9d
jbe 0x14000f31b
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.1400056a8
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.1400102b8
cmp dword [rbx + 0x28], edi
jne 0x14000ed14
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 0x14000f2f2
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000f382
cmp r8d, r9d
jbe 0x14000f382
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.1400056a8
mov dword [rsi + 0x4c], eax
mov dword [rbx + 8], 0x67
jmp 0x14000f390
cmp eax, 0x67
jne 0x14000f3ff
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000f3ea
mov ecx, dword [rbx + 0x28]
lea eax, [rcx + 2]
cmp eax, dword [rbx + 0x18]
jbe 0x14000f3b7
mov rcx, rsi
call fcn.1400102b8
mov ecx, dword [rbx + 0x28]
test ecx, ecx
jne 0x14000ed14
mov al, byte [rsi + 0x4c]
xor r8d, r8d
mov edx, ecx
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
inc eax
mov edx, eax
mov dword [rbx + 0x28], eax
mov al, byte [rsi + 0x4d]
mov byte [rdx + rcx], al
xor edx, edx
add dword [rbx + 0x28], r13d
xor ecx, ecx
call fcn.1400056a8
mov dword [rsi + 0x4c], eax
mov rcx, rsi
mov dword [rbx + 8], r15d
call fcn.1400102b8
cmp dword [rbx + 0x28], edi
jne 0x14000ed14
cmp dword [rsi + 8], edi
jne 0x14000f41f
cmp dword [rbx + 0x9c], edi
jne 0x14000f41f
test r14d, r14d
je 0x14000ed18
cmp dword [rbx + 8], r12d
je 0x14000f507
movsxd rcx, dword [rbx + 0xac]
mov edx, r14d
test ecx, ecx
jne 0x14000f437
mov rcx, rbx
call fcn.14000deb0
jmp 0x14000f46f
mov eax, dword [rbx + 0xb0]
cmp eax, 2
jne 0x14000f44c
mov rcx, rbx
call fcn.14000fb7c
jmp 0x14000f46f
cmp eax, 3
jne 0x14000f45b
mov rcx, rbx
call fcn.14000fd48
jmp 0x14000f46f
mov rax, rcx
lea r8, fcn.14000deb0
add rax, rax
mov rcx, rbx
call qword [r8 + rax*8]
mov ecx, eax
lea eax, [rax - 2]
cmp eax, r13d
ja 0x14000f47d
mov dword [rbx + 8], r12d
test ecx, 0xfffffffd
je 0x14000f63b
cmp ecx, r13d
jne 0x14000f507
cmp r14d, r13d
jne 0x14000f49d
mov rcx, rbx
call fcn.1400105d8
jmp 0x14000f4f6
cmp r14d, 5
je 0x14000f4f6
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.140010a38
cmp r14d, 3
jne 0x14000f4f6
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 sub.VCRUNTIME140.dll_memset
cmp dword [rbx + 0x9c], edi
jne 0x14000f4f6
mov dword [rbx + 0x94], edi
mov dword [rbx + 0x84], edi
mov dword [rbx + 0x1708], edi
mov rcx, rsi
call fcn.1400102b8
cmp dword [rsi + 0x18], edi
je 0x14000ed14
cmp r14d, 4
jne 0x14000ed18
cmp dword [rbx + 0x2c], edi
jg 0x14000f51e
mov eax, r13d
jmp 0x14000f659
cmp dword [rbx + 0x2c], 2
jne 0x14000f5c3
mov edx, dword [rbx + 0x28]
mov al, byte [rsi + 0x4c]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
inc eax
mov dword [rbx + 0x28], eax
mov edx, eax
mov al, byte [rsi + 0x4d]
mov byte [rdx + rcx], al
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
inc eax
mov dword [rbx + 0x28], eax
mov edx, eax
mov al, byte [rsi + 0x4e]
mov byte [rdx + rcx], al
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
inc eax
mov dword [rbx + 0x28], eax
mov edx, eax
mov al, byte [rsi + 0x4f]
mov byte [rdx + rcx], al
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
inc eax
mov dword [rbx + 0x28], eax
mov edx, eax
mov al, byte [rsi + 0xc]
mov byte [rdx + rcx], al
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
inc eax
mov dword [rbx + 0x28], eax
mov edx, eax
mov al, byte [rsi + 0xd]
mov byte [rdx + rcx], al
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
inc eax
mov dword [rbx + 0x28], eax
mov edx, eax
mov al, byte [rsi + 0xe]
mov byte [rdx + rcx], al
mov eax, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
inc eax
mov edx, eax
mov dword [rbx + 0x28], eax
mov al, byte [rsi + 0xf]
mov byte [rdx + rcx], al
jmp 0x14000f618
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
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
mov ecx, eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
movzx r8d, word [rsi + 0x4c]
mov ecx, eax
mov edx, r8d
mov rax, qword [rbx + 0x10]
shr edx, 8
mov byte [rcx + rax], dl
mov eax, dword [rbx + 0x28]
inc eax
mov dword [rbx + 0x28], eax
mov ecx, eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], r8b
add dword [rbx + 0x28], r13d
mov rcx, rsi
call fcn.1400102b8
mov eax, dword [rbx + 0x2c]
test eax, eax
jle 0x14000f630
neg eax
mov dword [rbx + 0x2c], eax
cmp dword [rbx + 0x28], edi
sete dil
mov eax, edi
jmp 0x14000f659
cmp dword [rsi + 0x18], edi
jne 0x14000ed18
jmp 0x14000ed14
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