Function at 0x1403b9290
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
cmp dword [rcx + 0x35c], 0x10
jbe 0x1403b92b3
mov ebp, 0x16
jmp 0x1403b9672
mov rsi, r9
mov r14d, r8d
mov r12, rdx
mov rbx, rcx
mov ecx, dword [rcx + 0x350]
call fcn.1401eb680
mov ebp, eax
test eax, eax
jne 0x1403b9672
mov rax, qword [rbx + 0x368]
shr rax, 3
movsxd rcx, dword [rbx + 0x35c]
mov r13d, r14d
add rax, r13
add rax, rcx
shr rax, 5
cmp rax, 0x7ffffffe
ja 0x1403b92a9
mov eax, dword [rbx + 0x358]
test eax, eax
jne 0x1403b9322
mov rcx, rbx
xor edx, edx
xor r8d, r8d
call fcn.1403b9a30
mov ebp, eax
test eax, eax
jne 0x1403b9672
mov eax, dword [rbx + 0x358]
mov r8d, dword [rsp + 0xa0]
cmp eax, 2
je 0x1403b93c6
mov ebp, 0x16
cmp eax, 1
jne 0x1403b9672
mov edi, r8d
movsxd rax, dword [rbx + 0x35c]
test rax, rax
je 0x1403b936a
shl rax, 3
add qword [rbx + 0x360], rax
lea rdx, [rbx + 0x310]
mov rcx, rbx
call fcn.14049f100
mov eax, 0xf
inc byte [rbx + rax + 0x320]
jne 0x1403b9381
dec rax
cmp rax, 0xb
ja 0x1403b936f
movsxd rax, dword [rbx + 0x350]
lea rbp, [rax + rax*4]
shl rbp, 5
lea rax, [0x14066abf0]
lea rdx, [rbx + 0x340]
lea rcx, [rbx + 0x320]
mov r8, rbx
call qword [rbp + rax + 0x28]
mov ebp, eax
test eax, eax
jne 0x1403b9672
mov r8d, edi
mov qword [rbx + 0x358], 2
jmp 0x1403b93d6
xor r15d, r15d
cmp dword [rbx + 0x35c], 0
jne 0x1403b957c
mov eax, r14d
and eax, 0xfffffff0
test r8d, r8d
je 0x1403b93f1
test eax, eax
jne 0x1403b94a6
xor r15d, r15d
jmp 0x1403b957c
test eax, eax
je 0x1403b93e9
lea rcx, [rbx + 0x310]
mov qword [rsp + 0x28], rcx
lea rcx, [rbx + 0x340]
mov qword [rsp + 0x20], rcx
lea rdi, [rbx + 0x320]
mov eax, eax
mov qword [rsp + 0x30], rax
xor r15d, r15d
xor eax, eax
lea rcx, [rax + r15]
mov rdx, qword [rbx + rax + 0x340]
xor rdx, qword [r12 + rcx]
mov qword [rsi + rcx], rdx
xor qword [rbx + rax + 0x310], rdx
add rax, 8
cmp rax, 0x10
jb 0x1403b9420
sub qword [rbx + 0x368], 0xffffffffffffff80
mov rcx, rbx
mov rdx, qword [rsp + 0x28]
call fcn.14049f100
mov eax, 0xf
inc byte [rbx + rax + 0x320]
jne 0x1403b9472
dec rax
cmp rax, 0xb
ja 0x1403b9460
movsxd rax, dword [rbx + 0x350]
lea rbp, [rax + rax*4]
shl rbp, 5
mov rcx, rdi
mov rdx, qword [rsp + 0x20]
mov r8, rbx
lea rax, [0x14066abf0]
call qword [rbp + rax + 0x28]
test eax, eax
je 0x1403b9565
mov ebp, eax
jmp 0x1403b9672
lea rcx, [rbx + 0x310]
mov qword [rsp + 0x28], rcx
lea rcx, [rbx + 0x340]
mov qword [rsp + 0x20], rcx
lea rdi, [rbx + 0x320]
mov eax, eax
mov qword [rsp + 0x30], rax
xor r15d, r15d
xor eax, eax
lea rcx, [rax + r15]
mov rdx, qword [rsi + rcx]
xor qword [rbx + rax + 0x310], rdx
mov rdx, qword [rbx + rax + 0x340]
xor rdx, qword [rsi + rcx]
mov qword [r12 + rcx], rdx
add rax, 8
cmp rax, 0x10
jb 0x1403b94d1
sub qword [rbx + 0x368], 0xffffffffffffff80
mov rcx, rbx
mov rdx, qword [rsp + 0x28]
call fcn.14049f100
mov eax, 0xf
inc byte [rbx + rax + 0x320]
jne 0x1403b9527
dec rax
cmp rax, 0xb
ja 0x1403b9515
movsxd rax, dword [rbx + 0x350]
lea rbp, [rax + rax*4]
shl rbp, 5
mov rcx, rdi
mov rdx, qword [rsp + 0x20]
mov r8, rbx
lea rax, [0x14066abf0]
call qword [rbp + rax + 0x28]
test eax, eax
jne 0x1403b949f
add r15, 0x10
cmp r15, qword [rsp + 0x30]
jb 0x1403b94cf
jmp 0x1403b9574
add r15, 0x10
cmp r15, qword [rsp + 0x30]
jb 0x1403b941e
mov r8d, dword [rsp + 0xa0]
xor ebp, ebp
cmp r15d, r14d
jae 0x1403b9672
lea rax, [rbx + 0x310]
mov qword [rsp + 0x28], rax
lea rax, [rbx + 0x340]
mov qword [rsp + 0x20], rax
lea r14, [rbx + 0x320]
mov edi, r15d
mov ecx, dword [rbx + 0x35c]
cmp ecx, 0x10
jne 0x1403b9620
mov r15d, r8d
sub qword [rbx + 0x368], 0xffffffffffffff80
mov rcx, rbx
mov rdx, qword [rsp + 0x28]
call fcn.14049f100
mov eax, 0xf
inc byte [rbx + rax + 0x320]
jne 0x1403b95e3
dec rax
cmp rax, 0xb
ja 0x1403b95d1
movsxd rax, dword [rbx + 0x350]
lea r9, [rax + rax*4]
shl r9, 5
mov rcx, r14
mov rdx, qword [rsp + 0x20]
mov r8, rbx
lea rax, [0x14066abf0]
call qword [r9 + rax + 0x28]
test eax, eax
jne 0x1403b949f
mov dword [rbx + 0x35c], 0
xor ecx, ecx
mov r8d, r15d
test r8d, r8d
jne 0x1403b963a
movsxd rax, ecx
mov cl, byte [rbx + rax + 0x340]
xor cl, byte [r12 + rdi]
mov rdx, rsi
mov eax, ecx
jmp 0x1403b964c
mov al, byte [rsi + rdi]
movsxd rcx, ecx
mov cl, byte [rbx + rcx + 0x340]
xor cl, al
mov rdx, r12
mov byte [rdx + rdi], cl
movsxd rcx, dword [rbx + 0x35c]
lea edx, [rcx + 1]
mov dword [rbx + 0x35c], edx
xor byte [rbx + rcx + 0x310], al
inc rdi
cmp rdi, r13
jb 0x1403b95a9
mov eax, ebp
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret