Function at 0x1800806bc
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.180081368
xor edi, edi
test eax, eax
jne 0x180080f67
cmp r14d, 5
ja 0x180080f67
mov rbx, qword [rsi + 0x28]
cmp qword [rsi + 0x10], rdi
je 0x180080f5c
cmp dword [rsi + 8], edi
je 0x180080713
cmp qword [rsi], rdi
je 0x180080f5c
mov r15d, 0x29a
cmp dword [rbx + 8], r15d
jne 0x180080729
cmp r14d, 4
jne 0x180080f5c
cmp dword [rsi + 0x18], edi
jne 0x180080743
mov rax, qword [str.buffer_error]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x180080f6c
mov ebp, 9
mov edx, dword [rbx + 0x40]
mov dword [rbx + 0x40], r14d
cmp dword [rbx + 0x28], edi
je 0x18008076c
mov rcx, rsi
call fcn.180081a80
cmp dword [rsi + 0x18], edi
jne 0x180080796
or dword [rbx + 0x40], 0xffffffff
xor eax, eax
jmp 0x180080f6c
cmp dword [rsi + 8], edi
jne 0x180080796
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 0x180080796
cmp r14d, 4
jne 0x18008072e
mov r13d, 1
cmp dword [rbx + 8], r15d
jne 0x1800807ad
cmp dword [rsi + 8], edi
je 0x180080866
jmp 0x18008072e
cmp dword [rbx + 8], 0x2a
jne 0x180080866
mov ecx, dword [rbx + 0x48]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [rbx + 0xb0], 2
jge 0x1800807f5
mov edx, dword [rbx + 0xac]
cmp edx, 2
jl 0x1800807f5
cmp edx, 6
jge 0x1800807e3
mov eax, 0x40
jmp 0x1800807f7
mov eax, 0xc0
cmp edx, 6
lea r8d, [rax - 0x40]
cmove eax, r8d
jmp 0x1800807f7
mov eax, edi
or eax, ecx
mov ecx, eax
or ecx, 0x20
cmp dword [rbx + 0x94], edi
cmove ecx, eax
mov eax, 0x8421085
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 4
add ecx, r13d
imul edx, ecx, 0x1f
mov rcx, rbx
call fcn.180081d54
cmp dword [rbx + 0x94], edi
je 0x18008083f
movzx edx, word [rsi + 0x4e]
call fcn.180081d54
movzx edx, word [rsi + 0x4c]
call fcn.180081d54
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.180081e74
mov dword [rsi + 0x4c], eax
mov rcx, rsi
mov dword [rbx + 8], WSAStartup
call fcn.180081a80
cmp dword [rbx + 0x28], edi
jne 0x180080761
cmp dword [rbx + 8], 0x39
jne 0x180080a9a
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.180082164
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]
test r8, r8
jne 0x18008095f
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
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 eax, dword [rbx + 0xac]
cmp eax, ebp
jne 0x180080912
mov dl, 2
jmp 0x180080925
cmp dword [rbx + 0xb0], 2
jge 0x180080923
mov dl, dil
cmp eax, 2
jge 0x180080925
mov dl, 4
mov ecx, dword [rbx + 0x28]
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], WSAStartup
call fcn.180081a80
cmp dword [rbx + 0x28], edi
je 0x180080a9a
jmp 0x180080761
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
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], 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
add dword [rbx + 0x28], r13d
mov eax, dword [rbx + 0xac]
cmp eax, ebp
jne 0x180080a0c
mov dl, 2
jmp 0x180080a1f
cmp dword [rbx + 0xb0], 2
jge 0x180080a1d
mov dl, dil
cmp eax, 2
jge 0x180080a1f
mov dl, 4
mov ecx, dword [rbx + 0x28]
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
add dword [rbx + 0x28], r13d
mov rax, qword [rbx + 0x30]
mov r8d, dword [rbx + 0x28]
cmp qword [rax + 0x10], rdi
je 0x180080a78
mov al, byte [rax + 0x18]
mov rcx, qword [rbx + 0x10]
mov byte [r8 + 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 r8d, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x180080a90
mov rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
call fcn.180082164
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], 0x45
cmp dword [rbx + 8], 0x45
jne 0x180080b86
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x10], rdi
je 0x180080b7f
movzx ebp, word [rax + 0x18]
sub ebp, dword [rbx + 0x38]
mov r15d, dword [rbx + 0x28]
lea eax, [r15 + rbp]
cmp eax, dword [rbx + 0x18]
jbe 0x180080b32
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
mov r12d, dword [rbx + 0x18]
mov edx, dword [rbx + 0x38]
sub r12d, ecx
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 0x180080b12
cmp r8d, r15d
jbe 0x180080b12
mov ecx, dword [rsi + 0x4c]
sub r8d, r15d
mov edx, r15d
add rdx, qword [rbx + 0x10]
call fcn.180082164
mov dword [rsi + 0x4c], eax
add dword [rbx + 0x38], r12d
mov rcx, rsi
call fcn.180081a80
cmp dword [rbx + 0x28], edi
jne 0x180080761
sub ebp, r12d
mov r15d, edi
cmp ebp, dword [rbx + 0x18]
ja 0x180080ac6
mov rax, qword [rbx + 0x30]
mov edx, dword [rbx + 0x38]
mov ecx, dword [rbx + 0x28]
add rcx, qword [rbx + 0x10]
add rdx, qword [rax + 0x10]
mov r8d, ebp
call sub.VCRUNTIME140.dll_memcpy
add dword [rbx + 0x28], ebp
mov rax, qword [rbx + 0x30]
mov r8d, dword [rbx + 0x28]
cmp dword [rax + 0x3c], edi
je 0x180080b76
cmp r8d, r15d
jbe 0x180080b76
mov ecx, dword [rsi + 0x4c]
sub r8d, r15d
mov edx, r15d
add rdx, qword [rbx + 0x10]
call fcn.180082164
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov r15d, 0x29a
mov dword [rbx + 8], 0x49
cmp dword [rbx + 8], 0x49
jne 0x180080c3e
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x20], rdi
je 0x180080c37
mov r9d, dword [rbx + 0x28]
mov ecx, dword [rbx + 0x28]
cmp ecx, dword [rbx + 0x18]
jne 0x180080be4
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x180080bd0
cmp ecx, r9d
jbe 0x180080bd0
sub ecx, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
mov r8d, ecx
mov ecx, dword [rsi + 0x4c]
call fcn.180082164
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.180081a80
cmp dword [rbx + 0x28], edi
jne 0x180080761
mov r9d, edi
mov ecx, dword [rbx + 0x38]
mov rax, qword [rbx + 0x30]
mov rax, qword [rax + 0x20]
movzx edx, byte [rax + rcx]
lea eax, [rcx + 1]
mov ecx, dword [rbx + 0x28]
mov dword [rbx + 0x38], eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
test edx, edx
jne 0x180080ba2
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x180080c34
cmp ecx, r9d
jbe 0x180080c34
sub ecx, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
mov r8d, ecx
mov ecx, dword [rsi + 0x4c]
call fcn.180082164
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], 0x5b
cmp dword [rbx + 8], 0x5b
jne 0x180080cf3
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x30], rdi
je 0x180080cec
mov r9d, dword [rbx + 0x28]
mov ecx, dword [rbx + 0x28]
cmp ecx, dword [rbx + 0x18]
jne 0x180080c9c
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x180080c88
cmp ecx, r9d
jbe 0x180080c88
sub ecx, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
mov r8d, ecx
mov ecx, dword [rsi + 0x4c]
call fcn.180082164
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.180081a80
cmp dword [rbx + 0x28], edi
jne 0x180080761
mov r9d, edi
mov ecx, dword [rbx + 0x38]
mov rax, qword [rbx + 0x30]
mov rax, qword [rax + 0x30]
movzx edx, byte [rax + rcx]
lea eax, [rcx + 1]
mov ecx, dword [rbx + 0x28]
mov dword [rbx + 0x38], eax
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], dl
add dword [rbx + 0x28], r13d
mov ecx, dword [rbx + 0x28]
test edx, edx
jne 0x180080c5a
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x180080cec
cmp ecx, r9d
jbe 0x180080cec
sub ecx, r9d
mov edx, r9d
add rdx, qword [rbx + 0x10]
mov r8d, ecx
mov ecx, dword [rsi + 0x4c]
call fcn.180082164
mov dword [rsi + 0x4c], eax
mov dword [rbx + 8], 0x67
cmp dword [rbx + 8], 0x67
jne 0x180080d67
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x180080d4f
mov eax, dword [rbx + 0x28]
add eax, 2
cmp eax, dword [rbx + 0x18]
jbe 0x180080d1e
mov rcx, rsi
call fcn.180081a80
cmp dword [rbx + 0x28], edi
jne 0x180080761
mov edx, dword [rbx + 0x28]
xor r8d, r8d
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 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.180082164
mov dword [rsi + 0x4c], eax
mov rcx, rsi
mov dword [rbx + 8], WSAStartup
call fcn.180081a80
cmp dword [rbx + 0x28], edi
jne 0x180080761
cmp dword [rsi + 8], edi
jne 0x180080d87
cmp dword [rbx + 0x9c], edi
jne 0x180080d87
test r14d, r14d
je 0x180080e6f
cmp dword [rbx + 8], r15d
je 0x180080e6f
movsxd rcx, dword [rbx + 0xac]
mov edx, r14d
test ecx, ecx
jne 0x180080d9f
mov rcx, rbx
call fcn.18007f9c8
jmp 0x180080dd7
mov eax, dword [rbx + 0xb0]
cmp eax, 2
jne 0x180080db4
mov rcx, rbx
call fcn.1800813bc
jmp 0x180080dd7
cmp eax, 3
jne 0x180080dc3
mov rcx, rbx
call fcn.180081570
jmp 0x180080dd7
mov rax, rcx
lea r8, fcn.18007f9c8
add rax, rax
mov rcx, rbx
call qword [r8 + rax*8]
mov ecx, eax
lea eax, [rax - 2]
cmp eax, r13d
ja 0x180080de5
mov dword [rbx + 8], r15d
test ecx, 0xfffffffd
je 0x180080f4e
cmp ecx, r13d
jne 0x180080e6f
cmp r14d, r13d
jne 0x180080e05
mov rcx, rbx
call fcn.180082d84
jmp 0x180080e5e
cmp r14d, 5
je 0x180080e5e
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.180083118
cmp r14d, 3
jne 0x180080e5e
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 0x180080e5e
mov dword [rbx + 0x94], edi
mov dword [rbx + 0x84], edi
mov dword [rbx + 0x170c], edi
mov rcx, rsi
call fcn.180081a80
cmp dword [rsi + 0x18], edi
je 0x180080761
cmp r14d, 4
jne 0x180080765
cmp dword [rbx + 0x2c], edi
jg 0x180080e86
mov eax, r13d
jmp 0x180080f6c
cmp dword [rbx + 0x2c], 2
jne 0x180080f1a
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 al, byte [rsi + 0xf]
mov rcx, qword [rbx + 0x10]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r13d
jmp 0x180080f2f
movzx edx, word [rsi + 0x4e]
mov rcx, rbx
call fcn.180081d54
movzx edx, word [rsi + 0x4c]
call fcn.180081d54
mov rcx, rsi
call fcn.180081a80
mov eax, dword [rbx + 0x2c]
test eax, eax
jle 0x180080f43
neg eax
mov dword [rbx + 0x2c], eax
cmp dword [rbx + 0x28], edi
sete dil
mov eax, edi
jmp 0x180080f6c
cmp dword [rsi + 0x18], edi
jne 0x180080765
jmp 0x180080761
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