Function at 0x180097970
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x2a0
mov rax, qword [0x1802edb40]
xor rax, rsp
mov qword [rsp + 0x290], rax
mov r12, rcx
mov qword [rsp + 0x50], rcx
movsxd rcx, r8d
mov edx, 2
mov qword [rsp + 0x48], rcx
mov r15d, 0xffff8000
mov dword [rsp + 0x30], edx
nop dword [rax + rax]
mov rbx, qword [r12 + 0x20]
mov esi, 2
shl rcx, 4
mov r13d, esi
add rbx, rcx
mov eax, dword [rbx - 4]
lea r14, [rbx + 0x10]
sub eax, 3
test eax, 0xfffffffd
jne 0x180097c26
cmp dword [r14 - 4], 5
je 0x180097a2e
cmp dword [rbx + 0xc], 3
jne 0x180097c26
movsd xmm1, qword [rbx]
lea rcx, [rsp + 0x58]
call fcn.180089b70
lea rcx, [rsp + 0x58]
sub rax, rcx
lea rdx, [rsp + 0x58]
mov r8, rax
mov rcx, r12
call fcn.18008b700
mov edx, dword [rsp + 0x30]
mov qword [rbx], rax
mov dword [rbx + 0xc], 5
mov rax, qword [r14 - 0x10]
add rax, 0x14
mov ecx, dword [rax]
cmp ecx, eax
jne 0x180097a8b
cmp dword [r14 - 0x14], 5
je 0x180097c41
cmp dword [r14 - 0x14], 3
jne 0x180097c41
movsd xmm1, qword [r14 - 0x20]
lea rcx, [rsp + 0x58]
call fcn.180089b70
lea rcx, [rsp + 0x58]
sub rax, rcx
lea rdx, [rsp + 0x58]
mov r8, rax
mov rcx, r12
call fcn.18008b700
mov qword [r14 - 0x20], rax
mov dword [r14 - 0x14], 5
jmp 0x180097c3d
mov esi, 1
mov edi, eax
xor rdi, rcx
movsxd rbp, edx
mov r13d, esi
cmp rsi, rbp
jge 0x180097b12
lea rbx, [r14 - 0x20]
mov eax, dword [rbx + 0xc]
cmp eax, 5
je 0x180097ae1
cmp eax, 3
jne 0x180097b12
movsd xmm1, qword [rbx]
lea rcx, [rsp + 0x58]
call fcn.180089b70
lea rcx, [rsp + 0x58]
sub rax, rcx
lea rdx, [rsp + 0x58]
mov r8, rax
mov rcx, r12
call fcn.18008b700
mov qword [rbx], rax
mov dword [rbx + 0xc], 5
mov rax, qword [rbx]
add rax, 0x14
mov ecx, eax
mov eax, dword [rax]
xor rcx, rax
mov eax, 0x40000000
sub rax, rdi
cmp rcx, rax
ja 0x180097ca9
add rdi, rcx
inc r13d
inc rsi
sub rbx, 0x10
cmp rsi, rbp
jl 0x180097aa4
mov qword [rsp + 0x40], 0
cmp rdi, 0x200
jae 0x180097b2e
lea rcx, [rsp + 0x90]
jmp 0x180097b91
mov rcx, r12
cmp rdi, 0x40000000
ja 0x180097cb9
movzx r8d, byte [r12 + 4]
lea rdx, [rdi + 0x19]
call fcn.180089210
mov rdx, rax
mov qword [rsp + 0x40], rax
lea rax, [r12 + 8]
xor rax, qword [rax]
lea rcx, [rdx + 0x18]
movzx eax, byte [rax + 0x20]
and al, 3
mov byte [rdx + 2], 5
mov byte [rdx + 1], al
movzx eax, byte [r12 + 4]
mov byte [rdx], al
lea rax, [rdx + 0x10]
mov dword [rax], eax
lea eax, [rdx + 0x14]
xor eax, edi
mov word [rdx + 4], r15w
mov dword [rdx + 0x14], eax
mov qword [rdx + 8], 0
xor ebp, ebp
mov qword [rsp + 0x38], rcx
mov r15, rsi
test rsi, rsi
jle 0x180097be4
mov rax, rsi
mov rdi, r14
shl rax, 4
mov r12, rcx
sub rdi, rax
mov rdx, qword [rdi]
mov rcx, r12
lea rax, [rdx + 0x14]
add rdx, 0x18
mov ebx, eax
mov eax, dword [rax]
xor rbx, rax
mov r8, rbx
call fcn.180210c20
add rbp, rbx
lea rdi, [rdi + 0x10]
dec r15
add r12, rbx
test r15, r15
jg 0x180097bb0
mov r12, qword [rsp + 0x50]
mov rax, rsi
mov rcx, r12
shl rax, 4
sub r14, rax
cmp rbp, 0x200
jae 0x180097c1a
mov rdx, qword [rsp + 0x38]
mov r8, rbp
call fcn.18008b700
mov qword [r14], rax
mov r15d, 0xffff8000
mov dword [r14 + 0xc], 5
jmp 0x180097c3d
mov rdx, qword [rsp + 0x40]
call fcn.18008b5d0
jmp 0x180097c07
lea r9, [r14 - 0x20]
mov r8, rbx
lea rdx, [r14 - 0x20]
mov rcx, r12
call fcn.180097310
test eax, eax
je 0x180097c98
mov edx, dword [rsp + 0x30]
mov rcx, qword [rsp + 0x48]
mov eax, 1
sub eax, r13d
add edx, eax
mov eax, 1
sub rax, rsi
mov dword [rsp + 0x30], edx
add rcx, rax
mov qword [rsp + 0x48], rcx
cmp edx, 1
jg 0x1800979c0
mov rcx, qword [rsp + 0x290]
xor rcx, rsp
call fcn.1801cf080
mov rbx, qword [rsp + 0x2e8]
add rsp, 0x2a0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
lea r8, [r14 - 0x10]
mov rcx, r12
lea rdx, [r14 - 0x20]
call fcn.180084840
int3
lea rdx, str.string_length_overflow
mov rcx, r12
call fcn.180084ac0
int3
call fcn.180088fb0
int3