Function at 0x140353130
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 0x140353170
mov ebx, dword [r14 + 0x18]
mov r15, rcx
mov rcx, qword [r14]
jmp 0x14035318d
test r13d, 0x40
je 0x14035318a
test r13d, 2
jne 0x14035318a
mov rcx, qword [r14]
mov ebx, r13d
jmp 0x14035318d
mov ebx, r13d
mov rax, qword [r15 + 0x20]
add rax, qword [r15 + 0x10]
lea r9, [rax + rax*2]
test r13d, 1
je 0x1403531bc
test r13d, 0x600
jne 0x1403531bc
cmp qword [r10 + r9*8 + 0x70], 0
je 0x1403531bc
mov qword [r10 + r9*8 + 0x70], 0
test bl, 1
jne 0x1403531d7
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 0x1403531f0
test rcx, rcx
je 0x1403531c1
mov r8d, 1
jmp 0x1403533bc
mov r8d, 1
jle 0x1403533bc
mov rbx, rbp
mov edi, 1
xor esi, esi
shr rbx, 3
je 0x1403532ff
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 0x14035322e
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 0x1403533bc
sub rbp, rdi
lea rbx, [0x140000000]
inc rbp
dec ebp
movzx eax, byte [rbx + rbp + 0x594818]
lea rax, [rbx + rax + 0x353329]
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 0x14035355f
movsxd rax, dword [rsi]
mov qword [rsp + 0x60], rax
add rsi, 8
je 0x14035355f
mov rdx, rcx
mov eax, 1
cmp r8, 1
jb 0x14035355f
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 0x140353526
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 0x1403534ab
lea eax, [r8 - 1]
cmp eax, 1
ja 0x140353482
mov rbp, qword [rsp + 0x78]
mov rbx, qword [r13 + rsi + 0x10]
add rbp, qword [r13 + rsi + 8]
jmp 0x1403534b8
cmp r8d, 4
jne 0x1403534b8
mov rax, qword [r13 + rsi + 0x10]
mov rbp, qword [rsp + 0x78]
add rbp, qword [r13 + rsi + 8]
test byte [rax], 0x20
je 0x1403534a5
mov rbx, rbp
mov rbp, qword [rbp]
jmp 0x1403534b8
mov rbx, qword [rax + 0x30]
jmp 0x1403534b8
mov rbx, qword [rsp + 0x78]
add rbx, qword [r13 + rsi + 8]
mov rbp, qword [rbx]
and byte [rsp + 0x80], 0xfb
test edi, edi
je 0x1403534d3
mov rax, qword [rbx + 0x18]
bts rax, 0xa
jb 0x1403534d3
mov qword [rbx + 0x18], rax
mov r10, rsp
xor r8d, r8d
mov eax, dword [rsp + 0x80]
mov rcx, rbx
mov rdx, rbp
xor r9d, r9d
mov qword [r10 + 0x20], 0
mov dword [r10 + 0x28], eax
call fcn.1403522e0
test eax, eax
jne 0x140353723
inc r12
add r13, 0x18
cmp r12, r14
jl 0x140353456
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 0x140353430
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 0x1403536c6
movsxd rsi, dword [rdx]
add rdx, 8
je 0x1403536c6
mov r9, rcx
mov eax, 1
cmp r8, 1
jb 0x1403536c6
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 0x14035369f
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 0x140353629
lea eax, [r8 - 1]
cmp eax, 1
ja 0x140353600
mov r12, qword [rsp + 0x38]
mov r13, qword [rbx + r14 + 0x10]
add r12, qword [rbx + r14 + 8]
jmp 0x140353637
cmp r8d, 4
jne 0x140353637
mov rax, qword [rbx + r14 + 0x10]
mov r12, qword [rsp + 0x38]
add r12, qword [rbx + r14 + 8]
test byte [rax], 0x20
je 0x140353623
mov r13, r12
mov r12, qword [r12]
jmp 0x140353637
mov r13, qword [rax + 0x30]
jmp 0x140353637
mov r13, qword [rsp + 0x38]
add r13, qword [rbx + r14 + 8]
mov r12, qword [r13]
and byte [rsp + 0x70], 0xfb
test edi, edi
je 0x14035364f
mov rax, qword [r13 + 0x18]
bts rax, 0xa
jb 0x14035364f
mov qword [r13 + 0x18], rax
mov r10, rsp
xor r8d, r8d
mov eax, dword [rsp + 0x70]
mov rcx, r13
mov rdx, r12
xor r9d, r9d
mov qword [r10 + 0x20], 0
mov dword [r10 + 0x28], eax
call fcn.1403522e0
test eax, eax
jne 0x140353723
inc rbp
add rbx, 0x18
cmp rbp, rsi
jl 0x1403535d5
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 0x1403535b1
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 0x1403531c1
test dword [r15 + 0x18], 0x200
jne 0x1403531c1
mov edx, dword [rsp + 0xe0]
call fcn.14035c480
test r13d, 0x40
je 0x1403536fb
test r12d, r12d
je 0x1403536fe
mov r14, r15
mov qword [r14], 0
mov rcx, qword [r15 + 0x18]
test rcx, 0x40
je 0x14035371b
test rcx, 0x20
je 0x140353723
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