Function at 0x140352b30
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
push rbp
sub rsp, 0x88
mov r10, rcx
mov r14, rdx
mov r15, r10
mov dword [rsp + 0xe0], r8d
mov rcx, r14
mov r13d, dword [r10 + 0x18]
mov r12d, r13d
and r12d, 0x20
je 0x140352b70
mov ebx, dword [r14 + 0x18]
mov r15, rcx
mov rcx, qword [r14]
jmp 0x140352b8d
test r13d, 0x40
je 0x140352b8a
test r13d, 2
jne 0x140352b8a
mov rcx, qword [r14]
mov ebx, r13d
jmp 0x140352b8d
mov ebx, r13d
mov rax, qword [r15 + 0x20]
add rax, qword [r15 + 0x10]
lea r9, [rax + rax*2]
test r13d, 1
je 0x140352bbc
test r13d, 0x600
jne 0x140352bbc
cmp qword [r10 + r9*8 + 0x70], 0
je 0x140352bbc
mov qword [r10 + r9*8 + 0x70], 0
test bl, 1
jne 0x140352bd7
xor eax, eax
add rsp, 0x88
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
mov rbp, qword [r15 + 0x20]
test rbp, rbp
jne 0x140352bf0
test rcx, rcx
je 0x140352bc1
mov r8d, 1
jmp 0x140352dbc
mov r8d, 1
jle 0x140352dbc
mov rbx, rbp
mov edi, 1
xor esi, esi
shr rbx, 3
je 0x140352cff
mov qword [rsp + 0x30], r9
mov dword [rsp + 0x40], r12d
mov qword [rsp + 0x48], rcx
mov dword [rsp + 0x50], r13d
mov qword [rsp + 0x38], r10
mov qword [rsp + 0x58], r14
movsxd rsi, esi
lea r14, [rsi + rsi*2]
inc esi
shl r14, 6
mov eax, dword [r15 + r14 + 0xd8]
cdq
xor eax, edx
sub eax, edx
movsxd r13, eax
mov eax, dword [r15 + r14 + 0xc0]
cdq
xor eax, edx
sub eax, edx
movsxd r12, eax
mov eax, dword [r15 + r14 + 0xa8]
cdq
xor eax, edx
sub eax, edx
movsxd r11, eax
mov eax, dword [r15 + r14 + 0x90]
cdq
xor eax, edx
sub eax, edx
movsxd r10, eax
mov eax, dword [r15 + r14 + 0x78]
cdq
xor eax, edx
sub eax, edx
movsxd r9, eax
mov eax, dword [r15 + r14 + 0x60]
cdq
xor eax, edx
sub eax, edx
movsxd rdi, eax
mov eax, dword [r15 + r14 + 0x48]
cdq
xor eax, edx
sub eax, edx
movsxd rcx, eax
mov eax, dword [r15 + r14 + 0x30]
cdq
xor eax, edx
sub eax, edx
movsxd rax, eax
imul r8, rax
imul r8, rcx
imul r8, rdi
imul r8, r9
imul r8, r10
imul r8, r11
imul r8, r12
imul r8, r13
cmp rsi, rbx
jb 0x140352c2e
shl esi, 3
movsxd rdi, esi
mov r9, qword [rsp + 0x30]
inc rdi
mov r12d, dword [rsp + 0x40]
mov rcx, qword [rsp + 0x48]
mov r13d, dword [rsp + 0x50]
mov r10, qword [rsp + 0x38]
mov r14, qword [rsp + 0x58]
cmp rdi, rbp
ja 0x140352dbc
sub rbp, rdi
lea rbx, [0x140000000]
inc rbp
dec ebp
movzx eax, byte [rbx + rbp + 0x594810]
lea rax, [rbx + rax + 0x352d29]
jmp rax
mov edi, r13d
mov r11d, dword [rsp + 0xe0]
and edi, 0x400
mov rsi, qword [r10 + r9*8 + 0x70]
mov dword [rsp + 0x80], r11d
test rsi, rsi
je 0x140352f62
movsxd rax, dword [rsi]
mov qword [rsp + 0x60], rax
add rsi, 8
je 0x140352f62
mov rdx, rcx
mov eax, 1
cmp r8, 1
jb 0x140352f62
mov qword [rsp + 0x58], r14
mov qword [rsp + 0x30], r9
mov dword [rsp + 0x40], r12d
mov qword [rsp + 0x48], rcx
mov rcx, rdx
mov dword [rsp + 0x50], r13d
mov rdx, r15
mov qword [rsp + 0x38], r10
mov r14, qword [rsp + 0x60]
xor r12d, r12d
xor r13d, r13d
test r14, r14
jle 0x140352f29
mov qword [rsp + 0x70], rax
xor r15d, r15d
mov qword [rsp + 0x78], rcx
mov qword [rsp + 0x68], r8
mov qword [rsp + 0x60], rdx
mov r8d, dword [r13 + rsi]
cmp r8d, 3
cmove r8d, r15d
test r8d, r8d
je 0x140352eab
lea eax, [r8 - 1]
cmp eax, 1
ja 0x140352e82
mov rbp, qword [rsp + 0x78]
mov rbx, qword [r13 + rsi + 0x10]
add rbp, qword [r13 + rsi + 8]
jmp 0x140352eb8
cmp r8d, 4
jne 0x140352eb8
mov rax, qword [r13 + rsi + 0x10]
mov rbp, qword [rsp + 0x78]
add rbp, qword [r13 + rsi + 8]
test byte [rax], 0x20
je 0x140352ea5
mov rbx, rbp
mov rbp, qword [rbp]
jmp 0x140352eb8
mov rbx, qword [rax + 0x30]
jmp 0x140352eb8
mov rbx, qword [rsp + 0x78]
add rbx, qword [r13 + rsi + 8]
mov rbp, qword [rbx]
and byte [rsp + 0x80], 0xfb
test edi, edi
je 0x140352ed3
mov rax, qword [rbx + 0x18]
bts rax, 0xa
jb 0x140352ed3
mov qword [rbx + 0x18], rax
mov r10, rsp
mov rcx, rbx
mov eax, dword [rsp + 0x80]
mov rdx, rbp
xor r8d, r8d
mov r9d, 1
mov qword [r10 + 0x20], 0
mov dword [r10 + 0x28], eax
call fcn.1403522e0
test eax, eax
jne 0x14035311b
inc r12
add r13, 0x18
cmp r12, r14
jl 0x140352e56
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x78]
mov r8, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x60]
inc rax
add rcx, qword [rdx + 8]
cmp rax, r8
jbe 0x140352e30
mov r9, qword [rsp + 0x30]
mov r15, rdx
mov r12d, dword [rsp + 0x40]
mov rcx, qword [rsp + 0x48]
mov r13d, dword [rsp + 0x50]
mov r10, qword [rsp + 0x38]
mov r14, qword [rsp + 0x58]
mov r11d, dword [rsp + 0xe0]
mov rdx, qword [r10 + r9*8 + 0x48]
mov dword [rsp + 0x70], r11d
test rdx, rdx
je 0x1403530cc
movsxd rsi, dword [rdx]
add rdx, 8
je 0x1403530cc
mov r9, rcx
mov eax, 1
cmp r8, 1
jb 0x1403530cc
mov dword [rsp + 0x40], r12d
mov r12, rbx
mov qword [rsp + 0x48], rcx
mov dword [rsp + 0x50], r13d
mov r13, rbp
mov qword [rsp + 0x58], r14
mov r14, rdx
mov rdx, r15
xor ebp, ebp
xor ebx, ebx
test rsi, rsi
jle 0x1403530a5
mov qword [rsp + 0x30], rax
xor r15d, r15d
mov qword [rsp + 0x38], r9
mov qword [rsp + 0x68], r8
mov qword [rsp + 0x60], rdx
mov r8d, dword [rbx + r14]
cmp r8d, 3
cmove r8d, r15d
test r8d, r8d
je 0x14035302c
lea eax, [r8 - 1]
cmp eax, 1
ja 0x140353003
mov r12, qword [rsp + 0x38]
mov r13, qword [rbx + r14 + 0x10]
add r12, qword [rbx + r14 + 8]
jmp 0x14035303a
cmp r8d, 4
jne 0x14035303a
mov rax, qword [rbx + r14 + 0x10]
mov r12, qword [rsp + 0x38]
add r12, qword [rbx + r14 + 8]
test byte [rax], 0x20
je 0x140353026
mov r13, r12
mov r12, qword [r12]
jmp 0x14035303a
mov r13, qword [rax + 0x30]
jmp 0x14035303a
mov r13, qword [rsp + 0x38]
add r13, qword [rbx + r14 + 8]
mov r12, qword [r13]
and byte [rsp + 0x70], 0xfb
test edi, edi
je 0x140353052
mov rax, qword [r13 + 0x18]
bts rax, 0xa
jb 0x140353052
mov qword [r13 + 0x18], rax
mov r10, rsp
mov rcx, r13
mov eax, dword [rsp + 0x70]
mov rdx, r12
xor r8d, r8d
mov r9d, 1
mov qword [r10 + 0x20], 0
mov dword [r10 + 0x28], eax
call fcn.1403522e0
test eax, eax
jne 0x14035311b
inc rbp
add rbx, 0x18
cmp rbp, rsi
jl 0x140352fd8
mov rax, qword [rsp + 0x30]
mov r9, qword [rsp + 0x38]
mov r8, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x60]
inc rax
add r9, qword [rdx + 8]
cmp rax, r8
jbe 0x140352fb4
mov r12d, dword [rsp + 0x40]
mov r15, rdx
mov rcx, qword [rsp + 0x48]
mov r13d, dword [rsp + 0x50]
mov r14, qword [rsp + 0x58]
test r13d, 2
jne 0x140352bc1
mov edx, dword [rsp + 0xe0]
call fcn.14035c480
test r13d, 0x40
je 0x1403530f3
test r12d, r12d
je 0x1403530f6
mov r14, r15
mov qword [r14], 0
mov rcx, qword [r15 + 0x18]
test rcx, 0x40
je 0x140353113
test rcx, 0x20
je 0x14035311b
and rcx, 0xfffffffffffffffe
mov qword [r15 + 0x18], rcx
add rsp, 0x88
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret