Function at 0x18015c2e0
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r12
push r14
push r15
mov eax, 0xd8
call fcn.180131170
sub rsp, rax
mov rax, qword [0x180357758]
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 0x18015c34a
call fcn.180154fb0
mov r12, rax
test rsi, rsi
mov rcx, r12
cmove rsi, r12
mov qword [rsp + 0x50], rsi
call fcn.180156640
movsxd rsi, eax
mov r15d, edi
lea eax, [rsi + rsi]
sub r15d, eax
lea ecx, [r15 - 1]
cmp ebx, ecx
jle 0x18015c39b
mov edx, 0xa0
mov dword [rsp + 0x20], 0x3a
lea r9, [0x180368b98]
mov ecx, 4
lea r8d, [rdx - 0x32]
call fcn.180136d10
xor eax, eax
jmp 0x18015c729
inc eax
cmp edi, eax
jge 0x18015c3ca
mov edx, 0xa0
mov dword [rsp + 0x20], 0x40
lea r9, [0x180368bb0]
mov ecx, 4
lea r8d, [rdx - 0x28]
call fcn.180136d10
xor eax, eax
jmp 0x18015c729
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.180173c70
test eax, eax
je 0x18015c717
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.1801ad930
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.1801ad280
mov edx, esi
mov rcx, rbp
call fcn.180143f10
test eax, eax
jle 0x18015c717
sub edi, esi
lea r8d, [r14 + 0x55]
mov ecx, edi
lea rdx, [0x180368bc8]
call fcn.180136400
mov r15, rax
test rax, rax
jne 0x18015c4c2
lea r9, [0x180368be0]
mov dword [rsp + 0x20], 0x57
mov edx, 0xa0
lea ecx, [rax + 4]
lea r8d, [r14 + 0x41]
call fcn.180136d10
jmp 0x18015c717
mov r12, qword [rsp + 0x50]
mov r9d, esi
mov r8, rbp
mov qword [rsp + 0x20], r12
mov edx, edi
mov rcx, r15
call fcn.18015c0d0
test eax, eax
js 0x18015c70f
mov r9d, r14d
test edi, edi
jle 0x18015c5a1
cmp edi, 0x40
jb 0x18015c5a1
lea eax, [rdi - 1]
movsxd rcx, eax
lea rax, [rcx + r15]
lea rdx, [rcx + r13]
cmp r13, rax
ja 0x18015c514
cmp rdx, r15
jae 0x18015c5a1
mov ecx, edi
and ecx, 0x8000003f
jge 0x18015c525
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 0x18015c540
jmp 0x18015c5a6
mov r8, qword [rsp + 0x30]
movsxd rax, r9d
movsxd rdx, edi
cmp rax, rdx
jge 0x18015c5d2
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 0x18015c5c1
mov r9d, edi
mov qword [rsp + 0x20], r12
mov r8, r13
lea rcx, [rsp + 0x70]
mov edx, esi
call fcn.18015c0d0
test eax, eax
js 0x18015c70f
test esi, esi
jle 0x18015c6d7
cmp esi, 0x40
jb 0x18015c6d7
lea eax, [rsi - 1]
movsxd rcx, eax
lea rax, [rsp + 0x70]
add rax, rcx
lea rdx, [rcx + rbp]
cmp rbp, rax
ja 0x18015c627
lea rax, [rsp + 0x70]
cmp rdx, rax
jae 0x18015c6d7
mov eax, esi
and eax, 0x8000003f
jge 0x18015c637
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 0x18015c670
mov rbx, qword [rsp + 0x60]
movsxd rcx, r14d
cmp rcx, rbx
jge 0x18015c700
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 0x18015c6f0
mov rcx, r15
call fcn.1801364b0
mov eax, 1
jmp 0x18015c719
mov rcx, r15
call fcn.1801364b0
xor eax, eax
mov rbp, qword [rsp + 0xd0]
mov r13, qword [rsp + 0xc8]
mov rcx, qword [rsp + 0xb0]
xor rcx, rsp
call fcn.180137e80
add rsp, 0xd8
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbx
ret