Function at 0x4b7420
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
mov eax, dword [rcx + 8]
mov r12, qword [rcx]
mov r15, qword [rcx + 0x28]
mov r9, qword [rcx + 0x10]
sub eax, 5
mov r13, rcx
add rax, r12
mov qword [rsp + 8], rax
mov eax, dword [rcx + 0x18]
mov ecx, dword [r15 + 0x70]
mov rbx, r9
mov rdi, qword [r15 + 0x40]
mov r14d, dword [r15 + 0x3c]
sub edx, eax
sub eax, 0x101
mov r11, qword [r15 + 0x68]
sub rbx, rdx
mov edx, 0xffffffff
add rax, r9
mov r8d, dword [r15 + 0x4c]
mov qword [rsp + 0x28], rbx
mov ebx, edx
mov rbp, qword [r15 + 0x60]
shl ebx, cl
mov qword [rsp], rax
mov eax, dword [r15 + 0x34]
mov ecx, ebx
mov ebx, edx
mov qword [rsp + 0x18], rdi
not ecx
mov dword [rsp + 0x14], ecx
mov ecx, dword [r15 + 0x74]
mov dword [rsp + 0x38], eax
mov eax, dword [r15 + 0x38]
shl ebx, cl
mov ecx, ebx
mov dword [rsp + 0x30], eax
mov eax, dword [r15 + 0x48]
not ecx
mov dword [rsp + 0x20], ecx
mov rcx, rdi
neg rcx
mov esi, ecx
lea ecx, [r14 + rdx]
and esi, 0xf
lea ebx, [rsi + 0xf]
mov dword [rsp + 0x34], esi
mov dword [rsp + 0x50], ebx
mov ebx, r14d
sub ebx, esi
mov dword [rsp + 0x44], ecx
mov esi, ebx
mov dword [rsp + 0x54], ebx
and ebx, 0xfffffff0
shr esi, 4
mov dword [rsp + 0x3c], ebx
mov dword [rsp + 0x40], esi
mov esi, ecx
lea rdi, [rdi + rsi + 1]
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x60], rdi
lea esi, [r14 - 2]
lea edi, [r14 - 3]
mov qword [rsp + 0x48], rbx
mov ebx, edx
mov dword [rsp + 0x68], esi
lea esi, [r14 - 4]
mov dword [rsp + 0x6c], edi
lea edi, [r14 - 5]
mov dword [rsp + 0x70], esi
lea esi, [r14 - 6]
mov dword [rsp + 0x74], edi
lea edi, [r14 - 7]
mov dword [rsp + 0x24], r14d
mov r14, r11
mov dword [rsp + 0x78], esi
mov dword [rsp + 0x7c], edi
cmp r8d, 0xe
ja 0x4b756f
movzx edx, byte [r12 + 1]
lea ecx, [r8 + 8]
add r12, 2
movzx r10d, byte [r12 - 2]
shl edx, cl
mov ecx, r8d
add r8d, 0x10
shl r10d, cl
add edx, r10d
add eax, edx
mov edx, dword [rsp + 0x14]
and edx, eax
jmp 0x4b75a0
test r10b, 0x10
jne 0x4b7660
test r10b, 0x40
jne 0x4b7b60
mov edi, ebx
shl edi, cl
mov ecx, edi
not ecx
and ecx, eax
add edx, ecx
lea rcx, [rbp + rdx*4]
movzx r10d, byte [rcx]
movzx edx, word [rcx + 2]
movzx ecx, byte [rcx + 1]
shr eax, cl
sub r8d, ecx
movzx ecx, r10b
test ecx, ecx
jne 0x4b7580
mov byte [r9], dl
add r9, 1
cmp r12, qword [rsp + 8]
jae 0x4b75e0
cmp r9, qword [rsp]
jb 0x4b7544
nop word cs:[rax + rax]
mov ecx, r8d
mov rbx, qword [rsp + 8]
mov edx, r8d
mov qword [r13 + 0x10], r9
and ecx, 7
mov r10d, 0xffffffff
shr edx, 3
shl r10d, cl
sub r12, rdx
not r10d
mov qword [r13], r12
and eax, r10d
cmp rbx, r12
jbe 0x4b7b73
mov rsi, qword [rsp]
sub rbx, r12
mov rdx, rbx
add edx, 5
mov dword [r13 + 8], edx
cmp r9, rsi
jb 0x4b7b90
mov edx, dword [rsp]
sub edx, r9d
add edx, 0x101
mov dword [r13 + 0x18], edx
mov dword [r15 + 0x48], eax
mov dword [r15 + 0x4c], ecx
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
and r10d, 0xf
je 0x4b769a
movzx r11d, r10b
cmp r11d, r8d
jbe 0x4b7683
movzx esi, byte [r12]
mov ecx, r8d
add r12, 1
add r8d, 8
shl esi, cl
add eax, esi
mov ecx, r10d
mov esi, ebx
sub r8d, r11d
shl esi, cl
mov ecx, esi
not ecx
and ecx, eax
add edx, ecx
mov ecx, r10d
shr eax, cl
cmp r8d, 0xe
jbe 0x4b7ba1
mov ecx, dword [rsp + 0x20]
and ecx, eax
jmp 0x4b76c7
and r10d, 0x40
jne 0x4b7bf0
mov esi, ebx
shl esi, cl
mov ecx, esi
not ecx
and ecx, eax
add ecx, r11d
lea rcx, [r14 + rcx*4]
movzx r10d, byte [rcx]
movzx r11d, word [rcx + 2]
movzx ecx, byte [rcx + 1]
shr eax, cl
sub r8d, ecx
test r10b, 0x10
movzx ecx, r10b
je 0x4b76b0
and r10d, 0xf
movzx esi, r10b
cmp esi, r8d
jbe 0x4b7713
movzx edi, byte [r12]
mov ecx, r8d
shl edi, cl
lea ecx, [r8 + 8]
add eax, edi
cmp esi, ecx
ja 0x4b810e
add r12, 1
mov r8d, ecx
mov ecx, r10d
mov edi, ebx
sub r8d, esi
shl edi, cl
mov ecx, edi
not ecx
and ecx, eax
lea edi, [rcx + r11]
mov ecx, r10d
shr eax, cl
mov rcx, r9
sub rcx, qword [rsp + 0x28]
mov dword [rsp + 0xa8], edi
cmp edi, ecx
jbe 0x4b8095
sub edi, ecx
cmp dword [rsp + 0x30], edi
mov ecx, edi
jae 0x4b775d
mov r11d, dword [r15 + 0x1be0]
test r11d, r11d
jne 0x4b84e9
mov r10d, dword [rsp + 0x24]
test r10d, r10d
je 0x4b7c5f
mov edi, dword [rsp + 0x24]
cmp edi, ecx
jae 0x4b8125
mov r11d, dword [rsp + 0x38]
add r11d, edi
mov esi, r11d
sub esi, ecx
sub ecx, edi
mov r11, rsi
mov qword [rsp + 0x98], rsi
mov rsi, qword [rsp + 0x18]
add rsi, r11
cmp edx, ecx
jbe 0x4b7c32
mov rdi, qword [rsp + 0x18]
sub edx, ecx
lea r10, [rdi + r11 + 0x10]
cmp r9, r10
lea r10, [r9 + 0x10]
setae r11b
cmp rsi, r10
setae r10b
or r11b, r10b
je 0x4b88ce
cmp ecx, 0x16
jbe 0x4b88ce
lea edi, [rcx - 1]
mov r11, rsi
neg r11
mov r10d, edi
mov dword [rsp + 0xa0], edi
and r11d, 0xf
mov dword [rsp + 0x88], edi
lea edi, [r11 + 0xf]
cmp edi, r10d
ja 0x4b8919
test r11d, r11d
je 0x4b8924
movzx r10d, byte [rsi]
lea rdi, [rsi + 1]
cmp r11d, 1
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 1]
mov byte [r9], r10b
je 0x4b7aa0
movzx r10d, byte [rsi + 1]
lea rdi, [rsi + 2]
cmp r11d, 2
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 2]
mov byte [r9 + 1], r10b
lea r10d, [rcx - 2]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 2]
lea rdi, [rsi + 3]
cmp r11d, 3
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 3]
mov byte [r9 + 2], r10b
lea r10d, [rcx - 3]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 3]
lea rdi, [rsi + 4]
cmp r11d, 4
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 4]
mov byte [r9 + 3], r10b
lea r10d, [rcx - 4]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 4]
lea rdi, [rsi + 5]
cmp r11d, 5
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 5]
mov byte [r9 + 4], r10b
lea r10d, [rcx - 5]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 5]
lea rdi, [rsi + 6]
cmp r11d, 6
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 6]
mov byte [r9 + 5], r10b
lea r10d, [rcx - 6]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 6]
lea rdi, [rsi + 7]
cmp r11d, 7
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 7]
mov byte [r9 + 6], r10b
lea r10d, [rcx - 7]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 7]
lea rdi, [rsi + 8]
cmp r11d, 8
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 8]
mov byte [r9 + 7], r10b
lea r10d, [rcx - 8]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 8]
lea rdi, [rsi + 9]
cmp r11d, 9
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 9]
mov byte [r9 + 8], r10b
lea r10d, [rcx - 9]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 9]
lea rdi, [rsi + 0xa]
cmp r11d, 0xa
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 0xa]
mov byte [r9 + 9], r10b
lea r10d, [rcx - 0xa]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 0xa]
lea rdi, [rsi + 0xb]
cmp r11d, 0xb
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 0xb]
mov byte [r9 + 0xa], r10b
lea r10d, [rcx - 0xb]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 0xb]
lea rdi, [rsi + 0xc]
cmp r11d, 0xc
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 0xc]
mov byte [r9 + 0xb], r10b
lea r10d, [rcx - 0xc]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 0xc]
lea rdi, [rsi + 0xd]
cmp r11d, 0xd
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 0xd]
mov byte [r9 + 0xc], r10b
lea r10d, [rcx - 0xd]
mov dword [rsp + 0x88], r10d
je 0x4b7aa0
movzx r10d, byte [rsi + 0xd]
lea rdi, [rsi + 0xe]
cmp r11d, 0xf
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 0xe]
mov byte [r9 + 0xd], r10b
lea r10d, [rcx - 0xe]
mov dword [rsp + 0x88], r10d
jne 0x4b7aa0
movzx r10d, byte [rsi + 0xe]
lea rdi, [rsi + 0xf]
lea esi, [rcx - 0xf]
mov qword [rsp + 0x80], rdi
mov dword [rsp + 0x88], esi
lea rdi, [r9 + 0xf]
mov byte [r9 + 0xe], r10b
mov esi, r11d
sub ecx, r11d
mov r11, qword [rsp + 0x98]
mov dword [rsp + 0x98], edx
lea r10, [r9 + rsi]
mov dword [rsp + 0xac], ecx
shr ecx, 4
mov rdx, r10
mov r10d, dword [rsp + 0x88]
mov dword [rsp + 0x90], ecx
xor ecx, ecx
add r11, rsi
add r11, qword [rsp + 0x18]
xor esi, esi
movdqa xmm0, xmmword [r11 + rcx]
add esi, 1
movups xmmword [rdx + rcx], xmm0
add rcx, 0x10
cmp dword [rsp + 0x90], esi
ja 0x4b7ae1
mov r11d, dword [rsp + 0xac]
mov edx, dword [rsp + 0x98]
mov ecx, r11d
and ecx, 0xfffffff0
mov esi, ecx
sub r10d, ecx
add rdi, rsi
add rsi, qword [rsp + 0x80]
cmp ecx, r11d
je 0x4b7b34
lea ecx, [r10 - 1]
lea rcx, [rsi + rcx + 1]
movsb byte [rdi], byte [rsi]
cmp rsi, rcx
jne 0x4b7b2e
mov esi, dword [rsp + 0xa0]
cmp dword [rsp + 0x24], edx
mov qword [rsp + 0x88], rsi
lea rcx, [r9 + rsi + 1]
jb 0x4b850a
mov rsi, qword [rsp + 0x18]
mov r9, rcx
jmp 0x4b7c32
and r10d, 0x20
je 0x4b7bd0
mov dword [r15 + 8], 0x3f3f
jmp 0x4b75e0
mov ebx, dword [rsp + 8]
mov rsi, qword [rsp]
sub ebx, r12d
mov edx, ebx
add edx, 5
cmp r9, rsi
mov dword [r13 + 8], edx
jae 0x4b762e
sub rsi, r9
mov rdx, rsi
add edx, 0x101
jmp 0x4b763a
movzx r10d, byte [r12 + 1]
lea ecx, [r8 + 8]
add r12, 2
movzx r11d, byte [r12 - 2]
shl r10d, cl
mov ecx, r8d
add r8d, 0x10
shl r11d, cl
add r10d, r11d
add eax, r10d
jmp 0x4b76a4
lea rbx, str.invalid_literal_length_code
mov qword [r13 + 0x20], rbx
mov dword [r15 + 8], 0x3f51
jmp 0x4b75e0
lea rbx, str.invalid_distance_code
mov qword [r13 + 0x20], rbx
mov dword [r15 + 8], 0x3f51
jmp 0x4b75e0
movzx ecx, byte [rsi]
add rsi, 3
add r9, 3
sub edx, 3
mov byte [r9 - 3], cl
movzx ecx, byte [rsi - 2]
mov byte [r9 - 2], cl
movzx ecx, byte [rsi - 1]
mov byte [r9 - 1], cl
cmp edx, 2
ja 0x4b7c10
test edx, edx
je 0x4b75c5
movzx ecx, byte [rsi]
cmp edx, 2
mov byte [r9], cl
jne 0x4b8501
movzx edx, byte [rsi + 1]
add r9, 2
mov byte [r9 - 1], dl
jmp 0x4b75c5
mov edi, dword [rsp + 0x38]
mov rsi, qword [rsp + 0x18]
sub edi, ecx
add rsi, rdi
cmp edx, ecx
jbe 0x4b7c32
mov r11, qword [rsp + 0x18]
sub edx, ecx
lea r10, [r11 + rdi + 0x10]
cmp r9, r10
lea r10, [r9 + 0x10]
setae r11b
cmp rsi, r10
setae r10b
or r11b, r10b
je 0x4b88b1
cmp ecx, 0x16
jbe 0x4b88b1
mov r10, rsi
neg r10
mov r11d, r10d
lea r10d, [rcx - 1]
and r11d, 0xf
mov dword [rsp + 0x98], r10d
mov dword [rsp + 0x80], r10d
lea r10d, [r11 + 0xf]
cmp r10d, dword [rsp + 0x98]
ja 0x4b8908
test r11d, r11d
je 0x4b896d
lea r10, [rsi + 1]
cmp r11d, 1
mov qword [rsp + 0x88], r10
lea r10, [r9 + 1]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi]
mov byte [r9], r10b
je 0x4b7ff4
lea r10, [rsi + 2]
cmp r11d, 2
mov qword [rsp + 0x88], r10
lea r10, [r9 + 2]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 1]
mov byte [r9 + 1], r10b
lea r10d, [rcx - 2]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 3]
cmp r11d, 3
mov qword [rsp + 0x88], r10
lea r10, [r9 + 3]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 2]
mov byte [r9 + 2], r10b
lea r10d, [rcx - 3]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 4]
cmp r11d, 4
mov qword [rsp + 0x88], r10
lea r10, [r9 + 4]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 3]
mov byte [r9 + 3], r10b
lea r10d, [rcx - 4]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 5]
cmp r11d, 5
mov qword [rsp + 0x88], r10
lea r10, [r9 + 5]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 4]
mov byte [r9 + 4], r10b
lea r10d, [rcx - 5]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 6]
cmp r11d, 6
mov qword [rsp + 0x88], r10
lea r10, [r9 + 6]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 5]
mov byte [r9 + 5], r10b
lea r10d, [rcx - 6]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 7]
cmp r11d, 7
mov qword [rsp + 0x88], r10
lea r10, [r9 + 7]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 6]
mov byte [r9 + 6], r10b
lea r10d, [rcx - 7]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 8]
cmp r11d, 8
mov qword [rsp + 0x88], r10
lea r10, [r9 + 8]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 7]
mov byte [r9 + 7], r10b
lea r10d, [rcx - 8]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 9]
cmp r11d, 9
mov qword [rsp + 0x88], r10
lea r10, [r9 + 9]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 8]
mov byte [r9 + 8], r10b
lea r10d, [rcx - 9]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 0xa]
cmp r11d, 0xa
mov qword [rsp + 0x88], r10
lea r10, [r9 + 0xa]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 9]
mov byte [r9 + 9], r10b
lea r10d, [rcx - 0xa]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 0xb]
cmp r11d, 0xb
mov qword [rsp + 0x88], r10
lea r10, [r9 + 0xb]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 0xa]
mov byte [r9 + 0xa], r10b
lea r10d, [rcx - 0xb]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 0xc]
cmp r11d, 0xc
mov qword [rsp + 0x88], r10
lea r10, [r9 + 0xc]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 0xb]
mov byte [r9 + 0xb], r10b
lea r10d, [rcx - 0xc]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 0xd]
cmp r11d, 0xd
mov qword [rsp + 0x88], r10
lea r10, [r9 + 0xd]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 0xc]
mov byte [r9 + 0xc], r10b
lea r10d, [rcx - 0xd]
mov dword [rsp + 0x80], r10d
je 0x4b7ff4
lea r10, [rsi + 0xe]
cmp r11d, 0xf
mov qword [rsp + 0x88], r10
lea r10, [r9 + 0xe]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 0xd]
mov byte [r9 + 0xd], r10b
lea r10d, [rcx - 0xe]
mov dword [rsp + 0x80], r10d
jne 0x4b7ff4
lea r10, [rsi + 0xf]
mov qword [rsp + 0x88], r10
lea r10, [r9 + 0xf]
mov qword [rsp + 0x90], r10
movzx r10d, byte [rsi + 0xe]
lea esi, [rcx - 0xf]
mov dword [rsp + 0x80], esi
mov byte [r9 + 0xe], r10b
mov r10d, r11d
sub ecx, r11d
lea r11, [rdi + r10]
add r11, qword [rsp + 0x18]
mov dword [rsp + 0xa0], ecx
lea esi, [rcx - 0x10]
xor ecx, ecx
lea rdi, [r9 + r10]
shr esi, 4
xor r10d, r10d
add esi, 1
nop dword [rax]
movdqa xmm0, xmmword [r11 + rcx]
add r10d, 1
movups xmmword [rdi + rcx], xmm0
add rcx, 0x10
cmp r10d, esi
jb 0x4b8020
mov rdi, qword [rsp + 0x90]
shl esi, 4
mov ecx, dword [rsp + 0x80]
mov esi, esi
mov r10, rsi
add rdi, rsi
sub ecx, esi
add rsi, qword [rsp + 0x88]
cmp r10d, dword [rsp + 0xa0]
je 0x4b8076
sub ecx, 1
lea rcx, [rsi + rcx + 1]
nop dword [rax]
movsb byte [rdi], byte [rsi]
cmp rcx, rsi
jne 0x4b8070
mov ecx, dword [rsp + 0x98]
mov r11d, dword [rsp + 0xa8]
lea r9, [r9 + rcx + 1]
mov rsi, r9
sub rsi, r11
jmp 0x4b7c32
mov r11d, dword [rsp + 0xa8]
mov rcx, r9
mov rsi, r9
sub rcx, r11
jmp 0x4b80b6
mov rcx, r10
mov rsi, r9
movzx r10d, byte [rcx]
sub edx, 3
add r9, 3
mov byte [r9 - 3], r10b
movzx r10d, byte [rcx + 1]
mov byte [r9 - 2], r10b
lea r10, [rcx + 3]
movzx r11d, byte [r10 - 1]
cmp edx, 2
mov byte [r9 - 1], r11b
ja 0x4b80b0
test edx, edx
je 0x4b75c5
movzx r9d, byte [rcx + 3]
cmp edx, 2
mov byte [rsi + 3], r9b
lea r9, [rsi + 4]
jne 0x4b75c5
movzx edx, byte [rcx + 4]
lea r9, [rsi + 5]
mov byte [rsi + 4], dl
jmp 0x4b75c5
movzx edi, byte [r12 + 1]
add r8d, 0x10
add r12, 2
shl edi, cl
add eax, edi
jmp 0x4b7713
mov esi, edi
sub esi, ecx
mov rdi, rsi
mov qword [rsp + 0xa0], rsi
mov rsi, qword [rsp + 0x18]
add rsi, rdi
cmp edx, ecx
jbe 0x4b7c32
mov r11, rdi
mov rdi, qword [rsp + 0x18]
sub edx, ecx
lea r10, [rdi + r11 + 0x10]
cmp r9, r10
lea r10, [r9 + 0x10]
setae r11b
cmp rsi, r10
setae r10b
or r11b, r10b
je 0x4b88eb
cmp ecx, 0x16
jbe 0x4b88eb
lea edi, [rcx - 1]
mov r11, rsi
neg r11
mov r10d, edi
mov dword [rsp + 0x98], edi
and r11d, 0xf
mov dword [rsp + 0x88], edi
lea edi, [r11 + 0xf]
cmp edi, r10d
ja 0x4b8952
test r11d, r11d
je 0x4b893b
movzx r10d, byte [rsi]
lea rdi, [rsi + 1]
cmp r11d, 1
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 1]
mov byte [r9], r10b
je 0x4b8446
movzx r10d, byte [rsi + 1]
lea rdi, [rsi + 2]
cmp r11d, 2
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 2]
mov byte [r9 + 1], r10b
lea r10d, [rcx - 2]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 2]
lea rdi, [rsi + 3]
cmp r11d, 3
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 3]
mov byte [r9 + 2], r10b
lea r10d, [rcx - 3]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 3]
lea rdi, [rsi + 4]
cmp r11d, 4
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 4]
mov byte [r9 + 3], r10b
lea r10d, [rcx - 4]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 4]
lea rdi, [rsi + 5]
cmp r11d, 5
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 5]
mov byte [r9 + 4], r10b
lea r10d, [rcx - 5]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 5]
lea rdi, [rsi + 6]
cmp r11d, 6
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 6]
mov byte [r9 + 5], r10b
lea r10d, [rcx - 6]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 6]
lea rdi, [rsi + 7]
cmp r11d, 7
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 7]
mov byte [r9 + 6], r10b
lea r10d, [rcx - 7]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 7]
lea rdi, [rsi + 8]
cmp r11d, 8
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 8]
mov byte [r9 + 7], r10b
lea r10d, [rcx - 8]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 8]
lea rdi, [rsi + 9]
cmp r11d, 9
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 9]
mov byte [r9 + 8], r10b
lea r10d, [rcx - 9]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 9]
lea rdi, [rsi + 0xa]
cmp r11d, 0xa
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 0xa]
mov byte [r9 + 9], r10b
lea r10d, [rcx - 0xa]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 0xa]
lea rdi, [rsi + 0xb]
cmp r11d, 0xb
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 0xb]
mov byte [r9 + 0xa], r10b
lea r10d, [rcx - 0xb]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 0xb]
lea rdi, [rsi + 0xc]
cmp r11d, 0xc
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 0xc]
mov byte [r9 + 0xb], r10b
lea r10d, [rcx - 0xc]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 0xc]
lea rdi, [rsi + 0xd]
cmp r11d, 0xd
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 0xd]
mov byte [r9 + 0xc], r10b
lea r10d, [rcx - 0xd]
mov dword [rsp + 0x88], r10d
je 0x4b8446
movzx r10d, byte [rsi + 0xd]
lea rdi, [rsi + 0xe]
cmp r11d, 0xf
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 0xe]
mov byte [r9 + 0xd], r10b
lea r10d, [rcx - 0xe]
mov dword [rsp + 0x88], r10d
jne 0x4b8446
movzx r10d, byte [rsi + 0xe]
lea rdi, [rsi + 0xf]
lea esi, [rcx - 0xf]
mov qword [rsp + 0x80], rdi
mov dword [rsp + 0x88], esi
lea rdi, [r9 + 0xf]
mov byte [r9 + 0xe], r10b
mov esi, r11d
sub ecx, r11d
mov r11, qword [rsp + 0xa0]
mov dword [rsp + 0xa0], edx
lea r10, [r9 + rsi]
mov dword [rsp + 0xac], ecx
sub ecx, 0x10
mov rdx, r10
mov r10d, dword [rsp + 0x88]
shr ecx, 4
add ecx, 1
add r11, rsi
add r11, qword [rsp + 0x18]
mov dword [rsp + 0x90], ecx
xor esi, esi
xor ecx, ecx
movdqa xmm0, xmmword [r11 + rcx]
add esi, 1
movups xmmword [rdx + rcx], xmm0
add rcx, 0x10
cmp dword [rsp + 0x90], esi
ja 0x4b848d
mov ecx, dword [rsp + 0x90]
mov edx, dword [rsp + 0xa0]
shl ecx, 4
mov esi, ecx
sub r10d, ecx
add rdi, rsi
add rsi, qword [rsp + 0x80]
cmp ecx, dword [rsp + 0xac]
je 0x4b8076
lea ecx, [r10 - 1]
lea rcx, [rsi + rcx + 1]
movsb byte [rdi], byte [rsi]
cmp rsi, rcx
jne 0x4b84de
jmp 0x4b8076
lea rbx, str.invalid_distance_too_far_back
mov qword [r13 + 0x20], rbx
mov dword [r15 + 8], 0x3f51
jmp 0x4b75e0
add r9, 1
jmp 0x4b75c5
lea r10, [r9 + rsi + 0x11]
mov edi, dword [rsp + 0x24]
mov rsi, qword [rsp + 0x18]
sub edx, edi
cmp rsi, r10
lea r10, [rsi + 0x10]
setae r11b
cmp rcx, r10
setae r10b
or r11b, r10b
je 0x4b895d
cmp edi, 0x16
jbe 0x4b895d
mov r10d, dword [rsp + 0x44]
cmp dword [rsp + 0x50], r10d
ja 0x4b899f
mov r10d, dword [rsp + 0x34]
test r10d, r10d
je 0x4b8989
lea r11, [rcx + 1]
cmp r10d, 1
mov qword [rsp + 0x80], r11
movzx r11d, byte [rsi]
lea rdi, [rsi + 1]
mov byte [rcx], r11b
je 0x4b8910
movzx r11d, byte [rsi + 1]
lea r10, [rcx + 2]
cmp dword [rsp + 0x34], 2
lea rdi, [rsi + 2]
mov qword [rsp + 0x80], r10
mov r10, rsi
mov esi, dword [rsp + 0x68]
mov byte [rcx + 1], r11b
je 0x4b87f2
cmp dword [rsp + 0x34], 3
lea rdi, [r10 + 3]
mov rsi, r10
movzx r11d, byte [rsi + 2]
lea r10, [rcx + 3]
mov qword [rsp + 0x80], r10
mov r10, rsi
mov esi, dword [rsp + 0x6c]
mov byte [rcx + 2], r11b
je 0x4b87f2
cmp dword [rsp + 0x34], 4
lea rdi, [r10 + 4]
mov rsi, r10
movzx r11d, byte [rsi + 3]
lea r10, [rcx + 4]
mov qword [rsp + 0x80], r10
mov r10, rsi
mov esi, dword [rsp + 0x70]
mov byte [rcx + 3], r11b
je 0x4b87f2
cmp dword [rsp + 0x34], 5
lea rdi, [r10 + 5]
mov rsi, r10
movzx r11d, byte [rsi + 4]
lea r10, [rcx + 5]
mov qword [rsp + 0x80], r10
mov r10, rsi
mov esi, dword [rsp + 0x74]
mov byte [rcx + 4], r11b
je 0x4b87f2
cmp dword [rsp + 0x34], 6
lea rdi, [r10 + 6]
mov rsi, r10
movzx r11d, byte [rsi + 5]
lea r10, [rcx + 6]
mov qword [rsp + 0x80], r10
mov r10, rsi
mov esi, dword [rsp + 0x78]
mov byte [rcx + 5], r11b
je 0x4b87f2
cmp dword [rsp + 0x34], 7
lea rdi, [r10 + 7]
mov rsi, r10
movzx r11d, byte [rsi + 6]
lea r10, [rcx + 7]
mov qword [rsp + 0x80], r10
mov r10, rsi
mov esi, dword [rsp + 0x7c]
mov byte [rcx + 6], r11b
je 0x4b87f2
lea rdi, [r10 + 8]
mov rsi, r10
lea r10, [rcx + 8]
movzx r11d, byte [rsi + 7]
mov qword [rsp + 0x80], r10
mov r10d, dword [rsp + 0x24]
mov byte [rcx + 7], r11b
mov esi, r10d
sub esi, 8
cmp dword [rsp + 0x34], 8
je 0x4b87f2
mov rsi, qword [rsp + 0x18]
lea r11, [rcx + 9]
mov qword [rsp + 0x80], r11
lea rdi, [rsi + 9]
movzx r11d, byte [rsi + 8]
mov esi, r10d
sub esi, 9
cmp dword [rsp + 0x34], 9
mov byte [rcx + 8], r11b
je 0x4b87f2
mov rsi, qword [rsp + 0x18]
lea r11, [rcx + 0xa]
mov qword [rsp + 0x80], r11
lea rdi, [rsi + 0xa]
movzx r11d, byte [rsi + 9]
mov esi, r10d
sub esi, 0xa
cmp dword [rsp + 0x34], 0xa
mov byte [rcx + 9], r11b
je 0x4b87f2
mov rsi, qword [rsp + 0x18]
lea r11, [rcx + 0xb]
mov qword [rsp + 0x80], r11
lea rdi, [rsi + 0xb]
movzx r11d, byte [rsi + 0xa]
mov esi, r10d
sub esi, 0xb
cmp dword [rsp + 0x34], 0xb
mov byte [rcx + 0xa], r11b
je 0x4b87f2
mov rsi, qword [rsp + 0x18]
lea r11, [rcx + 0xc]
mov qword [rsp + 0x80], r11
lea rdi, [rsi + 0xc]
movzx r11d, byte [rsi + 0xb]
mov esi, r10d
sub esi, 0xc
cmp dword [rsp + 0x34], 0xc
mov byte [rcx + 0xb], r11b
je 0x4b87f2
mov rsi, qword [rsp + 0x18]
lea r11, [rcx + 0xd]
mov qword [rsp + 0x80], r11
lea rdi, [rsi + 0xd]
movzx r11d, byte [rsi + 0xc]
mov esi, r10d
sub esi, 0xd
cmp dword [rsp + 0x34], 0xd
mov byte [rcx + 0xc], r11b
je 0x4b87f2
mov rsi, qword [rsp + 0x18]
lea r11, [rcx + 0xe]
mov qword [rsp + 0x80], r11
lea rdi, [rsi + 0xe]
movzx r11d, byte [rsi + 0xd]
mov esi, r10d
sub esi, 0xe
cmp dword [rsp + 0x34], 0xf
mov byte [rcx + 0xd], r11b
jne 0x4b87f2
mov rsi, qword [rsp + 0x18]
lea r11, [rcx + 0xf]
mov qword [rsp + 0x80], r11
movzx r11d, byte [rsi + 0xe]
lea rdi, [rsi + 0xf]
mov esi, r10d
sub esi, 0xf
mov byte [rcx + 0xe], r11b
mov r11d, dword [rsp + 0x34]
mov dword [rsp + 0x98], eax
mov r10, qword [rsp + 0x18]
add r10, r11
mov qword [rsp + 0x90], r10
mov r10, qword [rsp + 0x88]
lea r11, [r11 + r10 + 1]
mov r10, qword [rsp + 0x80]
add r11, r9
xor r9d, r9d
mov qword [rsp + 0x88], r11
xor r11d, r11d
mov rax, qword [rsp + 0x90]
add r11d, 1
movdqa xmm0, xmmword [rax + r9]
mov rax, qword [rsp + 0x88]
movups xmmword [rax + r9], xmm0
add r9, 0x10
cmp dword [rsp + 0x40], r11d
ja 0x4b8834
sub esi, dword [rsp + 0x3c]
mov r11, qword [rsp + 0x48]
mov eax, dword [rsp + 0x98]
mov r9d, esi
lea rsi, [rdi + r11]
add r10, r11
mov edi, dword [rsp + 0x3c]
cmp edi, dword [rsp + 0x54]
je 0x4b8894
sub r9d, 1
mov rdi, r10
lea r9, [rsi + r9 + 1]
movsb byte [rdi], byte [rsi]
cmp r9, rsi
jne 0x4b888e
mov rsi, qword [rsp + 0x58]
mov r11d, dword [rsp + 0xa8]
lea r9, [rcx + rsi + 1]
mov rsi, r9
sub rsi, r11
jmp 0x4b7c32
sub ecx, 1
mov rdi, r9
mov dword [rsp + 0x98], ecx
lea rcx, [rsi + rcx + 1]
movsb byte [rdi], byte [rsi]
cmp rcx, rsi
jne 0x4b88c3
jmp 0x4b8076
sub ecx, 1
mov rdi, r9
mov dword [rsp + 0xa0], ecx
lea rcx, [rsi + rcx + 1]
movsb byte [rdi], byte [rsi]
cmp rsi, rcx
jne 0x4b88e0
jmp 0x4b7b34
sub ecx, 1
mov rdi, r9
mov dword [rsp + 0x98], ecx
lea rcx, [rsi + rcx + 1]
movsb byte [rdi], byte [rsi]
cmp rsi, rcx
jne 0x4b88fd
jmp 0x4b8076
mov rdi, r9
jmp 0x4b8065
mov esi, dword [rsp + 0x44]
jmp 0x4b87f2
mov r10d, ecx
mov rdi, r9
jmp 0x4b7b25
mov qword [rsp + 0x80], rsi
mov rdi, r9
mov dword [rsp + 0x88], ecx
jmp 0x4b7aa0
mov qword [rsp + 0x80], rsi
mov rdi, r9
mov dword [rsp + 0x88], ecx
jmp 0x4b8446
mov r10d, ecx
mov rdi, r9
jmp 0x4b84d5
mov rdi, rcx
movsb byte [rdi], byte [rsi]
cmp qword [rsp + 0x60], rsi
jne 0x4b8960
jmp 0x4b8894
mov qword [rsp + 0x88], rsi
mov dword [rsp + 0x80], ecx
mov qword [rsp + 0x90], r9
jmp 0x4b7ff4
mov rdi, qword [rsp + 0x18]
mov qword [rsp + 0x80], rcx
mov esi, dword [rsp + 0x24]
jmp 0x4b87f2
mov rsi, qword [rsp + 0x18]
mov r10, rcx
mov r9d, dword [rsp + 0x24]
jmp 0x4b8882