Function at 0x5e84f0
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, 0x98
mov rax, qword [rcx]
mov r11, qword [rcx + 0x28]
mov r8d, 1
mov r15, rcx
lea r12, [rax - 1]
mov eax, dword [rcx + 8]
mov r13d, dword [r11 + 0x34]
mov r10, qword [r11 + 0x58]
mov r14, qword [r11 + 0x60]
sub eax, 5
mov ebp, r13d
add rax, r12
mov qword [rsp], rax
mov rax, qword [rcx + 0x10]
lea r9, [rax - 1]
mov eax, dword [rcx + 0x18]
mov ecx, dword [r11 + 0x68]
mov rsi, r9
sub edx, eax
sub eax, 0x101
add rax, r9
sub rsi, rdx
mov edx, dword [r11 + 0x44]
mov qword [rsp + 8], rax
mov eax, dword [r11 + 0x2c]
mov qword [rsp + 0x20], rsi
mov esi, r8d
shl esi, cl
mov ecx, dword [r11 + 0x6c]
mov edi, eax
mov dword [rsp + 0x40], eax
mov eax, dword [r11 + 0x30]
lea esi, [rsi - 1]
shl r8d, cl
mov dword [rsp + 0x38], eax
mov rax, qword [r11 + 0x38]
mov dword [rsp + 0x14], esi
lea esi, [r8 - 1]
mov rbx, rax
mov dword [rsp + 0x18], esi
mov qword [rsp + 0x30], rax
mov rsi, rbx
lea rbx, [rbx + 0x10]
mov eax, dword [r11 + 0x40]
sub rsi, 1
mov rcx, rsi
mov qword [rsp + 0x28], rsi
mov esi, r13d
shr esi, 4
mov qword [rsp + 0x60], rbx
mov dword [rsp + 0x5c], esi
shl esi, 4
mov r8d, esi
mov dword [rsp + 0x44], esi
sub ebp, esi
mov rsi, rcx
mov qword [rsp + 0x50], r8
mov dword [rsp + 0x58], ebp
add rsi, r8
mov r8d, 1
mov qword [rsp + 0x48], rsi
mov esi, edi
add esi, r13d
mov dword [rsp + 0x68], esi
lea esi, [r13 - 1]
mov ecx, esi
mov dword [rsp + 0x6c], esi
lea rbx, [rcx + 1]
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x1c], r13d
cmp edx, 0xe
ja 0x5e862b
movzx esi, byte [r12 + 1]
movzx ebx, byte [r12 + 2]
mov ecx, edx
add r12, 2
shl esi, cl
lea ecx, [rdx + 8]
add edx, 0x10
shl ebx, cl
add ebx, esi
add eax, ebx
mov ecx, dword [rsp + 0x14]
and ecx, eax
lea rbx, [r10 + rcx*4]
jmp 0x5e8668
test dil, 0x10
jne 0x5e8730
test dil, 0x40
jne 0x5e8a20
mov ecx, edi
mov esi, r8d
shl esi, cl
mov edi, esi
sub edi, 1
and edi, eax
add edi, ebx
lea rbx, [r10 + rdi*4]
movzx ecx, byte [rbx + 1]
movzx edi, byte [rbx]
movzx ebx, word [rbx + 2]
movzx esi, cl
shr eax, cl
sub edx, esi
test dil, dil
jne 0x5e8640
mov byte [r9 + 1], bl
add r9, 1
cmp r9, qword [rsp + 8]
jae 0x5e86a0
cmp r12, qword [rsp]
jb 0x5e8606
nop dword [rax + rax]
mov ecx, edx
mov r10, r12
shr ecx, 3
mov r8d, ecx
shl ecx, 3
sub edx, ecx
sub r10, r8
mov r8d, 1
mov ecx, edx
shl r8d, cl
sub r8d, 1
and r8d, eax
lea rax, [r10 + 1]
cmp qword [rsp], r10
mov qword [r15], rax
lea rax, [r9 + 1]
mov qword [r15 + 0x10], rax
jbe 0x5e8a31
mov rax, qword [rsp]
sub rax, r10
add eax, 5
mov rdx, qword [rsp + 8]
mov dword [r15 + 8], eax
mov eax, edx
sub eax, r9d
add eax, 0x101
cmp r9, rdx
jae 0x5e870b
mov rax, rdx
sub rax, r9
add eax, 0x101
mov dword [r15 + 0x18], eax
mov dword [r11 + 0x40], r8d
mov dword [r11 + 0x44], ecx
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
and edi, 0xf
movzx esi, dil
test esi, esi
je 0x5e8768
cmp esi, edx
jbe 0x5e8752
movzx ebp, byte [r12 + 1]
mov ecx, edx
add r12, 1
add edx, 8
shl ebp, cl
add eax, ebp
mov ecx, edi
mov ebp, r8d
sub edx, esi
shl ebp, cl
mov ecx, ebp
sub ecx, 1
and ecx, eax
add ebx, ecx
mov ecx, edi
shr eax, cl
cmp edx, 0xe
jbe 0x5e8a40
mov ecx, dword [rsp + 0x18]
and ecx, eax
jmp 0x5e879a
test sil, 0x40
jne 0x5e8a80
mov ecx, esi
mov edi, r8d
shl edi, cl
mov ecx, edi
sub ecx, 1
and ecx, eax
add ecx, ebp
lea rdi, [r14 + rcx*4]
movzx ecx, byte [rdi + 1]
movzx esi, byte [rdi]
movzx ebp, word [rdi + 2]
movzx edi, cl
shr eax, cl
sub edx, edi
test sil, 0x10
je 0x5e8780
and esi, 0xf
movzx edi, sil
cmp edi, edx
jbe 0x5e87e0
movzx r13d, byte [r12 + 1]
mov ecx, edx
shl r13d, cl
lea ecx, [rdx + 8]
add eax, r13d
cmp edi, ecx
ja 0x5e8d38
add r12, 1
mov edx, ecx
mov ecx, esi
mov r13d, r8d
sub edx, edi
shl r13d, cl
sub r13d, 1
and r13d, eax
lea ecx, [r13 + rbp]
mov ebp, ecx
mov dword [rsp + 0x3c], ecx
mov ecx, esi
shr eax, cl
mov rcx, r9
sub rcx, qword [rsp + 0x20]
cmp ebp, ecx
jbe 0x5e8a97
mov esi, ebp
sub esi, ecx
cmp dword [rsp + 0x38], esi
jae 0x5e8829
mov ebp, dword [r11 + 0x1bd8]
test ebp, ebp
jne 0x5e90b2
mov edi, dword [rsp + 0x1c]
test edi, edi
jne 0x5e8b57
mov edi, dword [rsp + 0x40]
mov rcx, qword [rsp + 0x28]
sub edi, esi
add rcx, rdi
cmp ebx, esi
jbe 0x5e8b21
add rdi, qword [rsp + 0x30]
sub ebx, esi
lea rbp, [rdi + 0x10]
mov r13, rdi
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 1]
cmp rbp, rdi
lea rdi, [r9 + 0x11]
setbe bpl
cmp r13, rdi
setae dil
or bpl, dil
je 0x5e8e34
cmp esi, 0xf
jbe 0x5e8e34
mov edi, esi
mov dword [rsp + 0x8c], eax
mov r13d, dword [rsp + 0x3c]
shr edi, 4
mov rax, qword [rsp + 0x80]
xor ebp, ebp
mov dword [rsp + 0x78], edi
shl edi, 4
mov dword [rsp + 0x88], edi
xor edi, edi
movdqu xmm0, xmmword [rax + rdi]
add ebp, 1
movdqu xmmword [r9 + rdi + 1], xmm0
add rdi, 0x10
cmp dword [rsp + 0x78], ebp
ja 0x5e88b4
mov edi, dword [rsp + 0x88]
mov dword [rsp + 0x3c], r13d
mov r13d, esi
mov eax, dword [rsp + 0x8c]
mov ebp, edi
sub r13d, edi
mov qword [rsp + 0x78], rbp
add rbp, r9
add rcx, qword [rsp + 0x78]
cmp esi, dword [rsp + 0x88]
mov edi, r13d
je 0x5e8e1a
movzx r13d, byte [rcx + 1]
cmp edi, 1
mov byte [rbp + 1], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 2]
cmp edi, 2
mov byte [rbp + 2], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 3]
cmp edi, 3
mov byte [rbp + 3], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 4]
cmp edi, 4
mov byte [rbp + 4], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 5]
cmp edi, 5
mov byte [rbp + 5], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 6]
cmp edi, 6
mov byte [rbp + 6], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 7]
cmp edi, 7
mov byte [rbp + 7], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 8]
cmp edi, 8
mov byte [rbp + 8], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 9]
cmp edi, 9
mov byte [rbp + 9], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 0xa]
cmp edi, 0xa
mov byte [rbp + 0xa], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 0xb]
cmp edi, 0xb
mov byte [rbp + 0xb], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 0xc]
cmp edi, 0xc
mov byte [rbp + 0xc], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 0xd]
cmp edi, 0xd
mov byte [rbp + 0xd], r13b
je 0x5e8e1a
movzx r13d, byte [rcx + 0xe]
cmp edi, 0xe
mov byte [rbp + 0xe], r13b
je 0x5e8e1a
movzx ecx, byte [rcx + 0xf]
sub esi, 1
mov byte [rbp + 0xf], cl
mov r13d, dword [rsp + 0x3c]
lea r9, [r9 + rsi + 1]
mov rcx, r9
sub rcx, r13
jmp 0x5e8b21
and edi, 0x20
je 0x5e8a65
mov dword [r11], 0xb
jmp 0x5e86a0
mov eax, dword [rsp]
sub eax, r10d
add eax, 5
jmp 0x5e86e8
movzx edi, byte [r12 + 1]
movzx esi, byte [r12 + 2]
mov ecx, edx
add r12, 2
shl edi, cl
lea ecx, [rdx + 8]
add edx, 0x10
shl esi, cl
add esi, edi
add eax, esi
jmp 0x5e8771
lea rbx, str.invalid_literal_length_code
mov qword [r15 + 0x20], rbx
mov dword [r11], 0x1d
jmp 0x5e86a0
lea rbx, str.invalid_distance_code
mov qword [r15 + 0x20], rbx
mov dword [r11], 0x1d
jmp 0x5e86a0
mov r13d, dword [rsp + 0x3c]
mov rcx, r9
sub rcx, r13
jmp 0x5e8aaa
mov r9, rdi
mov rcx, rbp
movzx esi, byte [rcx + 1]
sub ebx, 3
lea rdi, [r9 + 3]
cmp ebx, 2
lea rbp, [rcx + 3]
mov byte [r9 + 1], sil
movzx esi, byte [rcx + 2]
mov byte [r9 + 2], sil
movzx esi, byte [rcx + 3]
mov byte [r9 + 3], sil
ja 0x5e8aa4
test ebx, ebx
je 0x5e8b4f
movzx esi, byte [rcx + 4]
cmp ebx, 2
mov byte [r9 + 4], sil
jne 0x5e8e2b
movzx ecx, byte [rcx + 5]
add r9, 5
mov byte [r9], cl
jmp 0x5e8687
movzx esi, byte [rcx + 1]
add rcx, 3
add r9, 3
sub ebx, 3
mov byte [r9 - 2], sil
movzx esi, byte [rcx - 1]
mov byte [r9 - 1], sil
movzx esi, byte [rcx]
mov byte [r9], sil
cmp ebx, 2
ja 0x5e8b00
test ebx, ebx
je 0x5e8687
movzx esi, byte [rcx + 1]
cmp ebx, 2
mov byte [r9 + 1], sil
jne 0x5e8e22
movzx ecx, byte [rcx + 2]
add r9, 2
mov byte [r9], cl
jmp 0x5e8687
mov r9, rdi
jmp 0x5e8687
cmp dword [rsp + 0x1c], esi
jae 0x5e8d50
mov edi, dword [rsp + 0x68]
mov rcx, qword [rsp + 0x28]
sub edi, esi
sub esi, dword [rsp + 0x1c]
add rcx, rdi
cmp ebx, esi
mov ebp, esi
jbe 0x5e8b21
add rdi, qword [rsp + 0x30]
sub ebx, esi
lea rsi, [r9 + 1]
mov r13, rdi
mov qword [rsp + 0x80], rdi
add rdi, 0x10
cmp rdi, rsi
lea rsi, [r9 + 0x11]
setbe dil
cmp r13, rsi
setae sil
or dil, sil
je 0x5e8e70
cmp ebp, 0xf
jbe 0x5e8e70
mov esi, ebp
mov dword [rsp + 0x8c], eax
mov r13d, dword [rsp + 0x3c]
shr esi, 4
mov rax, qword [rsp + 0x80]
xor edi, edi
mov dword [rsp + 0x78], esi
shl esi, 4
mov dword [rsp + 0x88], esi
xor esi, esi
movdqu xmm0, xmmword [rax + rsi]
add edi, 1
movdqu xmmword [r9 + rsi + 1], xmm0
add rsi, 0x10
cmp dword [rsp + 0x78], edi
ja 0x5e8be2
mov edi, dword [rsp + 0x88]
mov dword [rsp + 0x3c], r13d
mov esi, ebp
sub esi, dword [rsp + 0x88]
mov eax, dword [rsp + 0x8c]
mov r13, rdi
add rdi, r9
add rcx, r13
cmp ebp, dword [rsp + 0x88]
je 0x5e90c9
movzx r13d, byte [rcx + 1]
cmp esi, 1
mov byte [rdi + 1], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 2]
cmp esi, 2
mov byte [rdi + 2], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 3]
cmp esi, 3
mov byte [rdi + 3], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 4]
cmp esi, 4
mov byte [rdi + 4], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 5]
cmp esi, 5
mov byte [rdi + 5], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 6]
cmp esi, 6
mov byte [rdi + 6], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 7]
cmp esi, 7
mov byte [rdi + 7], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 8]
cmp esi, 8
mov byte [rdi + 8], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 9]
cmp esi, 9
mov byte [rdi + 9], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 0xa]
cmp esi, 0xa
mov byte [rdi + 0xa], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 0xb]
cmp esi, 0xb
mov byte [rdi + 0xb], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 0xc]
cmp esi, 0xc
mov byte [rdi + 0xc], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 0xd]
cmp esi, 0xd
mov byte [rdi + 0xd], r13b
je 0x5e90c9
movzx r13d, byte [rcx + 0xe]
cmp esi, 0xe
mov byte [rdi + 0xe], r13b
je 0x5e90c9
movzx ecx, byte [rcx + 0xf]
sub ebp, 1
mov byte [rdi + 0xf], cl
jmp 0x5e8ea7
movzx r13d, byte [r12 + 2]
add edx, 0x10
add r12, 2
shl r13d, cl
add eax, r13d
jmp 0x5e87e0
mov edi, dword [rsp + 0x1c]
mov rcx, qword [rsp + 0x28]
sub edi, esi
add rcx, rdi
cmp ebx, esi
jbe 0x5e8b21
add rdi, qword [rsp + 0x30]
sub ebx, esi
lea rbp, [rdi + 0x10]
mov r13, rdi
mov qword [rsp + 0x80], rdi
lea rdi, [r9 + 1]
cmp rbp, rdi
lea rdi, [r9 + 0x11]
setbe bpl
cmp r13, rdi
setae dil
or bpl, dil
je 0x5e8f54
cmp esi, 0xf
jbe 0x5e8f54
mov edi, esi
mov dword [rsp + 0x8c], eax
mov r13d, dword [rsp + 0x3c]
shr edi, 4
mov rax, qword [rsp + 0x80]
xor ebp, ebp
mov dword [rsp + 0x78], edi
shl edi, 4
mov dword [rsp + 0x88], edi
xor edi, edi
movdqu xmm0, xmmword [rax + rdi]
add ebp, 1
movdqu xmmword [r9 + rdi + 1], xmm0
add rdi, 0x10
cmp dword [rsp + 0x78], ebp
ja 0x5e8dcf
mov ebp, dword [rsp + 0x88]
mov dword [rsp + 0x3c], r13d
mov edi, esi
sub edi, dword [rsp + 0x88]
mov eax, dword [rsp + 0x8c]
mov r13, rbp
add rbp, r9
add rcx, r13
cmp esi, dword [rsp + 0x88]
jne 0x5e8905
sub esi, 1
jmp 0x5e8a0b
add r9, 1
jmp 0x5e8687
add r9, 4
jmp 0x5e8687
sub esi, 1
mov r13d, dword [rsp + 0x3c]
mov dword [rsp + 0x88], eax
mov edi, esi
lea rbp, [rcx + rdi + 1]
mov rdi, r9
add rcx, 1
movzx eax, byte [rcx]
add rdi, 1
cmp rcx, rbp
mov byte [rdi], al
jne 0x5e8e4d
mov eax, dword [rsp + 0x88]
mov dword [rsp + 0x3c], r13d
jmp 0x5e8a0b
sub ebp, 1
mov r13d, dword [rsp + 0x3c]
mov dword [rsp + 0x88], eax
mov esi, ebp
lea rdi, [rcx + rsi + 1]
mov rsi, r9
add rcx, 1
movzx eax, byte [rcx]
add rsi, 1
cmp rcx, rdi
mov byte [rsi], al
jne 0x5e8e89
mov eax, dword [rsp + 0x88]
mov dword [rsp + 0x3c], r13d
cmp dword [rsp + 0x1c], ebx
lea rsi, [r9 + rbp + 1]
jae 0x5e8f47
mov r13d, dword [rsp + 0x1c]
add r9, rbp
lea rcx, [r9 + 0x12]
sub ebx, r13d
cmp qword [rsp + 0x30], rcx
lea rcx, [r9 + 2]
setae dil
cmp qword [rsp + 0x60], rcx
setbe cl
or dil, cl
je 0x5e908a
cmp r13d, 0xf
jbe 0x5e908a
mov ecx, dword [rsp + 0x44]
test ecx, ecx
je 0x5e8f84
mov r13d, dword [rsp + 0x3c]
mov rbp, qword [rsp + 0x30]
xor ecx, ecx
xor edi, edi
movdqu xmm0, xmmword [rbp + rcx]
add edi, 1
movdqu xmmword [r9 + rcx + 2], xmm0
add rcx, 0x10
cmp dword [rsp + 0x5c], edi
ja 0x5e8f07
mov rcx, qword [rsp + 0x50]
mov edi, dword [rsp + 0x44]
mov dword [rsp + 0x3c], r13d
add rcx, rsi
cmp dword [rsp + 0x1c], edi
je 0x5e9071
mov r9, qword [rsp + 0x48]
mov edi, dword [rsp + 0x58]
jmp 0x5e8f90
mov rcx, qword [rsp + 0x28]
mov r9, rsi
jmp 0x5e8b21
sub esi, 1
mov r13d, dword [rsp + 0x3c]
mov dword [rsp + 0x88], eax
mov edi, esi
lea rbp, [rcx + rdi + 1]
mov rdi, r9
add rcx, 1
movzx eax, byte [rcx]
add rdi, 1
cmp rcx, rbp
mov byte [rdi], al
jne 0x5e8f6d
jmp 0x5e8e5f
mov r9, qword [rsp + 0x28]
mov edi, dword [rsp + 0x1c]
mov rcx, rsi
movzx ebp, byte [r9 + 1]
cmp edi, 1
mov byte [rcx + 1], bpl
je 0x5e9071
movzx ebp, byte [r9 + 2]
cmp edi, 2
mov byte [rcx + 2], bpl
je 0x5e9071
movzx ebp, byte [r9 + 3]
cmp edi, 3
mov byte [rcx + 3], bpl
je 0x5e9071
movzx ebp, byte [r9 + 4]
cmp edi, 4
mov byte [rcx + 4], bpl
je 0x5e9071
movzx ebp, byte [r9 + 5]
cmp edi, 5
mov byte [rcx + 5], bpl
je 0x5e9071
movzx ebp, byte [r9 + 6]
cmp edi, 6
mov byte [rcx + 6], bpl
je 0x5e9071
movzx ebp, byte [r9 + 7]
cmp edi, 7
mov byte [rcx + 7], bpl
je 0x5e9071
movzx ebp, byte [r9 + 8]
cmp edi, 8
mov byte [rcx + 8], bpl
je 0x5e9071
movzx ebp, byte [r9 + 9]
cmp edi, 9
mov byte [rcx + 9], bpl
je 0x5e9071
movzx ebp, byte [r9 + 0xa]
cmp edi, 0xa
mov byte [rcx + 0xa], bpl
je 0x5e9071
movzx ebp, byte [r9 + 0xb]
cmp edi, 0xb
mov byte [rcx + 0xb], bpl
je 0x5e9071
movzx ebp, byte [r9 + 0xc]
cmp edi, 0xc
mov byte [rcx + 0xc], bpl
je 0x5e9071
movzx ebp, byte [r9 + 0xd]
cmp edi, 0xd
mov byte [rcx + 0xd], bpl
je 0x5e9071
movzx ebp, byte [r9 + 0xe]
cmp edi, 0xe
mov byte [rcx + 0xe], bpl
je 0x5e9071
movzx r9d, byte [r9 + 0xf]
mov byte [rcx + 0xf], r9b
mov ecx, dword [rsp + 0x6c]
mov r13d, dword [rsp + 0x3c]
lea r9, [rsi + rcx + 1]
mov rcx, r9
sub rcx, r13
jmp 0x5e8b21
mov rdi, qword [rsp + 0x30]
mov r13d, dword [rsp + 0x3c]
xor ecx, ecx
movzx r9d, byte [rdi + rcx]
mov byte [rsi + rcx + 1], r9b
add rcx, 1
cmp rcx, qword [rsp + 0x70]
jne 0x5e9096
mov dword [rsp + 0x3c], r13d
jmp 0x5e9071
lea rbx, str.invalid_distance_too_far_back
mov qword [r15 + 0x20], rbx
mov dword [r11], 0x1d
jmp 0x5e86a0
sub ebp, 1
jmp 0x5e8ea7