Function at 0x14012fcb0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push r12
push r15
sub rsp, 0x20
xor r12d, r12d
mov ebp, r8d
mov r15, rdx
mov rbx, rcx
test rcx, rcx
je 0x140130133
test rdx, rdx
jne 0x14012fce1
test r8d, r8d
jne 0x140130133
mov edx, dword [rcx]
cmp edx, 0x40
jb 0x14012fcfc
mov eax, 0xffffff7c
mov rbx, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r12
pop rbp
ret
test r15, r15
jne 0x14012fd16
test ebp, ebp
jne 0x14012fd16
xor eax, eax
mov rbx, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r12
pop rbp
ret
mov ecx, dword [rcx + 4]
mov qword [rsp + 0x50], r14
lea eax, [rcx + r8]
mov dword [rbx + 4], eax
cmp eax, ecx
jae 0x14012fd2c
inc dword [rbx + 8]
mov qword [rsp + 0x48], rdi
lea r14, [rbx + 0xc]
test edx, edx
je 0x14012ff0c
mov qword [rsp + 0x40], rsi
lea rcx, [r14 + rdx]
mov esi, 0x40
sub esi, edx
mov rdx, r15
cmp ebp, esi
cmovb esi, ebp
mov r8d, esi
mov edi, esi
call fcn.14016e8e0
add dword [rbx], esi
sub ebp, esi
mov rsi, qword [rsp + 0x40]
add r15, rdi
cmp dword [rbx], 0x40
jne 0x14012ff0c
mov ecx, dword [r14]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14], ecx
mov ecx, dword [rbx + 0x10]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x10], ecx
mov ecx, dword [rbx + 0x14]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x14], ecx
mov ecx, dword [rbx + 0x18]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x18], ecx
mov ecx, dword [rbx + 0x1c]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x1c], ecx
mov ecx, dword [rbx + 0x20]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x20], ecx
mov ecx, dword [rbx + 0x24]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x24], ecx
mov ecx, dword [rbx + 0x28]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x28], ecx
mov ecx, dword [rbx + 0x2c]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x2c], ecx
mov ecx, dword [rbx + 0x30]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x30], ecx
mov ecx, dword [rbx + 0x34]
mov eax, ecx
mov rdx, r14
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x34], ecx
mov ecx, dword [rbx + 0x38]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x38], ecx
mov ecx, dword [rbx + 0x3c]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x3c], ecx
mov ecx, dword [rbx + 0x40]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x40], ecx
mov ecx, dword [rbx + 0x44]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x44], ecx
mov ecx, dword [rbx + 0x48]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [rbx + 0x48], ecx
mov rcx, rbx
call fcn.14012eb10
mov r12d, eax
test eax, eax
jne 0x14013011a
mov dword [rbx], eax
cmp ebp, 0x40
jb 0x140130103
mov edi, ebp
shr rdi, 6
nop dword [rax + rax]
movups xmm0, xmmword [r15]
add ebp, 0xffffffc0
movups xmmword [r14], xmm0
movups xmm1, xmmword [r15 + 0x10]
movups xmmword [r14 + 0x10], xmm1
movups xmm0, xmmword [r15 + 0x20]
movups xmmword [r14 + 0x20], xmm0
movups xmm1, xmmword [r15 + 0x30]
add r15, 0x40
movups xmmword [r14 + 0x30], xmm1
mov ecx, dword [r14]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14], ecx
mov ecx, dword [r14 + 4]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 4], ecx
mov ecx, dword [r14 + 8]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 8], ecx
mov ecx, dword [r14 + 0xc]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0xc], ecx
mov ecx, dword [r14 + 0x10]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x10], ecx
mov ecx, dword [r14 + 0x14]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x14], ecx
mov ecx, dword [r14 + 0x18]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x18], ecx
mov ecx, dword [r14 + 0x1c]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x1c], ecx
mov ecx, dword [r14 + 0x20]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x20], ecx
mov rdx, r14
mov ecx, dword [r14 + 0x24]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x24], ecx
mov ecx, dword [r14 + 0x28]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x28], ecx
mov ecx, dword [r14 + 0x2c]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x2c], ecx
mov ecx, dword [r14 + 0x30]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x30], ecx
mov ecx, dword [r14 + 0x34]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x34], ecx
mov ecx, dword [r14 + 0x38]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x38], ecx
mov ecx, dword [r14 + 0x3c]
mov eax, ecx
rol ecx, 8
ror eax, 8
xor ecx, eax
and ecx, 0xff00ff
xor ecx, eax
mov dword [r14 + 0x3c], ecx
mov rcx, rbx
call fcn.14012eb10
mov r12d, eax
sub rdi, 1
jne 0x14012ff20
test ebp, ebp
je 0x140130117
mov r8d, ebp
mov rdx, r15
mov rcx, r14
call fcn.14016e8e0
mov dword [rbx], ebp
mov eax, r12d
mov rdi, qword [rsp + 0x48]
mov r14, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r12
pop rbp
ret
mov rbx, qword [rsp + 0x58]
mov eax, 0xffffff53
add rsp, 0x20
pop r15
pop r12
pop rbp
ret