Function at 0x6707d4c0
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 r14
push r15
mov rbp, rsp
sub rsp, 0x78
mov r14, r8
mov r12, rdx
mov r8, rcx
test rcx, rcx
je 0x6707e3be
mov r15, qword [rcx + 0x28]
test r15, r15
je 0x6707e3be
xor edx, edx
mov qword [rax - 0x28], rbx
mov qword [rax - 0x30], rsi
mov qword [rcx + 0x20], rdx
mov qword [r15], 0xb
mov dword [r15 + 0x30], edx
mov r10, qword [rcx]
mov qword [rax - 0x38], rdi
mov qword [rax - 0x40], r13
mov qword [rbp - 0x40], r10
test r10, r10
je 0x6707d532
mov edi, dword [rcx + 8]
jmp 0x6707d534
mov edi, edx
mov eax, dword [r15]
mov rbx, qword [r15 + 0x38]
mov r9d, dword [r15 + 0x2c]
sub eax, 0xb
mov r13d, edx
mov esi, edx
mov qword [rbp - 0x38], rbx
mov dword [rbp - 0x48], r9d
cmp eax, 0x12
ja case.0x6707d578.12
cdqe
lea rcx, [0x67000000]
mov r11d, 1
mov ecx, dword [rcx + rax*4 + 0x7e3d0]
lea rax, [0x67000000]
add rcx, rax
jmp rcx
cmp dword [r15 + 4], 0
je 0x6707d59b
mov ecx, esi
mov dword [r15], 0x1c
mov r10, qword [rbp - 0x40]
and ecx, 7
shr r13d, cl
sub esi, ecx
jmp 0x6707dfd2
cmp esi, 3
jae 0x6707d5e2
test edi, edi
jne 0x6707d5bc
lea rdx, [rbp - 0x40]
mov rcx, r14
call r12
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
movzx edx, byte [r10]
mov ecx, esi
inc r10
shl edx, cl
add esi, 8
dec edi
add r13d, edx
mov qword [rbp - 0x40], r10
cmp esi, 3
jb 0x6707d5a0
mov r9d, dword [rbp - 0x48]
mov r8, qword [rbp + 0x28]
xor edx, edx
mov eax, r13d
shr r13d, 1
dec esi
and eax, 1
mov dword [r15 + 4], eax
mov eax, r13d
and eax, 3
je 0x6707d67f
dec eax
je 0x6707d642
dec eax
je 0x6707d62b
dec eax
jne 0x6707d686
lea rax, str.invalid_block_type
shr r13d, 2
add esi, 0xfffffffe
mov qword [r8 + 0x20], rax
mov dword [r15], 0x1d
mov r10, qword [rbp - 0x40]
jmp 0x6707dfd2
mov dword [r15], 0x10
mov r10, qword [rbp - 0x40]
shr r13d, 2
add esi, 0xfffffffe
jmp 0x6707dfd2
lea rax, [0x671eb790]
mov dword [r15 + 0x68], 9
mov dword [r15 + 0x6c], 5
mov qword [r15 + 0x58], rax
lea rax, [0x671ebf90]
mov dword [r15], 0x14
shr r13d, 2
mov qword [r15 + 0x60], rax
mov r10, qword [rbp - 0x40]
add esi, 0xfffffffe
jmp 0x6707dfd2
mov dword [r15], 0xd
mov r10, qword [rbp - 0x40]
shr r13d, 2
add esi, 0xfffffffe
jmp 0x6707dfd2
mov ecx, esi
and ecx, 7
sub esi, ecx
shr r13d, cl
cmp esi, 0x20
jae 0x6707d6e7
test edi, edi
jne 0x6707d6c1
lea rdx, [rbp - 0x40]
mov rcx, r14
call r12
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r13d, eax
mov qword [rbp - 0x40], r10
cmp esi, 0x20
jb 0x6707d6a5
mov r9d, dword [rbp - 0x48]
mov r8, qword [rbp + 0x28]
xor edx, edx
mov eax, r13d
movzx ecx, r13w
not eax
shr eax, 0x10
cmp ecx, eax
je 0x6707d712
lea rax, str.invalid_stored_block_lengths
mov qword [r8 + 0x20], rax
mov dword [r15], 0x1d
mov r10, qword [rbp - 0x40]
jmp 0x6707dfd2
mov dword [r15 + 0x48], ecx
mov r13d, edx
mov esi, edx
test ecx, ecx
je 0x6707d7ba
mov r12d, dword [r15 + 0x48]
test edi, edi
jne 0x6707d73f
lea rdx, [rbp - 0x40]
mov rcx, r14
call qword [rbp + 0x30]
mov edi, eax
test eax, eax
je 0x6707e348
mov ebx, dword [rbp - 0x48]
test ebx, ebx
jne 0x6707d76e
mov ebx, dword [r15 + 0x2c]
mov rax, qword [r15 + 0x38]
mov rcx, qword [rbp + 0x48]
mov r8d, ebx
mov rdx, rax
mov qword [rbp - 0x38], rax
mov dword [rbp - 0x48], ebx
mov dword [r15 + 0x30], ebx
call qword [rbp + 0x40]
test eax, eax
jne 0x6707df7c
mov rdx, qword [rbp - 0x40]
mov rcx, qword [rbp - 0x38]
cmp r12d, edi
cmova r12d, edi
cmp r12d, ebx
cmova r12d, ebx
mov r8d, r12d
mov ebx, r12d
call sub.MSVCR100.dll_memcpy
mov r9d, dword [rbp - 0x48]
add qword [rbp - 0x40], rbx
add qword [rbp - 0x38], rbx
sub dword [r15 + 0x48], r12d
sub r9d, r12d
sub edi, r12d
cmp dword [r15 + 0x48], 0
mov dword [rbp - 0x48], r9d
jne 0x6707d723
mov rbx, qword [rbp - 0x38]
xor edx, edx
mov dword [r15], 0xb
mov r10, qword [rbp - 0x40]
jmp 0x6707dfce
cmp esi, 0xe
jae 0x6707d810
nop
test edi, edi
jne 0x6707d7ec
lea rdx, [rbp - 0x40]
mov rcx, r14
call r12
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r13d, eax
mov qword [rbp - 0x40], r10
cmp esi, 0xe
jb 0x6707d7d0
mov r9d, dword [rbp - 0x48]
mov r8, qword [rbp + 0x28]
mov eax, r13d
shr r13d, 5
add esi, 0xfffffff2
mov ecx, r13d
shr r13d, 5
and eax, 0x1f
mov edx, r13d
and ecx, 0x1f
add eax, 0x101
and edx, 0xf
inc ecx
shr r13d, 4
add edx, 4
mov dword [r15 + 0x74], eax
mov dword [r15 + 0x78], ecx
mov dword [r15 + 0x70], edx
cmp eax, 0x11e
ja 0x6707ddbb
cmp ecx, 0x1e
ja 0x6707ddbb
xor ebx, ebx
test edx, edx
lea rdx, [0x67000000]
mov dword [r15 + 0x7c], ebx
je 0x6707d8f0
cmp esi, 3
jae 0x6707d8be
mov rdx, qword [rbp - 0x40]
nop dword [rax]
test edi, edi
jne 0x6707d89c
lea rdx, [rbp - 0x40]
mov rcx, r14
call r12
mov edi, eax
test eax, eax
je 0x6707e353
mov rdx, qword [rbp - 0x40]
movzx eax, byte [rdx]
mov ecx, esi
inc rdx
shl eax, cl
add esi, 8
dec edi
add r13d, eax
mov qword [rbp - 0x40], rdx
cmp esi, 3
jb 0x6707d880
lea rdx, [0x67000000]
mov eax, dword [r15 + 0x7c]
movzx ecx, r13w
add esi, 0xfffffffd
movzx eax, word [rdx + rax*2 + 0x1ec010]
and cx, 7
shr r13d, 3
mov word [r15 + rax*2 + 0x88], cx
inc dword [r15 + 0x7c]
mov eax, dword [r15 + 0x70]
cmp dword [r15 + 0x7c], eax
jb 0x6707d870
cmp dword [r15 + 0x7c], 0x13
jae 0x6707d920
nop word [rax + rax]
mov eax, dword [r15 + 0x7c]
movzx eax, word [rdx + rax*2 + 0x1ec010]
mov word [r15 + rax*2 + 0x88], bx
inc dword [r15 + 0x7c]
cmp dword [r15 + 0x7c], 0x13
jb 0x6707d900
lea rcx, [r15 + 0x548]
lea rbx, [r15 + 0x68]
lea rdx, [r15 + 0x88]
mov qword [r15 + 0x80], rcx
mov qword [r15 + 0x58], rcx
lea rcx, [r15 + 0x308]
mov qword [rsp + 0x28], rcx
xor ecx, ecx
lea r9, [r15 + 0x80]
lea r8d, [rcx + 0x13]
mov dword [rbx], 7
mov qword [rsp + 0x20], rbx
call fcn.670809a0
test eax, eax
je 0x6707d993
lea rax, str.invalid_code_lengths_set
mov r8, qword [rbp + 0x28]
mov rbx, qword [rbp - 0x38]
mov r9d, dword [rbp - 0x48]
mov qword [r8 + 0x20], rax
mov dword [r15], 0x1d
mov r10, qword [rbp - 0x40]
xor edx, edx
jmp 0x6707dfd2
mov eax, dword [r15 + 0x78]
mov dword [r15 + 0x7c], 0
mov r10, qword [rbp - 0x40]
add eax, dword [r15 + 0x74]
je 0x6707dc47
nop dword [rax]
mov ecx, dword [rbx]
mov eax, 1
shl eax, cl
lea ecx, [rax - 1]
mov eax, r13d
and rcx, rax
mov rax, qword [r15 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
mov dword [rbp - 0x44], eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x6707da33
test edi, edi
jne 0x6707d9f4
lea rdx, [rbp - 0x40]
mov rcx, r14
call r12
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
mov qword [rbp - 0x40], r10
mov ecx, dword [rbx]
add r13d, eax
mov eax, 1
add esi, 8
shl eax, cl
dec edi
lea ecx, [rax - 1]
mov eax, r13d
and rcx, rax
mov rax, qword [r15 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
mov dword [rbp - 0x44], eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x6707d9d8
mov ecx, eax
shr ecx, 0x10
cmp cx, 0x10
jae 0x6707dab0
movzx ebx, byte [rbp - 0x43]
shr eax, 8
movzx ecx, al
cmp esi, ecx
jae 0x6707da8a
nop dword [rax]
test edi, edi
jne 0x6707da6c
lea rdx, [rbp - 0x40]
mov rcx, r14
call r12
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r13d, eax
movzx eax, bl
mov qword [rbp - 0x40], r10
cmp esi, eax
jb 0x6707da50
movzx eax, word [rbp - 0x42]
movzx ecx, bl
shr r13d, cl
sub esi, ecx
mov ecx, dword [r15 + 0x7c]
mov word [r15 + rcx*2 + 0x88], ax
inc dword [r15 + 0x7c]
mov r10, qword [rbp - 0x40]
jmp 0x6707dc31
movzx eax, word [rbp - 0x42]
movzx r12d, byte [rbp - 0x43]
cmp ax, 0x10
jne 0x6707db36
lea ebx, [r12 + 2]
cmp esi, ebx
jae 0x6707daff
test edi, edi
jne 0x6707dae4
lea rdx, [rbp - 0x40]
mov rcx, r14
call qword [rbp + 0x30]
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r13d, eax
mov qword [rbp - 0x40], r10
cmp esi, ebx
jb 0x6707dac8
mov eax, dword [r15 + 0x7c]
mov ecx, r12d
sub esi, r12d
shr r13d, cl
test eax, eax
je 0x6707dc68
mov r8d, r13d
dec eax
shr r13d, 2
movzx r9d, word [r15 + rax*2 + 0x88]
and r8d, 3
add r8d, 3
add esi, 0xfffffffe
jmp 0x6707dbfa
cmp ax, 0x11
jne 0x6707db98
lea ebx, [r12 + 3]
cmp esi, ebx
jae 0x6707db7c
test edi, edi
jne 0x6707db61
lea rdx, [rbp - 0x40]
mov rcx, r14
call qword [rbp + 0x30]
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r13d, eax
mov qword [rbp - 0x40], r10
cmp esi, ebx
jb 0x6707db45
mov ecx, r12d
mov eax, 0xfffffffd
shr r13d, cl
mov r8d, r13d
and r8d, 7
add r8d, 3
shr r13d, 3
jmp 0x6707dbf2
lea ebx, [r12 + 7]
cmp esi, ebx
jae 0x6707dbd8
test edi, edi
jne 0x6707dbbd
lea rdx, [rbp - 0x40]
mov rcx, r14
call qword [rbp + 0x30]
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
add esi, 8
dec edi
add r13d, eax
mov qword [rbp - 0x40], r10
cmp esi, ebx
jb 0x6707dba1
mov ecx, r12d
mov eax, 0xfffffff9
shr r13d, cl
mov r8d, r13d
and r8d, 0x7f
add r8d, 0xb
shr r13d, 7
sub eax, r12d
xor r9d, r9d
add esi, eax
mov edx, dword [r15 + 0x78]
mov eax, dword [r15 + 0x7c]
add edx, dword [r15 + 0x74]
lea ecx, [r8 + rax]
cmp ecx, edx
ja 0x6707dc68
test r8d, r8d
je 0x6707dc2d
mov eax, dword [r15 + 0x7c]
mov word [r15 + rax*2 + 0x88], r9w
inc dword [r15 + 0x7c]
dec r8d
jne 0x6707dc13
mov r10, qword [rbp - 0x40]
mov r12, qword [rbp + 0x30]
mov eax, dword [r15 + 0x78]
lea rbx, [r15 + 0x68]
add eax, dword [r15 + 0x74]
cmp dword [r15 + 0x7c], eax
jb 0x6707d9b0
cmp dword [r15], 0x1d
je 0x6707dfc4
cmp word [r15 + 0x288], 0
jne 0x6707dc80
lea rax, str.invalid_code____missing_end_of_block
jmp 0x6707d971
mov r8, qword [rbp + 0x28]
mov rbx, qword [rbp - 0x38]
mov r9d, dword [rbp - 0x48]
lea rax, str.invalid_bit_length_repeat
jmp 0x6707ddc2
mov r8d, dword [r15 + 0x74]
lea rax, [r15 + 0x548]
lea r9, [r15 + 0x80]
mov qword [r15 + 0x80], rax
mov qword [r15 + 0x58], rax
lea rax, [r15 + 0x308]
mov qword [rsp + 0x28], rax
lea rdx, [r15 + 0x88]
mov ecx, 1
mov qword [rsp + 0x20], rbx
mov dword [rbx], 9
call fcn.670809a0
test eax, eax
je 0x6707dcd5
lea rax, str.invalid_literal_lengths_set
jmp 0x6707d971
mov rax, qword [r15 + 0x80]
mov r8d, dword [r15 + 0x78]
lea rcx, [r15 + 0x6c]
mov qword [r15 + 0x60], rax
mov eax, dword [r15 + 0x74]
mov dword [rcx], 6
lea rdx, [r15 + rax*2 + 0x88]
lea rax, [r15 + 0x308]
lea r9, [r15 + 0x80]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
mov ecx, 2
call fcn.670809a0
mov r8, qword [rbp + 0x28]
mov rbx, qword [rbp - 0x38]
mov r9d, dword [rbp - 0x48]
test eax, eax
je 0x6707dd38
lea rax, str.invalid_distances_set
jmp 0x6707ddc2
mov dword [r15], 0x14
mov r10, qword [rbp - 0x40]
mov r11d, 1
cmp edi, 6
jb 0x6707ddd8
cmp r9d, 0x102
jb 0x6707ddd8
mov qword [r8 + 0x10], rbx
mov dword [r8 + 0x18], r9d
mov qword [r8], r10
mov dword [r8 + 8], edi
mov edx, dword [r15 + 0x2c]
mov dword [r15 + 0x40], r13d
mov dword [r15 + 0x44], esi
cmp dword [r15 + 0x30], edx
jae 0x6707dd85
mov eax, edx
sub eax, r9d
mov dword [r15 + 0x30], eax
mov rcx, r8
call fcn.6707e470
mov r8, qword [rbp + 0x28]
xor edx, edx
mov r10, qword [r8]
mov rbx, qword [r8 + 0x10]
mov r9d, dword [r8 + 0x18]
mov edi, dword [r8 + 8]
mov qword [rbp - 0x40], r10
mov r13d, dword [r15 + 0x40]
mov esi, dword [r15 + 0x44]
mov qword [rbp - 0x38], rbx
mov dword [rbp - 0x48], r9d
jmp 0x6707dfd2
lea rax, str.too_many_length_or_distance_symbols
mov qword [r8 + 0x20], rax
mov dword [r15], 0x1d
mov r10, qword [rbp - 0x40]
xor edx, edx
jmp 0x6707dfd2
mov ecx, dword [r15 + 0x68]
mov eax, r11d
shl eax, cl
lea ecx, [rax - 1]
mov eax, r13d
and rcx, rax
mov rax, qword [r15 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x6707de5e
nop dword [rax]
test edi, edi
jne 0x6707de22
lea rdx, [rbp - 0x40]
mov rcx, r14
call r12
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
mov r11d, 1
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
mov qword [rbp - 0x40], r10
mov ecx, dword [r15 + 0x68]
add r13d, eax
mov eax, r11d
add esi, 8
shl eax, cl
dec edi
lea ecx, [rax - 1]
mov eax, r13d
and rcx, rax
mov rax, qword [r15 + 0x58]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x6707de00
test al, al
je 0x6707df3c
test al, 0xf0
jne 0x6707df3c
mov r9d, eax
movzx ecx, al
mov dword [rbp - 0x44], eax
movzx r14d, byte [rbp - 0x43]
shr r9d, 8
mov ebx, eax
shr eax, 0x10
movzx edx, r9b
mov r8d, r11d
add ecx, edx
shl r8d, cl
mov ecx, edx
dec r8d
and r8d, r13d
shr r8d, cl
add r8d, eax
mov rax, qword [r15 + 0x58]
mov eax, dword [rax + r8*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, r9b
add edx, ecx
cmp edx, esi
jbe 0x6707df2f
movzx r12d, word [rbp - 0x42]
nop
test edi, edi
jne 0x6707dee3
mov rcx, qword [rbp + 0x38]
lea rdx, [rbp - 0x40]
call qword [rbp + 0x30]
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
mov r11d, 1
movzx eax, byte [r10]
mov ecx, esi
movzx r8d, r14b
shl eax, cl
mov edx, r11d
inc r10
add r13d, eax
movzx eax, r12w
mov qword [rbp - 0x40], r10
movzx ecx, bl
add esi, 8
dec edi
add ecx, r8d
shl edx, cl
mov ecx, r8d
dec edx
and edx, r13d
shr edx, cl
add edx, eax
mov rax, qword [r15 + 0x58]
mov eax, dword [rax + rdx*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
add edx, r8d
cmp edx, esi
ja 0x6707dec0
movzx ecx, r14b
mov r14, qword [rbp + 0x38]
shr r13d, cl
sub esi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr r13d, cl
sub esi, ecx
mov ecx, eax
shr ecx, 0x10
mov dword [r15 + 0x48], ecx
test al, al
jne 0x6707dfb5
mov r12d, dword [rbp - 0x48]
test r12d, r12d
jne 0x6707df8b
mov r12d, dword [r15 + 0x2c]
mov rbx, qword [r15 + 0x38]
mov rcx, qword [rbp + 0x48]
mov r8d, r12d
mov rdx, rbx
mov dword [r15 + 0x30], r12d
call qword [rbp + 0x40]
test eax, eax
je 0x6707df8f
mov r10, qword [rbp - 0x40]
mov r11d, 0xfffffffb
jmp 0x6707e391
mov rbx, qword [rbp - 0x38]
movzx eax, byte [r15 + 0x48]
inc rbx
dec r12d
mov byte [rbx - 1], al
mov dword [r15], 0x14
mov r10, qword [rbp - 0x40]
mov dword [rbp - 0x48], r12d
mov r9d, r12d
mov qword [rbp - 0x38], rbx
jmp 0x6707dfcc
test al, 0x20
je 0x6707dfee
mov dword [r15], 0xb
mov r10, qword [rbp - 0x40]
mov r9d, dword [rbp - 0x48]
mov rbx, qword [rbp - 0x38]
xor edx, edx
mov r8, qword [rbp + 0x28]
mov eax, dword [r15]
sub eax, 0xb
cmp eax, 0x12
ja case.0x6707d578.12
mov r14, qword [rbp + 0x38]
mov r12, qword [rbp + 0x30]
jmp 0x6707d558
test al, 0x40
je 0x6707e00a
mov r8, qword [rbp + 0x28]
mov rbx, qword [rbp - 0x38]
mov r9d, dword [rbp - 0x48]
lea rax, str.invalid_literal_length_code
jmp 0x6707ddc2
movzx ecx, al
and ecx, 0xf
mov dword [r15 + 0x50], ecx
je 0x6707e075
cmp esi, ecx
jae 0x6707e05e
mov rdx, qword [rbp - 0x40]
nop
test edi, edi
jne 0x6707e03c
lea rdx, [rbp - 0x40]
mov rcx, r14
call qword [rbp + 0x30]
mov edi, eax
test eax, eax
je 0x6707e348
mov rdx, qword [rbp - 0x40]
movzx eax, byte [rdx]
mov ecx, esi
inc rdx
shl eax, cl
add esi, 8
dec edi
add r13d, eax
mov qword [rbp - 0x40], rdx
cmp esi, dword [r15 + 0x50]
jb 0x6707e020
mov r11d, 1
mov ecx, dword [r15 + 0x50]
mov eax, r11d
shl eax, cl
dec eax
and eax, r13d
shr r13d, cl
add dword [r15 + 0x48], eax
sub esi, ecx
mov ecx, dword [r15 + 0x6c]
mov r10, qword [rbp - 0x40]
mov eax, r11d
shl eax, cl
lea ecx, [rax - 1]
mov eax, r13d
and rcx, rax
mov rax, qword [r15 + 0x60]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
jbe 0x6707e0fe
nop
test edi, edi
jne 0x6707e0c2
lea rdx, [rbp - 0x40]
mov rcx, r14
call qword [rbp + 0x30]
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
mov r11d, 1
movzx eax, byte [r10]
mov ecx, esi
inc r10
shl eax, cl
mov qword [rbp - 0x40], r10
mov ecx, dword [r15 + 0x6c]
add r13d, eax
mov eax, r11d
add esi, 8
shl eax, cl
dec edi
lea ecx, [rax - 1]
mov eax, r13d
and rcx, rax
mov rax, qword [r15 + 0x60]
mov eax, dword [rax + rcx*4]
mov ecx, eax
shr ecx, 8
movzx ecx, cl
cmp ecx, esi
ja 0x6707e0a0
test al, 0xf0
jne 0x6707e1ce
mov r9d, eax
movzx ecx, al
mov dword [rbp - 0x44], eax
movzx r14d, byte [rbp - 0x43]
shr r9d, 8
mov ebx, eax
shr eax, 0x10
movzx edx, r9b
mov r8d, r11d
add ecx, edx
shl r8d, cl
mov ecx, edx
dec r8d
and r8d, r13d
shr r8d, cl
add r8d, eax
mov rax, qword [r15 + 0x60]
mov eax, dword [rax + r8*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, r9b
add edx, ecx
cmp edx, esi
jbe 0x6707e1c5
movzx r12d, word [rbp - 0x42]
test edi, edi
jne 0x6707e179
mov rcx, qword [rbp + 0x38]
lea rdx, [rbp - 0x40]
call qword [rbp + 0x30]
mov edi, eax
test eax, eax
je 0x6707e348
mov r10, qword [rbp - 0x40]
mov r11d, 1
movzx eax, byte [r10]
mov ecx, esi
movzx r8d, r14b
shl eax, cl
mov edx, r11d
inc r10
add r13d, eax
movzx eax, r12w
mov qword [rbp - 0x40], r10
movzx ecx, bl
add esi, 8
dec edi
add ecx, r8d
shl edx, cl
mov ecx, r8d
dec edx
and edx, r13d
shr edx, cl
add edx, eax
mov rax, qword [r15 + 0x60]
mov eax, dword [rax + rdx*4]
mov ecx, eax
shr ecx, 8
movzx edx, cl
add edx, r8d
cmp edx, esi
ja 0x6707e156
movzx ecx, r14b
shr r13d, cl
sub esi, ecx
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr r13d, cl
sub esi, ecx
test al, 0x40
je 0x6707e1f7
mov r8, qword [rbp + 0x28]
mov rbx, qword [rbp - 0x38]
mov r9d, dword [rbp - 0x48]
lea rax, str.invalid_distance_code
jmp 0x6707ddc2
mov ecx, eax
shr ecx, 0x10
mov dword [r15 + 0x4c], ecx
movzx ecx, al
and ecx, 0xf
mov dword [r15 + 0x50], ecx
je 0x6707e26a
cmp esi, ecx
jae 0x6707e253
mov rdx, qword [rbp - 0x40]
test edi, edi
jne 0x6707e231
mov rcx, qword [rbp + 0x38]
lea rdx, [rbp - 0x40]
call qword [rbp + 0x30]
mov edi, eax
test eax, eax
je 0x6707e348
mov rdx, qword [rbp - 0x40]
movzx eax, byte [rdx]
mov ecx, esi
inc rdx
shl eax, cl
add esi, 8
dec edi
add r13d, eax
mov qword [rbp - 0x40], rdx
cmp esi, dword [r15 + 0x50]
jb 0x6707e214
mov r11d, 1
mov ecx, dword [r15 + 0x50]
mov eax, r11d
shl eax, cl
dec eax
and eax, r13d
shr r13d, cl
add dword [r15 + 0x4c], eax
sub esi, ecx
mov ecx, dword [r15 + 0x2c]
mov r12d, dword [rbp - 0x48]
mov rbx, qword [rbp - 0x38]
xor edx, edx
cmp dword [r15 + 0x30], ecx
mov eax, edx
cmovb eax, r12d
sub ecx, eax
cmp dword [r15 + 0x4c], ecx
jbe 0x6707e2b0
mov r8, qword [rbp + 0x28]
lea rax, str.invalid_distance_too_far_back
mov r9d, r12d
mov qword [r8 + 0x20], rax
mov dword [r15], 0x1d
mov r10, qword [rbp - 0x40]
jmp 0x6707dfd2
test r12d, r12d
jne 0x6707e2d6
mov r12d, dword [r15 + 0x2c]
mov rbx, qword [r15 + 0x38]
mov rcx, qword [rbp + 0x48]
mov r8d, r12d
mov rdx, rbx
mov dword [r15 + 0x30], r12d
call qword [rbp + 0x40]
test eax, eax
jne 0x6707df7c
mov ecx, dword [r15 + 0x4c]
mov eax, dword [r15 + 0x2c]
sub eax, ecx
cmp eax, r12d
jae 0x6707e2f1
mov edx, eax
mov ecx, r12d
add rdx, rbx
sub ecx, eax
jmp 0x6707e2fa
mov rdx, rbx
sub rdx, rcx
mov ecx, r12d
mov eax, dword [r15 + 0x48]
cmp ecx, eax
cmova ecx, eax
sub eax, ecx
sub r12d, ecx
sub rdx, rbx
mov dword [r15 + 0x48], eax
mov dword [rbp - 0x48], r12d
nop word [rax + rax]
movzx eax, byte [rbx + rdx]
inc rbx
dec ecx
mov byte [rbx - 1], al
jne 0x6707e320
mov qword [rbp - 0x38], rbx
cmp dword [r15 + 0x48], ecx
jne 0x6707e2b0
mov r10, qword [rbp - 0x40]
mov r9d, r12d
jmp 0x6707dfcc
xor r10d, r10d
mov r11d, 0xfffffffb
jmp 0x6707e391
mov r10, rbx
mov r11d, 0xfffffffb
jmp 0x6707e391
mov r8d, dword [r15 + 0x2c]
cmp r9d, r8d
jae 0x6707e391
mov rdx, qword [r15 + 0x38]
mov rcx, qword [rbp + 0x48]
sub r8d, r9d
call qword [rbp + 0x40]
mov r10, qword [rbp - 0x40]
test eax, eax
jne 0x6707e34b
lea r11d, [rax + 1]
jmp 0x6707e391
mov r11d, 0xfffffffd
jmp 0x6707e391
mov r11d, 0xfffffffe
mov rax, qword [rbp + 0x28]
mov r13, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x70]
mov dword [rax + 8], edi
mov rdi, qword [rsp + 0x60]
mov qword [rax], r10
mov eax, r11d
add rsp, 0x78
pop r15
pop r14
pop r12
pop rbp
ret
mov eax, 0xfffffffe
add rsp, 0x78
pop r15
pop r14
pop r12
pop rbp
ret