Function at 0x28ca85970
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
push r15
mov eax, 0x13f8
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.28ca73620
sub rsp, rax
mov rbx, qword [sym.liblldELF.dll_lld::elf::config]
cmp dword [rbx + 0x470], 0
mov qword [rsp + 0x1440], rcx
je 0x28ca85d04
xor ecx, ecx
lea r12, [rsp + 0x50]
lea rbp, [rsp + 0x60]
xor r8d, r8d
mov rsi, qword [sym.liblldELF.dll_lld::elf::ctx]
lea rax, [rsp + 0x40]
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x48], rcx
mov r13d, dword [rsi + 0xe0]
mov qword [rsp + 0x50], rbp
mov qword [rsp + 0x58], r8
test r13d, r13d
mov qword [rsp + 0x20], rax
je 0x28ca85a15
xor edx, edx
mov rcx, r12
mov dword [rsp + 0x58], edx
mov edx, r13d
call method.llvm::SmallVectorTemplateBase_lld::elf::InputSectionBase__true_.grow_unsigned_long_long_
mov ecx, dword [rsi + 0xe0]
shl rcx, 3
je 0x28ca85a10
mov rsi, qword [rsi + 0xd8]
mov rdi, qword [rsp + 0x50]
rep movsb byte [rdi], byte [rsi]
mov dword [rsp + 0x58], r13d
mov edx, dword [rsp + 0x58]
mov rcx, qword [rsp + 0x20]
call method.llvm::SmallVectorImpl_lld::elf::InputSectionBase_.reserve_unsigned_long_long_
mov eax, dword [rbx + 0x470]
mov rsi, qword [rbx + 0x468]
lea r13, [rsp + 0x30]
lea r14, str.default
imul rax, rax, 0x50
add rax, rsi
mov qword [rsp + 0x28], rax
jmp 0x28ca85aae
mov r15, qword [rbx]
mov rdx, r13
mov rcx, rsi
movups xmm0, xmmword [r15 + 8]
movaps xmmword [rsp + 0x30], xmm0
call fcn.28ca71aa0
test al, al
jne 0x28ca85ace
add rbx, 8
cmp rdi, rbx
jne 0x28ca85a4f
mov eax, dword [rsi + 0x48]
cmp eax, 0xffffffff
jne 0x28ca85afa
mov edx, dword [rsp + 0x48]
mov rax, qword [rsp + 0x40]
lea rcx, [rax + rdx*8]
lea rdx, [rcx - 8]
cmp rax, rcx
jne 0x28ca85add
mov rbx, qword [rsp + 0x50]
mov eax, dword [rsp + 0x58]
xor edi, edi
lea r15, [rbx + rax*8]
cmp r15, rbx
jne 0x28ca85c3e
add rsi, 0x50
mov rbx, qword [rsp + 0x50]
mov eax, dword [rsp + 0x58]
lea rdi, [rbx + rax*8]
cmp qword [rsp + 0x28], rsi
je 0x28ca85c71
xor eax, eax
mov dword [rsp + 0x48], eax
jmp 0x28ca85a6f
mov rcx, qword [rsp + 0x20]
mov rdx, r15
call fcn.28cb42f90
jmp 0x28ca85a6b
cmp rax, rdx
jae 0x28ca85a92
mov rcx, qword [rax]
mov r8, qword [rdx]
add rax, 8
sub rdx, 8
mov qword [rax - 8], r8
mov qword [rdx + 8], rcx
jmp 0x28ca85add
test eax, eax
jne 0x28ca85b60
lea rcx, [rsp + 0x70]
mov rdx, r14
lea r8, [0x28cbd360a]
mov qword [rsp + 0x60], rcx
lea rdi, [rsp + 0xa28]
call fcn.28ca71ea8
mov rax, qword [rsp + 0x60]
mov rdx, rbp
mov rcx, rdi
mov qword [rsp + 0x68], 7
mov byte [rax + 7], 0
call fcn.28ca71ed8
mov rcx, rbp
call fcn.28ca71ec0
mov rcx, rdi
call fcn.28ca71ed0
mov cl, 1
jmp 0x28ca85b62
xor ecx, ecx
mov dword [rsp + 0x60], eax
mov edx, 1
mov eax, dword [rbp + rdx*4 - 4]
mov r8d, eax
shr r8d, 0x1e
xor eax, r8d
imul eax, eax, 0x6c078965
add eax, edx
mov dword [rbp + rdx*4], eax
inc rdx
cmp rdx, 0x270
jne 0x28ca85b6b
mov qword [rsp + 0xa20], 0x270
test cl, cl
je 0x28ca85bae
lea rcx, [rsp + 0xa28]
call fcn.28ca71ee0
mov r10, qword [rsp + 0x40]
mov r9d, dword [rsp + 0x48]
cmp r9, 1
jle 0x28ca85a92
cmp qword [rsp + 0xa20], 0x26f
jbe 0x28ca85bd8
mov rcx, rbp
call method.std::mersenne_twister_engine_unsigned_int__32ull__624ull__397ull__31ull__2567483615u__11ull__4294967295u__7ull__2636928640u__15ull__4022730752u__18ull__1812433253u_._M_gen_rand__
mov rax, qword [rsp + 0xa20]
lea rdx, [rax + 1]
mov eax, dword [rsp + rax*4 + 0x60]
mov qword [rsp + 0xa20], rdx
mov edx, eax
shr edx, 0xb
xor eax, edx
mov edx, eax
shl edx, 7
and edx, 0x9d2c5680
xor eax, edx
mov edx, eax
shl edx, 0xf
and edx, 0xefc60000
xor eax, edx
mov edx, eax
shr edx, 0x12
xor eax, edx
cqo
idiv r9
test rdx, rdx
je 0x28ca85c32
lea rax, [r10 + rdx*8]
mov rdx, qword [r10]
mov rcx, qword [rax]
mov qword [r10], rcx
mov qword [rax], rdx
add r10, 8
dec r9
jmp 0x28ca85bb8
mov rax, qword [rbx]
mov rdx, r13
mov rcx, rsi
movups xmm1, xmmword [rax + 8]
movaps xmmword [rsp + 0x30], xmm1
call fcn.28ca71aa0
test al, al
je 0x28ca85c68
mov rax, qword [rsp + 0x40]
mov rax, qword [rax + rdi*8]
inc rdi
mov qword [rbx], rax
add rbx, 8
jmp 0x28ca85aa1
xor esi, esi
lea r14, [rsp + 0xa28]
cmp rdi, rbx
je 0x28ca85cc5
mov r13, qword [rbx]
mov rcx, qword [rsp + 0x1440]
mov r8, r14
mov rdx, r13
mov qword [rsp + 0x60], r13
call fcn.28cb36450
test al, al
jne 0x28ca85cbf
mov r8, qword [rsp + 0xa28]
mov rcx, qword [rsp + 0x1440]
mov rdx, rbp
call fcn.28cb36530
mov qword [rax], r13
mov dword [rax + 8], esi
inc esi
add rbx, 8
jmp 0x28ca85c7b
mov rcx, r12
call method.llvm::SmallVectorImpl_lld::elf::InputSectionBase_.SmallVectorImpl__
mov rcx, qword [rsp + 0x20]
call method.llvm::SmallVectorImpl_lld::elf::InputSectionBase_.SmallVectorImpl__
jmp 0x28ca85d04
add rsp, 0x13f8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret