Function at 0x1800ead00
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rbx
push rsi
push rdi
push r14
sub rsp, 0x40
mov rax, qword [rcx]
mov rdi, r9
mov rbx, r8
mov rsi, rdx
mov r14, rcx
call qword [rax + 0x20]
test al, al
jne 0x1800ead2b
mov rcx, r14
call fcn.1800a53c0
cmp rdi, 2
jb 0x1800eb01c
mov qword [rsp + 0x68], rbp
mov rbp, rdi
shr rbp, 1
imul rax, rbp, 0xfffffffffffffffe
add rdi, rax
nop word [rax + rax]
mov eax, dword [rsi + 4]
mov r8d, dword [rsi]
bswap eax
mov ecx, eax
mov r9d, dword [rsi + 0xc]
shl eax, 4
mov r10d, dword [rsi + 8]
shr ecx, 0x1c
or ecx, eax
mov eax, ecx
bswap r8d
xor eax, r8d
and eax, 0xf0f0f0f0
mov edx, eax
xor eax, ecx
mov ecx, eax
xor edx, r8d
shl eax, 0xc
shr ecx, 0x14
or ecx, eax
mov eax, edx
xor eax, ecx
and eax, 0xffff0000
mov r8d, eax
xor eax, ecx
mov ecx, eax
xor r8d, edx
shl eax, 0xe
shr ecx, 0x12
or ecx, eax
mov eax, r8d
xor eax, ecx
and eax, 0x33333333
mov edx, eax
xor eax, ecx
mov ecx, eax
xor edx, r8d
shr eax, 6
shl ecx, 0x1a
or ecx, eax
mov eax, edx
xor eax, ecx
and eax, 0xff00ff
mov r8d, eax
xor eax, ecx
xor r8d, edx
mov edx, eax
shl eax, 9
mov ecx, r8d
shr edx, 0x17
or edx, eax
xor ecx, edx
and ecx, 0xaaaaaaaa
mov eax, ecx
xor ecx, edx
xor eax, r8d
mov dword [rsp + 0x60], ecx
ror eax, 0x1f
mov dword [rsp + 0x78], eax
bswap r9d
mov ecx, r9d
shl r9d, 4
shr ecx, 0x1c
or ecx, r9d
mov eax, ecx
bswap r10d
xor eax, r10d
and eax, 0xf0f0f0f0
xor ecx, eax
mov edx, eax
mov eax, ecx
xor edx, r10d
shl ecx, 0xc
shr eax, 0x14
or eax, ecx
mov ecx, edx
xor ecx, eax
and ecx, 0xffff0000
mov r8d, ecx
xor r8d, edx
xor ecx, eax
mov eax, ecx
lea r9, [rsp + 0x30]
shl ecx, 0xe
shr eax, 0x12
or eax, ecx
mov ecx, r8d
xor ecx, eax
and ecx, 0x33333333
mov edx, ecx
xor ecx, eax
mov eax, ecx
xor edx, r8d
shr ecx, 6
shl eax, 0x1a
or eax, ecx
mov ecx, edx
xor ecx, eax
and ecx, 0xff00ff
mov r8d, ecx
xor ecx, eax
xor r8d, edx
mov edx, ecx
shl ecx, 9
shr edx, 0x17
or edx, ecx
mov ecx, r8d
xor ecx, edx
and ecx, 0xaaaaaaaa
mov eax, ecx
xor ecx, edx
xor eax, r8d
mov dword [rsp + 0x30], ecx
ror eax, 0x1f
lea r8, [rsp + 0x34]
mov dword [rsp + 0x34], eax
lea rdx, [rsp + 0x60]
mov rax, qword [r14 + 8]
lea rcx, [rsp + 0x78]
mov qword [rsp + 0x20], rax
call fcn.1800ecd90
mov r10d, dword [rsp + 0x60]
mov r8d, r10d
shl r8d, 0x1f
shr r10d, 1
or r8d, r10d
mov ecx, r8d
xor ecx, dword [rsp + 0x78]
and ecx, 0xaaaaaaaa
xor r8d, ecx
xor ecx, dword [rsp + 0x78]
mov eax, ecx
shr ecx, 9
shl eax, 0x17
or eax, ecx
mov ecx, r8d
xor ecx, eax
and ecx, 0xff00ff
mov edx, ecx
xor ecx, eax
mov eax, ecx
xor edx, r8d
shl ecx, 6
shr eax, 0x1a
or eax, ecx
mov ecx, edx
xor ecx, eax
and ecx, 0x33333333
mov r8d, ecx
xor ecx, eax
mov eax, ecx
xor r8d, edx
shr ecx, 0xe
shl eax, 0x12
or eax, ecx
mov ecx, r8d
xor ecx, eax
and ecx, 0xffff0000
mov r11d, ecx
xor r11d, r8d
xor ecx, eax
mov eax, ecx
shr ecx, 0xc
mov r10d, r11d
shl eax, 0x14
add rsi, 0x10
or eax, ecx
xor r10d, eax
and r10d, 0xf0f0f0f0
mov r9d, r10d
xor r10d, r11d
xor r9d, eax
mov eax, dword [rsp + 0x30]
mov r8d, eax
ror r9d, 4
shr eax, 1
shl r8d, 0x1f
or r8d, eax
mov ecx, r8d
xor ecx, dword [rsp + 0x34]
and ecx, 0xaaaaaaaa
xor r8d, ecx
xor ecx, dword [rsp + 0x34]
mov eax, ecx
shr ecx, 9
shl eax, 0x17
or eax, ecx
mov ecx, r8d
xor ecx, eax
and ecx, 0xff00ff
mov edx, ecx
xor ecx, eax
xor edx, r8d
mov r8d, ecx
shl ecx, 6
shr r8d, 0x1a
or r8d, ecx
mov eax, r8d
xor eax, edx
and eax, 0x33333333
xor r8d, eax
mov ecx, eax
xor ecx, edx
mov edx, r8d
shl edx, 0x12
shr r8d, 0xe
or edx, r8d
mov eax, edx
xor eax, ecx
and eax, 0xffff0000
xor edx, eax
mov r8d, eax
xor r8d, ecx
mov ecx, edx
shl ecx, 0x14
shr edx, 0xc
or ecx, edx
mov eax, ecx
xor eax, r8d
and eax, 0xf0f0f0f0
xor ecx, eax
xor eax, r8d
ror ecx, 4
bswap ecx
bswap r10d
bswap r9d
bswap eax
mov dword [rbx + 0xc], ecx
mov dword [rbx], r10d
mov dword [rbx + 4], r9d
mov dword [rbx + 8], eax
add rbx, 0x10
sub rbp, 1
jne 0x1800ead50
mov rbp, qword [rsp + 0x68]
test rdi, rdi
je 0x1800eb195
sub rsi, rbx
nop dword [rax + rax]
mov eax, dword [rsi + rbx + 4]
mov edx, dword [rsi + rbx]
bswap eax
mov ecx, eax
shl eax, 4
shr ecx, 0x1c
or ecx, eax
bswap edx
mov eax, edx
xor eax, ecx
and eax, 0xf0f0f0f0
mov r8d, eax
xor eax, ecx
mov ecx, eax
xor r8d, edx
shl eax, 0xc
shr ecx, 0x14
or ecx, eax
mov eax, r8d
xor eax, ecx
and eax, 0xffff0000
mov edx, eax
xor eax, ecx
mov ecx, eax
xor edx, r8d
shl eax, 0xe
shr ecx, 0x12
or ecx, eax
mov eax, edx
xor eax, ecx
and eax, 0x33333333
mov r8d, eax
xor eax, ecx
mov ecx, eax
xor r8d, edx
shr eax, 6
shl ecx, 0x1a
or ecx, eax
mov eax, r8d
xor eax, ecx
and eax, 0xff00ff
mov edx, eax
xor eax, ecx
xor edx, r8d
mov r8d, eax
shl eax, 9
mov ecx, edx
shr r8d, 0x17
or r8d, eax
xor ecx, r8d
and ecx, 0xaaaaaaaa
mov eax, ecx
xor ecx, r8d
mov r8, qword [r14 + 8]
xor eax, edx
ror eax, 0x1f
lea rdx, [rsp + 0x60]
mov dword [rsp + 0x60], ecx
lea rcx, [rsp + 0x78]
mov dword [rsp + 0x78], eax
call fcn.1800ec8e0
mov eax, dword [rsp + 0x60]
mov r8d, eax
shr eax, 1
shl r8d, 0x1f
or r8d, eax
mov ecx, r8d
xor ecx, dword [rsp + 0x78]
and ecx, 0xaaaaaaaa
xor r8d, ecx
xor ecx, dword [rsp + 0x78]
mov edx, ecx
shr ecx, 9
shl edx, 0x17
or edx, ecx
mov eax, edx
xor eax, r8d
and eax, 0xff00ff
mov ecx, eax
xor ecx, r8d
xor edx, eax
mov r8d, edx
lea rbx, [rbx + 8]
shl edx, 6
shr r8d, 0x1a
or r8d, edx
mov eax, r8d
xor eax, ecx
and eax, 0x33333333
xor r8d, eax
mov edx, eax
xor edx, ecx
mov r9d, r8d
shl r9d, 0x12
shr r8d, 0xe
or r9d, r8d
mov eax, r9d
xor eax, edx
and eax, 0xffff0000
xor r9d, eax
mov ecx, eax
xor ecx, edx
mov edx, r9d
shl edx, 0x14
shr r9d, 0xc
or edx, r9d
mov eax, edx
xor eax, ecx
and eax, 0xf0f0f0f0
xor edx, eax
xor eax, ecx
ror edx, 4
bswap edx
mov dword [rbx - 4], edx
bswap eax
mov dword [rbx - 8], eax
sub rdi, 1
jne 0x1800eb030
mov rbx, qword [rsp + 0x70]
add rsp, 0x40
pop r14
pop rdi
pop rsi
ret