Function at 0x18003ec20
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r12
push r15
sub rsp, 0x20
movsxd r15, r8d
mov eax, 0x8000
xor r12d, r12d
cmp r15d, eax
mov rdi, rcx
mov dword [rcx + 4], r12d
mov dword [rcx], r12d
mov rcx, qword [rcx + 8]
cmovl eax, r15d
movsxd r8, eax
mov rbx, r9
mov rsi, rdx
call fcn.180063290
mov eax, 1
xor r11b, r11b
cmp rax, r15
mov r8, r15
jge 0x18003ec7c
nop word [rax + rax]
xor r11b, byte [rax + rsi]
inc rax
cmp rax, r15
jl 0x18003ec70
mov ecx, dword [rdi + 4]
mov qword [rsp + 0x50], rbp
mov qword [rsp + 0x58], r13
add ecx, 8
mov qword [rsp + 0x60], r14
mov eax, ecx
and ecx, 7
sar eax, 3
mov dword [rdi + 4], ecx
add dword [rdi], eax
mov dword [rbx + 0x18], r12d
cmp r11b, byte [rsi]
jne 0x18003f0a6
mov rdx, rsi
or ecx, 0xffffffff
call fcn.18003b270
lea r8, [0x1800fead0]
mov edx, r12d
not eax
mov rcx, r8
cmp dword [rcx + 4], eax
jne 0x18003eccf
cmp dword [rcx], r15d
je 0x18003ecdf
inc edx
add rcx, 0xc
cmp edx, 7
jb 0x18003ecc5
jmp 0x18003ed7d
movsxd rax, edx
lea rcx, [rax + rax*2]
mov ebp, dword [r8 + rcx*4 + 8]
test ebp, ebp
je 0x18003ed7d
inc dword [rbx + 8]
mov ecx, dword [rbx + 0xc]
mov r8d, dword [rbx + 8]
cmp r8d, ecx
jle 0x18003ed3f
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
lea esi, [rax + rcx + 0x20]
mov rcx, qword [rbx]
cmp r8d, esi
cmovg esi, r8d
movsxd rdx, esi
imul rdx, rdx, 0x38
call fcn.18006367c
mov qword [rbx], rax
test rax, rax
jne 0x18003ed3c
lea rcx, [0x1800fd740]
call fcn.18003b700
int3
mov dword [rbx + 0xc], esi
movsxd rcx, dword [rbx + 0x18]
mov r15d, r12d
lea eax, [rcx + 1]
mov rdx, rcx
mov dword [rbx + 0x18], eax
imul rdx, rdx, 0x38
add rdx, qword [rbx]
mov dword [rdx + 0xc], ebp
lea rax, [rdx + 0xc]
mov dword [rdx], 0x36
mov dword [rdx + 0x20], 3
mov qword [rdx + 0x18], rax
lea rax, [rdx + 0x24]
mov dword [rdx + 8], 3
mov qword [rdx + 0x30], rax
movsxd r9, dword [rdi]
mov rcx, qword [rdi + 8]
mov r8d, dword [rdi + 4]
movzx eax, byte [r9 + rcx]
movzx r10d, byte [r9 + rcx + 1]
shl eax, 8
or r10d, eax
movzx eax, byte [r9 + rcx + 2]
mov ecx, 8
sub ecx, r8d
shl r10d, 8
or r10d, eax
shr r10d, cl
lea ecx, [r8 + 1]
mov eax, ecx
and ecx, 7
sar eax, 3
mov dword [rdi + 4], ecx
add eax, r9d
bt r10d, 0xf
mov dword [rdi], eax
jae 0x18003ee94
mov rcx, rdi
mov rbp, r12
call fcn.18003f300
inc eax
cmp dword [rdi], r15d
movsxd r13, eax
jge 0x18003f0a6
nop dword [rax]
cmp rbp, r13
jge 0x18003ee94
inc dword [rbx + 0x38]
mov ecx, dword [rbx + 0x3c]
mov r8d, dword [rbx + 0x38]
cmp r8d, ecx
jle 0x18003ee3a
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
lea esi, [rax + rcx + 0x20]
mov rcx, qword [rbx + 0x30]
cmp r8d, esi
cmovg esi, r8d
movsxd rdx, esi
call fcn.18006367c
mov qword [rbx + 0x30], rax
test rax, rax
je 0x18003ef57
mov dword [rbx + 0x3c], esi
movsxd rdx, dword [rdi]
mov rcx, qword [rdi + 8]
inc rbp
movzx eax, byte [rdx + rcx]
movzx r8d, byte [rdx + rcx + 1]
shl eax, 8
or r8d, eax
movzx eax, byte [rdx + rcx + 2]
mov ecx, 8
sub ecx, dword [rdi + 4]
shl r8d, 8
or r8d, eax
mov rax, qword [rbx + 0x30]
shr r8d, cl
shr r8d, 8
mov byte [rax + rbp - 1], r8b
mov ecx, dword [rdi + 4]
add ecx, 8
mov eax, ecx
and ecx, 7
sar eax, 3
mov dword [rdi + 4], ecx
add dword [rdi], eax
cmp dword [rdi], r15d
jl 0x18003edf0
cmp dword [rdi], r15d
jge 0x18003f0a6
lea r9, [0x1800fcf00]
nop word [rax + rax]
inc dword [rbx + 8]
mov ecx, dword [rbx + 0xc]
mov r8d, dword [rbx + 8]
cmp r8d, ecx
jle 0x18003eefa
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
lea esi, [rax + rcx + 0x20]
mov rcx, qword [rbx]
cmp r8d, esi
cmovg esi, r8d
movsxd rdx, esi
imul rdx, rdx, 0x38
call fcn.18006367c
mov qword [rbx], rax
test rax, rax
je 0x18003f0ef
mov dword [rbx + 0xc], esi
lea r9, [0x1800fcf00]
mov rcx, qword [rdi + 8]
movsxd rdx, dword [rdi]
movsxd rsi, dword [rbx + 0x18]
imul rsi, rsi, 0x38
movzx eax, byte [rdx + rcx]
movzx r8d, byte [rdx + rcx + 1]
add rsi, qword [rbx]
shl eax, 8
or r8d, eax
movzx eax, byte [rdx + rcx + 2]
mov ecx, 8
sub ecx, dword [rdi + 4]
shl r8d, 8
or r8d, eax
shr r8d, cl
movzx eax, r8w
bt eax, 0xf
jb 0x18003ef64
shr eax, 0xc
mov dword [rsi], eax
mov ecx, dword [rdi + 4]
add ecx, 4
mov eax, ecx
sar eax, 3
add dword [rdi], eax
and ecx, 7
mov dword [rdi + 4], ecx
jmp 0x18003ef7f
lea rcx, [0x1800fd740]
call fcn.18003b700
int3
shr eax, 0xa
sub eax, 0x18
mov dword [rsi], eax
mov ecx, dword [rdi + 4]
add ecx, 6
mov eax, ecx
sar eax, 3
add dword [rdi], eax
and ecx, 7
mov dword [rdi + 4], ecx
movsxd rax, dword [rsi]
test byte [rax + r9], 4
je 0x18003efd7
movsxd rdx, dword [rdi]
mov rcx, qword [rdi + 8]
movzx eax, byte [rdx + rcx]
movzx r8d, byte [rdx + rcx + 1]
shl eax, 8
or r8d, eax
movzx eax, byte [rdx + rcx + 2]
mov ecx, 8
sub ecx, dword [rdi + 4]
shl r8d, 8
or r8d, eax
shr r8d, cl
shr r8d, 0xf
and r8b, 1
mov byte [rsi + 4], r8b
mov ecx, dword [rdi + 4]
inc ecx
mov eax, ecx
sar eax, 3
add dword [rdi], eax
and ecx, 7
mov dword [rdi + 4], ecx
jmp 0x18003efdb
mov byte [rsi + 4], r12b
movsxd rax, dword [rsi]
mov dword [rsi + 0x20], 3
mov dword [rsi + 8], 3
movzx r13d, byte [rax + r9]
mov qword [rsi + 0x30], r12
mov qword [rsi + 0x18], r12
and r13d, 3
jle 0x18003f09a
movzx r8d, byte [rsi + 4]
lea rdx, [rsi + 8]
mov rcx, rdi
call fcn.18003f1a0
cmp r13d, 2
jne 0x18003f034
movzx r8d, byte [rsi + 4]
lea rdx, [rsi + 0x20]
mov rcx, rdi
call fcn.18003f1a0
lea r9, [0x1800fcf00]
jmp 0x18003f09a
cmp dword [rsi + 8], 1
jne 0x18003f093
movsxd rax, dword [rsi]
lea r9, [0x1800fcf00]
test byte [rax + r9], 0x18
je 0x18003f09a
mov eax, dword [rsi + 0xc]
cmp eax, 0x100
jl 0x18003f05f
sub eax, 0x100
mov dword [rsi + 0xc], eax
jmp 0x18003f09a
cmp eax, 0x88
jl 0x18003f073
sub eax, 0x108
add eax, dword [rbx + 0x18]
mov dword [rsi + 0xc], eax
jmp 0x18003f09a
cmp eax, 0x10
jl 0x18003f083
sub eax, 8
add eax, dword [rbx + 0x18]
mov dword [rsi + 0xc], eax
jmp 0x18003f09a
cmp eax, 8
jl 0x18003f08b
sub eax, 0x10
add eax, dword [rbx + 0x18]
mov dword [rsi + 0xc], eax
jmp 0x18003f09a
lea r9, [0x1800fcf00]
inc dword [rbx + 0x18]
cmp dword [rdi], r15d
jl 0x18003eeb0
inc dword [rbx + 8]
mov ecx, dword [rbx + 0xc]
mov r8d, dword [rbx + 8]
cmp r8d, ecx
jle 0x18003f0ff
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
lea esi, [rax + rcx + 0x20]
mov rcx, qword [rbx]
cmp r8d, esi
cmovg esi, r8d
movsxd rdx, esi
imul rdx, rdx, 0x38
call fcn.18006367c
mov qword [rbx], rax
test rax, rax
jne 0x18003f0fc
lea rcx, [0x1800fd740]
call fcn.18003b700
int3
lea rcx, [0x1800fd740]
call fcn.18003b700
int3
mov dword [rbx + 0xc], esi
movsxd rcx, dword [rbx + 0x18]
mov rdx, rcx
lea eax, [rcx + 1]
mov dword [rbx + 0x18], eax
imul rdx, rdx, 0x38
add rdx, qword [rbx]
lea rax, [rdx + 0xc]
mov dword [rdx], 0x16
mov dword [rdx + 0x20], 3
mov qword [rdx + 0x18], rax
lea rax, [rdx + 0x24]
mov dword [rdx + 8], 3
mov qword [rdx + 0x30], rax
cmp dword [rbx + 0x18], r12d
jle 0x18003f174
mov rcx, r12
mov rdx, qword [rbx]
cmp qword [rcx + rdx + 0x18], 0
jne 0x18003f155
lea rax, [rcx + rdx + 0xc]
mov qword [rcx + rdx + 0x18], rax
cmp qword [rcx + rdx + 0x30], 0
jne 0x18003f167
lea rax, [rcx + rdx + 0x24]
mov qword [rcx + rdx + 0x30], rax
inc r12d
add rcx, 0x38
cmp r12d, dword [rbx + 0x18]
jl 0x18003f140
test r15d, r15d
je 0x18003f184
mov rdx, rbx
mov rcx, rdi
call fcn.18003f520
mov r14, qword [rsp + 0x60]
mov r13, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x50]
add rsp, 0x20
pop r15
pop r12
pop rdi
pop rsi
pop rbx
ret