Function at 0x8e4580
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, 0xc8
mov r14, qword [rcx]
mov qword [rsp + 0x110], rcx
mov rdi, qword [rsp + 0x110]
mov rax, qword [r14]
mov qword [rsp + 0x118], rdx
mov dword [rsp + 0x8c], 0
mov r11, qword [r14 + 8]
mov r13, qword [r14 + 0x10]
mov rdi, qword [rdi + 0x10]
mov qword [rsp + 0x40], rax
mov rax, qword [rcx + 8]
movzx r10d, byte [rdi + 0x10]
mov rcx, rax
mov qword [rsp + 0x60], rax
mov rax, qword [rax + 0x20]
mov edx, dword [rcx + 0x14]
imul rsi, r10, 0x70
add rsi, r11
test edx, edx
mov rbx, qword [rsi + 0x28]
mov qword [rsp + 0x68], rbx
jle 0x8e4e88
lea r9d, [rdx - 1]
mov ebx, dword [rsi + 0x4c]
xor r12d, r12d
add r9, 1
imul r9, r9, 0x38
add r9, rax
movzx ecx, word [rax + 0x12]
mov edx, ecx
and edx, 0xffffffbf
cmp dword [rax + 0x1c], ebx
mov word [rax + 0x12], dx
jne 0x8e4660
test qword [rax + 0x28], r8
jne 0x8e4660
movzx ebp, word [rax + 0x14]
and ebp, 0xf7ff
je 0x8e4660
and ecx, 0x80
jne 0x8e4660
test byte [rsi + 0x44], 8
je 0x8e464d
mov rcx, qword [rax]
test byte [rcx + 4], 1
je 0x8e4660
or edx, 0x40
add r12d, 1
mov word [rax + 0x12], dx
nop dword [rax + rax]
add rax, 0x38
cmp rax, r9
jne 0x8e4612
movsxd r12, r12d
imul rdx, r12, 0x1c
lea rax, [rdx + 0x88]
mov qword [rsp + 0x50], rax
test r13, r13
je 0x8e47ca
mov r15d, dword [r13]
test r15d, r15d
jle 0x8e4d23
imul r10, r10, 0x70
xor ecx, ecx
mov qword [rsp + 0x70], r14
lea rsi, [r13 + 8]
mov dword [rsp + 0x58], r15d
lea rbx, [0x008b8b20]
mov r14, rsi
lea rbp, [0x008c30a0]
mov rsi, rbx
mov ebx, ecx
lea rax, [r11 + r10]
mov qword [rsp + 0x48], rax
mov r15, qword [r14]
mov ecx, 1
mov qword [rsp + 0x98], rbp
mov word [rsp + 0xb4], cx
mov qword [rsp + 0xa0], rsi
mov dword [rsp + 0xb8], 0
test r15, r15
je 0x8e4922
lea rcx, [rsp + 0x90]
mov rdx, r15
call fcn.008c2690
cmp word [rsp + 0xb4], 0
jne 0x8e4922
test byte [r14 + 0x10], 2
jne 0x8e47ca
movzx eax, byte [r15]
cmp al, 0xa7
je 0x8e4910
cmp al, 0x71
jne 0x8e47ca
mov rax, qword [r15 + 0x10]
cmp byte [rax], 0xa7
jne 0x8e47ca
mov rcx, qword [rsp + 0x48]
mov ecx, dword [rcx + 0x4c]
cmp dword [rax + 0x2c], ecx
jne 0x8e47ca
movzx edx, word [rax + 0x30]
mov word [r15 + 0x30], dx
movsx rax, word [rax + 0x30]
test ax, ax
js 0x8e4922
lea rdx, [rax + rax*2]
mov rax, qword [rsp + 0x68]
mov rax, qword [rax + 8]
lea rdx, [rax + rdx*8]
movzx ecx, word [rdx + 0x12]
mov rax, qword [rdx]
lea rdx, str.BINARY
test ch, 2
jne 0x8e4794
jmp 0x8e47b4
add rax, 1
cmp byte [rax], 0
jne 0x8e4790
and ecx, 4
jne 0x8e48f0
add rax, 1
mov rdx, rax
lea rax, str.BINARY
cmove rdx, rax
mov rcx, qword [r15 + 8]
test rcx, rcx
je 0x8e47ca
call fcn.008bf670
test eax, eax
je 0x8e4922
xor ebx, ebx
xor ebp, ebp
xor r15d, r15d
mov rax, qword [rsp + 0x40]
mov rdx, qword [rsp + 0x50]
mov rcx, qword [rax]
add rdx, rbx
call fcn.008d1a60
test rax, rax
mov rsi, rax
je 0x8e4f0b
lea r11, [rax + r12*8 + 0x80]
xor edx, edx
mov dword [rsi + 0x70], ebp
lea rax, [r12 + r12*2]
mov qword [rsi + 8], r11
lea r14, [r11 + rax*4]
mov rax, qword [rsp + 0x40]
mov word [rsp + 0x48], dx
add rbx, r14
mov qword [rsi + 0x18], r14
mov qword [rsi + 0x20], rbx
mov rbx, qword [rsp + 0x60]
mov dword [rsi + 0x74], 0
mov qword [rsi + 0x68], rax
mov qword [rsi + 0x60], rbx
mov rax, qword [rbx + 0x20]
mov ebx, dword [rbx + 0x14]
test ebx, ebx
jle 0x8e4e99
xor edx, edx
xor r12d, r12d
mov r10d, 1
mov qword [rsp + 0x50], rdi
jmp 0x8e488e
cmp r9w, 0x40
je 0x8e4942
test bp, 0x180
je 0x8e4950
cmp r9w, 0x100
setne cl
add ecx, 0x47
mov byte [r8 + 4], cl
add r12d, 1
add edx, 1
add rax, 0x38
cmp edx, ebx
je 0x8e49d3
movzx ecx, word [rax + 0x12]
test cl, 0x40
je 0x8e487f
mov r9d, dword [rax + 0x20]
movsxd r8, r12d
movzx ebp, word [rax + 0x14]
lea r8, [r8 + r8*2]
lea r8, [r11 + r8*4]
mov dword [r8 + 8], edx
mov dword [r8], r9d
mov r9d, ebp
and r9w, 0x1fff
cmp r9w, 1
jne 0x8e4855
test cx, cx
js 0x8e48e4
mov r9d, dword [rsi + 0x74]
mov edi, r10d
mov ecx, r12d
shl edi, cl
mov ebp, r9d
or r9d, edi
cmp r12d, 0x20
cmovge r9d, ebp
mov dword [rsi + 0x74], r9d
mov byte [r8 + 4], 2
jmp 0x8e487b
add rax, 1
cmp byte [rax], 0
je 0x8e47a2
add rax, 1
cmp byte [rax], 0
jne 0x8e48f0
jmp 0x8e47a2
mov rax, qword [rsp + 0x48]
mov eax, dword [rax + 0x4c]
cmp dword [r15 + 0x2c], eax
jne 0x8e47ca
add ebx, 1
add r14, 0x20
cmp dword [rsp + 0x58], ebx
jne 0x8e46c5
mov r14, qword [rsp + 0x70]
mov r15d, dword [rsp + 0x58]
jmp 0x8e4d29
movzx ecx, byte [rax + 0x17]
mov byte [r8 + 4], cl
jmp 0x8e487b
and ebp, 0x3c
mov byte [r8 + 4], r9b
je 0x8e487b
mov rcx, qword [rax]
mov rbp, qword [rcx + 0x18]
movzx ecx, byte [rbp]
cmp cl, 0xb0
jne 0x8e4971
movzx ecx, byte [rbp + 2]
cmp cl, 0xb1
je 0x8e4d4d
cmp cl, 0x8a
jne 0x8e487b
mov rcx, qword [rbp + 0x20]
mov rcx, qword [rcx + 0x20]
mov ecx, dword [rcx]
cmp ecx, 1
jle 0x8e487b
movzx ebp, word [rsp + 0x48]
mov ecx, r12d
mov edi, r10d
shl edi, cl
mov ecx, edi
or ecx, ebp
cmp r12d, 0x10
cmovl ebp, ecx
cmp r9w, 0x10
mov word [rsp + 0x48], bp
je 0x8e4e7e
cmp r9w, 4
jne 0x8e487b
mov byte [r8 + 4], 0x20
jmp 0x8e487b
mov rdi, qword [rsp + 0x50]
test r15d, r15d
mov dword [rsi], r12d
je 0x8e4a9d
lea eax, [r15 - 1]
xor r15d, r15d
mov qword [rsp + 0x50], rdi
lea r12, [r13 + 8]
shl rax, 5
mov qword [rsp + 0x58], rsi
mov edi, r15d
lea r13, [r13 + rax + 0x28]
lea rax, [rsp + 0x90]
lea rbp, [0x008c30a0]
mov rsi, rax
lea rbx, [0x008b8b20]
nop
mov r15, qword [r12]
mov eax, 1
mov qword [rsp + 0x98], rbp
mov word [rsp + 0xb4], ax
mov qword [rsp + 0xa0], rbx
mov dword [rsp + 0xb8], 0
test r15, r15
je 0x8e4a84
mov rdx, r15
mov rcx, rsi
call fcn.008c2690
cmp word [rsp + 0xb4], 0
jne 0x8e4a84
movsxd rax, edi
add edi, 1
lea rdx, [r14 + rax*8]
movsx eax, word [r15 + 0x30]
mov dword [rdx], eax
movzx eax, byte [r12 + 0x10]
and eax, 1
mov byte [rdx + 4], al
add r12, 0x20
cmp r13, r12
jne 0x8e4a20
mov rsi, qword [rsp + 0x58]
mov r15d, edi
mov rdi, qword [rsp + 0x50]
mov r12d, dword [rsi]
movzx eax, word [rdi + 0x40]
mov dword [rsi + 0x10], r15d
xor r13d, r13d
xor r14d, r14d
and byte [rdi + 0x1c], 0xfe
mov word [rdi + 0x12], r13w
mov dword [rdi + 0x38], 0x400
cmp eax, r12d
mov word [rdi + 0x3c], r14w
jl 0x8e4b92
movzx ecx, word [rsp + 0x48]
xor r9d, r9d
mov qword [rsp + 0x20], rsi
mov r8, 0xffffffffffffffff
mov rdx, qword [rsp + 0x118]
lea rax, [rsp + 0x8c]
lea r13, [rsp + 0x90]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x50], ecx
mov dword [rsp + 0x28], ecx
mov rcx, qword [rsp + 0x110]
call fcn.008de070
mov r11d, dword [rsp + 0x8c]
mov ebp, eax
test r11d, r11d
jne 0x8e4ce2
test ebp, ebp
je 0x8e4bf3
mov edx, dword [rsi + 0x38]
test edx, edx
jne 0x8e4cd4
mov rax, qword [rsp + 0x40]
xor ebx, ebx
mov rdi, qword [rax]
mov eax, dword [rsi]
test eax, eax
jle 0x8e4b71
nop word [rax + rax]
mov rcx, qword [rsi + rbx*8 + 0x80]
call fcn.008bec60
mov qword [rsi + rbx*8 + 0x80], 0
add rbx, 1
cmp dword [rsi], ebx
jg 0x8e4b50
mov rdx, rsi
mov rcx, rdi
call fcn.008be2d0
mov eax, ebp
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rsp + 0x40]
mov r8d, r12d
mov rdx, rdi
mov rcx, qword [rax]
call fcn.008d4170
test eax, eax
je 0x8e4ac9
mov ebp, dword [rsi]
xor ebx, ebx
mov rax, qword [rsp + 0x40]
test ebp, ebp
mov rdi, qword [rax]
jle 0x8e4be1
nop dword [rax]
mov rcx, qword [rsi + rbx*8 + 0x80]
call fcn.008bec60
mov qword [rsi + rbx*8 + 0x80], 0
add rbx, 1
cmp dword [rsi], ebx
jg 0x8e4bc0
mov rdx, rsi
mov rcx, rdi
mov ebp, 7
call fcn.008be2d0
jmp 0x8e4b7c
mov r15, qword [rsp + 0x118]
mov ebx, dword [rsp + 0x90]
not r15
mov rax, r15
and rax, qword [rdi]
mov dword [rsp + 0x78], ebx
mov qword [rsp + 0x48], rax
jne 0x8e4d58
test ebx, ebx
je 0x8e4b2f
mov eax, dword [rsp + 0x50]
mov qword [rsp + 0x30], r13
mov r9d, 1
mov r8, 0xffffffffffffffff
mov rdx, qword [rsp + 0x118]
mov qword [rsp + 0x20], rsi
mov rbx, r15
mov rcx, qword [rsp + 0x110]
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x28], eax
call fcn.008de070
and rbx, qword [rdi]
sete dl
test eax, eax
mov qword [rsp + 0x58], rbx
movzx edx, dl
mov dword [rsp + 0x70], edx
je 0x8e4f02
nop dword [rax]
mov ebp, eax
mov eax, dword [rsp + 0x70]
or eax, ebp
jne 0x8e4b2f
mov eax, dword [rsp + 0x50]
mov qword [rsp + 0x30], r13
mov r9d, 1
mov r8, qword [rsp + 0x118]
mov qword [rsp + 0x20], rsi
mov rcx, qword [rsp + 0x110]
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x28], eax
mov rdx, r8
call fcn.008de070
mov edx, dword [rsi + 0x38]
mov ebp, eax
test edx, edx
je 0x8e4b3a
mov rcx, qword [rsi + 0x30]
call fcn.008be220
jmp 0x8e4b3a
mov eax, dword [rsp + 0x50]
mov qword [rsp + 0x30], r13
xor r9d, r9d
mov r8, 0xffffffffffffffff
mov rdx, qword [rsp + 0x118]
mov qword [rsp + 0x20], rsi
mov rcx, qword [rsp + 0x110]
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x28], eax
call fcn.008de070
mov ebp, eax
jmp 0x8e4b27
jne 0x8e47ca
movzx eax, word [r14 + 0x44]
movsxd rbx, r15d
xor ebp, ebp
shl rbx, 3
test al, 0xc0
je 0x8e47d1
shr al, 7
movzx ebp, al
add ebp, 1
jmp 0x8e47d1
mov rcx, qword [rbp + 0x20]
mov ecx, dword [rcx]
jmp 0x8e498d
mov r10d, dword [rsp + 0x78]
test r10d, r10d
jne 0x8e4c22
mov qword [rsp + 0x58], 0
lea eax, [r12 - 1]
mov qword [rsp + 0x68], rdi
mov rdi, qword [rsp + 0x118]
xor ebx, ebx
lea r14, [rax + rax*2]
mov eax, dword [rsp + 0x78]
mov dword [rsp + 0x7c], ebp
mov rbp, rsi
shl r14, 2
mov rsi, r15
mov r15, r14
mov r14, qword [rsp + 0x60]
mov dword [rsp + 0x70], eax
mov rcx, rbx
test r12d, r12d
jle 0x8e4ea1
mov rdx, qword [rbp + 8]
mov rbx, 0xffffffffffffffff
mov r9, qword [r14 + 0x20]
lea rax, [rdx + 8]
lea r8, [rdx + r15 + 0x14]
nop dword [rax]
movsxd rdx, dword [rax]
imul rdx, rdx, 0x38
mov r10, qword [r9 + rdx + 0x28]
and r10, rsi
cmp rcx, r10
jae 0x8e4deb
cmp r10, rbx
cmovb rbx, r10
add rax, 0xc
cmp r8, rax
jne 0x8e4dd0
cmp rbx, 0xffffffffffffffff
je 0x8e4ea1
cmp rbx, qword [rsp + 0x48]
mov rcx, rbx
je 0x8e4da8
cmp qword [rsp + 0x58], rbx
je 0x8e4da8
mov eax, dword [rsp + 0x50]
mov r8, rbx
xor r9d, r9d
mov qword [rsp + 0x30], r13
mov rcx, qword [rsp + 0x110]
or r8, rdi
mov qword [rsp + 0x20], rbp
mov rdx, rdi
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x28], eax
call fcn.008de070
mov rcx, qword [rsp + 0x68]
cmp qword [rcx], rdi
jne 0x8e4e6e
mov r9d, dword [rsp + 0x90]
mov ecx, 1
mov dword [rsp + 0x78], 1
test r9d, r9d
cmovne ecx, dword [rsp + 0x70]
mov dword [rsp + 0x70], ecx
test eax, eax
je 0x8e4da5
mov rsi, rbp
jmp 0x8e4c80
mov byte [r8 + 4], 8
jmp 0x8e487b
mov qword [rsp + 0x50], 0x88
xor r12d, r12d
jmp 0x8e467c
xor r12d, r12d
jmp 0x8e49d8
mov r8d, dword [rsp + 0x78]
mov rsi, rbp
mov ebp, dword [rsp + 0x7c]
test r8d, r8d
jne 0x8e4c82
mov eax, dword [rsp + 0x50]
xor r9d, r9d
mov qword [rsp + 0x30], r13
mov r8, qword [rsp + 0x118]
mov qword [rsp + 0x20], rsi
mov rcx, qword [rsp + 0x110]
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x28], eax
mov rdx, r8
call fcn.008de070
mov ecx, dword [rsp + 0x90]
mov ebp, eax
test ecx, ecx
je 0x8e4b2f
jmp 0x8e4c82
mov dword [rsp + 0x78], edx
jmp 0x8e4d6f
mov rcx, qword [rsp + 0x40]
lea rdx, [0x00e93e4c]
mov ebp, 7
call fcn.008d16a0
jmp 0x8e4b7c