Function at 0x14000e23c
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.14000f0e0
xor edi, edi
test eax, eax
jne 0x14000ebce
cmp r14d, 5
ja 0x14000ebce
mov rbx, qword [rsi + 0x28]
cmp qword [rsi + 0x10], rdi
je 0x14000ebc3
cmp dword [rsi + 8], edi
je 0x14000e293
cmp qword [rsi], rdi
je 0x14000ebc3
mov r9d, dword [rbx + 8]
mov r15d, 0x29a
cmp r9d, r15d
jne 0x14000e2ac
cmp r14d, 4
jne 0x14000ebc3
cmp dword [rsi + 0x18], edi
je 0x14000e31a
mov ebp, 9
mov edx, dword [rbx + 0x40]
mov dword [rbx + 0x40], r14d
cmp dword [rbx + 0x28], edi
je 0x14000e2d9
mov rcx, rsi
call fcn.14000f80c
cmp dword [rsi + 0x18], edi
je 0x14000ebbb
mov r8d, dword [rbx + 8]
jmp 0x14000e306
mov r8d, r9d
cmp dword [rsi + 8], edi
jne 0x14000e306
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 0x14000e306
cmp r14d, 4
jne 0x14000e31a
mov r13d, 1
cmp r8d, r15d
jne 0x14000e32f
cmp dword [rsi + 8], edi
je 0x14000e453
mov rax, qword [str.buffer_error]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x14000ebd3
cmp r8d, 0x2a
jne 0x14000e453
mov ecx, dword [rbx + 0x48]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [rbx + 0xb0], 2
mov r8d, ecx
jge 0x14000e381
mov eax, dword [rbx + 0xac]
cmp eax, 2
jl 0x14000e381
cmp eax, 6
jge 0x14000e36b
mov eax, 0x40
lea edx, [rax + 0x20]
jmp 0x14000e388
jne 0x14000e377
mov eax, 0x80
lea edx, [rax + 0x20]
jmp 0x14000e388
mov eax, 0xc0
lea edx, [rax + 0x20]
jmp 0x14000e388
mov eax, edi
mov edx, 0x20
or ecx, eax
cmp dword [rbx + 0x94], edi
je 0x14000e397
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 0x14000e42c
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.14000fb20
mov dword [rsi + 0x4c], eax
mov rcx, rsi
mov dword [rbx + 8], 0x71
call fcn.14000f80c
cmp dword [rbx + 0x28], edi
jne 0x14000ebbb
mov eax, dword [rbx + 8]
cmp eax, 0x39
jne 0x14000e54e
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.14000fe10
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 0x14000e651
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 0x14000e506
mov dl, 2
jmp 0x14000e519
cmp dword [rbx + 0xb0], 2
jge 0x14000e517
mov dl, dil
cmp eax, 2
jge 0x14000e519
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.14000f80c
cmp dword [rbx + 0x28], edi
jne 0x14000ebbb
mov eax, dword [rbx + 8]
cmp eax, 0x45
jne 0x14000e795
mov rcx, qword [rbx + 0x30]
cmp qword [rcx + 0x10], rdi
je 0x14000e645
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 0x14000e5f3
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.140018c40
mov rax, qword [rbx + 0x30]
mov r8d, dword [rbx + 0x18]
mov dword [rbx + 0x28], r8d
cmp dword [rax + 0x3c], edi
je 0x14000e5c8
cmp r8d, r15d
jbe 0x14000e5c8
mov ecx, dword [rsi + 0x4c]
sub r8d, r15d
mov edx, r15d
add rdx, qword [rbx + 0x10]
call fcn.14000fe10
mov dword [rsi + 0x4c], eax
add dword [rbx + 0x38], ebp
mov rcx, rsi
call fcn.14000f80c
cmp dword [rbx + 0x28], edi
jne 0x14000ebbb
sub r12d, ebp
mov ecx, edi
mov ebp, dword [rbx + 0x18]
mov r15d, edi
cmp r12d, ebp
ja 0x14000e584
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.140018c40
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
add ecx, r12d
mov dword [rbx + 0x28], ecx
cmp dword [rax + 0x3c], edi
je 0x14000e63c
cmp ecx, r15d
jbe 0x14000e63c
lfence
mov r8d, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
sub r8d, r15d
mov ecx, dword [rsi + 0x4c]
add rdx, rbp
call fcn.14000fe10
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov r15d, 0x29a
mov dword [rbx + 8], 0x49
jmp 0x14000e79e
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 0x14000e700
mov dl, 2
jmp 0x14000e713
cmp dword [rbx + 0xb0], 2
jge 0x14000e711
mov dl, dil
cmp eax, 2
jge 0x14000e713
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 0x14000e76e
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 0x14000e786
mov rdx, qword [rbx + 0x10]
mov r8d, eax
mov ecx, dword [rsi + 0x4c]
call fcn.14000fe10
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], 0x45
jmp 0x14000e557
cmp eax, 0x49
jne 0x14000e856
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x20], rdi
je 0x14000e84d
mov r9d, dword [rbx + 0x28]
mov r8d, r9d
cmp r8d, dword [rbx + 0x18]
jne 0x14000e7f3
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000e7dc
cmp r8d, r9d
jbe 0x14000e7dc
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.14000fe10
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.14000f80c
cmp dword [rbx + 0x28], edi
jne 0x14000ebbb
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 0x14000e7b3
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000e84a
cmp r8d, r9d
jbe 0x14000e84a
lfence
mov r8d, dword [rbx + 0x28]
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.14000fe10
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], 0x5b
jmp 0x14000e85f
cmp eax, 0x5b
jne 0x14000e914
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x30], rdi
je 0x14000e90b
mov r9d, dword [rbx + 0x28]
mov r8d, r9d
cmp r8d, dword [rbx + 0x18]
jne 0x14000e8b4
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000e89d
cmp r8d, r9d
jbe 0x14000e89d
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.14000fe10
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.14000f80c
cmp dword [rbx + 0x28], edi
jne 0x14000ebbb
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 0x14000e874
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000e90b
cmp r8d, r9d
jbe 0x14000e90b
lfence
mov r8d, dword [rbx + 0x28]
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
call fcn.14000fe10
mov dword [rsi + 0x4c], eax
mov dword [rbx + 8], 0x67
jmp 0x14000e919
cmp eax, 0x67
jne 0x14000e988
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14000e970
mov ecx, dword [rbx + 0x28]
lea eax, [rcx + 2]
cmp eax, dword [rbx + 0x18]
jbe 0x14000e940
mov rcx, rsi
call fcn.14000f80c
mov ecx, dword [rbx + 0x28]
test ecx, ecx
jne 0x14000ebbb
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.14000fe10
mov dword [rsi + 0x4c], eax
mov rcx, rsi
mov dword [rbx + 8], 0x71
call fcn.14000f80c
cmp dword [rbx + 0x28], edi
jne 0x14000ebbb
cmp dword [rsi + 8], edi
jne 0x14000e9a8
cmp dword [rbx + 0x9c], edi
jne 0x14000e9a8
test r14d, r14d
je 0x14000ebbf
cmp dword [rbx + 8], r15d
je 0x14000ea9d
mov edx, r14d
cmp dword [rbx + 0xac], edi
jne 0x14000e9c0
lfence
mov rcx, rbx
call fcn.14000d4f0
jmp 0x14000ea05
mov eax, dword [rbx + 0xb0]
lfence
cmp eax, 2
jne 0x14000e9d8
mov rcx, rbx
call fcn.14000f134
jmp 0x14000ea05
cmp eax, 3
jne 0x14000e9e7
mov rcx, rbx
call fcn.14000f2ec
jmp 0x14000ea05
movsxd rax, dword [rbx + 0xac]
lea rcx, fcn.14000d4f0
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 0x14000ea13
mov dword [rbx + 8], r15d
test ecx, 0xfffffffd
je 0x14000ebb6
cmp ecx, r13d
jne 0x14000ea9d
cmp r14d, r13d
jne 0x14000ea33
mov rcx, rbx
call fcn.1400109b8
jmp 0x14000ea8c
cmp r14d, 5
je 0x14000ea8c
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.140010e28
cmp r14d, 3
jne 0x14000ea8c
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.140018a40
cmp dword [rbx + 0x9c], edi
jne 0x14000ea8c
mov dword [rbx + 0x94], edi
mov dword [rbx + 0x84], edi
mov dword [rbx + 0x170c], edi
mov rcx, rsi
call fcn.14000f80c
cmp dword [rsi + 0x18], edi
je 0x14000ebbb
cmp r14d, 4
jne 0x14000ebbf
mov ecx, dword [rbx + 0x2c]
test ecx, ecx
jg 0x14000eab6
mov eax, r13d
jmp 0x14000ebd3
cmp ecx, 2
jne 0x14000eb45
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 0x14000eb93
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.14000f80c
mov eax, dword [rbx + 0x2c]
test eax, eax
jle 0x14000ebab
neg eax
mov dword [rbx + 0x2c], eax
cmp dword [rbx + 0x28], edi
sete dil
mov eax, edi
jmp 0x14000ebd3
cmp dword [rsi + 0x18], edi
jne 0x14000ebbf
or dword [rbx + 0x40], 0xffffffff
xor eax, eax
jmp 0x14000ebd3
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