Function at 0x1403522e0
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
push rbp
sub rsp, 0x98
mov r15, r9
mov r12d, dword [rcx + 0x18]
mov edi, r12d
mov r9, r8
mov r8, rdx
mov r13, r8
mov r14, rcx
and edi, 0x20
je 0x14035231a
mov r14, r13
mov r8, qword [r8]
mov ebp, dword [r14 + 0x18]
jmp 0x140352337
test r12d, 0x40
je 0x140352334
test r12d, 2
jne 0x140352334
mov r8, qword [r8]
mov ebp, r12d
jmp 0x140352337
mov ebp, r12d
mov rdx, qword [r14 + 0x20]
add rdx, qword [r14 + 0x10]
lea r10, [rdx + rdx*2]
test r12d, 1
je 0x140352366
test r12d, 0x600
jne 0x140352366
cmp qword [rcx + r10*8 + 0x70], 0
je 0x140352366
mov qword [rcx + r10*8 + 0x70], 0
test ebp, 1
jne 0x140352384
xor eax, eax
add rsp, 0x98
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
mov rbp, qword [r14 + 0x20]
test rbp, rbp
jne 0x1403523b0
test r8, r8
je 0x14035236e
cmp qword [rsp + 0x100], 0
je 0x14035240b
cmp qword [r14 + 0x10], 0
je 0x14035240b
test dword [r14 + 0x18], 0x80
jne 0x1403523d8
jmp 0x14035240b
cmp qword [rsp + 0x100], 0
je 0x14035282d
cmp qword [r14 + 0x10], 0
je 0x14035282d
test dword [r14 + 0x18], 0x80
je 0x14035282d
test byte [rsp + 0x108], 1
je 0x1403523e9
mov ebx, 0xc3
jmp 0x1403523f5
mov ecx, 0xc3
xor edx, edx
call fcn.140383960
mov eax, ebx
add rsp, 0x98
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
mov r11d, 1
mov eax, r12d
mov edx, dword [rsp + 0x108]
and eax, 0x400
mov rsi, qword [rcx + r10*8 + 0x70]
mov dword [rsp + 0x90], edx
test rsi, rsi
je 0x1403525e0
movsxd rdx, dword [rsi]
mov qword [rsp + 0x88], rdx
add rsi, 8
je 0x1403525e0
mov qword [rsp + 0x30], 1
mov rdx, r8
cmp r11, 1
jb 0x1403525e0
mov qword [rsp + 0x38], r10
mov qword [rsp + 0x48], r8
mov dword [rsp + 0x50], edi
mov dword [rsp + 0x58], r12d
mov r12d, eax
mov qword [rsp + 0x60], r13
mov rax, r14
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x68], r9
mov r8, qword [rsp + 0x30]
mov r10, qword [rsp + 0x88]
xor r13d, r13d
xor r14d, r14d
test r10, r10
jle 0x1403525a8
mov qword [rsp + 0x78], r11
xor edi, edi
mov qword [rsp + 0x30], r8
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0x70], rax
mov r10d, dword [r14 + rsi]
cmp r10d, 3
cmove r10d, edi
test r10d, r10d
je 0x140352518
lea r8d, [r10 - 1]
cmp r8d, 1
ja 0x1403524ec
mov rbp, qword [rsp + 0x80]
mov rbx, qword [r14 + rsi + 0x10]
add rbp, qword [r14 + rsi + 8]
jmp 0x140352528
cmp r10d, 4
jne 0x140352528
mov rcx, qword [r14 + rsi + 0x10]
mov rbp, qword [rsp + 0x80]
add rbp, qword [r14 + rsi + 8]
test byte [rcx], 0x20
je 0x140352512
mov rbx, rbp
mov rbp, qword [rbp]
jmp 0x140352528
mov rbx, qword [rcx + 0x30]
jmp 0x140352528
mov rbx, qword [rsp + 0x80]
add rbx, qword [r14 + rsi + 8]
mov rbp, qword [rbx]
and byte [rsp + 0x90], 0xfb
test r12d, r12d
je 0x140352544
mov r8, qword [rbx + 0x18]
bts r8, 0xa
jb 0x140352544
mov qword [rbx + 0x18], r8
mov r11, rsp
mov rcx, rbx
mov r10d, dword [rsp + 0x90]
mov rdx, rbp
xor r8d, r8d
mov r9, r15
mov qword [r11 + 0x20], 0
mov dword [r11 + 0x28], r10d
call fcn.1403522e0
test eax, eax
jne 0x140352808
inc r13
add r14, 0x18
cmp r13, qword [rsp + 0x88]
jl 0x1403524bd
mov r11, qword [rsp + 0x78]
mov r8, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x80]
mov r10, qword [rsp + 0x88]
mov rax, qword [rsp + 0x70]
inc r8
add rdx, qword [rax + 8]
cmp r8, r11
jbe 0x140352495
mov r10, qword [rsp + 0x38]
mov r14, rax
mov r8, qword [rsp + 0x48]
mov eax, r12d
mov edi, dword [rsp + 0x50]
mov r12d, dword [rsp + 0x58]
mov r13, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x40]
mov r9, qword [rsp + 0x68]
mov edx, dword [rsp + 0x108]
mov rbx, qword [rcx + r10*8 + 0x48]
mov dword [rsp + 0x80], edx
test rbx, rbx
je 0x14035276d
movsxd rbp, dword [rbx]
add rbx, 8
je 0x14035276d
mov rdx, r8
mov r10d, 1
cmp r11, 1
jb 0x14035276d
mov qword [rsp + 0x48], r8
mov dword [rsp + 0x50], edi
mov rdi, rcx
mov dword [rsp + 0x58], r12d
mov r12d, eax
mov qword [rsp + 0x60], r13
mov rax, r14
mov qword [rsp + 0x68], r9
mov rcx, rbp
xor r13d, r13d
xor r14d, r14d
test rcx, rcx
jle 0x140352742
mov qword [rsp + 0x78], r11
xor ebp, ebp
mov qword [rsp + 0x30], r10
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x70], rax
mov r10d, dword [r14 + rbx]
cmp r10d, 3
cmove r10d, ebp
test r10d, r10d
je 0x1403526be
lea r8d, [r10 - 1]
cmp r8d, 1
ja 0x140352696
mov rsi, qword [rsp + 0x38]
mov rdi, qword [r14 + rbx + 0x10]
add rsi, qword [r14 + rbx + 8]
jmp 0x1403526cb
cmp r10d, 4
jne 0x1403526cb
mov rcx, qword [r14 + rbx + 0x10]
mov rsi, qword [rsp + 0x38]
add rsi, qword [r14 + rbx + 8]
test byte [rcx], 0x20
je 0x1403526b8
mov rdi, rsi
mov rsi, qword [rsi]
jmp 0x1403526cb
mov rdi, qword [rcx + 0x30]
jmp 0x1403526cb
mov rdi, qword [rsp + 0x38]
add rdi, qword [r14 + rbx + 8]
mov rsi, qword [rdi]
and byte [rsp + 0x80], 0xfb
test r12d, r12d
je 0x1403526e7
mov r8, qword [rdi + 0x18]
bts r8, 0xa
jb 0x1403526e7
mov qword [rdi + 0x18], r8
mov r11, rsp
mov rcx, rdi
mov r10d, dword [rsp + 0x80]
mov rdx, rsi
xor r8d, r8d
mov r9, r15
mov qword [r11 + 0x20], 0
mov dword [r11 + 0x28], r10d
call fcn.1403522e0
test eax, eax
jne 0x140352808
inc r13
add r14, 0x18
cmp r13, qword [rsp + 0x40]
jl 0x14035266a
mov r11, qword [rsp + 0x78]
mov r10, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x40]
mov rax, qword [rsp + 0x70]
inc r10
add rdx, qword [rax + 8]
cmp r10, r11
jbe 0x140352640
mov r8, qword [rsp + 0x48]
mov r14, rax
mov edi, dword [rsp + 0x50]
mov r12d, dword [rsp + 0x58]
mov r13, qword [rsp + 0x60]
mov r9, qword [rsp + 0x68]
test r12d, 2
jne 0x140352793
mov ebx, dword [r14 + 0x18]
mov edx, ebx
and edx, 0x200
test r9, r9
jne 0x1403527a9
test ebx, 0x80
jne 0x1403527a9
test edx, edx
jne 0x1403527ad
xor eax, eax
add rsp, 0x98
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
test edx, edx
je 0x1403527b2
test r15, r15
je 0x140352793
mov bpl, 1
cmp qword [rsp + 0x100], 0
je 0x14035281c
test ebx, 0x80
jne 0x14035281c
xor eax, eax
xor bpl, bpl
test r12d, 0x40
je 0x1403527da
test edi, edi
je 0x1403527dd
mov r13, r14
test bpl, bpl
je 0x140352808
mov qword [r13], 0
mov rdx, qword [r14 + 0x18]
test rdx, 0x40
je 0x140352800
test rdx, 0x20
je 0x140352808
and rdx, 0xfffffffffffffffe
mov qword [r14 + 0x18], rdx
add rsp, 0x98
pop rbp
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
mov rcx, r8
mov edx, dword [rsp + 0x108]
call fcn.14035c480
jmp 0x1403527cd
mov r11d, 1
test rbp, rbp
jle 0x140352411
mov rax, rbp
mov esi, 1
xor ebx, ebx
shr rax, 3
je 0x140352954
mov qword [rsp + 0x38], r10
mov qword [rsp + 0x48], r8
mov dword [rsp + 0x50], edi
mov dword [rsp + 0x58], r12d
mov qword [rsp + 0x60], r13
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x68], r9
mov qword [rsp + 0x30], r15
mov r15, rax
movsxd rbx, ebx
lea r13, [rbx + rbx*2]
inc ebx
shl r13, 6
mov eax, dword [r14 + r13 + 0xd8]
cdq
xor eax, edx
sub eax, edx
movsxd r12, eax
mov eax, dword [r14 + r13 + 0xc0]
cdq
xor eax, edx
sub eax, edx
movsxd r10, eax
mov eax, dword [r14 + r13 + 0xa8]
cdq
xor eax, edx
sub eax, edx
movsxd r9, eax
mov eax, dword [r14 + r13 + 0x90]
cdq
xor eax, edx
sub eax, edx
movsxd r8, eax
mov eax, dword [r14 + r13 + 0x78]
cdq
xor eax, edx
sub eax, edx
movsxd rdi, eax
mov eax, dword [r14 + r13 + 0x60]
cdq
xor eax, edx
sub eax, edx
movsxd rsi, eax
mov eax, dword [r14 + r13 + 0x48]
cdq
xor eax, edx
sub eax, edx
movsxd rcx, eax
mov eax, dword [r14 + r13 + 0x30]
cdq
xor eax, edx
sub eax, edx
movsxd rax, eax
imul r11, rax
imul r11, rcx
imul r11, rsi
imul r11, rdi
imul r11, r8
imul r11, r9
imul r11, r10
imul r11, r12
cmp rbx, r15
jb 0x14035287a
shl ebx, 3
movsxd rsi, ebx
mov r10, qword [rsp + 0x38]
inc rsi
mov r8, qword [rsp + 0x48]
mov edi, dword [rsp + 0x50]
mov r12d, dword [rsp + 0x58]
mov r13, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x40]
mov r9, qword [rsp + 0x68]
mov r15, qword [rsp + 0x30]
cmp rsi, rbp
ja 0x140352411
sub rbp, rsi
lea rdx, [0x140000000]
inc rbp
dec ebp
movzx eax, byte [rdx + rbp + 0x594808]
lea rax, [rdx + rax + 0x35297e]
jmp rax