Function at 0x14030b804
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 0x14030c0ea
mov rbx, qword [rcx + 0x28]
test rbx, rbx
je 0x14030c0ea
cmp edx, 5
ja 0x14030c0ea
cmp qword [rcx + 0x10], rdi
je 0x14030c0df
cmp qword [rcx], rdi
jne 0x14030b85e
cmp dword [rcx + 8], edi
jne 0x14030c0df
cmp dword [rbx + 8], 0x29a
jne 0x14030b870
cmp ebp, 4
jne 0x14030c0df
cmp dword [rcx + 0x18], edi
je 0x14030c0cd
cmp dword [rbx + 8], 0x2a
mov r10d, 2
mov r15d, dword [rbx + 0x40]
mov qword [rbx], rsi
mov dword [rbx + 0x40], ebp
lea r12d, [r10 - 1]
lea r11d, [r10 + 0x6f]
jne 0x14030bbc0
cmp dword [rbx + 0x2c], r10d
jne 0x14030babc
mov dword [rcx + 0x4c], edi
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], Compress
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]
mov r9d, dword [rbx + 0x28]
test r8, r8
jne 0x14030b977
mov rax, qword [rbx + 0x10]
mov byte [r9 + 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
mov ecx, dword [rbx + 0x28]
mov eax, dword [rbx + 0xac]
inc ecx
mov dword [rbx + 0x28], ecx
cmp eax, 9
jne 0x14030b942
mov dl, r10b
jmp 0x14030b955
cmp dword [rbx + 0xb0], r10d
jge 0x14030b953
mov dl, dil
cmp eax, r10d
jge 0x14030b955
mov dl, 4
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, r11d
add dword [rbx + 0x28], r12d
jmp 0x14030bab4
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, r10b
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], 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
mov ecx, dword [rbx + 0x28]
mov eax, dword [rbx + 0xac]
inc ecx
mov dword [rbx + 0x28], ecx
cmp eax, 9
jne 0x14030ba28
mov dl, r10b
jmp 0x14030ba3b
cmp dword [rbx + 0xb0], r10d
jge 0x14030ba39
mov dl, dil
cmp eax, r10d
jge 0x14030ba3b
mov dl, 4
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
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
inc ecx
mov dword [rbx + 0x28], ecx
cmp qword [rax + 0x10], rdi
je 0x14030ba95
mov al, byte [rax + 0x18]
mov edx, ecx
mov rcx, qword [rbx + 0x10]
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 + 0x19]
mov byte [rdx + rcx], al
add dword [rbx + 0x28], r12d
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14030baac
mov rdx, qword [rbx + 0x10]
mov r8d, ecx
mov ecx, dword [rsi + 0x4c]
call fcn.14030e858
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov eax, 0x45
mov dword [rbx + 8], eax
jmp 0x14030bbc0
mov ecx, dword [rbx + 0x48]
shl ecx, 0xc
sub ecx, 0x7800
mov r8d, ecx
cmp dword [rbx + 0xb0], r10d
jge 0x14030bb04
mov eax, dword [rbx + 0xac]
cmp eax, r10d
jl 0x14030bb04
cmp eax, 6
jge 0x14030baee
mov eax, 0x40
lea edx, [rax + 0x20]
jmp 0x14030bb0b
jne 0x14030bafa
mov eax, 0x80
lea edx, [rax + 0x20]
jmp 0x14030bb0b
mov eax, 0xc0
lea edx, [rax + 0x20]
jmp 0x14030bb0b
mov eax, edi
mov edx, Compress
or ecx, eax
cmp dword [rbx + 0x94], edi
je 0x14030bb1a
mov ecx, edx
or ecx, r8d
mov eax, 0x8421085
mov dword [rbx + 8], r11d
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
mov ecx, dword [rbx + 0x28]
inc ecx
mov dword [rbx + 0x28], ecx
cmp dword [rbx + 0x94], edi
je 0x14030bbb1
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], 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
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.14030dce4
mov dword [rsi + 0x4c], eax
mov eax, dword [rbx + 8]
mov r14d, VarR8FromUI1
cmp eax, 0x45
jne 0x14030bc99
mov rdx, qword [rbx + 0x30]
cmp qword [rdx + 0x10], rdi
je 0x14030bc92
mov r10d, dword [rbx + 0x28]
mov ecx, r10d
jmp 0x14030bc50
cmp ecx, dword [rbx + 0x18]
jne 0x14030bc25
cmp dword [rdx + 0x3c], edi
je 0x14030bc10
cmp ecx, r10d
jbe 0x14030bc10
sub ecx, r10d
mov edx, r10d
add rdx, qword [rbx + 0x10]
mov r8d, ecx
mov ecx, dword [rsi + 0x4c]
call fcn.14030e858
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.14030d63c
mov r10d, dword [rbx + 0x28]
mov ecx, r10d
cmp r10d, dword [rbx + 0x18]
je 0x14030bc59
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 0x14030bbe9
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14030bc83
cmp ecx, r10d
jbe 0x14030bc83
sub ecx, r10d
mov edx, r10d
add rdx, qword [rbx + 0x10]
mov r8d, ecx
mov ecx, dword [rsi + 0x4c]
call fcn.14030e858
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
mov eax, dword [rax + 0x18]
cmp dword [rbx + 0x38], eax
jne 0x14030bd28
mov dword [rbx + 0x38], edi
mov eax, r14d
mov dword [rbx + 8], r14d
mov r13d, 0x5b
cmp eax, r14d
jne 0x14030bd66
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x20], rdi
je 0x14030bd5f
mov edx, dword [rbx + 0x28]
mov r8d, edx
cmp r8d, dword [rbx + 0x18]
jne 0x14030bcf5
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14030bce2
cmp r8d, edx
jbe 0x14030bce2
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
add rdx, qword [rbx + 0x10]
call fcn.14030e858
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.14030d63c
mov edx, dword [rbx + 0x28]
mov r8d, edx
cmp edx, dword [rbx + 0x18]
je 0x14030bd30
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 0x14030bcbc
jmp 0x14030bd33
mov eax, dword [rbx + 8]
jmp 0x14030bc99
mov r14d, r12d
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14030bd53
cmp r8d, edx
jbe 0x14030bd53
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
add rdx, qword [rbx + 0x10]
call fcn.14030e858
mov dword [rsi + 0x4c], eax
test r14d, r14d
jne 0x14030bdf5
mov dword [rbx + 0x38], edi
mov eax, r13d
mov dword [rbx + 8], r13d
mov r13d, 0x67
cmp eax, 0x5b
jne 0x14030be31
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x30], rdi
je 0x14030be2a
mov edx, dword [rbx + 0x28]
mov r8d, edx
cmp r8d, dword [rbx + 0x18]
jne 0x14030bdc2
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14030bdaf
cmp r8d, edx
jbe 0x14030bdaf
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
add rdx, qword [rbx + 0x10]
call fcn.14030e858
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.14030d63c
mov edx, dword [rbx + 0x28]
mov r8d, edx
cmp edx, dword [rbx + 0x18]
je 0x14030bdfd
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 0x14030bd89
jmp 0x14030be00
mov eax, dword [rbx + 8]
jmp 0x14030bd66
mov r14d, r12d
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14030be20
cmp r8d, edx
jbe 0x14030be20
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
add rdx, qword [rbx + 0x10]
call fcn.14030e858
mov dword [rsi + 0x4c], eax
test r14d, r14d
je 0x14030be2a
mov eax, dword [rbx + 8]
jmp 0x14030be31
mov eax, r13d
mov dword [rbx + 8], r13d
cmp eax, r13d
jne 0x14030be8c
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14030be85
mov ecx, dword [rbx + 0x28]
mov edx, dword [rbx + 0x18]
lea eax, [rcx + 2]
cmp eax, edx
jbe 0x14030be5a
mov rcx, rsi
call fcn.14030d63c
mov ecx, dword [rbx + 0x28]
mov edx, dword [rbx + 0x18]
lea eax, [rcx + 2]
cmp eax, edx
ja 0x14030be8c
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], WSAStartup
cmp dword [rbx + 0x28], edi
je 0x14030bea3
mov rcx, rsi
call fcn.14030d63c
cmp dword [rsi + 0x18], edi
jne 0x14030beb6
jmp 0x14030c0c5
cmp dword [rsi + 8], edi
jne 0x14030beb6
cmp ebp, r15d
jg 0x14030beb6
cmp ebp, 4
jne 0x14030c0cd
mov r14d, 0x29a
cmp dword [rbx + 8], r14d
jne 0x14030becb
cmp dword [rsi + 8], edi
jne 0x14030c0cd
cmp dword [rsi + 8], edi
jne 0x14030beea
cmp dword [rbx + 0x9c], edi
jne 0x14030beea
test ebp, ebp
je 0x14030bfab
cmp dword [rbx + 8], r14d
je 0x14030bfab
mov eax, dword [rbx + 0xb0]
cmp eax, 2
jne 0x14030bf01
mov edx, ebp
mov rcx, rbx
call fcn.14030ccdc
jmp 0x14030bf24
cmp dword [rbx + 0xac], edi
jne 0x14030bf1a
cmp eax, 3
je 0x14030bf1a
mov edx, ebp
mov rcx, rbx
call fcn.14030d330
jmp 0x14030bf24
mov edx, ebp
mov rcx, rbx
call fcn.14030c50c
mov ecx, eax
lea eax, [rax - 2]
cmp eax, r12d
ja 0x14030bf32
mov dword [rbx + 8], r14d
test ecx, 0xfffffffd
je 0x14030c0c0
cmp ecx, r12d
jne 0x14030bfab
cmp ebp, r12d
jne 0x14030bf52
mov rcx, rbx
call fcn.14030e894
jmp 0x14030bf9a
cmp ebp, 5
je 0x14030bf9a
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.14030ee70
cmp ebp, 3
jne 0x14030bf9a
mov ecx, dword [rbx + 0x44]
mov r8d, dword [rbx + 0x74]
neg ecx
mov rdx, qword [rbx + 0x68]
mov rax, qword [0x140505e38]
call qword [case.0x1400ae9d9.0]
cmp dword [rbx + 0x9c], edi
jne 0x14030bf9a
mov dword [rbx + 0x94], edi
mov dword [rbx + 0x84], edi
mov rcx, rsi
call fcn.14030d63c
cmp dword [rsi + 0x18], edi
je 0x14030c0c5
cmp ebp, 4
jne 0x14030c0c9
cmp dword [rbx + 0x2c], edi
jg 0x14030bfc1
mov eax, r12d
jmp 0x14030c0ef
cmp dword [rbx + 0x2c], 2
jne 0x14030c051
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 0x14030c09d
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.14030d63c
mov ecx, dword [rbx + 0x2c]
test ecx, ecx
jle 0x14030c0b5
neg ecx
mov dword [rbx + 0x2c], ecx
cmp dword [rbx + 0x28], edi
sete dil
mov eax, edi
jmp 0x14030c0ef
cmp dword [rsi + 0x18], edi
jne 0x14030c0c9
or dword [rbx + 0x40], 0xffffffff
xor eax, eax
jmp 0x14030c0ef
mov rax, qword [str.buffer_error]
mov qword [rsi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x14030c0ef
mov rax, qword [str.stream_error]
mov qword [rcx + 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