Function at 0x4a4810
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 0x4a495f
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 0x4a4990
test r10b, 0x10
jne 0x4a4a50
test r10b, 0x40
jne 0x4a4f50
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 0x4a4970
mov byte [r9], dl
add r9, 1
cmp r12, qword [rsp + 8]
jae 0x4a49d0
cmp r9, qword [rsp]
jb 0x4a4934
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 0x4a4f63
mov rsi, qword [rsp]
sub rbx, r12
mov rdx, rbx
add edx, 5
mov dword [r13 + 8], edx
cmp r9, rsi
jb 0x4a4f80
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 0x4a4a8a
movzx r11d, r10b
cmp r11d, r8d
jbe 0x4a4a73
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 0x4a4f91
mov ecx, dword [rsp + 0x20]
and ecx, eax
jmp 0x4a4ab7
and r10d, 0x40
jne 0x4a4fe0
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 0x4a4aa0
and r10d, 0xf
movzx esi, r10b
cmp esi, r8d
jbe 0x4a4b03
movzx edi, byte [r12]
mov ecx, r8d
shl edi, cl
lea ecx, [r8 + 8]
add eax, edi
cmp esi, ecx
ja 0x4a54fe
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 0x4a5485
sub edi, ecx
cmp dword [rsp + 0x30], edi
mov ecx, edi
jae 0x4a4b4d
mov r11d, dword [r15 + 0x1be0]
test r11d, r11d
jne 0x4a58d9
mov r10d, dword [rsp + 0x24]
test r10d, r10d
je 0x4a504f
mov edi, dword [rsp + 0x24]
cmp edi, ecx
jae 0x4a5515
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 0x4a5022
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 0x4a5cbe
cmp ecx, 0x16
jbe 0x4a5cbe
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 0x4a5d09
test r11d, r11d
je 0x4a5d14
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4e90
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 0x4a4ed1
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 0x4a4f24
lea ecx, [r10 - 1]
lea rcx, [rsi + rcx + 1]
movsb byte [rdi], byte [rsi]
cmp rsi, rcx
jne 0x4a4f1e
mov esi, dword [rsp + 0xa0]
cmp dword [rsp + 0x24], edx
mov qword [rsp + 0x88], rsi
lea rcx, [r9 + rsi + 1]
jb 0x4a58fa
mov rsi, qword [rsp + 0x18]
mov r9, rcx
jmp 0x4a5022
and r10d, 0x20
je 0x4a4fc0
mov dword [r15 + 8], 0x3f3f
jmp 0x4a49d0
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 0x4a4a1e
sub rsi, r9
mov rdx, rsi
add edx, 0x101
jmp 0x4a4a2a
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 0x4a4a94
lea rbx, str.invalid_literal_length_code
mov qword [r13 + 0x20], rbx
mov dword [r15 + 8], 0x3f51
jmp 0x4a49d0
lea rbx, str.invalid_distance_code
mov qword [r13 + 0x20], rbx
mov dword [r15 + 8], 0x3f51
jmp 0x4a49d0
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 0x4a5000
test edx, edx
je 0x4a49b5
movzx ecx, byte [rsi]
cmp edx, 2
mov byte [r9], cl
jne 0x4a58f1
movzx edx, byte [rsi + 1]
add r9, 2
mov byte [r9 - 1], dl
jmp 0x4a49b5
mov edi, dword [rsp + 0x38]
mov rsi, qword [rsp + 0x18]
sub edi, ecx
add rsi, rdi
cmp edx, ecx
jbe 0x4a5022
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 0x4a5ca1
cmp ecx, 0x16
jbe 0x4a5ca1
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 0x4a5cf8
test r11d, r11d
je 0x4a5d5d
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a53e4
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 0x4a5410
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 0x4a5466
sub ecx, 1
lea rcx, [rsi + rcx + 1]
nop dword [rax]
movsb byte [rdi], byte [rsi]
cmp rcx, rsi
jne 0x4a5460
mov ecx, dword [rsp + 0x98]
mov r11d, dword [rsp + 0xa8]
lea r9, [r9 + rcx + 1]
mov rsi, r9
sub rsi, r11
jmp 0x4a5022
mov r11d, dword [rsp + 0xa8]
mov rcx, r9
mov rsi, r9
sub rcx, r11
jmp 0x4a54a6
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 0x4a54a0
test edx, edx
je 0x4a49b5
movzx r9d, byte [rcx + 3]
cmp edx, 2
mov byte [rsi + 3], r9b
lea r9, [rsi + 4]
jne 0x4a49b5
movzx edx, byte [rcx + 4]
lea r9, [rsi + 5]
mov byte [rsi + 4], dl
jmp 0x4a49b5
movzx edi, byte [r12 + 1]
add r8d, 0x10
add r12, 2
shl edi, cl
add eax, edi
jmp 0x4a4b03
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 0x4a5022
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 0x4a5cdb
cmp ecx, 0x16
jbe 0x4a5cdb
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 0x4a5d42
test r11d, r11d
je 0x4a5d2b
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a5836
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 0x4a587d
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 0x4a5466
lea ecx, [r10 - 1]
lea rcx, [rsi + rcx + 1]
movsb byte [rdi], byte [rsi]
cmp rsi, rcx
jne 0x4a58ce
jmp 0x4a5466
lea rbx, str.invalid_distance_too_far_back
mov qword [r13 + 0x20], rbx
mov dword [r15 + 8], 0x3f51
jmp 0x4a49d0
add r9, 1
jmp 0x4a49b5
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 0x4a5d4d
cmp edi, 0x16
jbe 0x4a5d4d
mov r10d, dword [rsp + 0x44]
cmp dword [rsp + 0x50], r10d
ja 0x4a5d8f
mov r10d, dword [rsp + 0x34]
test r10d, r10d
je 0x4a5d79
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 0x4a5d00
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5be2
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 0x4a5c24
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 0x4a5c84
sub r9d, 1
mov rdi, r10
lea r9, [rsi + r9 + 1]
movsb byte [rdi], byte [rsi]
cmp r9, rsi
jne 0x4a5c7e
mov rsi, qword [rsp + 0x58]
mov r11d, dword [rsp + 0xa8]
lea r9, [rcx + rsi + 1]
mov rsi, r9
sub rsi, r11
jmp 0x4a5022
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 0x4a5cb3
jmp 0x4a5466
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 0x4a5cd0
jmp 0x4a4f24
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 0x4a5ced
jmp 0x4a5466
mov rdi, r9
jmp 0x4a5455
mov esi, dword [rsp + 0x44]
jmp 0x4a5be2
mov r10d, ecx
mov rdi, r9
jmp 0x4a4f15
mov qword [rsp + 0x80], rsi
mov rdi, r9
mov dword [rsp + 0x88], ecx
jmp 0x4a4e90
mov qword [rsp + 0x80], rsi
mov rdi, r9
mov dword [rsp + 0x88], ecx
jmp 0x4a5836
mov r10d, ecx
mov rdi, r9
jmp 0x4a58c5
mov rdi, rcx
movsb byte [rdi], byte [rsi]
cmp qword [rsp + 0x60], rsi
jne 0x4a5d50
jmp 0x4a5c84
mov qword [rsp + 0x88], rsi
mov dword [rsp + 0x80], ecx
mov qword [rsp + 0x90], r9
jmp 0x4a53e4
mov rdi, qword [rsp + 0x18]
mov qword [rsp + 0x80], rcx
mov esi, dword [rsp + 0x24]
jmp 0x4a5be2
mov rsi, qword [rsp + 0x18]
mov r10, rcx
mov r9d, dword [rsp + 0x24]
jmp 0x4a5c72