Function at 0x451de0
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 0x451f2f
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 0x451f60
test r10b, 0x10
jne 0x452020
test r10b, 0x40
jne 0x452520
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 0x451f40
mov byte [r9], dl
add r9, 1
cmp r12, qword [rsp + 8]
jae 0x451fa0
cmp r9, qword [rsp]
jb 0x451f04
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 0x452533
mov rsi, qword [rsp]
sub rbx, r12
mov rdx, rbx
add edx, 5
mov dword [r13 + 8], edx
cmp r9, rsi
jb 0x452550
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 0x45205a
movzx r11d, r10b
cmp r11d, r8d
jbe 0x452043
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 0x452561
mov ecx, dword [rsp + 0x20]
and ecx, eax
jmp 0x452087
and r10d, 0x40
jne 0x4525b0
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 0x452070
and r10d, 0xf
movzx esi, r10b
cmp esi, r8d
jbe 0x4520d3
movzx edi, byte [r12]
mov ecx, r8d
shl edi, cl
lea ecx, [r8 + 8]
add eax, edi
cmp esi, ecx
ja 0x452ace
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 0x452a55
sub edi, ecx
cmp dword [rsp + 0x30], edi
mov ecx, edi
jae 0x45211d
mov r11d, dword [r15 + 0x1be0]
test r11d, r11d
jne 0x452ea9
mov r10d, dword [rsp + 0x24]
test r10d, r10d
je 0x45261f
mov edi, dword [rsp + 0x24]
cmp edi, ecx
jae 0x452ae5
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 0x4525f2
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 0x45328e
cmp ecx, 0x16
jbe 0x45328e
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 0x4532d9
test r11d, r11d
je 0x4532e4
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x452460
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 0x4524a1
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 0x4524f4
lea ecx, [r10 - 1]
lea rcx, [rsi + rcx + 1]
movsb byte [rdi], byte [rsi]
cmp rsi, rcx
jne 0x4524ee
mov esi, dword [rsp + 0xa0]
cmp dword [rsp + 0x24], edx
mov qword [rsp + 0x88], rsi
lea rcx, [r9 + rsi + 1]
jb 0x452eca
mov rsi, qword [rsp + 0x18]
mov r9, rcx
jmp 0x4525f2
and r10d, 0x20
je 0x452590
mov dword [r15 + 8], 0x3f3f
jmp 0x451fa0
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 0x451fee
sub rsi, r9
mov rdx, rsi
add edx, 0x101
jmp 0x451ffa
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 0x452064
lea rbx, str.invalid_literal_length_code
mov qword [r13 + 0x20], rbx
mov dword [r15 + 8], 0x3f51
jmp 0x451fa0
lea rbx, str.invalid_distance_code
mov qword [r13 + 0x20], rbx
mov dword [r15 + 8], 0x3f51
jmp 0x451fa0
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 0x4525d0
test edx, edx
je 0x451f85
movzx ecx, byte [rsi]
cmp edx, 2
mov byte [r9], cl
jne 0x452ec1
movzx edx, byte [rsi + 1]
add r9, 2
mov byte [r9 - 1], dl
jmp 0x451f85
mov edi, dword [rsp + 0x38]
mov rsi, qword [rsp + 0x18]
sub edi, ecx
add rsi, rdi
cmp edx, ecx
jbe 0x4525f2
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 0x453271
cmp ecx, 0x16
jbe 0x453271
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 0x4532c8
test r11d, r11d
je 0x45332d
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529b4
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 0x4529e0
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 0x452a36
sub ecx, 1
lea rcx, [rsi + rcx + 1]
nop dword [rax]
movsb byte [rdi], byte [rsi]
cmp rcx, rsi
jne 0x452a30
mov ecx, dword [rsp + 0x98]
mov r11d, dword [rsp + 0xa8]
lea r9, [r9 + rcx + 1]
mov rsi, r9
sub rsi, r11
jmp 0x4525f2
mov r11d, dword [rsp + 0xa8]
mov rcx, r9
mov rsi, r9
sub rcx, r11
jmp 0x452a76
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 0x452a70
test edx, edx
je 0x451f85
movzx r9d, byte [rcx + 3]
cmp edx, 2
mov byte [rsi + 3], r9b
lea r9, [rsi + 4]
jne 0x451f85
movzx edx, byte [rcx + 4]
lea r9, [rsi + 5]
mov byte [rsi + 4], dl
jmp 0x451f85
movzx edi, byte [r12 + 1]
add r8d, 0x10
add r12, 2
shl edi, cl
add eax, edi
jmp 0x4520d3
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 0x4525f2
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 0x4532ab
cmp ecx, 0x16
jbe 0x4532ab
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 0x453312
test r11d, r11d
je 0x4532fb
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e06
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 0x452e4d
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 0x452a36
lea ecx, [r10 - 1]
lea rcx, [rsi + rcx + 1]
movsb byte [rdi], byte [rsi]
cmp rsi, rcx
jne 0x452e9e
jmp 0x452a36
lea rbx, str.invalid_distance_too_far_back
mov qword [r13 + 0x20], rbx
mov dword [r15 + 8], 0x3f51
jmp 0x451fa0
add r9, 1
jmp 0x451f85
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 0x45331d
cmp edi, 0x16
jbe 0x45331d
mov r10d, dword [rsp + 0x44]
cmp dword [rsp + 0x50], r10d
ja 0x45335f
mov r10d, dword [rsp + 0x34]
test r10d, r10d
je 0x453349
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 0x4532d0
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531b2
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 0x4531f4
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 0x453254
sub r9d, 1
mov rdi, r10
lea r9, [rsi + r9 + 1]
movsb byte [rdi], byte [rsi]
cmp r9, rsi
jne 0x45324e
mov rsi, qword [rsp + 0x58]
mov r11d, dword [rsp + 0xa8]
lea r9, [rcx + rsi + 1]
mov rsi, r9
sub rsi, r11
jmp 0x4525f2
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 0x453283
jmp 0x452a36
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 0x4532a0
jmp 0x4524f4
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 0x4532bd
jmp 0x452a36
mov rdi, r9
jmp 0x452a25
mov esi, dword [rsp + 0x44]
jmp 0x4531b2
mov r10d, ecx
mov rdi, r9
jmp 0x4524e5
mov qword [rsp + 0x80], rsi
mov rdi, r9
mov dword [rsp + 0x88], ecx
jmp 0x452460
mov qword [rsp + 0x80], rsi
mov rdi, r9
mov dword [rsp + 0x88], ecx
jmp 0x452e06
mov r10d, ecx
mov rdi, r9
jmp 0x452e95
mov rdi, rcx
movsb byte [rdi], byte [rsi]
cmp qword [rsp + 0x60], rsi
jne 0x453320
jmp 0x453254
mov qword [rsp + 0x88], rsi
mov dword [rsp + 0x80], ecx
mov qword [rsp + 0x90], r9
jmp 0x4529b4
mov rdi, qword [rsp + 0x18]
mov qword [rsp + 0x80], rcx
mov esi, dword [rsp + 0x24]
jmp 0x4531b2
mov rsi, qword [rsp + 0x18]
mov r10, rcx
mov r9d, dword [rsp + 0x24]
jmp 0x453242