Function at 0x15c20
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x58
mov r13, qword [rcx + 0x10]
mov r14, rdx
and qword [rax + 0x20], 0
mov eax, 0xfffffff
mov r8d, dword [r13 + 5]
lea r12, [0x00010000]
mov r10d, dword [r13 + 9]
mov rbp, rcx
inc r13
and r10, rax
mov rcx, r12
and r8, rax
mov rax, qword [0x000192b8]
add r10, r12
sub rcx, rax
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x40], r13
jne 0x15d31
xor r11d, r11d
test r8, r8
je 0x160d6
mov edi, 0x97f235dd
mov eax, dword [rsp + 0xbc]
mov r9d, dword [rsp + 0xb8]
movzx ecx, byte [r11 + r10]
inc r11
sub ecx, 0x680dca23
add r9d, ecx
add ecx, eax
mov eax, ecx
imul eax, eax, 0xa4c3
rol eax, 0xd
ror ecx, 0xd
xor eax, ecx
imul rax, rdi
mov qword [rsp + 0xa0], rax
mov ecx, dword [rsp + 0xa0]
shr rax, 0x20
add eax, ecx
imul rax, rdi
mov qword [rsp + 0xa0], rax
shr rax, 0x20
mov ecx, dword [rsp + 0xa0]
lea edx, [rcx + rax*2 - 0x7fffffff]
sar ecx, 0x1f
btr ecx, 0x1f
sub edx, ecx
mov eax, edx
sar eax, 0x1f
btr eax, 0x1f
add eax, edx
add r9d, eax
cmp r11, r8
jb 0x15ca7
mov dword [rsp + 0xbc], eax
mov dword [rsp + 0xb8], r9d
jmp 0x160d6
movsxd rdx, dword [0x0001003c]
lea rax, [r10 + r8]
mov qword [rsp + 0x38], rax
lea rax, [0x000100b0]
add rdx, rax
mov eax, r10d
mov esi, dword [rdx + 4]
sub eax, r12d
mov ebx, eax
lea rdi, [rax + r8]
mov r9d, eax
mov r15, rdi
and r9, 0xfffffffffffff000
and r15, 0xfffffffffffff000
mov r8d, dword [rdx]
add r8, r12
sub rbx, r9
sub rdi, r15
mov qword [rsp + 0x30], rdi
add rsi, r8
jmp 0x15d93
mov eax, dword [r8]
cmp rax, r9
jae 0x15d98
mov eax, dword [r8 + 4]
add r8, rax
cmp r8, rsi
jne 0x15d84
xor r11d, r11d
cmp r8, rsi
je 0x15dd2
mov eax, dword [r8]
cmp rax, r9
jne 0x15dd2
mov ecx, dword [r8 + 4]
sub rcx, 8
shr rcx, 1
je 0x15dd2
lea rdx, [r8 + 8]
movzx eax, word [rdx]
and eax, 0xfff
cmp rax, rbx
jae 0x15dd2
inc r11
add rdx, 2
cmp r11, rcx
jne 0x15db9
mov ebx, dword [rsp + 0xbc]
mov r14d, 0x97f235dd
mov r13d, dword [rsp + 0xb8]
mov dword [rsp + 0xb0], r13d
cmp r8, rsi
je 0x16017
mov eax, dword [r8]
cmp rax, r15
ja 0x16017
mov ecx, dword [r8 + 4]
lea rax, [rcx - 8]
shr rax, 1
cmp r11, rax
jne 0x15e31
add r8, rcx
cmp r8, rsi
je 0x16017
mov eax, dword [r8]
cmp rax, r15
ja 0x16017
xor r11d, r11d
jmp 0x15e04
mov eax, dword [r8]
cmp rax, r15
jne 0x15e4d
movzx eax, word [r8 + r11*2 + 8]
and eax, 0xfff
cmp rax, rdi
jae 0x16017
mov ecx, 0xf000
mov rax, r11
inc r11
test word [r8 + rax*2 + 8], cx
je 0x15def
movzx r9d, word [r8 + rax*2 + 8]
xor ebp, ebp
mov edi, r9d
and edi, 0xfff
add edi, dword [r8]
add rdi, r12
mov r12, rdi
sub r12, r10
je 0x15f10
movzx ecx, byte [r10 + rbp]
inc rbp
sub ecx, 0x680dca23
add r13d, ecx
add ecx, ebx
mov eax, ecx
imul eax, eax, 0xa4c3
rol eax, 0xd
ror ecx, 0xd
xor eax, ecx
imul rax, r14
mov qword [rsp + 0xb0], rax
mov ecx, dword [rsp + 0xb0]
shr rax, 0x20
add eax, ecx
imul rax, r14
mov qword [rsp + 0xb0], rax
shr rax, 0x20
mov ecx, dword [rsp + 0xb0]
lea edx, [rcx + rax*2 - 0x7fffffff]
sar ecx, 0x1f
btr ecx, 0x1f
sub edx, ecx
mov ebx, edx
sar ebx, 0x1f
btr ebx, 0x1f
add ebx, edx
add r13d, ebx
mov dword [rsp + 0xb8], r13d
cmp rbp, r12
jb 0x15e83
mov dword [rsp + 0xbc], ebx
mov dword [rsp + 0xb0], r13d
mov rax, qword [rdi]
shr r9d, 0xc
mov qword [rsp + 0x20], rax
cmp r9d, 3
je 0x15f30
sub r9d, 0xa
neg r9d
sbb edx, edx
add edx, 3
jmp 0x15f35
mov edx, 2
mov r9, qword [rsp + 0x28]
neg r9
sub edx, 2
je 0x15f5d
cmp edx, 1
je 0x15f4d
or r9, 0xffffffffffffffff
jmp 0x15f68
add rax, r9
mov qword [rsp + 0x20], rax
mov r9d, 8
jmp 0x15f68
add dword [rsp + 0x20], r9d
mov r9d, 4
xor r10d, r10d
test r9, r9
je 0x16002
movzx ecx, byte [rsp + r10 + 0x20]
inc r10
sub ecx, 0x680dca23
add r13d, ecx
add ecx, ebx
mov eax, ecx
imul eax, eax, 0xa4c3
rol eax, 0xd
ror ecx, 0xd
xor eax, ecx
imul rax, r14
mov qword [rsp + 0xb0], rax
shr rax, 0x20
mov ecx, dword [rsp + 0xb0]
add eax, ecx
imul rax, r14
mov qword [rsp + 0xb0], rax
shr rax, 0x20
mov ecx, dword [rsp + 0xb0]
lea edx, [rcx + rax*2 - 0x7fffffff]
sar ecx, 0x1f
btr ecx, 0x1f
sub edx, ecx
mov ebx, edx
sar ebx, 0x1f
btr ebx, 0x1f
add ebx, edx
add r13d, ebx
mov dword [rsp + 0xb8], r13d
cmp r10, r9
jb 0x15f74
mov dword [rsp + 0xbc], ebx
mov dword [rsp + 0xb0], r13d
lea r12, [0x00010000]
lea r10, [r9 + rdi]
mov rdi, qword [rsp + 0x30]
jmp 0x15def
mov r12, qword [rsp + 0x38]
xor r8d, r8d
mov rbp, qword [rsp + 0xa0]
mov r13, qword [rsp + 0x40]
mov r14, qword [rsp + 0xa8]
sub r12, r10
je 0x160cf
mov edi, 0x97f235dd
mov r9d, dword [rsp + 0xb0]
movzx ecx, byte [r8 + r10]
inc r8
sub ecx, 0x680dca23
add r9d, ecx
add ecx, ebx
mov eax, ecx
imul eax, eax, 0xa4c3
rol eax, 0xd
ror ecx, 0xd
xor eax, ecx
imul rax, rdi
mov qword [rsp + 0xa0], rax
shr rax, 0x20
mov ecx, dword [rsp + 0xa0]
add eax, ecx
imul rax, rdi
mov qword [rsp + 0xa0], rax
mov ecx, dword [rsp + 0xa0]
shr rax, 0x20
lea edx, [rcx + rax*2 - 0x7fffffff]
sar ecx, 0x1f
btr ecx, 0x1f
sub edx, ecx
mov ebx, edx
sar ebx, 0x1f
btr ebx, 0x1f
add ebx, edx
add r9d, ebx
cmp r8, r12
jb 0x1604a
mov dword [rsp + 0xbc], ebx
mov dword [rsp + 0xb8], r9d
lea r12, [0x00010000]
mov esi, 0xfffffff
add qword [rbp + 0x10], 0x11
mov eax, dword [r13 + 0xc]
and rax, rsi
mov rax, qword [rax + r12]
xor rax, qword [rsp + 0xb8]
je 0x16209
call fcn.00011784
lea rdi, [fcn.00018bfc]
mov r11d, 0xffff
lea r9, [rbp + 0x18]
and r9, 0xfffffffffffffff8
mov ecx, dword [0x00018c50]
mov rbx, rax
and rbx, 0xfffffffffffff000
mov qword [rbp + 0x10], rdi
lea r10, [r9 + 0xfff]
mov rax, qword [0x0001d670]
and r10, 0xfffffffffffff000
sub r10, rcx
xor r8d, r8d
imul rax, rax, 0x343fd
shl r8, 0x10
shr r11, 0x10
add rax, 0x269ec3
mov rcx, rax
shr rcx, 0x10
movzx edx, cx
or r8, rdx
test r11, r11
jne 0x16142
mov qword [0x0001d670], rax
movabs rax, 0x8000800080008001
mul r8
mov qword [r14 + 0x98], rbx
shr rdx, 0xf
imul rdx, rdx, 0xffff
sub r8, rdx
inc r8
mov qword [r14 + 0xb0], r8
mov qword [rsp + 0xa0], r11
jmp 0x161b5
mov rax, qword [rsp + 0xa0]
mov qword [r9], rax
add r9, 8
cmp r9, r10
jb 0x161a6
movabs r8, 0xffff90e0be5d0000
mov qword [rbp + 0x10], rdi
mov rdx, qword [r14 + 0xb0]
mov eax, dword [r13]
mov qword [r14 + 0x80], rdx
mov rcx, rdx
and rax, rsi
xor rcx, r8
mov eax, dword [rax + r12]
shl rcx, 0x10
xor rcx, rax
mov eax, dword [0x0001c1d4]
xor rcx, rax
xor rcx, rdx
and qword [r14 + 0xb0], 0
mov qword [r14 + 0xa0], rcx
add rsp, 0x58
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret