Function at 0x1400378e0
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push r14
push r15
sub rsp, 0x48
mov rax, qword [rcx]
mov rsi, r9
mov r15, r8
mov rbx, rdx
mov r14, rcx
call qword [rax + 0x20]
test al, al
jne 0x140037909
mov rcx, r14
call fcn.14000dd30
cmp rsi, 2
jb 0x140037c18
mov qword [rsp + 0x78], rbp
mov rbp, rsi
shr rbp, 1
imul rax, rbp, 0xfffffffffffffffe
mov qword [rsp + 0x40], rdi
add rsi, rax
nop word [rax + rax]
mov eax, dword [rbx + 4]
mov r8d, dword [rbx]
mov r11d, dword [rbx + 0xc]
mov edi, dword [rbx + 8]
bswap eax
mov edx, eax
shl eax, 4
bswap r8d
shr edx, 0x1c
or edx, eax
mov eax, edx
xor eax, r8d
and eax, 0xf0f0f0f0
xor edx, eax
mov ecx, eax
xor ecx, r8d
mov r8d, edx
shr r8d, 0x14
shl edx, 0xc
or r8d, edx
mov eax, r8d
xor eax, ecx
and eax, 0xffff0000
xor r8d, eax
mov edx, eax
xor edx, ecx
mov r9d, r8d
shl r8d, 0xe
shr r9d, 0x12
or r9d, r8d
mov eax, r9d
xor eax, edx
and eax, 0x33333333
xor r9d, eax
mov ecx, eax
xor ecx, edx
mov r10d, r9d
shl r10d, 0x1a
shr r9d, 6
or r10d, r9d
mov eax, r10d
xor eax, ecx
and eax, 0xff00ff
xor r10d, eax
mov edx, eax
xor edx, ecx
mov r8d, r10d
shr r8d, 0x17
shl r10d, 9
or r8d, r10d
mov ecx, r8d
xor ecx, edx
and ecx, 0xaaaaaaaa
mov eax, ecx
xor r8d, ecx
xor eax, edx
mov dword [rsp + 0x70], r8d
ror eax, 0x1f
mov dword [rsp + 0x88], eax
bswap r11d
mov eax, r11d
shl r11d, 4
shr eax, 0x1c
or eax, r11d
bswap edi
mov ecx, edi
xor ecx, eax
and ecx, 0xf0f0f0f0
xor edi, ecx
xor ecx, eax
mov eax, ecx
shl ecx, 0xc
shr eax, 0x14
or eax, ecx
mov ecx, edi
xor ecx, eax
and ecx, 0xffff0000
mov edx, ecx
xor edx, edi
xor ecx, eax
mov eax, ecx
shl ecx, 0xe
shr eax, 0x12
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, 6
shl eax, 0x1a
or eax, ecx
mov ecx, r8d
xor ecx, eax
and ecx, 0xff00ff
mov r9d, ecx
xor ecx, eax
mov edx, ecx
xor r9d, r8d
shl ecx, 9
lea r8, [rsp + 0x34]
shr edx, 0x17
or edx, ecx
mov ecx, r9d
xor ecx, edx
and ecx, 0xaaaaaaaa
mov eax, ecx
xor ecx, edx
xor eax, r9d
mov dword [rsp + 0x30], ecx
ror eax, 0x1f
lea r9, [rsp + 0x30]
mov dword [rsp + 0x34], eax
lea rdx, [rsp + 0x70]
mov rax, qword [r14 + 8]
lea rcx, [rsp + 0x88]
mov qword [rsp + 0x20], rax
call fcn.140038560
mov r10d, dword [rsp + 0x70]
mov ecx, r10d
shl ecx, 0x1f
shr r10d, 1
or ecx, r10d
mov edx, ecx
xor edx, dword [rsp + 0x88]
and edx, 0xaaaaaaaa
mov r8d, edx
xor edx, dword [rsp + 0x88]
xor r8d, ecx
mov eax, edx
shl eax, 0x17
mov ecx, r8d
shr edx, 9
or eax, edx
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 edi, ecx
xor edi, r8d
xor ecx, eax
mov eax, ecx
shr ecx, 0xc
mov r10d, edi
shl eax, 0x14
add rbx, 0x10
or eax, ecx
xor r10d, eax
and r10d, 0xf0f0f0f0
mov r11d, r10d
xor r10d, edi
xor r11d, eax
mov eax, dword [rsp + 0x30]
mov ecx, eax
ror r11d, 4
shl ecx, 0x1f
shr eax, 1
or ecx, eax
mov edx, ecx
xor edx, dword [rsp + 0x34]
and edx, 0xaaaaaaaa
mov r8d, edx
xor edx, dword [rsp + 0x34]
xor r8d, ecx
mov eax, edx
shl eax, 0x17
mov ecx, r8d
shr edx, 9
or eax, edx
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 r9d, ecx
xor ecx, eax
mov eax, ecx
xor r9d, r8d
shr ecx, 0xc
mov edx, r9d
shl eax, 0x14
or eax, ecx
xor edx, eax
and edx, 0xf0f0f0f0
mov ecx, edx
xor edx, r9d
xor ecx, eax
ror ecx, 4
bswap r10d
mov dword [r15], r10d
bswap r11d
mov dword [r15 + 4], r11d
bswap edx
mov dword [r15 + 8], edx
bswap ecx
mov dword [r15 + 0xc], ecx
add r15, 0x10
sub rbp, 1
jne 0x140037930
mov rdi, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x78]
test rsi, rsi
je 0x140037da0
sub r15, rbx
nop dword [rax]
nop dword [rax + rax]
mov eax, dword [rbx + 4]
mov r8d, dword [rbx]
bswap eax
mov ecx, eax
shl eax, 4
shr ecx, 0x1c
or ecx, eax
bswap r8d
mov eax, r8d
xor eax, ecx
and eax, 0xf0f0f0f0
xor r8d, eax
xor eax, ecx
mov ecx, eax
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 r9d, eax
xor eax, ecx
mov edx, eax
xor r9d, r8d
mov r8, qword [r14 + 8]
mov ecx, r9d
shl eax, 9
shr edx, 0x17
or edx, eax
xor ecx, edx
and ecx, 0xaaaaaaaa
mov eax, ecx
xor ecx, edx
xor eax, r9d
mov dword [rsp + 0x70], ecx
ror eax, 0x1f
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0x88]
mov dword [rsp + 0x88], eax
call fcn.1400382d0
mov eax, dword [rsp + 0x70]
mov r8d, eax
shr eax, 1
shl r8d, 0x1f
or r8d, eax
mov ecx, r8d
xor ecx, dword [rsp + 0x88]
and ecx, 0xaaaaaaaa
xor r8d, ecx
xor ecx, dword [rsp + 0x88]
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 edx, r8d
xor ecx, eax
mov eax, ecx
shl ecx, 6
lea rbx, [rbx + 8]
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 r9d, ecx
xor ecx, eax
mov eax, ecx
xor r9d, r8d
shr ecx, 0xc
mov edx, r9d
shl eax, 0x14
or eax, ecx
xor edx, eax
and edx, 0xf0f0f0f0
mov ecx, edx
xor edx, r9d
xor ecx, eax
ror ecx, 4
bswap edx
mov dword [r15 + rbx - 8], edx
bswap ecx
mov dword [r15 + rbx - 4], ecx
sub rsi, 1
jne 0x140037c30
add rsp, 0x48
pop r15
pop r14
pop rsi
pop rbx
ret