Function at 0x140099990
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov eax, 0x40
call fcn.14024eae0
sub rsp, rax
mov rax, qword [rcx + 0x180]
mov rdi, rcx
mov rcx, qword [rcx + 0x38]
mov rsi, r9
mov qword [rsp + 0x30], rax
add rcx, r9
movabs rax, 0xfffffffe0
mov r15, r8
mov r12, rdx
cmp rcx, rax
ja 0x140099c41
cmp rcx, r9
jb 0x140099c41
cmp dword [rdi + 0x174], 0
lea r13, [rdi + 0x60]
mov qword [rdi + 0x38], rcx
lea rbx, [rdi + 0x40]
je 0x140099a14
mov rdx, r13
mov rcx, rbx
call fcn.140098c24
and dword [rdi + 0x174], 0
movzx eax, byte [rdi + 0xd]
mov ebp, dword [rdi + 0x170]
movzx r14d, byte [rdi + 0xc]
shl r14d, 8
or r14d, eax
mov dword [rsp + 0x80], ebp
movzx eax, byte [rdi + 0xe]
shl r14d, 8
or r14d, eax
movzx eax, byte [rdi + 0xf]
shl r14d, 8
or r14d, eax
test ebp, ebp
je 0x140099a93
test rsi, rsi
je 0x140099a71
mov ecx, ebp
dec rsi
mov al, byte [rcx + rdi + 0x10]
xor al, byte [r12]
inc r12
mov byte [r15], al
inc r15
xor byte [rcx + rdi + 0x40], al
inc ebp
and ebp, 0xf
jne 0x140099a4b
mov qword [rsp + 0x88], r12
mov dword [rsp + 0x80], ebp
test ebp, ebp
jne 0x140099c37
mov rdx, r13
mov rcx, rbx
call fcn.140098c24
cmp rsi, 0xc00
jb 0x140099b59
movabs rax, 0xaaaaaaaaaaaaaaab
mul rsi
mov rax, rdx
shr rax, 0xb
mov qword [rsp + 0x38], rax
mov rbp, qword [rsp + 0x38]
imul rax, rax, 0xfffffffffffff400
add rsi, rax
mov qword [rsp + 0x98], rsi
mov rsi, qword [rsp + 0x30]
mov rax, qword [rsp + 0xa0]
mov r9, rsi
mov r8d, 0xc0
mov qword [rsp + 0x20], rdi
mov rdx, r15
mov rcx, r12
call qword [case.0x14004a846.0]
add r14d, 0xc0
mov r9d, 0xc00
mov eax, r14d
mov byte [rdi + 0xf], r14b
shr eax, 0x18
mov r8, r15
mov byte [rdi + 0xc], al
mov rdx, r13
mov eax, r14d
mov rcx, rbx
shr eax, 0x10
mov byte [rdi + 0xd], al
mov eax, r14d
shr eax, 8
mov byte [rdi + 0xe], al
call fcn.140098d8c
mov eax, 0xc00
add r15, rax
add r12, rax
sub rbp, 1
jne 0x140099ad5
mov rsi, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
mov qword [rsp + 0x88], r12
mov r12, rsi
and r12, 0xfffffffffffffff0
je 0x140099bd6
mov r9, qword [rsp + 0x30]
mov rbx, r12
mov rcx, qword [rsp + 0x88]
mov rdx, r15
mov rax, qword [rsp + 0xa0]
shr rbx, 4
mov r8, rbx
mov qword [rsp + 0x20], rdi
call qword [case.0x14004a846.0]
add r14d, ebx
lea rcx, [rdi + 0x40]
mov rbx, qword [rsp + 0x88]
mov eax, r14d
shr eax, 0x18
mov r9, r12
mov byte [rdi + 0xc], al
mov r8, r15
mov eax, r14d
mov byte [rdi + 0xf], r14b
shr eax, 0x10
mov rdx, r13
mov byte [rdi + 0xd], al
add rbx, r12
mov eax, r14d
sub rsi, r12
shr eax, 8
mov byte [rdi + 0xe], al
call fcn.140098d8c
add r15, r12
jmp 0x140099bde
mov rbx, qword [rsp + 0x88]
test rsi, rsi
je 0x140099c37
mov r8, qword [rsp + 0x30]
lea rdx, [rdi + 0x10]
mov rax, qword [rdi + 0x178]
mov rcx, rdi
call qword [case.0x14004a846.0]
inc r14d
mov eax, r14d
mov byte [rdi + 0xf], r14b
shr eax, 0x18
mov byte [rdi + 0xc], al
mov eax, r14d
shr eax, 0x10
mov byte [rdi + 0xd], al
mov eax, r14d
shr eax, 8
mov byte [rdi + 0xe], al
mov ecx, ebp
inc ebp
mov al, byte [rbx + rcx]
xor al, byte [rcx + rdi + 0x10]
mov byte [rcx + r15], al
xor byte [rcx + rdi + 0x40], al
sub rsi, 1
jne 0x140099c1e
mov dword [rdi + 0x170], ebp
xor eax, eax
jmp 0x140099c44
or eax, 0xffffffff
mov rbx, qword [rsp + 0x90]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret