Function at 0x2870c8310
Capabilities:
Inspect section memory permissions

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
mov rax, qword [rcx + 8]
mov rax, qword [rax]
mov rdi, rdx
mov edx, dword [r8]
mov r12, rcx
mov rbx, r8
mov r14, r9
shl rdx, 5
sub rax, rdx
mov rbp, qword [rax + 0x18]
mov rcx, rbp
call method.llvm::X86II.getMemoryOperandNo_unsigned_long_long_
mov esi, eax
cmp eax, 0xffffffff
je 0x2870c8365
add esi, dword [rdi]
mov r8, qword [rsp + 0xb0]
mov rdx, rbx
lea ecx, [rsi + 4]
call fcn.2870ca370
bt ebp, 0x1a
mov r13d, dword [rbx + 4]
jb 0x2870c8378
test r13d, 8
je 0x2870c838a
mov rcx, qword [rsp + 0xb0]
mov edx, 0xfffffff3
call method.llvm::SmallVectorTemplateBase_char__true_.push_back_char_
test r13d, 4
je 0x2870c83a5
mov rcx, qword [rsp + 0xb0]
mov edx, 0xfffffff2
call method.llvm::SmallVectorTemplateBase_char__true_.push_back_char_
mov r9, rbp
mov r8d, esi
mov rdx, r14
mov rcx, rbx
call method.llvm::X86_MC.needsAddressSizeOverride_llvm::MCInst_const__llvm::MCSubtargetInfo_const__int__unsigned_long_long_
test al, al
jne 0x2870c83c0
and r13d, 2
je 0x2870c83d2
mov rcx, qword [rsp + 0xb0]
mov edx, 0x67
call method.llvm::SmallVectorTemplateBase_char__true_.push_back_char_
mov rax, rbp
and eax, 0x7f
cmp rax, 5
je 0x2870c843c
ja 0x2870c83ee
cmp rax, 3
je 0x2870c8440
cmp rax, 4
je 0x2870c8418
jmp 0x2870c8455
cmp rax, 6
jne 0x2870c8455
mov rax, qword [rbx + 0x10]
cmp dword [rax + 0x28], 0x14
je 0x2870c8413
mov r8, qword [rsp + 0xb0]
mov rdx, rbx
mov ecx, 2
call fcn.2870ca370
add dword [rdi], 3
jmp 0x2870c8455
mov rax, qword [rbx + 0x10]
cmp dword [rax + 0x18], 0x14
je 0x2870c8437
mov r8, qword [rsp + 0xb0]
mov rdx, rbx
mov ecx, 1
call fcn.2870ca370
add dword [rdi], 2
jmp 0x2870c8455
inc dword [rdi]
jmp 0x2870c8455
mov r8, qword [rsp + 0xb0]
mov rdx, rbx
mov ecx, 1
call fcn.2870ca370
mov rdx, qword [r12 + 8]
mov eax, dword [rbx]
mov r15, qword [rdx]
shl rax, 5
sub r15, rax
mov rdi, qword [r15 + 0x18]
test ebp, 0x60000000
je 0x2870c8b60
mov rax, qword [r12 + 0x10]
mov rax, qword [rax + 0xa0]
mov qword [rsp + 0x20], rax
mov eax, 0xff7f9001
and qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x20]
mov qword [rsp + 0x38], rax
mov rax, rdi
and eax, 0x60000000
cmp rax, 0x40000000
je 0x2870c84d1
cmp rax, 0x60000000
je 0x2870c84db
cmp rax, 0x20000000
jne 0x2870c84e3
mov eax, dword [rbx + 4]
and eax, 0x100
cmp eax, 1
sbb eax, eax
add eax, 5
mov dword [rsp + 0x34], eax
jmp 0x2870c84e3
mov dword [rsp + 0x34], 3
jmp 0x2870c84e3
mov dword [rsp + 0x34], 6
mov r8, rdi
mov r10, rdi
mov edx, 1
mov ebp, 0x8400000f
shr r8, 0x34
shr r10, 0x11
mov rcx, rdi
mov al, 9
and r8d, 1
shl rdx, 0x27
and r10d, 1
movabs r12, 0x20000000000
shl r8d, 2
and r12, rdi
and rdx, rdi
setne r13b
shl rbp, 0xd
and ecx, 0x1e000
and rbp, rdi
cmp rcx, 0xa000
je 0x2870c8583
ja 0x2870c8559
mov al, 3
cmp rcx, 0x6000
je 0x2870c8583
mov al, 8
ja 0x2870c8583
cmp rcx, 0x2000
setne al
inc eax
jmp 0x2870c8583
mov al, 5
cmp rcx, 0x12000
je 0x2870c8583
ja 0x2870c8576
cmp rcx, 0xc000
mov al, 0xa
mov cl, 4
cmovne eax, ecx
jmp 0x2870c8583
cmp rcx, 0x14000
setne al
add eax, 6
mov rcx, rdi
movzx r10d, r10b
movzx eax, al
movabs r9, 0x80000000000
shr rcx, 0x28
shl eax, 0xf
and ecx, 1
shl ecx, 0xc
or ecx, r10d
or eax, ecx
xor ecx, ecx
and r9, rdi
setne cl
shl r8d, 0x18
shl ecx, 0x15
or eax, ecx
mov ecx, dword [rsp + 0x30]
or eax, r8d
and ecx, 0xf8d06ffe
or eax, ecx
mov dword [rsp + 0x30], eax
test r9, r9
je 0x2870c85f7
mov rax, qword [r14 + 0xd8]
bt eax, 0xd
jae 0x2870c85f7
bt rax, 0x29
jb 0x2870c85f7
mov edx, 1
lea rcx, str.ZMM_registers_are_not_supported_without_EVEX512
jmp 0x2870c8e83
mov rax, rdi
and eax, 0x1800
cmp rax, 0x1000
je 0x2870c8623
cmp rax, 0x1800
je 0x2870c8633
cmp rax, 0x800
jne 0x2870c8638
mov al, byte [rsp + 0x31]
and eax, 0xffffff9f
or eax, 0x20
jmp 0x2870c862d
mov al, byte [rsp + 0x31]
and eax, 0xffffff9f
or eax, 0x40
mov byte [rsp + 0x31], al
jmp 0x2870c8638
or byte [rsp + 0x31], 0x60
mov ecx, 3
mov rax, rdi
mov qword [rsp + 0x28], rdx
movabs r14, 0x100000000000
shl rcx, 0x29
not rax
test rax, rcx
sete al
shl eax, 4
and r14, rdi
setne cl
shl ecx, 6
or eax, ecx
mov cl, byte [rsp + 0x32]
and ecx, 0xffffffaf
or eax, ecx
mov rcx, r15
mov byte [rsp + 0x32], al
call method.llvm::X86II.getOperandBias_llvm::MCInstrDesc_const_
lea r11, [rsp + 0x30]
mov r10d, eax
mov rax, rdi
and eax, 0x7f
cmp rax, 1
je case.0x2870c86b4.64
sub rax, 0x14
cmp rax, 0x2c
jbe case.0x2870c86b4.28
lea rcx, [0x2870f2ab4]
mov rdx, qword [rsp + 0x28]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov r8d, esi
mov rdx, rbx
mov rcx, r11
call fcn.2870ad9c0
lea r8d, [rsi + 2]
mov rdx, rbx
mov rcx, r11
mov dword [rsp + 0x20], r8d
call fcn.2870ada60
mov r8d, dword [rsp + 0x20]
mov r9d, r13d
mov rdx, rbx
and r9d, 1
mov rcx, r11
call fcn.2870ad950
mov eax, 0x10800001
shl rax, 0x10
cmp rbp, rax
jne 0x2870c8712
mov r8d, r10d
lea esi, [r10 + 1]
mov rdx, rbx
mov rcx, r11
call fcn.2870adac0
mov r10d, esi
lea r8d, [r10 + 5]
test r12, r12
je 0x2870c872d
add r10d, 6
mov rdx, rbx
mov rcx, r11
call fcn.2870ad990
mov r8d, r10d
mov eax, 0x10800001
shl rax, 0x10
cmp rbp, rax
je 0x2870c8752
test r13b, r13b
je 0x2870c8752
mov rdx, rbx
mov rcx, r11
lea r10d, [r8 + 1]
call fcn.2870adac0
mov r8d, r10d
mov rdx, rbx
mov rcx, r11
call fcn.2870ada20
jmp case.0x2870c86b4.64
mov eax, 0x10800001
shl rax, 0x10
cmp rbp, rax
jne 0x2870c8785
mov r8d, r10d
lea edi, [r10 + 1]
mov rdx, rbx
mov rcx, r11
call fcn.2870adac0
mov r10d, edi
mov r8d, r10d
mov rdx, rbx
lea edi, [r10 + 1]
mov rcx, r11
call fcn.2870ada20
test r12, r12
je 0x2870c87b1
mov r8d, edi
add r10d, 2
mov rdx, rbx
mov rcx, r11
call fcn.2870ad990
mov edi, r10d
mov eax, 0x10800001
shl rax, 0x10
cmp rbp, rax
je 0x2870c88a6
test r13b, r13b
je 0x2870c88a6
mov r8d, edi
mov rdx, rbx
mov rcx, r11
call fcn.2870adac0
jmp 0x2870c88a6
mov r8d, r10d
mov rdx, rbx
mov rcx, r11
call fcn.2870ada20
mov r8d, esi
mov rdx, rbx
mov rcx, r11
call fcn.2870ad9c0
lea r8d, [rsi + 2]
mov rdx, rbx
mov rcx, r11
call fcn.2870ada60
lea r8d, [r10 + 6]
jmp 0x2870c89c3
mov rcx, qword [rsp + 0x20]
mov r8d, r10d
mov rdx, rbx
call fcn.2870cae60
lea r8d, [r10 + 1]
mov rdx, rbx
mov r9d, eax
call fcn.2870cae60
shr r9d, 3
mov r8d, esi
mov rdx, rbx
and r9d, 1
and eax, 0xf
mov rcx, r11
shl eax, 8
add r9d, r9d
or r9d, eax
mov eax, dword [rsp + 0x30]
and ax, 0xf0fd
or r9d, eax
mov word [rsp + 0x30], r9w
call fcn.2870ad9c0
lea r8d, [rsi + 2]
mov rdx, rbx
mov rcx, r11
call fcn.2870ada60
jmp case.0x2870c86b4.64
test rdx, rdx
je 0x2870c8893
mov r8d, r10d
lea edi, [r10 + 1]
mov rdx, rbx
mov rcx, r11
call fcn.2870adac0
mov r10d, edi
test r12, r12
je 0x2870c88a6
mov r8d, r10d
mov rdx, rbx
mov rcx, r11
call fcn.2870ad990
mov r8d, esi
mov rdx, rbx
mov rcx, r11
call fcn.2870ad9c0
lea r8d, [rsi + 2]
mov rdx, rbx
mov rcx, r11
mov dword [rsp + 0x20], r8d
call fcn.2870ada60
mov r9d, r13d
mov r8d, dword [rsp + 0x20]
mov rdx, rbx
and r9d, 1
mov rcx, r11
call fcn.2870ad950
jmp case.0x2870c86b4.64
mov eax, 0x10800001
shl rax, 0x10
cmp rbp, rax
jne 0x2870c8907
mov r8d, r10d
lea esi, [r10 + 1]
mov rdx, rbx
mov rcx, r11
call fcn.2870adac0
mov r10d, esi
mov r8d, r10d
mov rdx, rbx
lea esi, [r10 + 1]
mov rcx, r11
call fcn.2870ada20
test r12, r12
je 0x2870c8933
mov r8d, esi
add r10d, 2
mov rdx, rbx
mov rcx, r11
call fcn.2870ad990
mov esi, r10d
mov eax, 0x10800001
shl rax, 0x10
cmp rbp, rax
je 0x2870c895b
test r13b, r13b
je 0x2870c895b
mov r8d, esi
lea r10d, [rsi + 1]
mov rdx, rbx
mov rcx, r11
call fcn.2870adac0
mov esi, r10d
mov r8d, esi
mov rdx, rbx
mov rcx, r11
call fcn.2870ad9c0
mov r8d, esi
mov rdx, rbx
mov rcx, r11
call fcn.2870ad910
test r14, r14
je case.0x2870c86b4.64
bt rdi, 0x30
jae 0x2870c8b1d
movzx eax, word [r15 + 2]
dec eax
shl rax, 4
add rax, qword [rbx + 0x10]
mov dl, byte [rax + 8]
jmp 0x2870c8b1f
mov r8d, r10d
mov rdx, rbx
mov rcx, r11
call fcn.2870ada20
lea r8d, [r10 + 1]
mov rdx, rbx
mov rcx, r11
call fcn.2870ad9c0
lea r8d, [r10 + 2]
mov rdx, rbx
mov rcx, r11
call fcn.2870adac0
jmp case.0x2870c86b4.64
mov rcx, qword [rsp + 0x20]
mov r8d, r10d
mov rdx, rbx
call fcn.2870cae60
lea r8d, [r10 + 1]
mov rdx, rbx
mov esi, eax
call fcn.2870cae60
lea r8d, [r10 + 3]
mov rdx, rbx
shr esi, 3
mov dword [rsp + 0x28], r8d
mov r9d, eax
and esi, 1
call fcn.2870cae60
add esi, esi
mov edx, dword [rsp + 0x30]
and r9d, 0xf
shr eax, 3
shl r9d, 8
mov r8d, dword [rsp + 0x28]
and eax, 1
and dx, 0xf0f5
shl eax, 3
or eax, esi
or eax, r9d
or eax, edx
mov word [rsp + 0x30], ax
jmp 0x2870c8b10
mov eax, 0x10800001
shl rax, 0x10
cmp rbp, rax
jne 0x2870c8a60
mov r8d, r10d
lea esi, [r10 + 1]
mov rdx, rbx
mov rcx, r11
call fcn.2870adac0
mov r10d, esi
mov r8d, r10d
mov rdx, rbx
mov rcx, r11
call fcn.2870ad9c0
mov r8d, r10d
mov rdx, rbx
mov rcx, r11
call fcn.2870ad910
lea r8d, [r10 + 1]
test r12, r12
je 0x2870c8a94
add r10d, 2
mov rdx, rbx
call fcn.2870ad990
mov r8d, r10d
mov eax, 0x10800001
shl rax, 0x10
cmp rbp, rax
je 0x2870c8ab9
test r13b, r13b
je 0x2870c8ab9
lea r10d, [r8 + 1]
mov rdx, rbx
mov rcx, r11
call fcn.2870adac0
mov r8d, r10d
mov rdx, rbx
mov rcx, r11
call fcn.2870ada20
test r14, r14
jne 0x2870c8b1d
jmp case.0x2870c86b4.64
test rdx, rdx
je 0x2870c8ae5
mov r8d, r10d
lea esi, [r10 + 1]
mov rdx, rbx
mov rcx, r11
call fcn.2870adac0
mov r10d, esi
test r12, r12
je 0x2870c8aff
mov r8d, r10d
lea esi, [r10 + 1]
mov rdx, rbx
mov rcx, r11
call fcn.2870ad990
mov r10d, esi
mov r8d, r10d
mov rdx, rbx
mov rcx, r11
call fcn.2870ad9c0
mov r8d, r10d
mov rdx, rbx
mov rcx, r11
call fcn.2870ad910
jmp case.0x2870c86b4.64
xor edx, edx
mov eax, edx
and edx, 1
shr al, 1
shl edx, 0xc
and eax, 1
shl eax, 0x15
or eax, edx
mov edx, dword [rsp + 0x30]
and edx, 0xffdfefff
or eax, edx
mov dword [rsp + 0x30], eax
mov rcx, r11
call fcn.2870ad860
mov rdx, qword [rsp + 0xb0]
mov rcx, r11
mov ebp, eax
call fcn.2870cae80
jmp 0x2870c8f08
mov rax, qword [r14 + 0xe8]
mov rdx, rdi
and edx, 0x180
and eax, 2
cmp rax, 1
sbb rax, rax
and rax, 0xffffffffffffff80
add rax, 0x100
cmp rdx, rax
jne 0x2870c8b9b
mov rcx, qword [rsp + 0xb0]
mov edx, 0x66
call method.llvm::SmallVectorTemplateBase_char__true_.push_back_char_
bt edi, 0x19
jb 0x2870c8ba7
test byte [rbx + 4], 0x10
je 0x2870c8bb9
mov rcx, qword [rsp + 0xb0]
mov edx, 0xfffffff0
call method.llvm::SmallVectorTemplateBase_char__true_.push_back_char_
bt rdi, 0x31
jb 0x2870c8bc6
test byte [rbx + 4], 0x20
je 0x2870c8bd8
mov rcx, qword [rsp + 0xb0]
mov edx, 0x3e
call method.llvm::SmallVectorTemplateBase_char__true_.push_back_char_
mov rax, rdi
and eax, 0x1800
cmp rax, 0x1000
je 0x2870c8bff
cmp rax, 0x1800
je 0x2870c8c06
mov edx, 0x66
cmp rax, 0x800
je 0x2870c8c0b
jmp 0x2870c8c18
mov edx, 0xfffffff3
jmp 0x2870c8c0b
mov edx, 0xfffffff2
mov rcx, qword [rsp + 0xb0]
call method.llvm::SmallVectorTemplateBase_char__true_.push_back_char_
xor ebp, ebp
test byte [r14 + 0xe8], 8
je 0x2870c8e98
mov rax, qword [r12 + 0x10]
mov rdx, qword [r12 + 8]
xor r11d, r11d
mov r13d, dword [rbx + 0x18]
mov rax, qword [rax + 0xa0]
mov rcx, qword [rdx]
mov rdx, qword [rsp + 0x30]
mov qword [rsp + 0x38], rax
mov eax, dword [rbx]
and edx, 0xf8000000
shl rax, 5
sub rcx, rax
mov rbp, qword [rcx + 0x18]
mov rax, rbp
shr rax, 0x11
and eax, 1
or rax, rdx
mov qword [rsp + 0x30], rax
test r13d, r13d
je 0x2870c8c7f
call method.llvm::X86II.getOperandBias_llvm::MCInstrDesc_const_
mov r11d, eax
mov ecx, r11d
xor edx, edx
xor r12d, r12d
mov r9b, 1
movabs r8, 0xf6fffffffffffbfe
mov r10d, 0x8412
cmp r13d, ecx
je 0x2870c8d2c
mov eax, ecx
shl rax, 4
add rax, qword [rbx + 0x10]
mov r15b, byte [rax]
cmp r15b, 1
jne 0x2870c8ce4
mov eax, dword [rax + 8]
cmp eax, 0xf
ja 0x2870c8ccd
bt r10, rax
setb r15b
test r15b, r15b
cmovne r12d, r15d
sub eax, 8
cmp eax, 0x3b
ja 0x2870c8d25
bt r8, rax
setb al
test al, al
cmove edx, r9d
jmp 0x2870c8d25
cmp r15b, 5
jne 0x2870c8d25
mov r15d, dword [r14 + 0x38]
cmp r15d, 9
je 0x2870c8cfa
cmp r15d, 0x12
jne 0x2870c8d25
mov rax, qword [rax + 8]
cmp byte [rax], 2
jne 0x2870c8d25
mov r15d, dword [rax + 4]
and r15d, 0xffffff
cmp r15w, 0x13
sete al
cmp r15w, 8
sete r15b
or al, r15b
cmovne edx, eax
inc ecx
jmp 0x2870c8c9a
test dl, dl
je 0x2870c8d38
mov dword [rsp + 0x34], 1
mov eax, 3
mov edx, 1
shl rax, 0x32
shl rdx, 0x32
and rax, rbp
cmp rax, rdx
jne 0x2870c8d5a
mov dword [rsp + 0x34], 2
mov rax, rbp
lea r10, [rsp + 0x30]
and eax, 0x7f
cmp rax, 0x2c
ja 0x2870c8d9e
cmp rax, 0x17
ja 0x2870c8d80
cmp rax, 2
je 0x2870c8e36
jmp case.0x2870c8d9c.26
sub rax, 0x18
cmp rax, 0x14
ja case.0x2870c8d9c.26
lea rdx, [0x2870f2b68]
movsxd rax, dword [rdx + rax*4]
add rax, rdx
jmp rax
sub rax, 0x2e
cmp rax, 9
jbe 0x2870c8e36
jmp case.0x2870c8d9c.26
mov r8d, r11d
mov rdx, rbx
mov rcx, r10
call fcn.2870ada20
lea r8d, [r11 + 1]
jmp 0x2870c8e39
mov r8d, r11d
mov rdx, rbx
mov rcx, r10
call fcn.2870ada20
jmp case.0x2870c8d9c.30
mov r8d, r11d
mov rdx, rbx
mov rcx, r10
call fcn.2870ad9c0
lea r8d, [r11 + 1]
jmp 0x2870c8e0a
mov r8d, esi
mov rdx, rbx
mov rcx, r10
call fcn.2870ad9c0
lea r8d, [rsi + 2]
mov rdx, rbx
mov rcx, r10
call fcn.2870ada60
lea r8d, [r11 + 5]
mov rdx, rbx
mov rcx, r10
call fcn.2870ada20
jmp case.0x2870c8d9c.26
mov r8d, esi
mov rdx, rbx
mov rcx, r10
call fcn.2870ad9c0
lea r8d, [rsi + 2]
mov rdx, rbx
mov rcx, r10
call fcn.2870ada60
jmp case.0x2870c8d9c.26
mov r8d, r11d
mov rdx, rbx
mov rcx, r10
call fcn.2870ad9c0
and ebp, 0x1e000
mov al, byte [rsp + 0x30]
mov rcx, r10
cmp rbp, 0x2000
sete dl
and eax, 0xffffffef
shl edx, 4
or eax, edx
mov byte [rsp + 0x30], al
call fcn.2870ad860
mov ebp, eax
test eax, eax
je 0x2870c8e88
test r12b, r12b
je 0x2870c8e88
mov edx, 1
lea rcx, str.Cannot_encode_high_byte_register_in_REX_prefixed_instruction
call fcn.2870a1e20
mov rdx, qword [rsp + 0xb0]
mov rcx, r10
call fcn.2870cae80
mov rbx, rdi
and ebx, 0x1e000
cmp rbx, 0x4000
je 0x2870c8ecd
ja 0x2870c8eb7
cmp rbx, 0x2000
je 0x2870c8ec8
jmp 0x2870c8f08
and edi, 0x16000
cmp rdi, 0x6000
jne 0x2870c8eed
jmp 0x2870c8ecd
cmp ebp, 2
je 0x2870c8f08
mov rcx, qword [rsp + 0xb0]
mov edx, 0xf
call method.llvm::SmallVectorTemplateBase_char__true_.push_back_char_
mov edx, 0x38
cmp rbx, 0x4000
je 0x2870c8efb
mov edx, 0x3a
cmp rbx, 0x6000
jne 0x2870c8f08
mov rcx, qword [rsp + 0xb0]
call method.llvm::SmallVectorTemplateBase_char__true_.push_back_char_
mov eax, ebp
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret