Function at 0x180163550
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r12
push r14
push r15
mov eax, 0xd8
call fcn.1801384e0
sub rsp, rax
mov rax, qword [0x18033f448]
xor rax, rsp
mov qword [rsp + 0xb0], rax
mov r12, qword [rsp + 0x140]
lea edi, [rdx - 1]
mov rax, qword [rsp + 0x130]
mov ebx, r9d
mov rsi, qword [rsp + 0x148]
mov r14, rcx
mov dword [rsp + 0x38], ebx
mov qword [rsp + 0x48], r8
mov qword [rsp + 0x58], rcx
mov qword [rsp + 0x40], rax
test r12, r12
jne 0x1801635ba
call fcn.18015c220
mov r12, rax
test rsi, rsi
mov rcx, r12
cmove rsi, r12
mov qword [rsp + 0x50], rsi
call fcn.18015d8b0
movsxd rsi, eax
mov r15d, edi
lea eax, [rsi + rsi]
sub r15d, eax
lea ecx, [r15 - 1]
cmp ebx, ecx
jle 0x18016360b
mov edx, 0xa0
mov dword [rsp + 0x20], 0x3a
lea r9, [0x180350888]
mov ecx, 4
lea r8d, [rdx - 0x32]
call fcn.18013df80
xor eax, eax
jmp 0x180163999
inc eax
cmp edi, eax
jge 0x18016363a
mov edx, 0xa0
mov dword [rsp + 0x20], 0x40
lea r9, [0x1803508a0]
mov ecx, 4
lea r8d, [rdx - 0x28]
call fcn.18013df80
xor eax, eax
jmp 0x180163999
movsxd rdx, dword [rsp + 0x138]
lea rax, [rsi + r14]
mov rcx, qword [rsp + 0x40]
mov rbx, rsi
mov qword [rsp + 0xd0], rbp
xor r9d, r9d
mov byte [r14], 0
lea rbp, [r14 + 1]
mov qword [rsp + 0xc8], r13
xor r14d, r14d
lea r13, [rax + 1]
mov qword [rsp + 0x28], r14
mov r8, r13
mov qword [rsp + 0x20], r12
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x30], rax
call fcn.18017aee0
test eax, eax
je 0x180163987
movsxd r12, dword [rsp + 0x38]
xor edx, edx
sub r15d, r12d
dec r15d
movsxd r8, r15d
mov r15, qword [rsp + 0x30]
lea rcx, [r15 + 1]
add rcx, rbx
call fcn.1801b4ba0
mov rdx, qword [rsp + 0x48]
mov eax, edi
sub eax, r12d
movsxd rcx, edi
sub rcx, r12
mov r8d, r12d
sub rcx, rbx
sub eax, esi
cdqe
inc rcx
add rcx, r15
mov byte [rax + r15], 1
call fcn.1801b44f0
mov edx, esi
mov rcx, rbp
call fcn.18014b180
test eax, eax
jle 0x180163987
sub edi, esi
lea r8d, [r14 + 0x55]
mov ecx, edi
lea rdx, [0x1803508b8]
call fcn.18013d670
mov r15, rax
test rax, rax
jne 0x180163732
lea r9, [0x1803508d0]
mov dword [rsp + 0x20], 0x57
mov edx, 0xa0
lea ecx, [rax + 4]
lea r8d, [r14 + 0x41]
call fcn.18013df80
jmp 0x180163987
mov r12, qword [rsp + 0x50]
mov r9d, esi
mov r8, rbp
mov qword [rsp + 0x20], r12
mov edx, edi
mov rcx, r15
call fcn.180163340
test eax, eax
js 0x18016397f
mov r9d, r14d
test edi, edi
jle 0x180163811
cmp edi, 0x40
jb 0x180163811
lea eax, [rdi - 1]
movsxd rcx, eax
lea rax, [rcx + r15]
lea rdx, [rcx + r13]
cmp r13, rax
ja 0x180163784
cmp rdx, r15
jae 0x180163811
mov ecx, edi
and ecx, 0x8000003f
jge 0x180163795
dec ecx
or ecx, 0xffffffc0
inc ecx
mov r8, qword [rsp + 0x30]
mov eax, edi
sub eax, ecx
mov r10, r8
mov rdx, r15
movsxd r11, eax
sub rdx, r13
not r10
mov rcx, r13
movdqu xmm0, xmmword [rcx]
add r9d, 0x40
movdqu xmm1, xmmword [rdx + rcx]
lea rcx, [rcx + 0x40]
lea rax, [rcx + r10]
pxor xmm1, xmm0
movdqu xmmword [rcx - 0x40], xmm1
movdqu xmm0, xmmword [rcx - 0x30]
movdqu xmm1, xmmword [rdx + rcx - 0x30]
pxor xmm1, xmm0
movdqu xmmword [rcx - 0x30], xmm1
movdqu xmm0, xmmword [rcx - 0x20]
movdqu xmm1, xmmword [rdx + rcx - 0x20]
pxor xmm1, xmm0
movdqu xmmword [rcx - 0x20], xmm1
movdqu xmm0, xmmword [rcx - 0x10]
movdqu xmm1, xmmword [rcx + rdx - 0x10]
pxor xmm1, xmm0
movdqu xmmword [rcx - 0x10], xmm1
cmp rax, r11
jl 0x1801637b0
jmp 0x180163816
mov r8, qword [rsp + 0x30]
movsxd rax, r9d
movsxd rdx, edi
cmp rax, rdx
jge 0x180163842
lea rcx, [r8 + 1]
mov r9, r15
add rcx, rax
sub r9, r13
sub rdx, rax
movzx eax, byte [r9 + rcx]
xor byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x180163831
mov r9d, edi
mov qword [rsp + 0x20], r12
mov r8, r13
lea rcx, [rsp + 0x70]
mov edx, esi
call fcn.180163340
test eax, eax
js 0x18016397f
test esi, esi
jle 0x180163947
cmp esi, 0x40
jb 0x180163947
lea eax, [rsi - 1]
movsxd rcx, eax
lea rax, [rsp + 0x70]
add rax, rcx
lea rdx, [rcx + rbp]
cmp rbp, rax
ja 0x180163897
lea rax, [rsp + 0x70]
cmp rdx, rax
jae 0x180163947
mov eax, esi
and eax, 0x8000003f
jge 0x1801638a7
dec eax
or eax, 0xffffffc0
inc eax
mov rbx, qword [rsp + 0x58]
lea rdx, [rsp + 0x70]
sub esi, eax
lea r8, [rsp + 0x80]
lea r9, [rsp + 0x90]
movsxd r11, esi
sub rdx, rbp
lea r10, [rsp + 0xa0]
sub r8, rbp
sub r9, rbp
sub r10, rbp
mov rcx, rbp
not rbx
movdqu xmm0, xmmword [rcx]
add r14d, 0x40
movdqu xmm1, xmmword [rdx + rcx]
lea rcx, [rcx + 0x40]
lea rax, [rbx + rcx]
pxor xmm1, xmm0
movdqu xmmword [rcx - 0x40], xmm1
movdqu xmm0, xmmword [rcx - 0x30]
movdqu xmm1, xmmword [r8 + rcx - 0x40]
pxor xmm1, xmm0
movdqu xmmword [rcx - 0x30], xmm1
movdqu xmm0, xmmword [rcx - 0x20]
movdqu xmm1, xmmword [r9 + rcx - 0x40]
pxor xmm1, xmm0
movdqu xmmword [rcx - 0x20], xmm1
movdqu xmm0, xmmword [rcx - 0x10]
movdqu xmm1, xmmword [r10 + rcx - 0x40]
pxor xmm1, xmm0
movdqu xmmword [rcx - 0x10], xmm1
cmp rax, r11
jl 0x1801638e0
mov rbx, qword [rsp + 0x60]
movsxd rcx, r14d
cmp rcx, rbx
jge 0x180163970
lea rdx, [rsp + 0x70]
sub rdx, rbp
lea rax, [rcx + rbp]
sub rbx, rcx
nop
movzx ecx, byte [rax + rdx]
xor byte [rax], cl
lea rax, [rax + 1]
sub rbx, 1
jne 0x180163960
mov rcx, r15
call fcn.18013d720
mov eax, 1
jmp 0x180163989
mov rcx, r15
call fcn.18013d720
xor eax, eax
mov rbp, qword [rsp + 0xd0]
mov r13, qword [rsp + 0xc8]
mov rcx, qword [rsp + 0xb0]
xor rcx, rsp
call fcn.18013f0f0
add rsp, 0xd8
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbx
ret