Function at 0x14009a3e8
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x57]
sub rsp, 0xb0
mov qword [rbp - 0x21], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rsi, r8
mov rdi, rdx
mov rbx, rcx
test rdx, rdx
jne 0x14009a45c
xor eax, eax
mov qword [rbp - 0x41], rax
mov qword [rbp - 0x39], rax
mov qword [rbp - 0x31], rax
mov dword [rbp - 0x29], eax
mov word [rbp - 0x25], ax
lea rcx, [rbp - 0x41]
call fcn.14009bcb8
mov rdx, rax
lea rcx, [rbp - 0x59]
call fcn.14009bc10
lea rdx, [0x1400e25f8]
lea rcx, [rbp - 0x59]
call fcn.1400b0a88
nop
lea eax, [r9 - 0x10]
mov edx, 0xffffffe7
test edx, eax
jne 0x14009a8b0
cmp r9d, 0x28
je 0x14009a8b0
movsxd rcx, dword [rbp + 0x7f]
lea eax, [rcx - 0x10]
test edx, eax
jne 0x14009a87a
cmp ecx, 0x28
je 0x14009a87a
mov dword [rbx + 0x3cc], r9d
mov dword [rbx + 0x3d0], ecx
mov r8, rcx
lea rcx, [rbx + 0x3d8]
mov rdx, rsi
call fcn.1400b0650
movsxd r8, dword [rbx + 0x3d0]
lea rcx, [rbx + 0x3f8]
mov rdx, rsi
call fcn.1400b0650
mov eax, dword [rbx + 0x3cc]
cmp eax, 0x10
je 0x14009a4e8
cmp eax, 0x18
mov eax, 0xe
jne 0x14009a506
lea ecx, [rax - 2]
cmp dword [rbx + 0x3d0], 0x20
cmovne eax, ecx
jmp 0x14009a506
mov edx, dword [rbx + 0x3d0]
cmp edx, 0x10
jne 0x14009a4f8
lea eax, [rdx - 6]
jmp 0x14009a506
mov eax, 0xe
lea ecx, [rax - 2]
cmp edx, 0x18
cmove eax, ecx
mov dword [rbx + 0x3d4], eax
mov eax, dword [rbx + 0x3d0]
cdq
and edx, 3
add eax, edx
sar eax, 2
movsxd r13, eax
xor r14d, r14d
mov r15, r13
cmp dword [rbx + 0x3d4], r14d
jl 0x14009a557
lea rsi, [rbx + 0xc]
test r13d, r13d
jle 0x14009a547
mov r8, r13
shl r8, 2
xor edx, edx
mov rcx, rsi
call fcn.1400b1300
inc r14d
add rsi, 0x20
cmp r14d, dword [rbx + 0x3d4]
jle 0x14009a531
xor esi, esi
cmp dword [rbx + 0x3d4], esi
jl 0x14009a58c
lea r14, [rbx + 0x1ec]
test r13d, r13d
jle 0x14009a57e
mov r8, r13
shl r8, 2
xor edx, edx
mov rcx, r14
call fcn.1400b1300
inc esi
add r14, 0x20
cmp esi, dword [rbx + 0x3d4]
jle 0x14009a568
mov r10d, dword [rbx + 0x3d4]
inc r10d
imul r10d, r13d
mov eax, dword [rbx + 0x3cc]
cdq
and edx, 3
add eax, edx
sar eax, 2
movsxd r14, eax
lea r12, [rbx + 0x418]
mov rdx, r12
test eax, eax
jle 0x14009a5eb
mov r8d, r14d
movzx ecx, byte [rdi]
shl ecx, 0x18
mov dword [rdx], ecx
movzx eax, byte [rdi + 1]
shl eax, 0x10
or dword [rdx], eax
movzx eax, byte [rdi + 2]
shl eax, 8
or dword [rdx], eax
movzx eax, byte [rdi + 3]
or dword [rdx], eax
lea rdi, [rdi + 4]
lea rdx, [rdx + 4]
sub r8, 1
jne 0x14009a5bd
xor r9d, r9d
xor esi, esi
test r14d, r14d
jle 0x14009a63f
mov rdi, r12
cmp r9d, r10d
jge 0x14009a7ea
mov eax, r9d
cdq
idiv r13d
movsxd r8, edx
movsxd rcx, eax
lea rdx, [r8 + rcx*8]
mov ecx, dword [rdi]
mov dword [rbx + rdx*4 + 0xc], ecx
mov ecx, dword [rbx + 0x3d4]
sub ecx, eax
movsxd rax, ecx
lea rcx, [r8 + rax*8]
mov eax, dword [rdi]
mov dword [rbx + rcx*4 + 0x1ec], eax
inc rsi
add rdi, 4
inc r9d
cmp rsi, r14
jl 0x14009a5f8
cmp r9d, r10d
jge 0x14009a7ea
lea rdi, [0x1400d1a60]
lea r15, [0x140000000]
movsxd r8, dword [rbx + r14*4 + 0x414]
mov rax, r8
sar rax, 0x10
movzx ecx, al
movsx edx, byte [rcx + r15 + 0xce860]
movsx eax, byte [rdi]
xor edx, eax
shl edx, 8
mov rax, r8
sar rax, 8
movzx ecx, al
movzx eax, byte [rcx + r15 + 0xce860]
xor edx, eax
shl edx, 8
movzx eax, r8b
movzx eax, byte [rax + r15 + 0xce860]
xor edx, eax
shl edx, 8
sar r8, 0x18
movzx eax, r8b
movzx eax, byte [rax + r15 + 0xce860]
xor edx, eax
xor dword [r12], edx
inc rdi
mov qword [rbp + 0x67], rdi
cmp r14d, 8
je 0x14009a6f0
cmp r14, 1
jle 0x14009a78d
lea rcx, [rbx + 0x41c]
lea rdx, [r14 - 1]
mov eax, dword [rcx - 4]
xor dword [rcx], eax
lea rcx, [rcx + 4]
sub rdx, 1
jne 0x14009a6dc
jmp 0x14009a78d
lea rcx, [rbx + 0x41c]
mov edx, 3
mov eax, dword [rcx - 4]
xor dword [rcx], eax
lea rcx, [rcx + 4]
sub rdx, 1
jne 0x14009a6fc
movsxd r8, dword [rbx + 0x424]
mov rax, r8
sar rax, 0x18
movzx ecx, al
movsx edx, byte [rcx + r15 + 0xce860]
shl edx, 8
mov rax, r8
sar rax, 0x10
movzx ecx, al
movzx eax, byte [rcx + r15 + 0xce860]
xor edx, eax
shl edx, 8
mov rax, r8
sar rax, 8
movzx ecx, al
movzx eax, byte [rcx + r15 + 0xce860]
xor edx, eax
shl edx, 8
movzx eax, r8b
movzx eax, byte [rax + r15 + 0xce860]
xor edx, eax
xor dword [rbx + 0x428], edx
cmp r14, 5
jle 0x14009a78d
lea rcx, [rbx + 0x42c]
lea rdx, [r14 - 5]
mov eax, dword [rcx - 4]
xor dword [rcx], eax
lea rcx, [rcx + 4]
sub rdx, 1
jne 0x14009a77e
xor esi, esi
test r14d, r14d
jle 0x14009a7de
mov rdi, r12
cmp r9d, r10d
jge 0x14009a7e7
mov eax, r9d
cdq
idiv r13d
movsxd r8, edx
movsxd rcx, eax
lea rdx, [r8 + rcx*8]
mov ecx, dword [rdi]
mov dword [rbx + rdx*4 + 0xc], ecx
mov ecx, dword [rbx + 0x3d4]
sub ecx, eax
movsxd rax, ecx
lea rcx, [r8 + rax*8]
mov eax, dword [rdi]
mov dword [rbx + rcx*4 + 0x1ec], eax
inc rsi
add rdi, 4
inc r9d
cmp rsi, r14
jl 0x14009a797
mov rdi, qword [rbp + 0x67]
cmp r9d, r10d
jl 0x14009a656
mov r15, r13
mov r10d, 1
cmp dword [rbx + 0x3d4], r10d
jle 0x14009a874
lea r11, [rbx + 0x20c]
test r15, r15
jle 0x14009a864
mov rdi, r11
mov rsi, r15
lea r14, [0x140000000]
movsxd r9, dword [rdi]
mov rax, r9
sar rax, 0x18
movzx edx, al
mov rax, r9
sar rax, 0x10
movzx ecx, al
mov r8d, dword [r14 + rdx*4 + 0xd0a60]
xor r8d, dword [r14 + rcx*4 + 0xd0e60]
mov rax, r9
sar rax, 8
movzx ecx, al
xor r8d, dword [r14 + rcx*4 + 0xd1260]
movzx eax, r9b
xor r8d, dword [r14 + rax*4 + 0xd1660]
mov dword [rdi], r8d
lea rdi, [rdi + 4]
sub rsi, 1
jne 0x14009a812
inc r10d
add r11, 0x20
cmp r10d, dword [rbx + 0x3d4]
jl 0x14009a800
mov byte [rbx + 8], 1
jmp 0x14009a8e6
xor edx, edx
lea r8d, [rdx + 0x46]
lea rcx, [rbp - 0x19]
call fcn.1400b1300
nop
lea rcx, [rbp - 0x19]
call fcn.14009c2bc
mov rdx, rax
lea rcx, [rbp - 0x59]
call fcn.14009bc10
lea rdx, [0x1400e25f8]
lea rcx, [rbp - 0x59]
call fcn.1400b0a88
nop
xor edx, edx
lea r8d, [rdx + 0x40]
lea rcx, [rbp - 0x19]
call fcn.1400b1300
nop
lea rcx, [rbp - 0x19]
call fcn.14009c8d4
mov rdx, rax
lea rcx, [rbp - 0x59]
call fcn.14009bc10
lea rdx, [0x1400e25f8]
lea rcx, [rbp - 0x59]
call fcn.1400b0a88
nop
lea r11, [rsp + 0xb0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret