Function at 0x140276d70
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push r12
push r14
push r15
sub rsp, 0x20
mov rbx, qword [rcx + 0x28]
xor edi, edi
mov ebp, edx
mov rsi, rcx
test rbx, rbx
je 0x140277612
cmp edx, 5
ja 0x140277612
cmp qword [rcx + 0x10], rdi
je 0x140277607
cmp qword [rcx], rdi
jne 0x140276dc2
cmp dword [rcx + 8], edi
jne 0x140277607
cmp dword [rbx + 8], 0x29a
jne 0x140276dd4
cmp ebp, 4
jne 0x140277607
cmp dword [rcx + 0x18], edi
jne 0x140276dee
mov rax, qword [str._x0_]
mov qword [rcx + 0x20], rax
mov eax, 0xfffffffb
jmp 0x140277617
cmp dword [rbx + 8], 0x2a
mov r9d, WSACleanup
mov r15d, dword [rbx + 0x40]
mov qword [rbx], rsi
mov dword [rbx + 0x40], ebp
lea r12d, [r9 - 0x70]
jne 0x14027710e
cmp dword [rbx + 0x2c], 2
jne 0x140277027
mov dword [rcx + 0x4c], edi
mov ecx, dword [rbx + 0x28]
mov rax, qword [rbx + 0x10]
mov byte [rcx + rax], reloc.Cabinet.dll_SetCompressorInformation
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]
test r8, r8
jne 0x140276ee6
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
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 eax, dword [rbx + 0xac]
cmp eax, 9
jne 0x140276ead
mov dl, 2
jmp 0x140276ec0
cmp dword [rbx + 0xb0], 2
jge 0x140276ebe
mov dl, dil
cmp eax, 2
jge 0x140276ec0
mov dl, 4
mov ecx, dword [rbx + 0x28]
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
add dword [rbx + 0x28], r12d
mov dword [rbx + 8], r9d
jmp 0x14027710e
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], 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
add dword [rbx + 0x28], r12d
mov eax, dword [rbx + 0xac]
cmp eax, 9
jne 0x140276f94
mov dl, 2
jmp 0x140276fa7
cmp dword [rbx + 0xb0], 2
jge 0x140276fa5
mov dl, dil
cmp eax, 2
jge 0x140276fa7
mov dl, 4
mov ecx, dword [rbx + 0x28]
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
add dword [rbx + 0x28], r12d
mov rax, qword [rbx + 0x30]
mov r8d, dword [rbx + 0x28]
cmp qword [rax + 0x10], rdi
je 0x140277000
mov al, byte [rax + 0x18]
mov rcx, qword [rbx + 0x10]
mov byte [r8 + 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 r8d, dword [rbx + 0x28]
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x140277018
mov rdx, qword [rbx + 0x10]
mov ecx, dword [rsi + 0x4c]
call fcn.14025ee40
mov dword [rsi + 0x4c], eax
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], 0x45
jmp 0x14027710e
mov ecx, dword [rbx + 0x48]
shl ecx, 0xc
sub ecx, 0x7800
cmp dword [rbx + 0xb0], 2
jge 0x140277065
mov edx, dword [rbx + 0xac]
cmp edx, 2
jl 0x140277065
cmp edx, 6
jge 0x140277053
mov eax, 0x40
jmp 0x140277067
mov eax, 0xc0
cmp edx, 6
lea r8d, [rax - 0x40]
cmove eax, r8d
jmp 0x140277067
mov eax, edi
or ecx, eax
cmp dword [rbx + 0x94], edi
je 0x140277074
or ecx, 0x20
mov eax, 0x8421085
mov dword [rbx + 8], r9d
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
add dword [rbx + 0x28], r12d
cmp dword [rbx + 0x94], edi
je 0x14027710a
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 dword [rsi + 0x4c], r12d
cmp dword [rbx + 8], 0x45
mov r14d, VarR8FromUI1
jne 0x1402771e4
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x10], rdi
je 0x1402771e0
movzx eax, word [rax + 0x18]
mov r10d, dword [rbx + 0x28]
cmp dword [rbx + 0x38], eax
jae 0x1402771aa
mov ecx, dword [rbx + 0x28]
cmp ecx, dword [rbx + 0x18]
jne 0x14027717a
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x140277167
cmp ecx, r10d
jbe 0x140277167
sub ecx, r10d
mov edx, r10d
add rdx, qword [rbx + 0x10]
mov r8d, ecx
mov ecx, dword [rsi + 0x4c]
call fcn.14025ee40
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.140276cfc
mov ecx, dword [rbx + 0x28]
mov r10d, ecx
cmp ecx, dword [rbx + 0x18]
je 0x1402771aa
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
add dword [rbx + 0x28], r12d
add dword [rbx + 0x38], r12d
mov rax, qword [rbx + 0x30]
movzx ecx, word [rax + 0x18]
cmp dword [rbx + 0x38], ecx
jb 0x140277139
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x1402771d1
mov r8d, dword [rbx + 0x28]
cmp r8d, r10d
jbe 0x1402771d1
mov ecx, dword [rsi + 0x4c]
sub r8d, r10d
mov edx, r10d
add rdx, qword [rbx + 0x10]
call fcn.14025ee40
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
mov ecx, dword [rax + 0x18]
cmp dword [rbx + 0x38], ecx
jne 0x1402771e4
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], r14d
cmp dword [rbx + 8], r14d
jne 0x1402772a2
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x20], rdi
je 0x14027729b
mov edx, dword [rbx + 0x28]
mov r8d, dword [rbx + 0x28]
cmp r8d, dword [rbx + 0x18]
jne 0x140277240
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x14027722b
cmp r8d, edx
jbe 0x14027722b
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
mov edx, edx
add rdx, qword [rbx + 0x10]
call fcn.14025ee40
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.140276cfc
mov r8d, dword [rbx + 0x28]
mov edx, r8d
cmp r8d, dword [rbx + 0x18]
je 0x14027726c
mov ecx, dword [rbx + 0x38]
mov rax, qword [rbx + 0x30]
mov rax, qword [rax + 0x20]
movzx r14d, byte [rax + rcx]
lea eax, [rcx + 1]
mov dword [rbx + 0x38], eax
mov rax, qword [rbx + 0x10]
mov ecx, r8d
mov byte [rcx + rax], r14b
add dword [rbx + 0x28], r12d
test r14d, r14d
je 0x14027726f
jmp 0x1402771ff
mov r14d, r12d
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x140277293
mov r8d, dword [rbx + 0x28]
cmp r8d, edx
jbe 0x140277293
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
add rdx, qword [rbx + 0x10]
call fcn.14025ee40
mov dword [rsi + 0x4c], eax
test r14d, r14d
jne 0x1402772a2
mov dword [rbx + 0x38], edi
mov dword [rbx + 8], 0x5b
cmp dword [rbx + 8], 0x5b
jne 0x14027735d
mov rax, qword [rbx + 0x30]
cmp qword [rax + 0x30], rdi
je 0x140277356
mov edx, dword [rbx + 0x28]
mov r8d, dword [rbx + 0x28]
cmp r8d, dword [rbx + 0x18]
jne 0x1402772fe
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x1402772e9
cmp r8d, edx
jbe 0x1402772e9
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
mov edx, edx
add rdx, qword [rbx + 0x10]
call fcn.14025ee40
mov dword [rsi + 0x4c], eax
mov rcx, rsi
call fcn.140276cfc
mov r8d, dword [rbx + 0x28]
mov edx, r8d
cmp r8d, dword [rbx + 0x18]
je 0x14027732a
mov ecx, dword [rbx + 0x38]
mov rax, qword [rbx + 0x30]
mov rax, qword [rax + 0x30]
movzx r14d, byte [rax + rcx]
lea eax, [rcx + 1]
mov dword [rbx + 0x38], eax
mov rax, qword [rbx + 0x10]
mov ecx, r8d
mov byte [rcx + rax], r14b
add dword [rbx + 0x28], r12d
test r14d, r14d
je 0x14027732d
jmp 0x1402772bd
mov r14d, r12d
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x140277351
mov r8d, dword [rbx + 0x28]
cmp r8d, edx
jbe 0x140277351
mov ecx, dword [rsi + 0x4c]
sub r8d, edx
add rdx, qword [rbx + 0x10]
call fcn.14025ee40
mov dword [rsi + 0x4c], eax
test r14d, r14d
jne 0x14027735d
mov dword [rbx + 8], 0x67
cmp dword [rbx + 8], 0x67
jne 0x1402773b5
mov rax, qword [rbx + 0x30]
cmp dword [rax + 0x3c], edi
je 0x1402773ae
mov eax, dword [rbx + 0x28]
add eax, 2
cmp eax, dword [rbx + 0x18]
jbe 0x14027737f
mov rcx, rsi
call fcn.140276cfc
mov ecx, dword [rbx + 0x28]
lea eax, [rcx + 2]
cmp eax, dword [rbx + 0x18]
ja 0x1402773b5
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], WSACleanup
cmp dword [rbx + 0x28], edi
je 0x1402773d2
mov rcx, rsi
call fcn.140276cfc
cmp dword [rsi + 0x18], edi
jne 0x1402773f1
or dword [rbx + 0x40], 0xffffffff
xor eax, eax
jmp 0x140277617
cmp dword [rsi + 8], edi
jne 0x1402773f1
cmp ebp, r15d
jg 0x1402773f1
cmp ebp, 4
je 0x1402773f1
mov rax, qword [str._x0_]
mov qword [rsi + 0x20], rax
jmp 0x140276de4
mov r14d, 0x29a
cmp dword [rbx + 8], r14d
jne 0x140277404
cmp dword [rsi + 8], edi
je 0x140277409
jmp 0x1402773e1
cmp dword [rsi + 8], edi
jne 0x140277423
cmp dword [rbx + 0x9c], edi
jne 0x140277423
test ebp, ebp
je 0x1402774e4
cmp dword [rbx + 8], r14d
je 0x1402774e4
mov eax, dword [rbx + 0xb0]
cmp eax, 2
jne 0x14027743a
mov edx, ebp
mov rcx, rbx
call fcn.140278498
jmp 0x14027745d
cmp dword [rbx + 0xac], edi
jne 0x140277453
cmp eax, 3
je 0x140277453
mov edx, ebp
mov rcx, rbx
call fcn.140277a70
jmp 0x14027745d
mov edx, ebp
mov rcx, rbx
call fcn.140278768
mov ecx, eax
lea eax, [rax - 2]
cmp eax, r12d
ja 0x14027746b
mov dword [rbx + 8], r14d
test ecx, 0xfffffffd
je 0x1402775f9
cmp ecx, r12d
jne 0x1402774e4
cmp ebp, r12d
jne 0x14027748b
mov rcx, rbx
call fcn.140279d48
jmp 0x1402774d3
cmp ebp, 5
je 0x1402774d3
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.140279c28
cmp ebp, 3
jne 0x1402774d3
mov ecx, dword [rbx + 0x44]
mov r8d, dword [rbx + 0x74]
neg ecx
mov rdx, qword [rbx + 0x68]
mov rax, qword [0x14040e328]
call qword [str.__v__]
cmp dword [rbx + 0x9c], edi
jne 0x1402774d3
mov dword [rbx + 0x94], edi
mov dword [rbx + 0x84], edi
mov rcx, rsi
call fcn.140276cfc
cmp dword [rsi + 0x18], edi
je 0x1402773c7
cmp ebp, 4
jne 0x1402773cb
cmp dword [rbx + 0x2c], edi
jg 0x1402774fa
mov eax, r12d
jmp 0x140277617
cmp dword [rbx + 0x2c], 2
jne 0x14027758a
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 0x1402775d6
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.140276cfc
mov eax, dword [rbx + 0x2c]
test eax, eax
jle 0x1402775ee
neg eax
mov dword [rbx + 0x2c], eax
cmp dword [rbx + 0x28], edi
sete dil
mov eax, edi
jmp 0x140277617
cmp dword [rsi + 0x18], edi
jne 0x1402773cb
jmp 0x1402773c7
mov rax, qword [str.stream_error]
mov qword [rcx + 0x20], rax
mov eax, 0xfffffffe
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r14
pop r12
ret