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

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
xor r12d, r12d
mov r13, rcx
cmp rcx, r12
je 0x180039e54
mov rdi, qword [rcx + 0x28]
cmp rdi, r12
je 0x180039e54
cmp qword [rcx + 0x10], r12
je 0x180039e54
cmp qword [rcx], r12
jne 0x180039da5
cmp dword [rcx + 8], r12d
jne 0x180039e54
cmp dword [rdi], 0xb
jne 0x180039db0
mov dword [rdi], 0xc
mov r9d, dword [rcx + 0x18]
mov r10, qword [rcx + 0x10]
mov r14d, dword [rcx + 8]
mov r15, qword [rcx]
mov ebp, dword [rdi + 0x40]
mov esi, dword [rdi + 0x44]
mov eax, r12d
mov qword [rsp + 0x40], r10
mov dword [rsp + 0xa0], r9d
mov dword [rsp + 0x38], r14d
mov r8d, r9d
mov dword [rsp + 0xa8], r9d
mov dword [rsp + 0x90], eax
mov ebx, 1
lea r11, str.unknown_compression_method
lea rdx, [0x18004ae10]
mov ecx, dword [rdi]
cmp ecx, 0xe
jg 0x18003a6aa
je 0x18003a463
cmp ecx, 7
jg 0x18003a3e0
je 0x18003a1b4
cmp ecx, r12d
je 0x18003a23f
sub ecx, ebx
je 0x180039e8e
sub ecx, ebx
je 0x180039f23
sub ecx, ebx
je 0x180039f9e
sub ecx, ebx
je 0x180039ff8
sub ecx, ebx
je 0x18003a015
cmp ecx, ebx
je 0x18003a119
mov eax, 0xfffffffe
mov rbx, qword [rsp + 0x98]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x10
jb 0x180039e71
cmp bpl, 8
mov dword [rdi + 0x10], ebp
je 0x180039ea5
mov qword [r13 + 0x20], r11
jmp 0x18003a387
test ebp, 0xe000
je 0x180039eb9
lea rax, str.unknown_header_flags_set
jmp 0x18003a383
mov rcx, qword [rdi + 0x20]
cmp rcx, r12
je 0x180039ecb
mov eax, ebp
shr eax, 8
and eax, ebx
mov dword [rcx], eax
mov ax, word [rdi + 0x10]
bt eax, 9
jae 0x180039ef8
mov byte [rsp + 0x30], bpl
shr ebp, 8
lea rdx, [rsp + 0x30]
mov byte [rsp + 0x31], bpl
mov ecx, dword [rdi + 0x18]
mov r8d, 2
call fcn.180041650
mov dword [rdi + 0x18], eax
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 2
jmp 0x180039f23
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x180039f06
mov rax, qword [rdi + 0x20]
cmp rax, r12
je 0x180039f34
mov dword [rax + 4], ebp
mov ax, word [rdi + 0x10]
bt eax, 9
jae 0x180039f73
mov eax, ebp
mov byte [rsp + 0x30], bpl
lea rdx, [rsp + 0x30]
shr eax, 8
mov r8d, 4
mov byte [rsp + 0x31], al
mov eax, ebp
shr ebp, 0x18
shr eax, 0x10
mov byte [rsp + 0x33], bpl
mov byte [rsp + 0x32], al
mov ecx, dword [rdi + 0x18]
call fcn.180041650
mov dword [rdi + 0x18], eax
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 3
jmp 0x180039f9e
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x10
jb 0x180039f81
mov rcx, qword [rdi + 0x20]
cmp rcx, r12
je 0x180039fbf
movzx eax, bpl
mov dword [rcx + 8], eax
mov rax, qword [rdi + 0x20]
mov ecx, ebp
shr ecx, 8
mov dword [rax + 0xc], ecx
mov ax, word [rdi + 0x10]
bt eax, 9
jae 0x180039fec
mov byte [rsp + 0x30], bpl
shr ebp, 8
lea rdx, [rsp + 0x30]
mov byte [rsp + 0x31], bpl
mov ecx, dword [rdi + 0x18]
mov r8d, 2
call fcn.180041650
mov dword [rdi + 0x18], eax
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 4
mov ax, word [rdi + 0x10]
bt eax, 0xa
jb 0x18003a081
mov rax, qword [rdi + 0x20]
cmp rax, r12
je 0x18003a00f
mov qword [rax + 0x10], r12
mov dword [rdi], 5
mov ax, word [rdi + 0x10]
bt eax, 0xa
jae 0x18003a10f
mov ebx, dword [rdi + 0x48]
cmp ebx, r14d
cmova ebx, r14d
cmp ebx, r12d
je 0x18003a105
mov rax, qword [rdi + 0x20]
cmp rax, r12
je 0x18003a0df
mov r9, qword [rax + 0x10]
cmp r9, r12
je 0x18003a0df
mov edx, dword [rax + 0x18]
mov ecx, dword [rax + 0x1c]
sub edx, dword [rdi + 0x48]
lea eax, [rbx + rdx]
cmp eax, ecx
jbe 0x18003a0cd
sub ecx, edx
jmp 0x18003a0cf
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x10
jb 0x18003a064
mov rax, qword [rdi + 0x20]
mov dword [rdi + 0x48], ebp
cmp rax, r12
je 0x18003a095
mov dword [rax + 0x18], ebp
mov ax, word [rdi + 0x10]
bt eax, 9
jae 0x18003a0c2
mov byte [rsp + 0x30], bpl
shr ebp, 8
lea rdx, [rsp + 0x30]
mov byte [rsp + 0x31], bpl
mov ecx, dword [rdi + 0x18]
mov r8d, 2
call fcn.180041650
mov dword [rdi + 0x18], eax
mov ebp, r12d
mov esi, r12d
jmp 0x18003a00f
mov ecx, ebx
mov r8d, ecx
mov ecx, edx
mov rdx, r15
add rcx, r9
call sub.ntdll.dll_memcpy
mov ax, word [rdi + 0x10]
bt eax, 9
jae 0x18003a0fa
mov ecx, dword [rdi + 0x18]
mov r8d, ebx
mov rdx, r15
call fcn.180041650
mov dword [rdi + 0x18], eax
mov eax, ebx
sub r14d, ebx
add r15, rax
sub dword [rdi + 0x48], ebx
cmp dword [rdi + 0x48], r12d
jne 0x18003b16f
mov dword [rdi + 0x48], r12d
mov dword [rdi], 6
mov ax, word [rdi + 0x10]
bt eax, 0xb
jae 0x18003a19d
cmp r14d, r12d
je 0x18003b16f
mov ebx, r12d
mov r8, r15
mov rax, qword [rdi + 0x20]
movzx r12d, byte [r8]
add ebx, 1
add r8, 1
test rax, rax
je 0x18003a162
mov rdx, qword [rax + 0x20]
test rdx, rdx
je 0x18003a162
mov ecx, dword [rdi + 0x48]
cmp ecx, dword [rax + 0x28]
jae 0x18003a162
mov byte [rcx + rdx], r12b
add dword [rdi + 0x48], 1
mov rax, rcx
test r12d, r12d
je 0x18003a16c
cmp ebx, r14d
jb 0x18003a132
mov ax, word [rdi + 0x10]
bt eax, 9
jae 0x18003a187
mov ecx, dword [rdi + 0x18]
mov r8d, ebx
mov rdx, r15
call fcn.180041650
mov dword [rdi + 0x18], eax
mov eax, ebx
sub r14d, ebx
add r15, rax
test r12d, r12d
jne 0x18003b16f
xor r12d, r12d
jmp 0x18003a1aa
mov rax, qword [rdi + 0x20]
cmp rax, r12
je 0x18003a1aa
mov qword [rax + 0x20], r12
mov dword [rdi + 0x48], r12d
mov dword [rdi], 7
mov ax, word [rdi + 0x10]
bt eax, 0xc
jae 0x18003a392
cmp r14d, r12d
je 0x18003b16f
mov ebx, r12d
mov r8, r15
mov rax, qword [rdi + 0x20]
movzx r12d, byte [r8]
add ebx, 1
add r8, 1
test rax, rax
je 0x18003a201
mov rdx, qword [rax + 0x2c]
test rdx, rdx
je 0x18003a201
mov ecx, dword [rdi + 0x48]
cmp ecx, dword [rax + 0x34]
jae 0x18003a201
mov byte [rcx + rdx], r12b
add dword [rdi + 0x48], 1
mov rax, rcx
test r12d, r12d
je 0x18003a20b
cmp ebx, r14d
jb 0x18003a1d1
mov ax, word [rdi + 0x10]
bt eax, 9
jae 0x18003a226
mov ecx, dword [rdi + 0x18]
mov r8d, ebx
mov rdx, r15
call fcn.180041650
mov dword [rdi + 0x18], eax
mov eax, ebx
sub r14d, ebx
add r15, rax
test r12d, r12d
jne 0x18003b16f
xor r12d, r12d
jmp 0x18003a39f
cmp dword [rdi + 8], r12d
jne 0x18003a26d
mov dword [rdi], 0xc
jmp 0x180039dff
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x10
jb 0x18003a250
test byte [rdi + 8], 2
je 0x18003a2d1
cmp ebp, 0x8b1f
jne 0x18003a2d1
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.180041650
lea rdx, [rsp + 0x30]
mov r8d, 2
mov dword [rdi + 0x18], eax
mov byte [rsp + 0x30], 0x1f
mov byte [rsp + 0x31], 0x8b
mov ecx, dword [rdi + 0x18]
call fcn.180041650
mov dword [rdi], ebx
mov dword [rdi + 0x18], eax
mov esi, r12d
mov ebp, r12d
mov r8d, dword [rsp + 0xa8]
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
jmp 0x180039df1
mov rax, qword [rdi + 0x20]
mov dword [rdi + 0x10], r12d
cmp rax, r12
je 0x18003a2e2
or dword [rax + 0x3c], 0xffffffff
test byte [rdi + 8], bl
je 0x18003a37c
movzx ecx, bpl
mov eax, ebp
shr eax, 8
shl ecx, 8
add ecx, eax
mov eax, 0x8421085
mul ecx
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
imul eax, eax, 0x1f
cmp ecx, eax
jne 0x18003a375
mov eax, ebp
and al, 0xf
cmp al, 8
je 0x18003a329
mov qword [r13 + 0x20], r11
mov dword [rdi], 0x1b
jmp 0x180039df8
shr ebp, 4
add esi, 0xfffffffc
mov ecx, ebp
and ecx, 0xf
add ecx, 8
cmp ecx, dword [rdi + 0x28]
jbe 0x18003a349
lea rax, str.invalid_window_size
mov qword [r13 + 0x20], rax
jmp 0x18003a31e
mov eax, ebx
xor r8d, r8d
xor edx, edx
shl eax, cl
xor ecx, ecx
mov dword [rdi + 0x14], eax
call fcn.180048168
shr ebp, 8
not ebp
mov dword [rdi + 0x18], eax
mov dword [r13 + 0x3c], eax
and ebp, 2
or ebp, 9
mov dword [rdi], ebp
jmp 0x18003a2b1
lea rdx, [0x18004ae10]
lea rax, str.incorrect_header_check
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x180039dff
mov rax, qword [rdi + 0x20]
cmp rax, r12
je 0x18003a39f
mov qword [rax + 0x2c], r12
mov r8d, dword [rsp + 0xa8]
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
mov dword [rdi], 8
mov ebx, 1
lea r11, str.unknown_compression_method
lea rdx, [0x18004ae10]
mov ax, word [rdi + 0x10]
bt eax, 9
jae 0x18003a662
jmp 0x18003a643
sub ecx, 8
je 0x18003a3cd
sub ecx, ebx
je 0x18003a4ef
sub ecx, ebx
je 0x18003a52a
sub ecx, ebx
je 0x18003a570
sub ecx, ebx
je 0x18003a570
cmp ecx, ebx
jne 0x180039e54
mov ecx, esi
and ecx, 7
shr ebp, cl
sub esi, ecx
jmp 0x18003a435
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x18003a418
mov eax, ebp
movzx ecx, bp
not eax
shr eax, 0x10
cmp ecx, eax
je 0x18003a454
lea rax, str.invalid_stored_block_lengths
jmp 0x18003a383
mov dword [rdi + 0x48], ecx
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 0xe
mov r12d, dword [rdi + 0x48]
test r12d, r12d
je 0x18003a69c
cmp r12d, r14d
cmova r12d, r14d
cmp r12d, r9d
cmova r12d, r9d
test r12d, r12d
je 0x18003b16f
mov r8d, r12d
mov rdx, r15
mov rcx, r10
mov ebx, r12d
call sub.ntdll.dll_memcpy
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
sub r9d, r12d
sub r14d, r12d
add r10, rbx
add r15, rbx
sub dword [rdi + 0x48], r12d
mov dword [rsp + 0xa0], r9d
mov qword [rsp + 0x40], r10
mov r8d, dword [rsp + 0xa8]
xor r12d, r12d
jmp 0x180039dec
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x18003a4d2
mov ecx, ebp
mov eax, ebp
mov esi, r12d
shl eax, 0x10
and ecx, 0xff00
add ecx, eax
mov eax, ebp
shr ebp, 0x18
shr eax, 8
shl ecx, 8
and eax, 0xff00
add eax, ecx
add eax, ebp
mov ebp, r12d
mov dword [rdi + 0x18], eax
mov dword [r13 + 0x3c], eax
mov dword [rdi], 0xa
cmp dword [rdi + 0xc], r12d
je 0x18003b136
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.180048168
mov r8d, dword [rsp + 0xa8]
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
mov dword [rdi + 0x18], eax
mov dword [r13 + 0x3c], eax
mov dword [rdi], 0xb
lea r11, str.unknown_compression_method
lea rdx, [0x18004ae10]
cmp dword [rdi + 4], r12d
je 0x18003a5a7
mov ecx, esi
mov dword [rdi], 0x18
and ecx, 7
shr ebp, cl
sub esi, ecx
jmp 0x180039dff
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 3
jb 0x18003a58a
mov eax, ebp
shr ebp, 1
add esi, 0xffffffff
and eax, ebx
mov dword [rdi + 4], eax
mov eax, ebp
and eax, 3
cmp eax, r12d
je 0x18003a615
sub eax, ebx
je 0x18003a5e9
sub eax, ebx
je 0x18003a5e1
sub eax, ebx
jne 0x18003a61b
lea rax, str.invalid_block_type
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x18003a61b
mov dword [rdi], 0xf
jmp 0x18003a61b
lea rax, [0x18004a590]
mov dword [rdi + 0x64], 9
mov dword [rdi + 0x68], 5
mov qword [rdi + 0x54], rax
lea rax, [0x18004ad90]
mov dword [rdi], 0x12
mov qword [rdi + 0x5c], rax
jmp 0x18003a61b
mov dword [rdi], 0xd
shr ebp, 2
add esi, 0xfffffffe
jmp 0x180039dff
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x10
jb 0x18003a626
movzx eax, word [rdi + 0x18]
cmp ebp, eax
je 0x18003a65c
lea rax, str.header_crc_mismatch
jmp 0x18003a383
mov ebp, r12d
mov esi, r12d
mov rcx, qword [rdi + 0x20]
cmp rcx, r12
je 0x18003a67e
mov ax, word [rdi + 0x10]
sar eax, 9
and eax, ebx
mov dword [rcx + 0x38], eax
mov rax, qword [rdi + 0x20]
mov dword [rax + 0x3c], ebx
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.180041650
mov dword [rdi + 0x18], eax
mov dword [r13 + 0x3c], eax
mov dword [rdi], 0xb
jmp 0x18003a2b7
mov dword [rdi], 0xb
xor r12d, r12d
jmp 0x180039dff
cmp ecx, 0x16
jg 0x18003afba
je 0x18003af22
sub ecx, 0xf
je 0x18003a710
sub ecx, ebx
je 0x18003a7ad
sub ecx, ebx
je 0x18003aab3
sub ecx, ebx
je 0x18003ab6b
sub ecx, ebx
je 0x18003ad27
sub ecx, ebx
je 0x18003ad6c
cmp ecx, ebx
jne 0x180039e54
jmp 0x18003aec3
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0xe
jb 0x18003a6f3
mov ecx, ebp
shr ebp, 5
add esi, 0xfffffff2
mov edx, ebp
shr ebp, 5
and ecx, 0x1f
mov eax, ebp
and edx, 0x1f
add ecx, 0x101
and eax, 0xf
add edx, ebx
shr ebp, 4
add eax, 4
cmp ecx, 0x11e
mov dword [rdi + 0x70], ecx
mov dword [rdi + 0x6c], eax
mov dword [rdi + 0x74], edx
ja 0x18003af4a
cmp edx, 0x1e
ja 0x18003af4a
mov dword [rdi + 0x78], r12d
mov dword [rdi], 0x10
lea rdx, [0x18004ae10]
jmp 0x18003a7ad
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 3
jb 0x18003a76c
mov eax, dword [rdi + 0x78]
mov cl, bpl
shr ebp, 3
movzx eax, word [rdx + rax*2]
and cx, 7
mov word [rdi + rax*2 + 0x84], cx
add dword [rdi + 0x78], ebx
add esi, 0xfffffffd
mov eax, dword [rdi + 0x6c]
cmp dword [rdi + 0x78], eax
jb 0x18003a789
jmp 0x18003a7ca
mov eax, dword [rdi + 0x78]
movzx eax, word [rdx + rax*2]
mov word [rdi + rax*2 + 0x84], r12w
add dword [rdi + 0x78], ebx
cmp dword [rdi + 0x78], 0x13
jb 0x18003a7b7
lea rcx, [rdi + 0x64]
lea rax, [rdi + 0x544]
lea r9, [rdi + 0x7c]
mov qword [r9], rax
mov qword [rdi + 0x54], rax
lea rax, [rdi + 0x304]
mov qword [rsp + 0x28], rax
mov dword [rcx], 7
mov qword [rsp + 0x20], rcx
xor ecx, ecx
lea rdx, [rdi + 0x84]
lea r8d, [rcx + 0x13]
call fcn.18003c130
cmp eax, r12d
mov dword [rsp + 0x90], eax
je 0x18003a831
lea rax, str.invalid_code_lengths_set
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x18003a2b7
mov r10, qword [rsp + 0x40]
mov dword [rdi + 0x78], r12d
mov dword [rdi], 0x11
lea r11, str.unknown_compression_method
jmp 0x18003aab3
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
mov ecx, dword [rdi + 0x64]
mov eax, ebx
shl eax, cl
sub eax, ebx
mov ecx, eax
mov eax, ebp
and rcx, rax
mov rax, qword [rdi + 0x54]
mov eax, dword [rax + rcx*4]
mov ecx, eax
mov dword [rsp + 0x34], eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x18003a84c
mov ecx, eax
shr ecx, 0x10
cmp cx, 0x10
jae 0x18003a8ec
shr eax, 8
movzx ecx, al
cmp esi, ecx
jae 0x18003a8cb
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add esi, 8
shl eax, cl
add r14d, 0xffffffff
add r15, rbx
add ebp, eax
movzx eax, byte [rsp + 0x35]
cmp esi, eax
jb 0x18003a8a5
movzx ecx, byte [rsp + 0x35]
movzx eax, word [rsp + 0x36]
shr ebp, cl
sub esi, ecx
mov ecx, dword [rdi + 0x78]
mov word [rdi + rcx*2 + 0x84], ax
add dword [rdi + 0x78], ebx
jmp 0x18003aab3
cmp word [rsp + 0x36], 0x10
movzx edx, byte [rsp + 0x35]
jne 0x18003a955
lea r8d, [rdx + 2]
jmp 0x18003a91c
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r8d
jb 0x18003a8ff
mov eax, dword [rdi + 0x78]
mov ecx, edx
sub esi, edx
shr ebp, cl
cmp eax, r12d
je 0x18003aac7
mov r8d, ebp
add eax, 0xffffffff
shr ebp, 2
movzx r9d, word [rdi + rax*2 + 0x84]
and r8d, 3
add r8d, 3
add esi, 0xfffffffe
jmp 0x18003a9e4
cmp word [rsp + 0x36], 0x11
jne 0x18003a99e
lea r8d, [rdx + 3]
jmp 0x18003a980
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r8d
jb 0x18003a963
mov ecx, edx
mov eax, 0xfffffffd
shr ebp, cl
mov r8d, ebp
and r8d, 7
add r8d, 3
shr ebp, 3
jmp 0x18003a9dd
lea r8d, [rdx + 7]
jmp 0x18003a9c1
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r8d
jb 0x18003a9a4
mov ecx, edx
mov eax, 0xfffffff9
shr ebp, cl
mov r8d, ebp
and r8d, 0x7f
add r8d, 0xb
shr ebp, 7
sub eax, edx
mov r9d, r12d
add esi, eax
mov edx, dword [rdi + 0x74]
mov eax, dword [rdi + 0x78]
add edx, dword [rdi + 0x70]
lea ecx, [r8 + rax]
cmp ecx, edx
jbe 0x18003aaae
lea rax, str.invalid_bit_length_repeat
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
cmp dword [rdi], 0x1b
mov r8d, dword [rsp + 0xa8]
mov r9d, dword [rsp + 0xa0]
lea rdx, [0x18004ae10]
je 0x180039dff
mov r8d, dword [rdi + 0x70]
lea rax, [rdi + 0x544]
lea r12, [rdi + 0x304]
mov qword [rdi + 0x7c], rax
mov qword [rdi + 0x54], rax
lea rax, [rdi + 0x64]
lea rdx, [rdi + 0x84]
lea r9, [rdi + 0x7c]
mov ecx, 1
mov qword [rsp + 0x28], r12
mov dword [rax], 9
mov qword [rsp + 0x20], rax
call fcn.18003c130
test eax, eax
mov dword [rsp + 0x90], eax
je 0x18003aaed
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
lea rax, str.invalid_literal_lengths_set
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x18003a4c2
mov eax, dword [rdi + 0x78]
add r8d, 0xffffffff
mov word [rdi + rax*2 + 0x84], r9w
add dword [rdi + 0x78], ebx
cmp r8d, r12d
jne 0x18003aa9b
mov eax, dword [rdi + 0x74]
add eax, dword [rdi + 0x70]
cmp dword [rdi + 0x78], eax
jae 0x18003aa0a
jmp 0x18003a869
mov r8d, dword [rsp + 0xa8]
mov r9d, dword [rsp + 0xa0]
lea rax, str.invalid_bit_length_repeat
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x180039df8
mov rax, qword [rdi + 0x7c]
mov r8d, dword [rdi + 0x74]
lea rcx, [rdi + 0x68]
mov qword [rdi + 0x5c], rax
mov eax, dword [rdi + 0x70]
mov dword [rcx], 6
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], rcx
lea r9, [rdi + 0x7c]
lea rdx, [rdi + rax*2 + 0x84]
mov ecx, 2
call fcn.18003c130
mov r8d, dword [rsp + 0xa8]
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
xor r12d, r12d
mov dword [rsp + 0x90], eax
cmp eax, r12d
je 0x18003ab60
lea rax, str.invalid_distances_set
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x180039dec
mov dword [rdi], 0x12
mov ebx, 1
cmp r14d, 6
jb 0x18003abcb
cmp r9d, 0x102
jb 0x18003abcb
mov qword [r13 + 0x10], r10
mov dword [r13 + 0x18], r9d
mov qword [r13], r15
mov dword [r13 + 8], r14d
mov edx, r8d
mov rcx, r13
mov dword [rdi + 0x40], ebp
mov dword [rdi + 0x44], esi
call fcn.18003c5d0
mov r10, qword [r13 + 0x10]
mov r9d, dword [r13 + 0x18]
mov r15, qword [r13]
mov r14d, dword [r13 + 8]
mov ebp, dword [rdi + 0x40]
mov esi, dword [rdi + 0x44]
mov r8d, dword [rsp + 0xa8]
mov qword [rsp + 0x40], r10
mov dword [rsp + 0xa0], r9d
jmp 0x180039df1
mov ecx, dword [rdi + 0x64]
mov r11, qword [rdi + 0x54]
mov eax, ebx
shl eax, cl
sub eax, ebx
mov ecx, eax
mov eax, ebp
and rcx, rax
mov eax, dword [r11 + rcx*4]
jmp 0x18003ac19
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
mov ecx, dword [rdi + 0x64]
add r15, rbx
add ebp, eax
mov eax, ebx
add esi, 8
shl eax, cl
sub eax, ebx
mov ecx, eax
mov eax, ebp
and rcx, rax
mov rax, qword [rdi + 0x54]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x18003abe5
cmp al, r12b
je 0x18003acdf
test al, 0xf0
jne 0x18003acdf
mov r10d, eax
mov cl, al
mov r9d, ebx
shr r10d, 8
mov edx, eax
mov dword [rsp + 0x34], eax
movzx r8d, r10b
shr eax, 0x10
add ecx, r8d
shl r9d, cl
mov ecx, r8d
sub r9d, ebx
and r9d, ebp
shr r9d, cl
add r9d, eax
mov eax, dword [r11 + r9*4]
mov ecx, eax
shr ecx, 8
movzx r8d, cl
movzx ecx, r10b
add r8d, ecx
jmp 0x18003acd1
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
movzx r9d, byte [rsp + 0x35]
mov ecx, esi
shl eax, cl
mov r8d, ebx
add r14d, 0xffffffff
add ebp, eax
mov al, dl
add r15, rbx
lea ecx, [r9 + rax]
movzx eax, word [rsp + 0x36]
add esi, 8
shl r8d, cl
mov ecx, r9d
sub r8d, ebx
and r8d, ebp
shr r8d, cl
add r8d, eax
mov rax, qword [rdi + 0x54]
mov eax, dword [rax + r8*4]
mov ecx, eax
shr ecx, 8
movzx r8d, cl
add r8d, r9d
cmp r8d, esi
ja 0x18003ac7a
movzx ecx, byte [rsp + 0x35]
shr ebp, cl
sub esi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr ebp, cl
sub esi, ecx
mov ecx, eax
shr ecx, 0x10
cmp al, r12b
mov dword [rdi + 0x48], ecx
jne 0x18003ad03
mov dword [rdi], 0x17
jmp 0x18003a2b7
test al, 0x20
jne 0x18003a691
test al, 0x40
je 0x18003ad1b
lea rax, str.invalid_literal_length_code
jmp 0x18003a822
and eax, 0xf
mov dword [rdi], 0x13
mov dword [rdi + 0x50], eax
mov edx, dword [rdi + 0x50]
cmp edx, r12d
je 0x18003ad66
cmp esi, edx
jae 0x18003ad55
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add esi, 8
shl eax, cl
add r14d, 0xffffffff
add r15, rbx
add ebp, eax
cmp esi, dword [rdi + 0x50]
jb 0x18003ad33
mov ecx, edx
mov eax, ebx
shl eax, cl
sub eax, ebx
and eax, ebp
shr ebp, cl
add dword [rdi + 0x48], eax
sub esi, edx
mov dword [rdi], 0x14
mov ecx, dword [rdi + 0x68]
mov r11, qword [rdi + 0x5c]
mov eax, ebx
shl eax, cl
sub eax, ebx
mov ecx, eax
mov eax, ebp
and rcx, rax
mov eax, dword [r11 + rcx*4]
jmp 0x18003adba
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
mov ecx, dword [rdi + 0x68]
add r15, rbx
add ebp, eax
mov eax, ebx
add esi, 8
shl eax, cl
sub eax, ebx
mov ecx, eax
mov eax, ebp
and rcx, rax
mov rax, qword [rdi + 0x5c]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x18003ad86
test al, 0xf0
jne 0x18003ae77
mov r10d, eax
mov cl, al
mov r9d, ebx
shr r10d, 8
mov edx, eax
mov dword [rsp + 0x34], eax
movzx r8d, r10b
shr eax, 0x10
add ecx, r8d
shl r9d, cl
mov ecx, r8d
sub r9d, ebx
and r9d, ebp
shr r9d, cl
add r9d, eax
mov eax, dword [r11 + r9*4]
mov ecx, eax
shr ecx, 8
movzx r8d, cl
movzx ecx, r10b
add r8d, ecx
jmp 0x18003ae69
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
movzx r9d, byte [rsp + 0x35]
mov ecx, esi
shl eax, cl
mov r8d, ebx
add r14d, 0xffffffff
add ebp, eax
mov al, dl
add r15, rbx
lea ecx, [r9 + rax]
movzx eax, word [rsp + 0x36]
add esi, 8
shl r8d, cl
mov ecx, r9d
sub r8d, ebx
and r8d, ebp
shr r8d, cl
add r8d, eax
mov rax, qword [rdi + 0x5c]
mov eax, dword [rax + r8*4]
mov ecx, eax
shr ecx, 8
movzx r8d, cl
add r8d, r9d
cmp r8d, esi
ja 0x18003ae12
movzx ecx, byte [rsp + 0x35]
shr ebp, cl
sub esi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr ebp, cl
sub esi, ecx
test al, 0x40
je 0x18003ae93
lea rax, str.invalid_distance_code
jmp 0x18003a822
mov r8d, dword [rsp + 0xa8]
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
mov ecx, eax
mov dword [rdi], 0x15
lea r11, str.unknown_compression_method
shr ecx, 0x10
and eax, 0xf
mov dword [rdi + 0x50], eax
mov dword [rdi + 0x4c], ecx
mov edx, dword [rdi + 0x50]
cmp edx, r12d
je 0x18003af02
cmp esi, edx
jae 0x18003aef1
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add esi, 8
shl eax, cl
add r14d, 0xffffffff
add r15, rbx
add ebp, eax
cmp esi, dword [rdi + 0x50]
jb 0x18003aecf
mov ecx, edx
mov eax, ebx
shl eax, cl
sub eax, ebx
and eax, ebp
shr ebp, cl
add dword [rdi + 0x4c], eax
sub esi, edx
mov eax, dword [rdi + 0x30]
sub eax, r9d
add eax, r8d
cmp dword [rdi + 0x4c], eax
jbe 0x18003af1c
lea rax, str.invalid_distance_too__back
jmp 0x18003a343
mov dword [rdi], 0x16
cmp r9d, r12d
je 0x18003b16f
mov ecx, dword [rdi + 0x4c]
mov eax, r8d
sub eax, r9d
cmp ecx, eax
jbe 0x18003af67
sub ecx, eax
mov eax, dword [rdi + 0x34]
cmp ecx, eax
jbe 0x18003af56
mov edx, dword [rdi + 0x2c]
sub ecx, eax
sub edx, ecx
jmp 0x18003af5a
lea rax, str.too_many_length_or_distance_symbols
jmp 0x18003a343
sub eax, ecx
mov edx, eax
mov eax, dword [rdi + 0x48]
add rdx, qword [rdi + 0x38]
cmp ecx, eax
jbe 0x18003af72
jmp 0x18003af70
mov eax, dword [rdi + 0x48]
mov rdx, r10
sub rdx, rcx
mov ecx, eax
cmp ecx, r9d
cmova ecx, r9d
sub r9d, ecx
sub eax, ecx
mov dword [rdi + 0x48], eax
mov dword [rsp + 0xa0], r9d
mov al, byte [rdx]
add rdx, rbx
mov byte [r10], al
add r10, rbx
add ecx, 0xffffffff
jne 0x18003af89
cmp dword [rdi + 0x48], r12d
mov qword [rsp + 0x40], r10
lea rdx, [0x18004ae10]
jne 0x180039dff
mov dword [rdi], 0x12
jmp 0x180039df8
sub ecx, 0x17
je 0x18003b10c
sub ecx, ebx
je 0x18003aff1
sub ecx, ebx
je 0x18003b0c3
sub ecx, ebx
je 0x18003b16a
sub ecx, ebx
je 0x18003b156
cmp ecx, ebx
jne 0x180039e54
mov eax, 0xfffffffc
jmp 0x180039e59
cmp dword [rdi + 8], r12d
je 0x18003b0bd
jmp 0x18003b01a
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x18003affd
sub r8d, r9d
add dword [r13 + 0x1c], r8d
add dword [rdi + 0x1c], r8d
cmp r8d, r12d
je 0x18003b06f
mov ecx, dword [rdi + 0x18]
mov eax, r8d
mov rdx, r10
sub rdx, rax
cmp dword [rdi + 0x10], r12d
je 0x18003b048
call fcn.180041650
jmp 0x18003b04d
call fcn.180048168
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
mov dword [rdi + 0x18], eax
mov dword [r13 + 0x3c], eax
lea r11, str.unknown_compression_method
lea rdx, [0x18004ae10]
mov ecx, ebp
mov eax, ebp
mov r8d, r9d
shl eax, 0x10
and ecx, 0xff00
mov dword [rsp + 0xa8], r9d
add ecx, eax
mov eax, ebp
shr eax, 8
shl ecx, 8
and eax, 0xff00
add ecx, eax
mov eax, ebp
shr eax, 0x18
add ecx, eax
cmp dword [rdi + 0x10], r12d
cmovne ecx, ebp
cmp ecx, dword [rdi + 0x18]
je 0x18003b0b7
lea rax, str.incorrect_data_check
jmp 0x18003a383
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 0x19
cmp dword [rdi + 8], r12d
je 0x18003b164
cmp dword [rdi + 0x10], r12d
je 0x18003b164
jmp 0x18003b0f6
cmp r14d, r12d
je 0x18003b16f
movzx eax, byte [r15]
mov ecx, esi
add r14d, 0xffffffff
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x18003b0d9
cmp ebp, dword [rdi + 0x1c]
je 0x18003b15e
lea rax, str.incorrect_length_check
jmp 0x18003a383
cmp r9d, r12d
je 0x18003b16f
mov al, byte [rdi + 0x48]
mov byte [r10], al
add r10, rbx
add r9d, 0xffffffff
mov dword [rsp + 0xa0], r9d
mov qword [rsp + 0x40], r10
mov dword [rdi], 0x12
jmp 0x180039dff
mov qword [r13 + 0x10], r10
mov dword [r13 + 0x18], r9d
mov qword [r13], r15
mov dword [r13 + 8], r14d
mov eax, 2
mov dword [rdi + 0x40], ebp
mov dword [rdi + 0x44], esi
jmp 0x180039e59
mov r12d, 0xfffffffd
jmp 0x18003b177
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 0x1a
mov r12d, ebx
jmp 0x18003b177
mov r12d, dword [rsp + 0x90]
mov rax, qword [rsp + 0x40]
mov ebx, dword [rsp + 0xa8]
mov qword [r13], r15
mov qword [r13 + 0x10], rax
mov eax, dword [rsp + 0xa0]
mov dword [r13 + 8], r14d
mov dword [r13 + 0x18], eax
mov dword [rdi + 0x40], ebp
xor ebp, ebp
cmp dword [rdi + 0x2c], ebp
mov dword [rdi + 0x44], esi
jne 0x18003b1b2
cmp dword [rdi], 0x18
jge 0x18003b1cb
cmp ebx, dword [r13 + 0x18]
je 0x18003b1cb
mov edx, ebx
mov rcx, r13
call fcn.180039c64
cmp eax, ebp
je 0x18003b1cb
mov dword [rdi], 0x1c
jmp 0x18003afe7
sub ebx, dword [r13 + 0x18]
mov esi, dword [rsp + 0x38]
sub esi, dword [r13 + 8]
add dword [r13 + 0x1c], ebx
add dword [r13 + 0xc], esi
add dword [rdi + 0x1c], ebx
cmp dword [rdi + 8], ebp
je 0x18003b212
cmp ebx, ebp
je 0x18003b212
mov rdx, qword [r13 + 0x10]
mov ecx, dword [rdi + 0x18]
mov eax, ebx
sub rdx, rax
cmp dword [rdi + 0x10], ebp
mov r8d, ebx
je 0x18003b206
call fcn.180041650
jmp 0x18003b20b
call fcn.180048168
mov dword [rdi + 0x18], eax
mov dword [r13 + 0x3c], eax
mov eax, dword [rdi + 4]
mov edx, 0x80
neg eax
mov eax, ebp
sbb ecx, ecx
and ecx, 0x40
cmp dword [rdi], 0xb
cmove eax, edx
add ecx, eax
add ecx, dword [rdi + 0x44]
cmp esi, ebp
mov dword [r13 + 0x38], ecx
jne 0x18003b246
cmp ebx, ebp
jne 0x18003b246
mov eax, 0xfffffffb
cmp r12d, ebp
cmove r12d, eax
mov eax, r12d
jmp 0x180039e59