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

Disassembly:
mov rax, rsp
mov qword [rax + 0x20], r9
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbp
push r12
push r13
push r15
mov rbp, rsp
sub rsp, 0x78
mov r13, r8
mov r12, rdx
mov r11, rcx
test rcx, rcx
je 0x18000a925
mov r15, qword [rcx + 0x28]
test r15, r15
je 0x18000a925
xor edx, edx
mov qword [rax - 0x28], rbx
mov qword [rcx + 0x20], rdx
mov qword [r15 + 8], 0x3f3f
mov dword [r15 + 0x38], edx
mov r8, qword [rcx]
mov qword [rax - 0x30], rsi
mov qword [rax - 0x38], rdi
mov qword [rax - 0x40], r14
mov qword [rbp - 0x40], r8
test r8, r8
je 0x180009ad3
mov ebx, dword [rcx + 8]
jmp 0x180009ad5
mov ebx, edx
mov eax, dword [r15 + 8]
mov r14d, edx
mov rdi, qword [r15 + 0x40]
sub eax, 0x3f3f
mov r9d, dword [r15 + 0x34]
mov esi, edx
mov qword [rbp - 0x38], rdi
mov dword [rbp - 0x48], r9d
cmp eax, 0x12
ja case.0x180009b1c.16192
cdqe
lea rcx, [0x180000000]
mov r10d, 1
mov ecx, dword [rcx + rax*4 + 0xa938]
lea rax, [0x180000000]
add rcx, rax
jmp rcx
cmp dword [r15 + 0xc], 0
je 0x180009b3c
mov ecx, esi
mov dword [r15 + 8], 0x3f50
and ecx, 7
shr r14d, cl
sub esi, ecx
jmp 0x18000a894
cmp esi, 3
jae 0x180009b81
test ebx, ebx
jne 0x180009b5d
lea rdx, [rbp - 0x40]
mov rcx, r13
call r12
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
dec ebx
add esi, 8
cmp esi, 3
jb 0x180009b41
mov r9d, dword [rbp - 0x48]
mov r11, qword [rbp + 0x28]
mov eax, r14d
shr r14d, 1
and eax, 1
mov dword [r15 + 0xc], eax
mov eax, r14d
and eax, 3
je 0x180009c12
sub eax, 1
je 0x180009bd8
sub eax, 1
je 0x180009bc4
cmp eax, 1
jne 0x180009c1a
lea rax, str.invalid_block_type
shr r14d, 2
mov qword [r11 + 0x20], rax
add esi, 0xfffffffd
mov dword [r15 + 8], 0x3f51
jmp 0x18000a894
shr r14d, 2
add esi, 0xfffffffd
mov dword [r15 + 8], 0x3f44
jmp 0x18000a894
lea rax, [0x1800268c0]
shr r14d, 2
mov qword [r15 + 0x60], rax
add esi, 0xfffffffd
lea rax, [0x1800270c0]
mov dword [r15 + 0x70], 9
mov qword [r15 + 0x68], rax
mov dword [r15 + 0x74], 5
mov dword [r15 + 8], 0x3f48
jmp 0x18000a894
mov dword [r15 + 8], 0x3f41
shr r14d, 2
add esi, 0xfffffffd
jmp 0x18000a894
mov ecx, esi
and ecx, 7
shr r14d, cl
sub esi, ecx
cmp esi, 0x20
jae 0x180009c77
test ebx, ebx
jne 0x180009c51
lea rdx, [rbp - 0x40]
mov rcx, r13
call r12
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
dec ebx
add esi, 8
cmp esi, 0x20
jb 0x180009c35
mov r9d, dword [rbp - 0x48]
xor edx, edx
mov r11, qword [rbp + 0x28]
mov eax, r14d
movzx edi, r14w
not eax
shr eax, 0x10
cmp edi, eax
je 0x180009ca3
mov rdi, qword [rbp - 0x38]
lea rax, str.invalid_stored_block_lengths
mov qword [r11 + 0x20], rax
mov dword [r15 + 8], 0x3f51
jmp 0x18000a894
mov dword [r15 + 0x50], edi
mov r14d, edx
mov esi, edx
test edi, edi
je 0x180009d4a
mov r8d, dword [rbp - 0x48]
test ebx, ebx
jne 0x180009cd4
lea rdx, [rbp - 0x40]
mov rcx, r13
call r12
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8d, dword [rbp - 0x48]
test r8d, r8d
jne 0x180009d05
mov ecx, dword [r15 + 0x34]
mov r8d, ecx
mov rax, qword [r15 + 0x40]
mov dword [rbp - 0x48], ecx
mov rdx, rax
mov dword [r15 + 0x38], ecx
mov rcx, qword [rbp + 0x48]
mov qword [rbp - 0x38], rax
call qword [rbp + 0x40]
test eax, eax
jne 0x18000a521
mov r8d, dword [rbp - 0x48]
mov rdx, qword [rbp - 0x40]
cmp edi, ebx
mov eax, r8d
mov ecx, ebx
cmovbe ecx, edi
cmp ecx, r8d
cmovbe eax, ecx
mov rcx, qword [rbp - 0x38]
mov r8d, eax
mov edi, eax
call fcn.18000e2e0
mov r8d, dword [rbp - 0x48]
sub ebx, edi
add qword [rbp - 0x40], rdi
sub r8d, edi
add qword [rbp - 0x38], rdi
sub dword [r15 + 0x50], edi
mov edi, dword [r15 + 0x50]
mov dword [rbp - 0x48], r8d
jne 0x180009cb8
mov rdi, qword [rbp - 0x38]
mov dword [r15 + 8], 0x3f3f
jmp 0x18000a88c
cmp esi, 0xe
jae 0x180009da0
test ebx, ebx
jne 0x180009d7c
lea rdx, [rbp - 0x40]
mov rcx, r13
call r12
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
dec ebx
add esi, 8
cmp esi, 0xe
jb 0x180009d60
mov r9d, dword [rbp - 0x48]
mov r11, qword [rbp + 0x28]
mov ecx, r14d
add esi, 0xfffffff2
shr r14d, 5
and ecx, 0x1f
mov edx, r14d
add ecx, 0x101
shr r14d, 5
and edx, 0x1f
mov r8d, r14d
mov dword [r15 + 0x7c], ecx
and r8d, 0xf
shr r14d, 4
add r8d, 4
inc edx
mov dword [r15 + 0x80], edx
mov dword [r15 + 0x78], r8d
cmp ecx, 0x11e
ja 0x18000a38e
cmp edx, 0x1e
ja 0x18000a38e
xor ecx, ecx
lea rdx, [0x180000000]
mov dword [r15 + 0x84], ecx
mov eax, ecx
test r8d, r8d
je 0x180009e9f
nop dword [rax]
cmp esi, 3
jae 0x180009e5e
mov rdx, qword [rbp - 0x40]
nop dword [rax]
test ebx, ebx
jne 0x180009e3c
lea rdx, [rbp - 0x40]
mov rcx, r13
call r12
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov rdx, qword [rbp - 0x40]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x40], rdx
dec ebx
add esi, 8
cmp esi, 3
jb 0x180009e20
lea rdx, [0x180000000]
mov eax, dword [r15 + 0x84]
movzx ecx, r14w
and cx, 7
shr r14d, 3
add esi, 0xfffffffd
movzx eax, word [rdx + rax*2 + 0x27140]
mov word [r15 + rax*2 + 0x90], cx
inc dword [r15 + 0x84]
mov eax, dword [r15 + 0x84]
cmp eax, dword [r15 + 0x78]
jb 0x180009e10
xor ecx, ecx
cmp eax, 0x13
jae 0x180009eca
movzx eax, word [rdx + rax*2 + 0x27140]
mov word [r15 + rax*2 + 0x90], cx
mov eax, dword [r15 + 0x84]
inc eax
mov dword [r15 + 0x84], eax
cmp eax, 0x13
jb 0x180009ea4
lea rax, [r15 + 0x550]
mov dword [r15 + 0x70], 7
lea rdx, [r15 + 0x310]
mov qword [r15 + 0x88], rax
mov qword [rsp + 0x28], rdx
lea r9, [r15 + 0x88]
mov qword [r15 + 0x60], rax
lea rdx, [r15 + 0x90]
lea rax, [r15 + 0x70]
mov r8d, 0x13
xor ecx, ecx
mov qword [rsp + 0x20], rax
call fcn.18000ab00
test eax, eax
je 0x180009f34
mov r11, qword [rbp + 0x28]
lea rax, str.invalid_code_lengths_set
mov qword [r11 + 0x20], rax
mov dword [r15 + 8], 0x3f51
jmp 0x18000a890
mov eax, dword [r15 + 0x80]
mov dword [r15 + 0x84], 0
add eax, dword [r15 + 0x7c]
je 0x18000a1e3
lea rdi, [r15 + 0x70]
nop dword [rax]
nop dword [rax + rax]
mov ecx, dword [rdi]
mov eax, 1
mov r8, qword [rbp - 0x40]
shl eax, cl
lea ecx, [rax - 1]
mov eax, r14d
and rcx, rax
mov rax, qword [r15 + 0x60]
mov eax, dword [rax + rcx*4]
mov edx, eax
shr edx, 8
mov r9d, eax
movzx ecx, dl
shr r9d, 0x10
mov dword [rbp - 0x44], eax
cmp ecx, esi
jbe 0x180009ff5
test ebx, ebx
jne 0x180009faf
lea rdx, [rbp - 0x40]
mov rcx, r13
call r12
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
mov ecx, dword [rdi]
mov eax, 1
shl eax, cl
dec ebx
mov edx, r14d
add esi, 8
lea ecx, [rax - 1]
mov rax, qword [r15 + 0x60]
and rcx, rdx
mov eax, dword [rax + rcx*4]
mov edx, eax
shr edx, 8
mov r9d, eax
movzx ecx, dl
shr r9d, 0x10
mov dword [rbp - 0x44], eax
cmp ecx, esi
ja 0x180009f93
cmp r9w, 0x10
jae 0x18000a031
mov ecx, edx
shr r14d, cl
mov ecx, eax
shr ecx, 8
movzx ecx, cl
sub esi, ecx
shr eax, 0x10
mov ecx, dword [r15 + 0x84]
mov word [r15 + rcx*2 + 0x90], ax
inc dword [r15 + 0x84]
mov r8d, dword [r15 + 0x84]
jmp 0x18000a1cb
movzx edi, dl
jne 0x18000a0b3
shr eax, 8
add edi, 2
movzx r12d, al
cmp esi, edi
jae 0x18000a07b
test ebx, ebx
jne 0x18000a060
lea rdx, [rbp - 0x40]
mov rcx, r13
call qword [rbp + 0x30]
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
dec ebx
add esi, 8
cmp esi, edi
jb 0x18000a044
mov eax, dword [r15 + 0x84]
mov ecx, r12d
shr r14d, cl
sub esi, r12d
test eax, eax
je 0x18000a218
mov edx, r14d
add esi, 0xfffffffe
and edx, 3
shr r14d, 2
add edx, 3
dec eax
movzx r9d, word [r15 + rax*2 + 0x90]
jmp 0x18000a182
movzx r12d, byte [rbp - 0x43]
cmp r9w, 0x11
jne 0x18000a121
add edi, 3
cmp esi, edi
jae 0x18000a0fd
test ebx, ebx
jne 0x18000a0e2
lea rdx, [rbp - 0x40]
mov rcx, r13
call qword [rbp + 0x30]
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
dec ebx
add esi, 8
cmp esi, edi
jb 0x18000a0c6
mov eax, 0xfffffffd
mov ecx, r12d
shr r14d, cl
sub eax, r12d
mov edx, r14d
add esi, eax
and edx, 7
shr r14d, 3
add edx, 3
xor eax, eax
mov r9d, eax
jmp 0x18000a182
add edi, 7
cmp esi, edi
jae 0x18000a15f
test ebx, ebx
jne 0x18000a144
lea rdx, [rbp - 0x40]
mov rcx, r13
call qword [rbp + 0x30]
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
dec ebx
add esi, 8
cmp esi, edi
jb 0x18000a128
mov eax, 0xfffffff9
mov ecx, r12d
shr r14d, cl
sub eax, r12d
mov edx, r14d
add esi, eax
and edx, 0x7f
shr r14d, 7
add edx, 0xb
xor eax, eax
movzx r9d, ax
mov r8d, dword [r15 + 0x84]
mov eax, dword [r15 + 0x80]
add eax, dword [r15 + 0x7c]
lea ecx, [r8 + rdx]
cmp ecx, eax
ja 0x18000a218
nop dword [rax]
mov eax, r8d
mov word [r15 + rax*2 + 0x90], r9w
mov r8d, dword [r15 + 0x84]
lea r8d, [r8 + 1]
mov dword [r15 + 0x84], r8d
add edx, 0xffffffff
jne 0x18000a1a0
mov r12, qword [rbp + 0x30]
lea rdi, [r15 + 0x70]
mov eax, dword [r15 + 0x80]
add eax, dword [r15 + 0x7c]
cmp r8d, eax
jb 0x180009f60
mov rdi, qword [rbp - 0x38]
mov r11, qword [rbp + 0x28]
cmp dword [r15 + 8], 0x3f51
je 0x18000a88c
cmp word [r15 + 0x290], 0
jne 0x18000a235
lea rax, str.invalid_code____missing_end_of_block
mov qword [r11 + 0x20], rax
mov dword [r15 + 8], 0x3f51
jmp 0x18000a890
mov r11, qword [rbp + 0x28]
lea rax, str.invalid_bit_length_repeat
mov rdi, qword [rbp - 0x38]
mov qword [r11 + 0x20], rax
mov dword [r15 + 8], 0x3f51
jmp 0x18000a1e7
mov r8d, dword [r15 + 0x7c]
lea rax, [r15 + 0x550]
lea rcx, [r15 + 0x310]
mov qword [r15 + 0x88], rax
mov qword [rsp + 0x28], rcx
lea r9, [r15 + 0x88]
mov qword [r15 + 0x60], rax
lea rdx, [r15 + 0x90]
lea rax, [r15 + 0x70]
mov ecx, 1
mov dword [rax], 9
mov qword [rsp + 0x20], rax
call fcn.18000ab00
test eax, eax
je 0x18000a29e
mov r11, qword [rbp + 0x28]
lea rax, str.invalid_literal_lengths_set
mov qword [r11 + 0x20], rax
mov dword [r15 + 8], 0x3f51
jmp 0x18000a890
mov rax, qword [r15 + 0x88]
lea rcx, [r15 + 0x74]
mov r8d, dword [r15 + 0x80]
lea r9, [r15 + 0x88]
mov qword [r15 + 0x68], rax
mov eax, dword [r15 + 0x7c]
add rax, 0x48
mov dword [rcx], 6
lea rdx, [r15 + rax*2]
lea rax, [r15 + 0x310]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
mov ecx, 2
call fcn.18000ab00
mov r11, qword [rbp + 0x28]
mov r9d, dword [rbp - 0x48]
test eax, eax
je 0x18000a30c
lea rax, str.invalid_distances_set
mov qword [r11 + 0x20], rax
mov dword [r15 + 8], 0x3f51
jmp 0x18000a894
mov r12, qword [rbp + 0x30]
mov r10d, 1
mov dword [r15 + 8], 0x3f48
mov r8, qword [rbp - 0x40]
cmp ebx, 6
jb 0x18000a3a6
cmp r9d, 0x102
jb 0x18000a3a6
mov qword [r11 + 0x10], rdi
mov dword [r11 + 0x18], r9d
mov qword [r11], r8
mov dword [r11 + 8], ebx
mov edx, dword [r15 + 0x34]
mov dword [r15 + 0x48], r14d
mov dword [r15 + 0x4c], esi
cmp dword [r15 + 0x38], edx
jae 0x18000a35a
mov eax, edx
sub eax, r9d
mov dword [r15 + 0x38], eax
mov rcx, r11
call fcn.18000b0a0
mov r11, qword [rbp + 0x28]
mov r8, qword [r11]
mov rdi, qword [r11 + 0x10]
mov r9d, dword [r11 + 0x18]
mov ebx, dword [r11 + 8]
mov qword [rbp - 0x40], r8
mov r14d, dword [r15 + 0x48]
mov esi, dword [r15 + 0x4c]
mov qword [rbp - 0x38], rdi
mov dword [rbp - 0x48], r9d
jmp 0x18000a898
lea rax, str.too_many_length_or_distance_symbols
mov qword [r11 + 0x20], rax
mov dword [r15 + 8], 0x3f51
jmp 0x18000a894
mov ecx, dword [r15 + 0x70]
mov eax, r10d
mov r9, qword [r15 + 0x60]
shl eax, cl
lea ecx, [rax - 1]
mov eax, r14d
and rcx, rax
mov eax, dword [r9 + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x18000a42e
nop dword [rax]
test ebx, ebx
jne 0x18000a3f2
lea rdx, [rbp - 0x40]
mov rcx, r13
call r12
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
mov r10d, 1
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
mov ecx, dword [r15 + 0x70]
mov eax, r10d
mov r9, qword [r15 + 0x60]
dec ebx
shl eax, cl
add esi, 8
dec eax
mov edx, r14d
and rax, rdx
mov eax, dword [r9 + rax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x18000a3d0
test al, al
je 0x18000a4e1
test al, 0xf0
jne 0x18000a4e1
mov ecx, eax
mov r12d, eax
shr ecx, 8
mov r13d, r10d
movzx edi, cl
movzx ecx, al
add ecx, edi
shr r12d, 0x10
shl r13d, cl
mov ecx, edi
lea eax, [r13 - 1]
and eax, r14d
shr eax, cl
add eax, r12d
mov eax, dword [r9 + rax*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
add edx, edi
cmp edx, esi
jbe 0x18000a4d6
test ebx, ebx
jne 0x18000a495
mov rcx, qword [rbp + 0x38]
lea rdx, [rbp - 0x40]
call qword [rbp + 0x30]
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
lea eax, [r13 - 1]
mov ecx, edi
and eax, r14d
dec ebx
shr eax, cl
add esi, 8
lea ecx, [r12 + rax]
mov rax, qword [r15 + 0x60]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
add edx, edi
cmp edx, esi
ja 0x18000a478
mov r10d, 1
mov r13, qword [rbp + 0x38]
mov ecx, edi
shr r14d, cl
sub esi, edi
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr r14d, cl
sub esi, ecx
mov ecx, eax
shr ecx, 0x10
mov dword [r15 + 0x50], ecx
test al, al
jne 0x18000a55d
mov r12d, dword [rbp - 0x48]
test r12d, r12d
jne 0x18000a530
mov r12d, dword [r15 + 0x34]
mov r8d, r12d
mov rdi, qword [r15 + 0x40]
mov rcx, qword [rbp + 0x48]
mov rdx, rdi
mov dword [r15 + 0x38], r12d
call qword [rbp + 0x40]
test eax, eax
je 0x18000a534
mov r8, qword [rbp - 0x40]
mov r10d, 0xfffffffb
jmp 0x18000a8f8
mov rdi, qword [rbp - 0x38]
movzx eax, byte [r15 + 0x50]
mov r11, qword [rbp + 0x28]
mov byte [rdi], al
inc rdi
dec r12d
mov qword [rbp - 0x38], rdi
mov dword [rbp - 0x48], r12d
mov r9d, r12d
mov dword [r15 + 8], 0x3f48
jmp 0x18000a894
test al, 0x20
je 0x18000a572
mov rdi, qword [rbp - 0x38]
mov dword [r15 + 8], 0x3f3f
jmp 0x18000a88c
test al, 0x40
je 0x18000a596
lea rax, str.invalid_literal_length_code
mov r11, qword [rbp + 0x28]
mov rdi, qword [rbp - 0x38]
mov qword [r11 + 0x20], rax
mov dword [r15 + 8], 0x3f51
jmp 0x18000a890
movzx ecx, al
and ecx, 0xf
mov dword [r15 + 0x58], ecx
je 0x18000a603
cmp esi, ecx
jae 0x18000a5f0
mov rdx, qword [rbp - 0x40]
nop word [rax + rax]
test ebx, ebx
jne 0x18000a5cc
lea rdx, [rbp - 0x40]
mov rcx, r13
call qword [rbp + 0x30]
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov rdx, qword [rbp - 0x40]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x40], rdx
mov ecx, dword [r15 + 0x58]
dec ebx
add esi, 8
cmp esi, ecx
jb 0x18000a5b0
mov r10d, 1
mov eax, r10d
shl eax, cl
dec eax
and eax, r14d
shr r14d, cl
add dword [r15 + 0x50], eax
sub esi, ecx
mov ecx, dword [r15 + 0x74]
mov eax, r10d
mov r9, qword [r15 + 0x68]
mov r8, qword [rbp - 0x40]
shl eax, cl
lea ecx, [rax - 1]
mov eax, r14d
and rcx, rax
mov eax, dword [r9 + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x18000a68e
nop dword [rax]
test ebx, ebx
jne 0x18000a652
lea rdx, [rbp - 0x40]
mov rcx, r13
call qword [rbp + 0x30]
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
mov r10d, 1
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
mov ecx, dword [r15 + 0x74]
mov eax, r10d
mov r9, qword [r15 + 0x68]
dec ebx
shl eax, cl
add esi, 8
dec eax
mov edx, r14d
and rax, rdx
mov eax, dword [r9 + rax*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x18000a630
test al, 0xf0
jne 0x18000a735
mov ecx, eax
mov r12d, eax
shr ecx, 8
mov r13d, r10d
movzx edi, cl
movzx ecx, al
add ecx, edi
shr r12d, 0x10
shl r13d, cl
mov ecx, edi
lea eax, [r13 - 1]
and eax, r14d
shr eax, cl
add eax, r12d
mov eax, dword [r9 + rax*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
add edx, edi
cmp edx, esi
jbe 0x18000a72e
test ebx, ebx
jne 0x18000a6ed
mov rcx, qword [rbp + 0x38]
lea rdx, [rbp - 0x40]
call qword [rbp + 0x30]
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov r8, qword [rbp - 0x40]
movzx eax, byte [r8]
mov ecx, esi
shl eax, cl
inc r8
add r14d, eax
mov qword [rbp - 0x40], r8
lea eax, [r13 - 1]
mov ecx, edi
and eax, r14d
dec ebx
shr eax, cl
add esi, 8
lea ecx, [r12 + rax]
mov rax, qword [r15 + 0x68]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
add edx, edi
cmp edx, esi
ja 0x18000a6d0
mov r10d, 1
mov ecx, edi
shr r14d, cl
sub esi, edi
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr r14d, cl
sub esi, ecx
test al, 0x40
je 0x18000a752
lea rax, str.invalid_distance_code
jmp 0x18000a57d
mov edx, eax
movzx ecx, al
shr edx, 0x10
and ecx, 0xf
mov dword [r15 + 0x54], edx
mov dword [r15 + 0x58], ecx
je 0x18000a7c8
cmp esi, ecx
jae 0x18000a7b1
mov rdx, qword [rbp - 0x40]
nop
test ebx, ebx
jne 0x18000a78d
mov rcx, qword [rbp + 0x38]
lea rdx, [rbp - 0x40]
call qword [rbp + 0x30]
mov ebx, eax
test eax, eax
je 0x18000a8b5
mov rdx, qword [rbp - 0x40]
movzx eax, byte [rdx]
mov ecx, esi
shl eax, cl
inc rdx
add r14d, eax
mov qword [rbp - 0x40], rdx
mov ecx, dword [r15 + 0x58]
dec ebx
add esi, 8
cmp esi, ecx
jb 0x18000a770
mov r10d, 1
mov eax, r10d
shl eax, cl
dec eax
and eax, r14d
shr r14d, cl
add dword [r15 + 0x54], eax
mov edx, dword [r15 + 0x54]
sub esi, ecx
mov ecx, dword [r15 + 0x34]
xor eax, eax
cmp dword [r15 + 0x38], ecx
mov r12d, dword [rbp - 0x48]
mov rdi, qword [rbp - 0x38]
cmovb eax, r12d
sub ecx, eax
cmp edx, ecx
jbe 0x18000a803
mov r11, qword [rbp + 0x28]
lea rax, str.invalid_distance_too_far_back
mov r9d, r12d
mov qword [r11 + 0x20], rax
mov dword [r15 + 8], 0x3f51
jmp 0x18000a894
test r12d, r12d
jne 0x18000a829
mov r12d, dword [r15 + 0x34]
mov r8d, r12d
mov rdi, qword [r15 + 0x40]
mov rcx, qword [rbp + 0x48]
mov rdx, rdi
mov dword [r15 + 0x38], r12d
call qword [rbp + 0x40]
test eax, eax
jne 0x18000a521
mov ecx, dword [r15 + 0x54]
mov r8d, r12d
mov eax, dword [r15 + 0x34]
sub eax, ecx
cmp eax, r12d
jae 0x18000a845
mov edx, eax
add rdx, rdi
sub r8d, eax
jmp 0x18000a84b
mov rdx, rdi
sub rdx, rcx
mov eax, dword [r15 + 0x50]
cmp r8d, eax
mov ecx, eax
cmovbe ecx, r8d
sub eax, ecx
sub r12d, ecx
mov dword [r15 + 0x50], eax
sub rdx, rdi
mov dword [rbp - 0x48], r12d
nop dword [rax + rax]
movzx eax, byte [rdx + rdi]
mov byte [rdi], al
inc rdi
add ecx, 0xffffffff
jne 0x18000a870
mov qword [rbp - 0x38], rdi
cmp dword [r15 + 0x50], ecx
jne 0x18000a803
mov r11, qword [rbp + 0x28]
mov r9d, dword [rbp - 0x48]
mov r8, qword [rbp - 0x40]
mov eax, dword [r15 + 8]
sub eax, 0x3f3f
cmp eax, 0x12
ja case.0x180009b1c.16192
mov r13, qword [rbp + 0x38]
xor edx, edx
mov r12, qword [rbp + 0x30]
jmp 0x180009afc
xor eax, eax
mov r8d, eax
mov r10d, 0xfffffffb
jmp 0x18000a8f8
mov eax, dword [r15 + 0x34]
cmp r9d, eax
jae 0x18000a8f8
mov rdx, qword [r15 + 0x40]
sub eax, r9d
mov rcx, qword [rbp + 0x48]
mov r8d, eax
call qword [rbp + 0x40]
mov r8, qword [rbp - 0x40]
test eax, eax
jne 0x18000a8ba
lea r10d, [rax + 1]
jmp 0x18000a8f8
mov r10d, 0xfffffffd
jmp 0x18000a8f8
mov r10d, 0xfffffffe
mov rax, qword [rbp + 0x28]
mov r14, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
mov dword [rax + 8], ebx
mov rbx, qword [rsp + 0x70]
mov qword [rax], r8
mov eax, r10d
add rsp, 0x78
pop r15
pop r13
pop r12
pop rbp
ret
mov eax, 0xfffffffe
add rsp, 0x78
pop r15
pop r13
pop r12
pop rbp
ret