Function at 0x18003e958
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 0x18003ea4a
mov rdi, qword [rcx + 0x28]
cmp rdi, r12
je 0x18003ea4a
cmp qword [rcx + 0x10], r12
je 0x18003ea4a
cmp qword [rcx], r12
jne 0x18003e9a1
cmp dword [rcx + 8], r12d
jne 0x18003ea4a
cmp dword [rdi], 0xb
jne 0x18003e9ac
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 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], r12d
mov ebx, 1
mov r11d, 0x10
mov edx, 7
mov ecx, dword [rdi]
cmp ecx, 0xe
jg 0x18003f279
je 0x18003f03d
cmp ecx, edx
jg 0x18003efbc
je 0x18003eda0
cmp ecx, r12d
je 0x18003ee25
sub ecx, ebx
je 0x18003ea83
sub ecx, ebx
je 0x18003eb17
sub ecx, ebx
je 0x18003eb94
sub ecx, ebx
je 0x18003ebf1
sub ecx, ebx
je 0x18003ec0b
cmp ecx, ebx
je 0x18003ed0a
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 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r11d
jb 0x18003ea67
mov dword [rdi + 0x10], ebp
cmp bpl, 8
je 0x18003ea9d
lea rax, str.unknown_compression_method
jmp 0x18003ef69
test ebp, 0xe000
je 0x18003eab1
lea rax, str.unknown_header_flags_set
jmp 0x18003ef69
mov rcx, qword [rdi + 0x20]
cmp rcx, r12
je 0x18003eac3
mov eax, ebp
shr eax, 8
and eax, ebx
mov dword [rcx], eax
bt dword [rdi + 0x10], 9
jae 0x18003eaed
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.180044bb4
mov dword [rdi + 0x18], eax
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 2
jmp 0x18003eb17
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x18003eafb
mov rax, qword [rdi + 0x20]
cmp rax, r12
je 0x18003eb28
mov dword [rax + 4], ebp
bt dword [rdi + 0x10], 9
jae 0x18003eb64
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.180044bb4
mov dword [rdi + 0x18], eax
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 3
mov r11d, 0x10
jmp 0x18003eb94
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r11d
jb 0x18003eb78
mov rcx, qword [rdi + 0x20]
cmp rcx, r12
je 0x18003ebb5
movzx eax, bpl
mov dword [rcx + 8], eax
mov rax, qword [rdi + 0x20]
mov ecx, ebp
shr ecx, 8
mov dword [rax + 0xc], ecx
bt dword [rdi + 0x10], 9
jae 0x18003ebe5
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.180044bb4
mov r11d, 0x10
mov dword [rdi + 0x18], eax
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 4
bt dword [rdi + 0x10], 0xa
jb 0x18003ec73
mov rax, qword [rdi + 0x20]
cmp rax, r12
je 0x18003ec05
mov qword [rax + 0x10], r12
mov dword [rdi], 5
bt dword [rdi + 0x10], 0xa
jae 0x18003ecfb
mov ebx, dword [rdi + 0x48]
cmp ebx, r14d
cmova ebx, r14d
cmp ebx, r12d
je 0x18003ecf1
mov rax, qword [rdi + 0x20]
cmp rax, r12
je 0x18003ecce
mov r9, qword [rax + 0x10]
cmp r9, r12
je 0x18003ecce
mov edx, dword [rax + 0x18]
mov ecx, dword [rax + 0x1c]
sub edx, dword [rdi + 0x48]
lea eax, [rbx + rdx]
cmp eax, ecx
jbe 0x18003ecbc
sub ecx, edx
jmp 0x18003ecbe
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r11d
jb 0x18003ec57
mov rax, qword [rdi + 0x20]
mov dword [rdi + 0x48], ebp
cmp rax, r12
je 0x18003ec87
mov dword [rax + 0x18], ebp
bt dword [rdi + 0x10], 9
jae 0x18003ecb1
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.180044bb4
mov dword [rdi + 0x18], eax
mov ebp, r12d
mov esi, r12d
jmp 0x18003ec05
mov ecx, ebx
mov r8d, ecx
mov ecx, edx
mov rdx, r15
add rcx, r9
call sub.ntdll.dll_memcpy
bt dword [rdi + 0x10], 9
jae 0x18003ece6
mov ecx, dword [rdi + 0x18]
mov r8d, ebx
mov rdx, r15
call fcn.180044bb4
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 0x18003fd3d
mov dword [rdi + 0x48], r12d
mov dword [rdi], 6
mov edx, 7
bt dword [rdi + 0x10], 0xb
jae 0x18003ed8d
cmp r14d, r12d
je 0x18003fd3d
mov ebx, r12d
mov r8, r15
xor r9d, r9d
mov rax, qword [rdi + 0x20]
movzx r12d, byte [r8]
inc ebx
inc r8
cmp rax, r9
je 0x18003ed4d
mov rdx, qword [rax + 0x20]
cmp rdx, r9
je 0x18003ed4d
mov ecx, dword [rdi + 0x48]
cmp ecx, dword [rax + 0x28]
jae 0x18003ed4d
mov byte [rcx + rdx], r12b
inc dword [rdi + 0x48]
cmp r12d, r9d
je 0x18003ed57
cmp ebx, r14d
jb 0x18003ed23
bt dword [rdi + 0x10], 9
jae 0x18003ed72
mov ecx, dword [rdi + 0x18]
mov r8d, ebx
mov rdx, r15
call fcn.180044bb4
xor r9d, r9d
mov dword [rdi + 0x18], eax
mov eax, ebx
sub r14d, ebx
add r15, rax
cmp r12d, r9d
jne 0x18003fd3d
xor r12d, r12d
lea edx, [r12 + 7]
jmp 0x18003ed9a
mov rax, qword [rdi + 0x20]
cmp rax, r12
je 0x18003ed9a
mov qword [rax + 0x20], r12
mov dword [rdi + 0x48], r12d
mov dword [rdi], edx
bt dword [rdi + 0x10], 0xc
jae 0x18003ef78
cmp r14d, r12d
je 0x18003fd3d
mov ebx, r12d
mov r8, r15
xor r9d, r9d
mov rax, qword [rdi + 0x20]
movzx r12d, byte [r8]
inc ebx
inc r8
cmp rax, r9
je 0x18003ede7
mov rdx, qword [rax + 0x2c]
cmp rdx, r9
je 0x18003ede7
mov ecx, dword [rdi + 0x48]
cmp ecx, dword [rax + 0x34]
jae 0x18003ede7
mov byte [rcx + rdx], r12b
inc dword [rdi + 0x48]
cmp r12d, r9d
je 0x18003edf1
cmp ebx, r14d
jb 0x18003edbd
bt dword [rdi + 0x10], 9
jae 0x18003ee0c
mov ecx, dword [rdi + 0x18]
mov r8d, ebx
mov rdx, r15
call fcn.180044bb4
xor r9d, r9d
mov dword [rdi + 0x18], eax
mov eax, ebx
sub r14d, ebx
add r15, rax
cmp r12d, r9d
jne 0x18003fd3d
xor r12d, r12d
jmp 0x18003ef85
cmp dword [rdi + 8], r12d
jne 0x18003ee52
mov dword [rdi], 0xc
jmp 0x18003e9f6
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r11d
jb 0x18003ee36
test byte [rdi + 8], 2
je 0x18003eeb6
cmp ebp, 0x8b1f
jne 0x18003eeb6
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.180044bb4
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.180044bb4
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 0x18003e9eb
mov rax, qword [rdi + 0x20]
mov dword [rdi + 0x10], r12d
cmp rax, r12
je 0x18003eec7
or dword [rax + 0x3c], 0xffffffff
test byte [rdi + 8], bl
je 0x18003ef62
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 0x18003ef5d
mov eax, ebp
and al, 0xf
cmp al, 8
je 0x18003ef15
lea rax, str.unknown_compression_method
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x18003e9f1
shr ebp, 4
add esi, 0xfffffffc
mov ecx, ebp
and ecx, 0xf
add ecx, 8
cmp ecx, dword [rdi + 0x28]
jbe 0x18003ef31
lea rax, str.invalid_window_size
jmp 0x18003ef06
mov eax, ebx
xor r8d, r8d
xor edx, edx
shl eax, cl
xor ecx, ecx
mov dword [rdi + 0x14], eax
call fcn.18004b738
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 0x18003ee96
mov edx, 7
lea rax, str.incorrect_header_check
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x18003e9f6
mov rax, qword [rdi + 0x20]
cmp rax, r12
je 0x18003ef85
mov qword [rax + 0x2c], r12
mov r8d, dword [rsp + 0xa8]
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
mov ebx, 1
mov dword [rdi], 8
lea edx, [rbx + 6]
lea r11d, [rbx + 0xf]
bt dword [rdi + 0x10], 9
jae 0x18003f232
jmp 0x18003f213
sub ecx, 8
je 0x18003efac
sub ecx, ebx
je 0x18003f0ca
sub ecx, ebx
je 0x18003f103
sub ecx, ebx
je 0x18003f144
sub ecx, ebx
je 0x18003f144
cmp ecx, ebx
jne 0x18003ea4a
mov ecx, esi
and ecx, edx
shr ebp, cl
sub esi, ecx
jmp 0x18003f00f
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x18003eff3
mov eax, ebp
movzx ecx, bp
not eax
shr eax, 0x10
cmp ecx, eax
je 0x18003f02e
lea rax, str.invalid_stored_block_lengths
jmp 0x18003ef69
mov dword [rdi + 0x48], ecx
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 0xe
mov r12d, dword [rdi + 0x48]
xor ecx, ecx
cmp r12d, ecx
je 0x18003f26b
cmp r12d, r14d
cmova r12d, r14d
cmp r12d, r9d
cmova r12d, r9d
cmp r12d, ecx
je 0x18003fd3d
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 0x18003e9e6
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x18003f0ae
mov ecx, ebp
mov eax, ebp
mov edx, 0xff00
shl eax, 0x10
and ecx, edx
mov esi, r12d
add ecx, eax
mov eax, ebp
shr ebp, 0x18
shr eax, 8
shl ecx, 8
and eax, edx
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 0x18003fd04
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.18004b738
mov r8d, dword [rsp + 0xa8]
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
mov edx, 7
mov dword [rdi + 0x18], eax
mov dword [r13 + 0x3c], eax
mov dword [rdi], 0xb
lea r11d, [rdx + 9]
cmp dword [rdi + 4], r12d
je 0x18003f179
mov ecx, esi
mov dword [rdi], 0x18
and ecx, edx
shr ebp, cl
sub esi, ecx
jmp 0x18003e9f6
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 3
jb 0x18003f15d
mov eax, ebp
shr ebp, 1
dec esi
and eax, ebx
mov dword [rdi + 4], eax
mov eax, ebp
and eax, 3
cmp eax, r12d
je 0x18003f1e6
sub eax, ebx
je 0x18003f1ba
sub eax, ebx
je 0x18003f1b2
cmp eax, ebx
jne 0x18003f1ec
lea rax, str.invalid_block_type
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x18003f1ec
mov dword [rdi], 0xf
jmp 0x18003f1ec
lea rax, [0x18004f590]
mov dword [rdi + 0x64], 9
mov dword [rdi + 0x68], 5
mov qword [rdi + 0x54], rax
lea rax, [0x18004fd90]
mov dword [rdi], 0x12
mov qword [rdi + 0x5c], rax
jmp 0x18003f1ec
mov dword [rdi], 0xd
shr ebp, 2
add esi, 0xfffffffe
jmp 0x18003e9f6
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r11d
jb 0x18003f1f7
movzx eax, word [rdi + 0x18]
cmp ebp, eax
je 0x18003f22c
lea rax, str.header_crc_mismatch
jmp 0x18003ef69
mov ebp, r12d
mov esi, r12d
mov rcx, qword [rdi + 0x20]
cmp rcx, r12
je 0x18003f24d
mov eax, dword [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.180044bb4
mov dword [rdi + 0x18], eax
mov dword [r13 + 0x3c], eax
mov dword [rdi], 0xb
jmp 0x18003ee9c
mov dword [rdi], 0xb
xor r12d, r12d
jmp 0x18003e9f6
cmp ecx, 0x16
jg 0x18003fb90
je 0x18003fb02
sub ecx, 0xf
je 0x18003f2de
sub ecx, ebx
je 0x18003f333
sub ecx, ebx
je 0x18003f413
sub ecx, ebx
je 0x18003f74a
sub ecx, ebx
je 0x18003f908
sub ecx, ebx
je 0x18003f94c
cmp ecx, ebx
jne 0x18003ea4a
jmp 0x18003faa4
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0xe
jb 0x18003f2c2
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
mov dword [rdi + 0x70], ecx
mov dword [rdi + 0x74], edx
mov dword [rdi + 0x6c], eax
cmp ecx, 0x11e
ja 0x18003fb2a
cmp edx, 0x1e
ja 0x18003fb2a
mov dword [rdi + 0x78], r12d
mov dword [rdi], r11d
mov edx, 7
lea r8, [0x18004fe10]
mov eax, dword [rdi + 0x6c]
cmp dword [rdi + 0x78], eax
jae 0x18003f39a
jmp 0x18003f360
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 3
jb 0x18003f344
mov eax, dword [rdi + 0x78]
movzx ecx, bp
shr ebp, 3
movzx eax, word [r8 + rax*2]
and cx, dx
mov word [rdi + rax*2 + 0x84], cx
add dword [rdi + 0x78], ebx
add esi, 0xfffffffd
jmp 0x18003f33a
mov eax, dword [rdi + 0x78]
movzx ecx, word [r8 + rax*2]
mov word [rdi + rcx*2 + 0x84], r12w
add dword [rdi + 0x78], ebx
cmp dword [rdi + 0x78], 0x13
jb 0x18003f386
lea rcx, [rdi + 0x64]
lea rax, [rdi + 0x544]
lea r9, [rdi + 0x7c]
mov dword [rcx], edx
mov qword [r9], rax
mov qword [rdi + 0x54], rax
lea rax, [rdi + 0x304]
lea rdx, [rdi + 0x84]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
xor ecx, ecx
lea r8d, [rcx + 0x13]
call fcn.180040398
mov dword [rsp + 0x90], eax
cmp eax, r12d
je 0x18003f3fd
lea rax, str.invalid_code_lengths_set
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x18003ee9c
mov r10, qword [rsp + 0x40]
mov edx, 0x11
mov dword [rdi + 0x78], r12d
lea r11d, [rdx - 1]
mov dword [rdi], edx
jmp 0x18003f418
mov edx, 0x11
mov eax, dword [rdi + 0x74]
add eax, dword [rdi + 0x70]
cmp dword [rdi + 0x78], eax
jae 0x18003f5e5
jmp 0x18003f445
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
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 0x18003f429
mov ecx, eax
shr ecx, 0x10
cmp cx, r11w
jae 0x18003f4c7
shr eax, 8
movzx ecx, al
cmp esi, ecx
jae 0x18003f4a6
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
add esi, 8
shl eax, cl
dec r14d
add r15, rbx
add ebp, eax
movzx eax, byte [rsp + 0x35]
cmp esi, eax
jb 0x18003f481
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 0x18003f68d
cmp word [rsp + 0x36], r11w
jne 0x18003f52e
movzx edx, byte [rsp + 0x35]
lea r8d, [rdx + 2]
jmp 0x18003f4f6
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r8d
jb 0x18003f4da
mov eax, dword [rdi + 0x78]
mov ecx, edx
sub esi, edx
shr ebp, cl
cmp eax, r12d
je 0x18003f6a6
mov r8d, ebp
dec eax
shr ebp, 2
movzx r9d, word [rdi + rax*2 + 0x84]
and r8d, 3
add r8d, 3
add esi, 0xfffffffe
jmp 0x18003f5bf
cmp word [rsp + 0x36], dx
movzx edx, byte [rsp + 0x35]
jne 0x18003f57a
lea r8d, [rdx + 3]
jmp 0x18003f55c
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r8d
jb 0x18003f540
mov ecx, edx
mov eax, 0xfffffffd
shr ebp, cl
mov r8d, ebp
and r8d, 7
add r8d, 3
shr ebp, 3
jmp 0x18003f5b8
lea r8d, [rdx + 7]
jmp 0x18003f59c
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, r8d
jb 0x18003f580
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 0x18003f688
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]
mov edx, 7
je 0x18003e9f6
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.180040398
xor ecx, ecx
mov dword [rsp + 0x90], eax
cmp eax, ecx
je 0x18003f6cc
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 0x18003f09e
mov eax, dword [rdi + 0x78]
dec r8d
mov word [rdi + rax*2 + 0x84], r9w
add dword [rdi + 0x78], ebx
cmp r8d, r12d
jne 0x18003f676
mov eax, dword [rdi + 0x74]
add eax, dword [rdi + 0x70]
cmp dword [rdi + 0x78], eax
jae 0x18003f5e5
mov edx, 0x11
jmp 0x18003f445
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 0x18003e9f1
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.180040398
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 0x18003f73f
lea rax, str.invalid_distances_set
mov qword [r13 + 0x20], rax
mov dword [rdi], 0x1b
jmp 0x18003e9e6
mov dword [rdi], 0x12
mov ebx, 1
cmp r14d, 6
jb 0x18003f7aa
cmp r9d, 0x102
jb 0x18003f7aa
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.18003ff34
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 0x18003e9eb
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 0x18003f7f7
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
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 0x18003f7c4
cmp al, r12b
je 0x18003f8bd
test al, 0xf0
jne 0x18003f8bd
mov r10d, eax
movzx ecx, 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 0x18003f8af
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
movzx r9d, byte [rsp + 0x35]
mov ecx, esi
shl eax, cl
mov r8d, ebx
movzx ecx, dl
add ecx, r9d
add ebp, eax
movzx eax, word [rsp + 0x36]
shl r8d, cl
mov ecx, r9d
dec r14d
sub r8d, ebx
add r15, rbx
add esi, 8
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 0x18003f859
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
mov dword [rdi + 0x48], ecx
cmp al, r12b
jne 0x18003f8e1
mov dword [rdi], 0x17
jmp 0x18003ee9c
test al, 0x20
jne 0x18003f260
test al, 0x40
je 0x18003f8f9
lea rax, str.invalid_literal_length_code
jmp 0x18003f3ee
movzx ecx, al
mov dword [rdi], 0x13
and ecx, 0xf
mov dword [rdi + 0x50], ecx
mov edx, dword [rdi + 0x50]
cmp edx, r12d
je 0x18003f946
cmp esi, edx
jae 0x18003f935
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
add esi, 8
shl eax, cl
dec r14d
add r15, rbx
add ebp, eax
cmp esi, dword [rdi + 0x50]
jb 0x18003f914
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 0x18003f999
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
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 0x18003f966
test al, 0xf0
jne 0x18003fa56
mov r10d, eax
movzx ecx, 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 0x18003fa48
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
movzx r9d, byte [rsp + 0x35]
mov ecx, esi
shl eax, cl
mov r8d, ebx
movzx ecx, dl
add ecx, r9d
add ebp, eax
movzx eax, word [rsp + 0x36]
shl r8d, cl
mov ecx, r9d
dec r14d
sub r8d, ebx
add r15, rbx
add esi, 8
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 0x18003f9f2
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 0x18003fa72
lea rax, str.invalid_distance_code
jmp 0x18003f3ee
mov r8d, dword [rsp + 0xa8]
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
mov ecx, eax
mov dword [rdi], 0x15
mov r11d, 0x10
shr ecx, 0x10
mov dword [rdi + 0x4c], ecx
movzx ecx, al
and ecx, 0xf
mov dword [rdi + 0x50], ecx
mov edx, dword [rdi + 0x50]
cmp edx, r12d
je 0x18003fae2
cmp esi, edx
jae 0x18003fad1
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
add esi, 8
shl eax, cl
dec r14d
add r15, rbx
add ebp, eax
cmp esi, dword [rdi + 0x50]
jb 0x18003fab0
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 0x18003fafc
lea rax, str.invalid_distance_too__back
jmp 0x18003ef06
mov dword [rdi], 0x16
cmp r9d, r12d
je 0x18003fd3d
mov ecx, dword [rdi + 0x4c]
mov eax, r8d
sub eax, r9d
cmp ecx, eax
jbe 0x18003fb47
sub ecx, eax
mov eax, dword [rdi + 0x34]
cmp ecx, eax
jbe 0x18003fb36
mov edx, dword [rdi + 0x2c]
sub ecx, eax
sub edx, ecx
jmp 0x18003fb3a
lea rax, str.too_many_length_or_distance_symbols
jmp 0x18003ef06
sub eax, ecx
mov edx, eax
mov eax, dword [rdi + 0x48]
add rdx, qword [rdi + 0x38]
cmp ecx, eax
jbe 0x18003fb52
jmp 0x18003fb50
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 0x18003fb69
mov qword [rsp + 0x40], r10
lea edx, [rcx + 7]
cmp dword [rdi + 0x48], r12d
jne 0x18003e9f6
jmp 0x18003fcf9
sub ecx, 0x17
je 0x18003fcdb
sub ecx, ebx
je 0x18003fbc7
sub ecx, ebx
je 0x18003fc93
sub ecx, ebx
je 0x18003fd38
sub ecx, ebx
je 0x18003fd24
cmp ecx, ebx
jne 0x18003ea4a
mov eax, 0xfffffffc
jmp 0x18003ea4f
cmp dword [rdi + 8], r12d
je 0x18003fc8d
jmp 0x18003fbef
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x18003fbd3
sub r8d, r9d
add dword [r13 + 0x1c], r8d
add dword [rdi + 0x1c], r8d
cmp r8d, r12d
je 0x18003fc3f
mov ecx, dword [rdi + 0x18]
mov eax, r8d
mov rdx, r10
sub rdx, rax
cmp dword [rdi + 0x10], r12d
je 0x18003fc1d
call fcn.180044bb4
jmp 0x18003fc22
call fcn.18004b738
mov r9d, dword [rsp + 0xa0]
mov r10, qword [rsp + 0x40]
mov edx, 7
mov dword [rdi + 0x18], eax
lea r11d, [rdx + 9]
mov dword [r13 + 0x3c], eax
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 0x18003fc87
lea rax, str.incorrect_data_check
jmp 0x18003ef69
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 0x19
cmp dword [rdi + 8], r12d
je 0x18003fd32
cmp dword [rdi + 0x10], r12d
je 0x18003fd32
jmp 0x18003fcc5
cmp r14d, r12d
je 0x18003fd3d
movzx eax, byte [r15]
mov ecx, esi
dec r14d
shl eax, cl
add r15, rbx
add ebp, eax
add esi, 8
cmp esi, 0x20
jb 0x18003fca9
cmp ebp, dword [rdi + 0x1c]
je 0x18003fd2c
lea rax, str.incorrect_length_check
jmp 0x18003ef69
cmp r9d, r12d
je 0x18003fd3d
mov al, byte [rdi + 0x48]
mov byte [r10], al
add r10, rbx
dec r9d
mov dword [rsp + 0xa0], r9d
mov qword [rsp + 0x40], r10
mov dword [rdi], 0x12
jmp 0x18003e9f6
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 0x18003ea4f
mov r12d, 0xfffffffd
jmp 0x18003fd45
mov ebp, r12d
mov esi, r12d
mov dword [rdi], 0x1a
mov r12d, ebx
jmp 0x18003fd45
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
mov dword [rdi + 0x44], esi
cmp dword [rdi + 0x2c], ebp
jne 0x18003fd80
cmp dword [rdi], 0x18
jge 0x18003fd99
cmp ebx, dword [r13 + 0x18]
je 0x18003fd99
mov edx, ebx
mov rcx, r13
call fcn.18003e860
cmp eax, ebp
je 0x18003fd99
mov dword [rdi], 0x1c
jmp 0x18003fbbd
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 0x18003fde0
cmp ebx, ebp
je 0x18003fde0
mov rdx, qword [r13 + 0x10]
mov ecx, dword [rdi + 0x18]
mov eax, ebx
sub rdx, rax
mov r8d, ebx
cmp dword [rdi + 0x10], ebp
je 0x18003fdd4
call fcn.180044bb4
jmp 0x18003fdd9
call fcn.18004b738
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]
mov dword [r13 + 0x38], ecx
cmp esi, ebp
jne 0x18003fe14
cmp ebx, ebp
jne 0x18003fe14
mov eax, 0xfffffffb
cmp r12d, ebp
cmove r12d, eax
mov eax, r12d
jmp 0x18003ea4f