Function at 0x1403c0150
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov r13, r9
mov qword [rsp + 0xd0], rcx
mov rcx, r9
mov r14, rdx
mov rsi, r8
call fcn.1401ff3e0
mov rcx, r13
call fcn.1401ff5a0
mov rbx, rax
test rax, rax
jne 0x1403c019c
jmp 0x1403c01c9
mov rcx, rbx
call fcn.1400ad3e0
test eax, eax
je 0x1403c01f0
mov rcx, rsi
call fcn.1400abf50
mov qword [rsp + 0x28], r13
xor r9d, r9d
mov rcx, rbx
mov dword [rsp + 0x20], 0
lea edx, [rax - 1]
mov r8d, 0xffffffff
call fcn.1402055b0
test eax, eax
jne 0x1403c0190
xor r12d, r12d
mov rcx, r13
call fcn.1401ff4f0
mov eax, r12d
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov qword [rsp + 0x20], r13
mov r9, rsi
mov r8, rbx
mov rdx, r14
mov rcx, qword [rsp + 0xd0]
mov r12d, eax
call fcn.1403bfa80
test eax, eax
je 0x1403c01c9
mov rcx, r13
call fcn.1401ff3e0
mov rcx, r13
call fcn.1401ff5a0
mov rcx, r13
mov qword [rsp + 0x38], rax
call fcn.1401ff5a0
mov rcx, r13
mov qword [rsp + 0x48], rax
call fcn.1401ff5a0
mov rcx, r13
mov qword [rsp + 0x30], rax
call fcn.1401ff5a0
mov qword [rsp + 0x40], rax
test rax, rax
je 0x1403c0280
mov rdi, qword [rsp + 0x30]
mov rdx, qword [rsp + 0xd0]
mov r8, rsi
mov rcx, rdi
call fcn.1403be7e0
test eax, eax
je 0x1403c0280
mov rcx, rdi
call fcn.1400ad3e0
test eax, eax
je 0x1403c028d
nop dword [rax + rax]
mov rcx, r13
call fcn.1401ff4f0
jmp 0x1403c01cc
mov r15, qword [rsp + 0x40]
mov rdx, rsi
mov rcx, r15
call fcn.1400ac7e0
test rax, rax
je 0x1403c0280
mov rcx, rdi
call fcn.1400abf50
mov rcx, r15
mov dword [rsp + 0x54], eax
call fcn.1400abf50
mov r15d, dword [rsi + 8]
mov rcx, rdi
mov dword [rsp + 0x58], eax
mov edx, r15d
mov dword [rsp + 0x50], r15d
call fcn.1400ad590
test rax, rax
je 0x1403c0280
mov rax, rdi
mov r9d, dword [rsp + 0x54]
mov rdi, qword [rdi]
movsxd rdx, dword [rax + 8]
cmp r15d, edx
jle 0x1403c030f
mov eax, dword [rsp + 0x50]
mov dword [rsp + 0x54], r9d
lea ecx, [rax - 1]
mov eax, ecx
lea rcx, [rdi + rdx*8]
sub eax, edx
xor edx, edx
lea r8, [rax*8 + 8]
call sub.msvcrt.dll_memset
mov r9d, dword [rsp + 0x54]
mov rdx, qword [rsp + 0x30]
mov eax, dword [rsp + 0x50]
mov dword [rsp + 0x54], r9d
mov rcx, qword [rsp + 0x38]
mov dword [rdx + 8], eax
mov edx, eax
call fcn.1400ad590
mov r9d, dword [rsp + 0x54]
test rax, rax
je 0x1403c0280
mov r14, qword [rsp + 0x38]
mov r15d, dword [rsp + 0x50]
mov rbp, qword [r14]
mov qword [rbp], 1
cmp r15d, 1
jle 0x1403c0768
lea eax, [r15 - 2]
xor edx, edx
lea rcx, [rbp + 8]
mov dword [rsp + 0x54], r9d
lea r8, [rax*8 + 8]
call sub.msvcrt.dll_memset
mov dword [r14 + 8], r15d
mov rcx, qword [rsp + 0x48]
mov edx, r15d
call fcn.1400ad590
mov r9d, dword [rsp + 0x54]
test rax, rax
je 0x1403c0280
mov rax, qword [rsp + 0x48]
mov r10, qword [rax]
mov edx, dword [rsp + 0x50]
mov rcx, r10
mov dword [rsp + 0x78], r9d
lea eax, [rdx - 1]
test edx, edx
mov dword [rsp + 0x54], eax
lea r8, [rax*8 + 8]
mov eax, 8
cmovle r8, rax
xor edx, edx
call sub.msvcrt.dll_memset
mov r9d, dword [rsp + 0x78]
mov r10, rax
mov edx, dword [rsp + 0x50]
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x7c], r12d
mov dword [rax + 8], edx
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0xe8], r13
mov r13d, dword [rsp + 0x58]
mov r15, qword [rax]
mov eax, edx
mov qword [rsp + 0xe0], rsi
shr eax, 1
shl rax, 4
mov rcx, rax
mov eax, edx
and eax, 0xfffffffe
mov rsi, rcx
movsxd r14, eax
mov dword [rsp + 0x78], eax
movsxd rax, dword [rsp + 0x54]
shl r14, 3
shl rax, 3
mov qword [rsp + 0x60], rax
lea eax, [rdx - 2]
add rax, 2
mov qword [rsp + 0x68], rax
nop dword [rax]
mov rcx, qword [rdi]
test r9d, r9d
je 0x1403c0660
test cl, 1
je 0x1403c06aa
cmp r9d, 0x40
jle 0x1403c05e0
cmp r9d, r13d
jge 0x1403c04a7
mov rdx, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x38]
mov eax, r9d
mov r9d, r13d
mov r13d, eax
mov rbp, r10
mov rdi, r15
mov rax, rdx
mov r10, qword [rbx]
mov r15, qword [rdx]
mov rdx, qword [rsp + 0x40]
mov qword [rsp + 0x40], rax
mov rax, rbx
mov rbx, qword [rsp + 0x48]
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x38], rbx
mov eax, dword [rsp + 0x50]
test eax, eax
jle 0x1403c0564
lea rax, [rdi + 0xf]
mov rdx, rax
mov rcx, rax
sub rdx, r15
cmp rdx, 0x1e
seta dl
sub rcx, rbp
cmp rcx, 0x1e
seta cl
and ecx, edx
cmp dword [rsp + 0x54], 1
seta dl
sub rax, r10
and edx, ecx
cmp rax, 0x1e
lea rax, [r15 + 0xf]
seta cl
sub rax, rbp
and edx, ecx
cmp rax, 0x1e
seta al
test dl, al
je 0x1403c067e
lea rax, [rbp + 0xf]
sub rax, r10
cmp rax, 0x1e
jbe 0x1403c067e
xor eax, eax
nop word [rax + rax]
movdqu xmm0, xmmword [rdi + rax]
movdqu xmm1, xmmword [r15 + rax]
pxor xmm0, xmm1
movups xmmword [rdi + rax], xmm0
movdqu xmm0, xmmword [rbp + rax]
movdqu xmm2, xmmword [r10 + rax]
pxor xmm0, xmm2
movups xmmword [rbp + rax], xmm0
add rax, 0x10
cmp rax, rsi
jne 0x1403c0518
mov ebx, dword [rsp + 0x78]
cmp dword [rsp + 0x50], ebx
je 0x1403c0564
mov rax, qword [r15 + r14]
xor qword [rdi + r14], rax
mov rax, qword [r10 + r14]
xor qword [rbp + r14], rax
cmp r9d, r13d
jne 0x1403c0440
mov edx, r13d
lea eax, [r13 + 0x3e]
sub edx, 1
cmovns eax, edx
sar eax, 6
movsxd rdx, eax
mov ebx, eax
mov rcx, qword [rdi + rdx*8]
test rcx, rcx
jne 0x1403c07a9
test eax, eax
je 0x1403c05c3
lea ecx, [rax - 1]
sub rdx, 2
movsxd rax, ecx
mov ecx, ecx
sub rdx, rcx
jmp 0x1403c05b5
sub rax, 1
cmp rax, rdx
je 0x1403c0759
mov rcx, qword [rdi + rax*8]
test rcx, rcx
je 0x1403c05a8
mov ebx, eax
shl ebx, 6
mov qword [rsp + 0x58], r10
call fcn.1400abe80
mov r10, qword [rsp + 0x58]
lea r9d, [rax + rbx]
jmp 0x1403c0440
cmp rcx, 1
jne 0x1403c045f
mov rdi, qword [rsp + 0x38]
mov rbx, qword [rsp + 0x70]
mov r12d, dword [rsp + 0x7c]
mov rsi, qword [rsp + 0xe0]
mov rcx, rdi
mov r13, qword [rsp + 0xe8]
call fcn.1400ad7a0
mov rcx, qword [rsp + 0xd0]
mov rdx, rdi
call fcn.1400ac7e0
test rax, rax
je 0x1403c0280
mov rcx, r13
xor r12d, r12d
call fcn.1401ff4f0
mov qword [rsp + 0x20], r13
mov r9, rsi
mov r8, rbx
mov rdx, qword [rsp + 0xd0]
mov rcx, rdx
call fcn.1403bfa80
test eax, eax
setne r12b
jmp 0x1403c01cc
test rcx, rcx
jne 0x1403c05e0
mov r13, qword [rsp + 0xe8]
mov rcx, r13
call fcn.1401ff4f0
jmp 0x1403c01c9
mov ecx, dword [rsp + 0x54]
xor eax, eax
nop dword [rax]
mov rdx, qword [r15 + rax*8]
xor qword [rdi + rax*8], rdx
mov rdx, qword [r10 + rax*8]
xor qword [rbp + rax*8], rdx
mov rdx, rax
add rax, 1
cmp rdx, rcx
jne 0x1403c0688
jmp 0x1403c0564
mov rbx, qword [rsp + 0xe0]
mov rax, qword [rbp]
mov edx, dword [rsp + 0x54]
mov rbx, qword [rbx]
mov r11, rax
and r11d, 1
mov r8, qword [rbx]
neg r11
and r8, r11
xor r8, rax
test edx, edx
jle 0x1403c0760
mov qword [rsp + 0x58], r15
mov r12, qword [rsp + 0x68]
mov eax, 1
nop word [rax + rax]
mov rdx, rcx
mov rcx, qword [rdi + rax*8]
shr rdx, 1
mov r15, rcx
shl r15, 0x3f
or rdx, r15
mov qword [rdi + rax*8 - 8], rdx
mov rdx, r8
mov r8, qword [rbx + rax*8]
shr rdx, 1
and r8, r11
xor r8, qword [rbp + rax*8]
mov r15, r8
shl r15, 0x3f
or rdx, r15
mov qword [rbp + rax*8 - 8], rdx
add rax, 1
cmp rax, r12
jne 0x1403c06f0
mov rax, qword [rsp + 0x60]
mov r15, qword [rsp + 0x58]
lea rdx, [rdi + rax]
add rax, rbp
shr rcx, 1
shr r8, 1
sub r9d, 1
mov qword [rdx], rcx
mov qword [rax], r8
jmp 0x1403c0440
xor ebx, ebx
jmp 0x1403c05c3
mov rax, rbp
mov rdx, rdi
jmp 0x1403c0744
mov dword [r14 + 8], r15d
mov r14, qword [rsp + 0x48]
mov edx, r15d
mov dword [rsp + 0x54], r9d
mov rcx, r14
call fcn.1400ad590
test rax, rax
je 0x1403c0280
cmp r15d, 1
mov r10, qword [r14]
mov r9d, dword [rsp + 0x54]
je 0x1403c039c
lea eax, [r15 - 1]
mov dword [rsp + 0x54], eax
jmp 0x1403c03d1
shl ebx, 6
jmp 0x1403c05c3