Function at 0x180096aa0
Capabilities:
Encode data using xor

Disassembly:
mov r11, rsp
push r13
push r15
sub rsp, 0x88
mov rax, qword [0x18013cb10]
xor rax, rsp
mov qword [rsp + 0x60], rax
mov qword [r11 + 8], rbx
mov qword [r11 + 0x20], rsi
lea r15, [rcx + 4]
mov qword [r11 - 0x18], rdi
movsxd rdi, dword [r15]
mov r13, rdx
mov qword [r11 - 0x20], r12
mov qword [rsp + 0x18], rdx
mov rsi, rcx
mov qword [rsp + 0x10], rcx
mov qword [rsp + 8], r15
test edi, edi
jle 0x180096b48
lea rcx, [r11 - 0x78]
mov r10, rsi
lea r8, [rdx + 2]
lea r9, [r11 - 0x78]
mov edx, edi
sub r10, rcx
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [r8]
movzx ecx, byte [r8 + 1]
lea r9, [r9 + 4]
shl ecx, 8
lea r8, [r8 + 4]
or ecx, eax
movzx eax, byte [r8 - 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [r8 - 6]
shl ecx, 8
or ecx, eax
xor ecx, dword [r10 + r9 + 0x38]
mov dword [r9 - 4], ecx
dec rdx
jne 0x180096b10
mov ecx, dword [rsi + 8]
mov qword [rsp + 0xb0], rbp
mov r12, rdi
mov qword [rsp + 0x70], r14
lea r9, [rsp + 0x20]
lea rax, [rsp + 0x40]
cmp ecx, 1
jle 0x180096c45
mov r14, rdi
mov r11, rdi
lea r13d, [rcx - 1]
nop dword [rax + rax]
test r11, r11
jle 0x180096c26
lea rbp, [rsi + 0x3c]
mov rbx, r9
lea r10, [rsi + 0xd]
add r12d, r11d
lea rbp, [rbp + r14*4]
sub rbx, rax
mov rdi, rax
mov r15, r11
lea rsi, [0x180000000]
add r14, r11
nop
movzx ecx, byte [r10 - 1]
lea rdi, [rdi + 4]
lea rbp, [rbp + 4]
mov edx, dword [r9 + rcx*4]
lea r10, [r10 + 3]
shr edx, 8
movzx ecx, dl
mov r8d, dword [rsi + rcx*4 + 0x14ce50]
movzx ecx, byte [r10 - 2]
movzx edx, byte [r9 + rcx*4 + 3]
rol r8d, 8
mov ecx, dword [rsi + rdx*4 + 0x14ce50]
ror ecx, 8
xor r8d, ecx
movzx ecx, byte [r10 - 3]
movzx edx, byte [r9 + rcx*4 + 2]
mov ecx, dword [rsi + rdx*4 + 0x14ce50]
rol ecx, 0x10
xor r8d, ecx
movzx ecx, byte [rbx + rdi - 4]
xor r8d, dword [rsi + rcx*4 + 0x14ce50]
xor r8d, dword [rbp - 4]
mov dword [rdi - 4], r8d
dec r15
jne 0x180096bb0
mov rsi, qword [rsp + 0x10]
mov rcx, r9
mov r9, rax
mov rax, rcx
dec r13
jne 0x180096b80
mov r15, qword [rsp + 8]
mov r13, qword [rsp + 0x18]
mov edi, r11d
movsxd rbx, edi
test edi, edi
jle 0x180096cff
movsxd rcx, r12d
lea r10, [rsi + 0xd]
mov r12, rsi
lea rbp, [rcx*4 + 0x3c]
mov r14, rax
sub r12, r10
sub rbp, r9
sub r14, r9
mov r11, r9
add rbp, rsi
sub rsi, r10
lea r15, [0x180000000]
nop
movzx ecx, byte [rsi + r10 + 0xc]
lea r11, [r11 + 4]
lea r10, [r10 + 3]
mov edx, dword [r9 + rcx*4]
shr edx, 8
movzx ecx, dl
movzx r8d, byte [rcx + r15 + 0x14cad0]
movzx ecx, byte [r12 + r10 + 0xb]
movzx edx, byte [r9 + rcx*4 + 3]
rol r8d, 8
movzx ecx, byte [rdx + r15 + 0x14cad0]
ror ecx, 8
xor r8d, ecx
movzx ecx, byte [r10 - 3]
movzx edx, byte [r9 + rcx*4 + 2]
movzx ecx, byte [rdx + r15 + 0x14cad0]
rol ecx, 0x10
xor r8d, ecx
movzx ecx, byte [r11 - 4]
movzx ecx, byte [rcx + r15 + 0x14cad0]
xor r8d, ecx
xor r8d, dword [r11 + rbp - 4]
mov dword [r14 + r11 - 4], r8d
dec rbx
jne 0x180096c80
mov r15, qword [rsp + 8]
mov r14, qword [rsp + 0x70]
mov r12, qword [rsp + 0x78]
mov rsi, qword [rsp + 0xb8]
mov rbp, qword [rsp + 0xb0]
mov rbx, qword [rsp + 0xa0]
xor r11d, r11d
test edi, edi
mov rdi, qword [rsp + 0x80]
mov r10d, r11d
jle 0x180096d76
lea r8, [r13 + 2]
sub r9, rax
nop word [rax + rax]
mov edx, dword [rax]
mov dword [rax], r11d
inc r10d
mov byte [r8 - 2], dl
mov ecx, edx
mov dword [rax + r9], r11d
shr ecx, 8
lea rax, [rax + 4]
lea r8, [r8 + 4]
mov byte [r8 - 5], cl
mov ecx, edx
shr edx, 0x18
shr ecx, 0x10
mov byte [r8 - 3], dl
mov byte [r8 - 4], cl
cmp r10d, dword [r15]
jl 0x180096d40
mov rcx, qword [rsp + 0x60]
xor rcx, rsp
call fcn.18009c2b0
add rsp, 0x88
pop r15
pop r13
ret