Function at 0x180031050
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov rsi, qword [rcx]
test rsi, rsi
je 0x1800312f5
mov r12, qword [rcx + 8]
mov rdi, qword [rcx + 0x10]
test rdi, rdi
je 0x180031306
movabs rbx, 0x7ffffffffffffff8
mov r15d, 0x3d8
mov rax, rsi
xor esi, esi
jmp 0x1800310ae
mov eax, 0
dec rdi
je 0x18003137e
test rsi, rsi
je 0x1800310e0
movzx ecx, word [rsi + 0x3d2]
cmp r12, rcx
jae 0x180031190
mov rbp, r12
mov r14, rax
mov r13, rsi
jmp 0x1800311d5
test r12, r12
je 0x18003111d
mov rcx, r12
and rcx, 7
je 0x180031122
mov rsi, rax
xor eax, eax
nop word cs:[rax + rax]
mov rsi, qword [rsi + 0x3d8]
inc rax
cmp rcx, rax
jne 0x180031100
mov rcx, r12
sub rcx, rax
cmp r12, 8
jae 0x180031130
jmp 0x18003117a
mov rsi, rax
jmp 0x18003117a
mov rcx, r12
mov rsi, rax
cmp r12, 8
jb 0x18003117a
nop
mov rax, qword [rsi + 0x3d8]
mov rax, qword [rax + 0x3d8]
mov rax, qword [rax + 0x3d8]
mov rax, qword [rax + 0x3d8]
mov rax, qword [rax + 0x3d8]
mov rax, qword [rax + 0x3d8]
mov rax, qword [rax + 0x3d8]
mov rsi, qword [rax + 0x3d8]
mov rax, rcx
and rax, rbx
add rax, rax
xor rcx, 0xfffffffffffffff8
add rcx, rax
jne 0x180031130
xor eax, eax
xor r12d, r12d
movzx ecx, word [rsi + 0x3d2]
cmp r12, rcx
jb 0x1800310c3
nop
mov r13, qword [rsi + 0x160]
test r13, r13
je 0x180031412
lea r14, [rax + 1]
movzx ebp, word [rsi + 0x3d0]
test rax, rax
mov edx, 0x438
cmove rdx, r15
mov r8d, 8
mov rcx, rsi
call fcn.180034a40
mov rax, r14
mov rsi, r13
cmp bp, word [r13 + 0x3d2]
jae 0x180031190
lea r12, [rbp + 1]
test r14, r14
je 0x180031270
mov rsi, qword [r13 + r12*8 + 0x3d8]
mov rax, r14
dec rax
je 0x18003125e
mov rcx, rax
and rcx, 7
je 0x180031212
xor edx, edx
nop dword [rax]
mov rsi, qword [rsi + 0x3d8]
inc rdx
cmp rcx, rdx
jne 0x180031200
sub rax, rdx
add r14, 0xfffffffffffffffe
cmp r14, 7
jb 0x18003125e
nop dword [rax]
mov rcx, qword [rsi + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rsi, qword [rcx + 0x3d8]
add rax, 0xfffffffffffffff8
jne 0x180031220
xor r12d, r12d
jmp 0x180031273
mov rsi, r13
imul rax, rbp, 0x38
lea r14, [rax + r13]
add r14, 0x168
mov rdx, qword [r13 + rax + 0x168]
test rdx, rdx
je 0x18003129e
mov rcx, qword [r14 + 8]
mov r8d, 1
call fcn.180034a40
mov rdx, qword [r14 + 0x20]
test rdx, rdx
je 0x1800312b9
mov rcx, qword [r14 + 0x28]
add rdx, rdx
mov r8d, 2
call fcn.180034a40
shl rbp, 5
mov rdx, qword [r13 + rbp]
movabs rax, 0x8000000000000000
cmp rdx, rax
je 0x1800310a0
test rdx, rdx
je 0x1800310a0
add r13, rbp
mov rcx, qword [r13 + 8]
mov r8d, 1
call fcn.180034a40
jmp 0x1800310a0
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test r12, r12
je 0x18003137e
mov rax, r12
and rax, 7
je 0x180031400
xor ecx, ecx
nop word [rax + rax]
mov rsi, qword [rsi + 0x3d8]
inc rcx
cmp rax, rcx
jne 0x180031320
mov rax, r12
sub rax, rcx
cmp r12, 8
jb 0x18003137e
nop dword [rax + rax]
mov rcx, qword [rsi + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rcx, qword [rcx + 0x3d8]
mov rsi, qword [rcx + 0x3d8]
add rax, 0xfffffffffffffff8
jne 0x180031340
mov rax, qword [rsi + 0x160]
test rax, rax
je 0x1800313dd
xor edi, edi
mov ebx, 0x3d8
nop word cs:[rax + rax]
mov rcx, rsi
mov rsi, rax
sub rdi, 1
mov edx, 0x438
cmovb rdx, rbx
mov r8d, 8
call fcn.180034a40
mov rax, qword [rsi + 0x160]
test rax, rax
jne 0x1800313a0
test rdi, rdi
mov eax, 0x3d8
mov edx, 0x438
cmove rdx, rax
jmp 0x1800313e2
mov edx, 0x3d8
mov r8d, 8
mov rcx, rsi
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.180034a40
mov rax, r12
cmp r12, 8
jae 0x180031340
jmp 0x18003137e
test rax, rax
mov eax, 0x3d8
mov edx, 0x438
cmove rdx, rax
mov r8d, 8
mov rcx, rsi
call fcn.180034a40
ud2