Function at 0x18003b220
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
push r14
sub rsp, 0x40
mov eax, dword [r8 + 0x14]
lea rbx, [r8 + 0x18]
mov rsi, rcx
mov r10, r9
mov ecx, dword [rdx]
mov rdi, r8
mov r14, rdx
cmp eax, ecx
ja 0x18003b327
mov rcx, qword [rsi]
and eax, 0xfffffffc
mov r8d, eax
lea rdx, [rcx + rax]
cmp rcx, rdx
jae 0x18003b293
nop word [rax + rax]
movzx eax, byte [rbx]
xor byte [rcx], al
movzx eax, byte [rbx + 1]
xor byte [rcx + 1], al
movzx eax, byte [rbx + 2]
xor byte [rcx + 2], al
movzx eax, byte [rbx + 3]
xor byte [rcx + 3], al
add rcx, 4
cmp rcx, rdx
jb 0x18003b270
mov eax, dword [rdi + 0x14]
and eax, 3
jbe 0x18003b2b8
mov r9d, eax
nop
movzx eax, byte [rbx]
lea rbx, [rbx + 1]
mov edx, r8d
inc r8d
add rdx, qword [rsi]
xor byte [rdx], al
sub r9, 1
jne 0x18003b2a0
mov eax, dword [rdi]
xor r8d, r8d
mov edx, dword [rdi + 0x14]
mov ecx, eax
shl eax, 0x19
shr ecx, 7
and cl, 1
mov qword [rsp + 0x30], r10
cdqe
sar rax, 0x1e
mov qword [rsp + 0x28], rdi
mov byte [rsp + 0x20], cl
mov rcx, qword [rsi]
movzx r9d, byte [rax + rdi + 0x11]
call fcn.18003d370
test al, al
jne 0x18003b490
mov ecx, dword [rdi]
test cl, cl
jns 0x18003b311
mov eax, ecx
and eax, 0xffffffe0
shl eax, 0x19
sar eax, 0x19
dec eax
xor ecx, eax
and ecx, 0xffffff9f
xor ecx, eax
mov dword [rdi], ecx
mov eax, dword [rdi + 0x14]
add qword [rsi], rax
mov eax, dword [rdi + 0x14]
sub dword [r14], eax
mov al, 1
or dword [rdi], 1
jmp 0x18003b492
cmp dword [rbx], 0
je 0x18003b403
mov rax, qword [rsi]
cmp ecx, 0x80000
jne 0x18003b3c8
lea rcx, [rax + 2]
mov edx, 0x8000
nop dword [rax + rax]
movzx eax, byte [rbx]
xor byte [rcx - 2], al
lea rcx, [rcx + 0x10]
movzx eax, byte [rbx + 1]
xor byte [rcx - 0x11], al
movzx eax, byte [rbx + 2]
xor byte [rcx - 0x10], al
movzx eax, byte [rbx + 3]
xor byte [rcx - 0xf], al
movzx eax, byte [rbx]
xor byte [rcx - 0xe], al
movzx eax, byte [rbx + 1]
xor byte [rcx - 0xd], al
movzx eax, byte [rbx + 2]
xor byte [rcx - 0xc], al
movzx eax, byte [rbx + 3]
xor byte [rcx - 0xb], al
movzx eax, byte [rbx]
xor byte [rcx - 0xa], al
movzx eax, byte [rbx + 1]
xor byte [rcx - 9], al
movzx eax, byte [rbx + 2]
xor byte [rcx - 8], al
movzx eax, byte [rbx + 3]
xor byte [rcx - 7], al
movzx eax, byte [rbx]
xor byte [rcx - 6], al
movzx eax, byte [rbx + 1]
xor byte [rcx - 5], al
movzx eax, byte [rbx + 2]
xor byte [rcx - 4], al
movzx eax, byte [rbx + 3]
xor byte [rcx - 3], al
sub rdx, 1
jne 0x18003b350
jmp 0x18003b403
and ecx, 0xfffffffc
lea edx, [rcx + 4]
add rdx, rax
cmp rax, rdx
jae 0x18003b403
nop word [rax + rax]
movzx ecx, byte [rbx]
xor byte [rax], cl
movzx ecx, byte [rbx + 1]
xor byte [rax + 1], cl
movzx ecx, byte [rbx + 2]
xor byte [rax + 2], cl
movzx ecx, byte [rbx + 3]
xor byte [rax + 3], cl
add rax, 4
cmp rax, rdx
jb 0x18003b3e0
mov eax, dword [r14]
sub dword [r8 + 0x14], eax
mov eax, dword [r8]
mov ecx, eax
mov edx, dword [r14]
shl eax, 0x19
shr ecx, 7
and cl, 1
mov qword [rsp + 0x30], r10
cdqe
sar rax, 0x1e
mov qword [rsp + 0x28], rdi
mov byte [rsp + 0x20], cl
mov rcx, qword [rsi]
movzx r9d, byte [rax + r8 + 0x11]
mov r8d, dword [r8 + 0x14]
call fcn.18003d370
test al, al
jne 0x18003b490
mov eax, dword [r14]
and eax, 3
je 0x18003b490
movzx ecx, byte [rbx]
mov r10d, 4
movzx edx, byte [rbx + 1]
sub r10d, eax
movzx r8d, byte [rbx + 2]
mov eax, r10d
movzx r9d, byte [rbx + 3]
and eax, 3
mov byte [rax + rbx], cl
lea eax, [r10 + 1]
and eax, 3
mov byte [rax + rbx], dl
lea eax, [r10 - 2]
and eax, 3
mov byte [rax + rbx], r8b
lea eax, [r10 - 1]
and eax, 3
mov byte [rax + rbx], r9b
xor al, al
mov rbx, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x60]
add rsp, 0x40
pop r14
ret