Function at 0x18012f880
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], rbx
push r14
lea rbx, [rcx - 1]
movsxd r14, r9d
mov ecx, dword [rdx + 8]
mov r10, rdx
mov eax, ecx
shr rbx, 0x3f
xor eax, dword [r8 + 8]
dec rbx
and eax, ebx
lea r9d, [r14 - 1]
xor ecx, eax
mov dword [rdx + 8], ecx
xor dword [r8 + 8], eax
movq xmm4, rbx
mov ecx, dword [rdx + 0x10]
mov eax, ecx
xor eax, dword [r8 + 0x10]
and eax, ebx
punpcklqdq xmm4, xmm4
xor ecx, eax
mov dword [rdx + 0x10], ecx
xor dword [r8 + 0x10], eax
mov ecx, dword [rdx + 0x14]
mov edx, ecx
mov eax, dword [r8 + 0x14]
xor rdx, rax
and edx, 4
and rdx, rbx
mov eax, edx
xor eax, ecx
mov dword [r10 + 0x14], eax
xor dword [r8 + 0x14], edx
cmp r9d, 9
ja case.default.0x18012f905
lea rdx, [0x180000000]
movsxd rax, r9d
mov ecx, dword [rdx + rax*4 + 0x12fb7c]
add rcx, rdx
jmp rcx
mov edx, 0xa
mov qword [rsp + 0x20], rdi
lea ecx, [r14 - 0xa]
cmp r14d, edx
jle 0x18012f9e6
cmp ecx, 2
jb 0x18012f9e6
mov r11, qword [r8]
mov rdi, qword [r10]
movsxd rax, r9d
mov qword [rsp + 0x10], rbp
lea rbp, [r11 + 0x50]
mov qword [rsp + 0x18], rsi
lea rsi, [rdi + 0x50]
lea r9, [r11 + rax*8]
lea rax, [rdi + rax*8]
cmp rbp, rax
ja 0x18012f958
cmp r9, rsi
jae 0x18012f9dc
cmp rbp, r8
ja 0x18012f962
cmp r9, r8
jae 0x18012f9dc
cmp rbp, r10
ja 0x18012f96c
cmp r9, r10
jae 0x18012f9dc
cmp rsi, r8
ja 0x18012f976
cmp rax, r8
jae 0x18012f9dc
cmp rsi, r10
ja 0x18012f980
cmp rax, r10
jae 0x18012f9dc
and ecx, 0x80000001
jge 0x18012f98f
dec ecx
or ecx, 0xfffffffe
inc ecx
mov r9d, r14d
sub r9d, ecx
mov eax, 0x50
nop word [rax + rax]
movdqu xmm2, xmmword [rax + r11]
add edx, 2
movdqu xmm1, xmmword [rax + rdi]
lea rax, [rax + 0x10]
movdqa xmm3, xmm2
pxor xmm3, xmm1
pand xmm3, xmm4
movdqa xmm0, xmm3
pxor xmm3, xmm2
pxor xmm0, xmm1
movdqu xmmword [rax + rdi - 0x10], xmm0
movdqu xmmword [rax + r11 - 0x10], xmm3
cmp edx, r9d
jl 0x18012f9a0
mov rsi, qword [rsp + 0x18]
mov rbp, qword [rsp + 0x10]
movsxd r11, edx
cmp r11, r14
jge 0x18012fa1d
nop
mov rax, qword [r10]
mov rcx, qword [rax + r11*8]
lea rdx, [rax + r11*8]
mov rax, qword [r8]
mov r9, qword [rax + r11*8]
xor r9, rcx
and r9, rbx
xor rcx, r9
mov qword [rdx], rcx
mov rax, qword [r8]
xor qword [rax + r11*8], r9
inc r11
cmp r11, r14
jl 0x18012f9f0
mov rdi, qword [rsp + 0x20]
mov rax, qword [r8]
mov r9, qword [r10]
mov rdx, qword [rax + 0x48]
mov rcx, qword [r9 + 0x48]
xor rdx, rcx
and rdx, rbx
xor rcx, rdx
mov qword [r9 + 0x48], rcx
mov rax, qword [r8]
xor qword [rax + 0x48], rdx
mov rax, qword [r8]
mov r9, qword [r10]
mov rdx, qword [rax + 0x40]
mov rcx, qword [r9 + 0x40]
xor rdx, rcx
and rdx, rbx
xor rcx, rdx
mov qword [r9 + 0x40], rcx
mov rax, qword [r8]
xor qword [rax + 0x40], rdx
mov rax, qword [r8]
mov r9, qword [r10]
mov rdx, qword [rax + 0x38]
mov rcx, qword [r9 + 0x38]
xor rdx, rcx
and rdx, rbx
xor rcx, rdx
mov qword [r9 + 0x38], rcx
mov rax, qword [r8]
xor qword [rax + 0x38], rdx
mov rax, qword [r8]
mov r9, qword [r10]
mov rdx, qword [rax + 0x30]
mov rcx, qword [r9 + 0x30]
xor rdx, rcx
and rdx, rbx
xor rcx, rdx
mov qword [r9 + 0x30], rcx
mov rax, qword [r8]
xor qword [rax + 0x30], rdx
mov rax, qword [r8]
mov r9, qword [r10]
mov rdx, qword [rax + 0x28]
mov rcx, qword [r9 + 0x28]
xor rdx, rcx
and rdx, rbx
xor rcx, rdx
mov qword [r9 + 0x28], rcx
mov rax, qword [r8]
xor qword [rax + 0x28], rdx
mov rax, qword [r8]
mov r9, qword [r10]
mov rdx, qword [rax + 0x20]
mov rcx, qword [r9 + 0x20]
xor rdx, rcx
and rdx, rbx
xor rcx, rdx
mov qword [r9 + 0x20], rcx
mov rax, qword [r8]
xor qword [rax + 0x20], rdx
mov rax, qword [r8]
mov r9, qword [r10]
mov rdx, qword [rax + 0x18]
mov rcx, qword [r9 + 0x18]
xor rdx, rcx
and rdx, rbx
xor rcx, rdx
mov qword [r9 + 0x18], rcx
mov rax, qword [r8]
xor qword [rax + 0x18], rdx
mov rax, qword [r8]
mov r9, qword [r10]
mov rdx, qword [rax + 0x10]
mov rcx, qword [r9 + 0x10]
xor rdx, rcx
and rdx, rbx
xor rcx, rdx
mov qword [r9 + 0x10], rcx
mov rax, qword [r8]
xor qword [rax + 0x10], rdx
mov rax, qword [r8]
mov r9, qword [r10]
mov rdx, qword [rax + 8]
mov rcx, qword [r9 + 8]
xor rdx, rcx
and rdx, rbx
xor rcx, rdx
mov qword [r9 + 8], rcx
mov rax, qword [r8]
xor qword [rax + 8], rdx
mov rax, qword [r8]
mov r9, qword [r10]
mov rcx, qword [rax]
mov rdx, qword [r9]
xor rcx, rdx
and rcx, rbx
mov rbx, qword [rsp + 0x28]
xor rdx, rcx
mov qword [r9], rdx
mov rax, qword [r8]
xor qword [rax], rcx
pop r14
ret