Function at 0x2870acd00
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, 0xf8
mov rdi, qword [rsp + 0x160]
mov r13, qword [rsp + 0x168]
mov rax, qword [rsp + 0x170]
mov rbp, qword [r13 + 8]
mov qword [rsp + 0x28], r8
mov r8d, dword [rdi + 0xc]
mov rsi, rdx
mov qword [rsp + 0x38], r9
mov qword [rsp + 0x20], rcx
mov qword [rsp + 0x48], rax
call fcn.2870a1890
mov r12d, eax
mov eax, dword [rdi + 0xc]
mov ecx, eax
mov dword [rsp + 0x44], eax
call fcn.2870ab350
mov rdx, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x28]
mov dword [rsp + 0x40], eax
call fcn.2870a1738
mov r8, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x20]
add eax, dword [rdi + 8]
mov dword [rsp + 0x58], eax
call fcn.2870a1640
mov r14, qword [r13 + 0x10]
mov r15d, dword [rdi + 8]
mov qword [rsp + 0x50], rax
mov rbx, r14
test r12b, r12b
je 0x2870acdb2
mov cl, byte [rsp + 0x40]
mov ebx, 1
shl rbx, cl
add rbx, r14
mov rax, qword [r13]
mov qword [rsp + 0x30], rax
test rax, rax
jne 0x2870acde1
test rbp, rbp
jne 0x2870acdea
mov eax, r12d
neg al
sbb eax, eax
and eax, 2
cmp r12b, 1
sbb edx, edx
xor r10d, r10d
inc edx
mov ecx, edx
jmp 0x2870ad3b8
test rbp, rbp
je 0x2870ad044
mov rax, qword [rsp + 0x30]
mov r13, qword [rax + 0x10]
test byte [r13 + 8], 2
je 0x2870ace0a
mov rcx, qword [rsp + 0x20]
mov rdx, r13
call fcn.2870a1648
mov r13, rax
mov rdx, r13
mov rcx, rsi
call fcn.2870a1728
mov r14, qword [rbp + 0x10]
mov r15, rax
test byte [r14 + 8], 2
je 0x2870ace33
mov rcx, qword [rsp + 0x20]
mov rdx, r14
call fcn.2870a1648
mov r14, rax
mov rdx, r14
mov rcx, rsi
call fcn.2870a1728
mov rbp, rax
mov rax, qword [rsp + 0x30]
cmp word [rax + 4], 0
je 0x2870ace64
mov rax, qword [rsi]
lea r8, [rsp + 0xc8]
lea rdx, str.unsupported_relocation_of_modified_symbol
jmp 0x2870ad36a
test r12b, r12b
je 0x2870ace80
mov rax, qword [rsi]
lea r8, [rsp + 0xc8]
lea rdx, str.unsupported_pc_relative_relocation_of_difference
jmp 0x2870ad36a
cmp r15, rbp
jne 0x2870acea1
test r15, r15
je 0x2870acea1
mov rax, qword [rsi]
lea r8, [rsp + 0xc8]
lea rdx, str.unsupported_relocation_with_identical_base
jmp 0x2870ad36a
mov edx, 1
mov rcx, r13
call method.llvm::MCSymbol.getFragment_bool__const
test rax, rax
jne 0x2870aced2
mov edx, 1
mov rcx, r13
call method.llvm::MCSymbol.getFragment_bool__const
mov rdx, r13
lea rcx, [rsp + 0x60]
test rax, rax
je 0x2870acf18
mov rdx, r14
jmp 0x2870acf18
mov edx, 1
mov rcx, r14
call method.llvm::MCSymbol.getFragment_bool__const
test rax, rax
je 0x2870aceb3
mov r8, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x20]
mov rdx, r13
call fcn.2870a1650
mov rsi, rax
xor eax, eax
test r15, r15
je 0x2870acf8b
mov r8, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x20]
mov rdx, r15
call fcn.2870a1650
jmp 0x2870acf8b
call method.llvm::MCSymbol.getName___const
mov r9, qword [rsp + 0x60]
mov rsi, qword [rsi]
lea r8, [rsp + 0xa0]
mov rax, qword [rsp + 0x68]
lea rdx, str._can_not_be_undefined_in_a_subtraction_expression
mov rcx, r8
lea rbx, str.unsupported_relocation_with_subtraction_expression__symbol_
call fcn.2870c1ea0
mov qword [rsp + 0x78], rbx
lea rdx, [rsp + 0x78]
lea rbx, [rsp + 0xc8]
mov word [rsp + 0x98], 0x503
mov qword [rsp + 0x88], r9
mov qword [rsp + 0x90], rax
mov rcx, rbx
call method.llvm::Twine.concat_llvm::Twine_const__const
mov rdx, qword [rdi + 0x10]
mov r8, rbx
mov rcx, rsi
jmp 0x2870ad379
mov r8, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x20]
add rsi, rbx
mov rdx, r14
sub rsi, rax
call fcn.2870a1650
mov rbx, rax
xor eax, eax
test rbp, rbp
je 0x2870acfbf
mov r8, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x20]
mov rdx, rbp
call fcn.2870a1650
sub rsi, rbx
xor r10d, r10d
lea rbx, [rsi + rax]
test r15, r15
jne 0x2870acfe6
mov edx, 1
mov rcx, r13
call method.llvm::MCSymbol.getFragment_bool__const
mov rax, qword [rax + 0x10]
mov r10d, dword [rax + 0x1c]
inc r10d
mov r9d, dword [rsp + 0x40]
mov eax, dword [rsp + 0x58]
mov rdx, r15
mov dword [rsp + 0x28], r10d
mov rcx, qword [rsp + 0x20]
shl r9d, 0x19
or r9d, r10d
shl r9, 0x20
or r9, rax
mov rax, qword [rsp + 0x38]
mov r8, qword [rax + 0x10]
call fcn.2870af880
test rbp, rbp
mov r10d, dword [rsp + 0x28]
jne 0x2870ad03a
mov edx, 1
mov rcx, r14
call method.llvm::MCSymbol.getFragment_bool__const
mov rax, qword [rax + 0x10]
mov r10d, dword [rax + 0x1c]
inc r10d
mov eax, 5
jmp 0x2870ad3b4
mov rax, qword [rsp + 0x30]
mov r13, qword [rax + 0x10]
test byte [r13 + 8], 2
je 0x2870ad083
test rbx, rbx
je 0x2870ad083
mov edx, 1
mov rcx, r13
call method.llvm::MCSymbol.getFragment_bool__const
mov rdx, qword [rsi]
mov rcx, qword [rdx + 0x98]
mov rdx, qword [rax + 0x10]
mov rax, qword [rcx]
call qword [rax + 0x18]
test al, al
jne 0x2870ad083
or byte [r13 + 9], 8
mov rcx, rsi
mov rdx, r13
call fcn.2870a1728
mov rcx, r13
mov rbp, rax
call method.llvm::MCSymbol.isInSection___const
test al, al
je 0x2870ad0af
mov rax, qword [rsp + 0x38]
mov rax, qword [rax + 0x10]
test byte [rax + 0xf3], 2
jne 0x2870ad0f5
test rbp, rbp
je 0x2870ad0f5
xor r10d, r10d
cmp rbp, r13
je 0x2870ad265
mov rcx, qword [rsp + 0x28]
mov rdx, r13
mov dword [rsp + 0x50], r10d
call fcn.2870a1740
mov rcx, qword [rsp + 0x28]
mov rdx, rbp
mov r13, rax
call fcn.2870a1740
add r13, rbx
mov r10d, dword [rsp + 0x50]
mov rbx, r13
sub rbx, rax
jmp 0x2870ad265
mov rcx, r13
call method.llvm::MCSymbol.isInSection___const
test al, al
mov al, byte [r13 + 9]
je 0x2870ad10e
and eax, 0x70
cmp al, 0x20
je 0x2870ad17c
jmp 0x2870ad11b
and eax, 0x70
cmp al, 0x20
jne 0x2870ad1f2
jmp 0x2870ad17c
mov edx, 1
mov rcx, r13
xor ebp, ebp
call method.llvm::MCSymbol.getFragment_bool__const
mov r8, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x20]
mov rdx, r13
mov rax, qword [rax + 0x10]
mov r10d, dword [rax + 0x1c]
inc r10d
mov dword [rsp + 0x5c], r10d
call fcn.2870a1650
mov r10d, dword [rsp + 0x5c]
add rbx, rax
test r12b, r12b
je 0x2870ad265
mov eax, dword [rsp + 0x50]
mov cl, byte [rsp + 0x40]
add r15d, eax
mov eax, 1
shl eax, cl
add eax, r15d
mov eax, eax
sub rbx, rax
jmp 0x2870ad265
or byte [r13 + 8], 8
mov rax, qword [rsp + 0x20]
lea rdx, [rsp + 0x70]
mov rcx, qword [r13 + 0x18]
mov r8, qword [rsp + 0x28]
lea r9, [rax + 0x60]
call fcn.2870a1628
test al, al
je 0x2870ad1b3
mov rax, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x48]
mov qword [rdi], rax
jmp 0x2870ad412
lea r8, [rsp + 0xa0]
lea rdx, [0x2870f2e00]
mov rsi, qword [rsi]
mov rcx, r8
mov qword [rsp + 0x20], r8
call fcn.2870c1ea0
lea rcx, [rsp + 0x60]
mov rdx, r13
call method.llvm::MCSymbol.getName___const
lea rax, str.unsupported_relocation_of_variable_
mov word [rsp + 0x98], 0x503
jmp 0x2870ad22f
lea r8, [rsp + 0xa0]
lea rdx, [0x2870f2e00]
mov rsi, qword [rsi]
mov rcx, r8
mov qword [rsp + 0x20], r8
call fcn.2870c1ea0
lea rcx, [rsp + 0x60]
mov rdx, r13
call method.llvm::MCSymbol.getName___const
lea rax, str.unsupported_relocation_of_undefined_symbol_
mov word [rsp + 0x98], 0x503
mov qword [rsp + 0x78], rax
mov rax, qword [rsp + 0x60]
lea rdx, [rsp + 0x78]
lea rbx, [rsp + 0xc8]
mov r8, qword [rsp + 0x20]
mov qword [rsp + 0x88], rax
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0x90], rax
jmp 0x2870acf74
mov rax, qword [rsp + 0x30]
mov eax, dword [rax + 4]
and eax, 0xffffff
test r12b, r12b
je 0x2870ad306
mov edx, dword [rsp + 0x44]
add edx, 0xffffff80
cmp edx, 3
ja 0x2870ad2e9
cmp ax, 6
jne 0x2870ad2a1
xor eax, eax
cmp dword [rdi + 0xc], 0x81
setne al
add eax, 3
jmp 0x2870ad3ab
cmp ax, 0x14
je 0x2870ad383
test ax, ax
jne 0x2870ad339
mov cl, byte [rsp + 0x40]
mov eax, 1
shl rax, cl
add rax, r14
cmp rax, 0xfffffffffffffffe
je 0x2870ad38a
cmp rax, 0xfffffffffffffffc
je 0x2870ad391
inc rax
sete al
movzx eax, al
lea eax, [rax + rax*4 + 1]
jmp 0x2870ad3ab
test ax, ax
je 0x2870ad398
mov rax, qword [rsi]
lea r8, [rsp + 0xc8]
lea rdx, str.unsupported_symbol_modifier_in_branch_relocation
jmp 0x2870ad36a
cmp ax, 2
je 0x2870ad39f
cmp ax, 6
je 0x2870ad3a6
cmp ax, 0x14
jne 0x2870ad334
mov rax, qword [rsi]
lea r8, [rsp + 0xc8]
lea rdx, str.TLVP_symbol_modifier_should_have_been_rip_rel
jmp 0x2870ad36a
test ax, ax
je 0x2870ad34d
mov rax, qword [rsi]
lea r8, [rsp + 0xc8]
lea rdx, str.unsupported_symbol_modifier_in_relocation
jmp 0x2870ad36a
xor eax, eax
cmp dword [rdi + 0xc], 0x84
jne 0x2870ad3b4
mov rax, qword [rsi]
lea r8, [rsp + 0xc8]
lea rdx, str.32_bit_absolute_addressing_is_not_supported_in_64_bit_mode
mov rcx, r8
call fcn.2870c1ea0
mov rdx, qword [rdi + 0x10]
mov rcx, rax
call fcn.2870a1760
jmp 0x2870ad412
mov eax, 9
jmp 0x2870ad3ab
mov eax, 7
jmp 0x2870ad3ab
mov eax, 8
jmp 0x2870ad3ab
mov eax, 2
jmp 0x2870ad3ab
mov eax, 4
jmp 0x2870ad3b4
mov eax, 4
xor edx, edx
mov ecx, 1
jmp 0x2870ad3b8
xor edx, edx
xor ecx, ecx
mov r9d, dword [rsp + 0x40]
shl ecx, 0x18
shl edx, 0x1b
mov rdi, qword [rsp + 0x48]
shl eax, 0x1c
shl r9d, 0x19
mov qword [rdi], rbx
or r9d, r10d
or r9d, ecx
mov rcx, qword [rsp + 0x20]
or r9d, edx
mov rdx, rbp
or r9d, eax
mov eax, dword [rsp + 0x58]
shl r9, 0x20
or r9, rax
mov rax, qword [rsp + 0x38]
mov r8, qword [rax + 0x10]
add rsp, 0xf8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.2870af880
add rsp, 0xf8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret