Function at 0x46cfc2
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x78
mov r12, rdx
mov rdi, rcx
mov al, byte [0x005b70c8]
mov r14, r8
shl r14, 4
add r14, rdx
cmp al, 1
jne 0x46d058
test r8, r8
je 0x46d2df
movabs rsi, 0x7ffffffffffffff8
lea rbx, [rsp + 0x20]
mov r8, r12
add r12, 0x10
mov rcx, rbx
mov rdx, r12
call fcn.0044e7d9
xor eax, eax
mov rcx, rax
xor rcx, 7
mov rdx, rax
and rdx, rsi
sub rcx, rdx
mov dl, byte [rsp + rax + 0x20]
mov r8b, byte [rsp + rcx + 0x28]
mov byte [rsp + rax + 0x20], r8b
mov byte [rsp + rcx + 0x28], dl
inc rax
cmp rax, 8
jne 0x46d018
mov rcx, rdi
mov rdx, rbx
call fcn.004cb3a8
cmp r12, r14
jne 0x46d004
jmp 0x46d2df
test r8, r8
je 0x46d2df
movabs rsi, 0x7ffffffffffffff8
mov rcx, qword [rdi]
mov rdx, qword [rdi + 8]
mov rax, rdx
and rax, rcx
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x38], rdx
add rcx, rdx
add rax, rax
sub rcx, rax
mov qword [rsp + 0x30], rcx
mov rbp, qword [rdi + 0x10]
mov r13, qword [rdi + 0x18]
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x48], r14
lea rdx, [r12 + 0x10]
lea rcx, [rsp + 0x20]
mov qword [rsp + 0x70], rdx
mov r8, r12
call fcn.0044e7d9
xor eax, eax
mov rcx, rax
xor rcx, 7
mov rdx, rax
and rdx, rsi
sub rcx, rdx
mov dl, byte [rsp + rax + 0x20]
mov r8b, byte [rsp + rcx + 0x28]
mov byte [rsp + rax + 0x20], r8b
mov byte [rsp + rcx + 0x28], dl
inc rax
cmp rax, 8
jne 0x46d0bb
mov rax, qword [rsp + 0x28]
xor rbp, qword [rsp + 0x20]
mov rcx, r13
and rcx, rax
add r13, rax
add rcx, rcx
sub r13, rcx
mov rcx, rbp
call fcn.004cb137
mov rsi, rax
mov qword [rsp + 0x58], rax
mov rcx, r13
call fcn.004cb137
mov qword [rsp + 0x60], rax
mov rdi, r13
xor rdi, rbp
mov rcx, rax
xor rcx, rsi
mov qword [rsp + 0x68], rcx
mov r12, qword [rsp + 0x40]
mov rcx, r12
call fcn.004cb137
mov r14, rax
mov r15, qword [rsp + 0x38]
mov rcx, r15
call fcn.004cb137
mov rbx, rax
and rax, r14
lea rsi, [rbx + r14]
add rax, rax
sub rsi, rax
mov rcx, r12
mov rdx, rbp
call fcn.004cb204
mov rbp, rax
mov rcx, r15
mov rdx, r13
call fcn.004cb204
mov r15, rax
mov rcx, qword [rsp + 0x30]
mov rdx, rdi
call fcn.004cb204
mov r13, rax
mov rcx, r14
mov rdx, qword [rsp + 0x58]
call fcn.004cb204
mov rdi, rax
mov rcx, rbx
mov rdx, qword [rsp + 0x60]
call fcn.004cb204
mov rbx, rax
mov rcx, rsi
mov rdx, qword [rsp + 0x68]
call fcn.004cb204
mov rcx, r15
and rcx, rbp
add rcx, rcx
mov r14, r15
sub r14, rcx
add r14, rbp
mov rcx, r14
and rcx, r13
add r14, r13
add rcx, rcx
sub r14, rcx
mov rsi, rdi
xor rsi, rbx
xor rsi, rax
mov rcx, rdi
call fcn.004cb137
mov r12, rax
shr r12, 1
xor r12, r14
mov rcx, rbx
call fcn.004cb137
mov r13, rax
mov rcx, rsi
movabs rsi, 0x7ffffffffffffff8
call fcn.004cb137
shr rax, 1
mov rcx, rax
and rcx, r15
add rax, r15
add rcx, rcx
sub rax, rcx
mov rdx, rbp
shr rdx, 1
mov rcx, rdx
and rcx, rbp
add rdx, rbp
add rcx, rcx
sub rdx, rcx
mov r8, rbp
shr r8, 2
mov rcx, rbp
shr rcx, 7
xor rcx, r8
xor rcx, rdx
xor rcx, rax
mov rax, rbp
shl rax, 0x3f
mov rdx, rbp
shl rdx, 0x3e
xor rdx, rax
shl rbp, 0x39
mov rax, rbp
movabs r8, 0xe200000000000000
and rax, r8
xor rax, rdx
movabs rdx, 0x1c00000000000000
and rbp, rdx
or rbp, rax
xor rbp, r12
mov rax, rbp
shr rax, 2
mov rdx, rbp
shr rdx, 7
xor rdx, rax
xor r13, rbp
shr r13, 1
xor r13, rdx
xor r13, rbp
mov rax, r12
shl rax, 0x3e
mov rdx, rax
neg rdx
shl r12, 0x39
and rdx, r12
sub r12, rax
lea rbp, [r12 + rdx*2]
xor rbp, rcx
mov rdi, qword [rsp + 0x50]
mov qword [rdi + 0x10], rbp
mov qword [rdi + 0x18], r13
mov r14, qword [rsp + 0x48]
mov r12, qword [rsp + 0x70]
cmp r12, r14
jne 0x46d0a2
add rsp, 0x78
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret