Function at 0x180003ac0
Capabilities:
Encode data using xor

Disassembly:
mov ebx, eax
mov edx, eax
shl ebx, 0x18
shr edx, 0x18
add edx, ebx
movzx ebx, ah
shr eax, 8
shl ebx, 0x10
and eax, 0xff00
add ebx, edx
add ebx, eax
mov rax, qword [rsp + 0xc0]
mov eax, dword [rax + 0xbc]
cmp dword [rsi + 8], eax
je 0x180003a2b
test r15, r15
je 0x180003729
mov eax, dword [rsp + 0x2c]
lea r9d, [rax + rbx]
cmp r9d, dword [rsp + 0x34]
lea rdx, [r15 + rax]
ja 0x180003bb5
lea r10d, [rbx - 1]
test ebx, ebx
je 0x1800039b7
lea rax, [r15 + rax + 0x10]
cmp rdi, rax
lea rax, [rsi + 0x18]
setae cl
cmp rdx, rax
setae al
or cl, al
je 0x180003b93
cmp r10d, 0xe
jbe 0x180003b93
mov ecx, ebx
xor eax, eax
shr ecx, 4
shl rcx, 4
shl ecx, 4
test r15, r15
jne 0x18000386e
mov eax, dword [rsi + 0x10]
mov ecx, 0x40
lea edx, [rax + 0x10]
mov rax, qword [rsp + 0xb8]
mov dword [rsp + 0x34], edx
call qword [rax + 0x58]
lea edx, [rbx - 1]
test ebx, ebx
mov r15, rax
je 0x180003b85
lea rax, [rsi + 0x18]
cmp r15, rax
lea rax, [r15 + 0x10]
setae cl
cmp rdi, rax
setae al
or cl, al
je 0x180003d13
cmp edx, 0xe
jbe 0x180003d13
mov ecx, ebx
xor eax, eax
shr ecx, 4
shl rcx, 4
movdqu xmm1, xmmword [rsi + rax + 8]
movups xmmword [r15 + rax], xmm1
add rax, 0x10
cmp rax, rcx
jne 0x180003a8c
mov ecx, ebx
mov eax, edx
and ecx, 0xfffffff0
mov edx, ecx
sub eax, ecx
lea r8, [rdi + rdx]
add rdx, r15
cmp ebx, ecx
je 0x180003b85
movzx ecx, byte [r8]
test eax, eax
mov byte [rdx], cl
je 0x180003b85
movzx ecx, byte [r8 + 1]
cmp eax, 1
mov byte [rdx + 1], cl
je 0x180003b85
movzx ecx, byte [r8 + 2]
cmp eax, 2
mov byte [rdx + 2], cl
je 0x180003b85
movzx ecx, byte [r8 + 3]
cmp eax, 3
mov byte [rdx + 3], cl
add ecx, dword [rdi]
invalid
mov al, byte [rax]
add byte [rax], al
movzx ecx, byte [r8 + 4]
cmp eax, 4
mov byte [rdx + 4], cl
je 0x180003b85
movzx ecx, byte [r8 + 5]
cmp eax, 5
mov byte [rdx + 5], cl
je 0x180003b85
movzx ecx, byte [r8 + 6]
cmp eax, 6
mov byte [rdx + 6], cl
je 0x180003b85
movzx ecx, byte [r8 + 7]
cmp eax, 7
mov byte [rdx + 7], cl
je 0x180003b85
movzx ecx, byte [r8 + 8]
cmp eax, 8
mov byte [rdx + 8], cl
je 0x180003b85
movzx ecx, byte [r8 + 9]
cmp eax, 9
mov byte [rdx + 9], cl
je 0x180003b85
movzx ecx, byte [r8 + 0xa]
cmp eax, 0xa
mov byte [rdx + 0xa], cl
je 0x180003b85
movzx ecx, byte [r8 + 0xb]
cmp eax, 0xb
mov byte [rdx + 0xb], cl
je 0x180003b85
movzx ecx, byte [r8 + 0xc]
cmp eax, 0xc
mov byte [rdx + 0xc], cl
je 0x180003b85
movzx ecx, byte [r8 + 0xd]
cmp eax, 0xd
mov byte [rdx + 0xd], cl
je 0x180003b85
movzx eax, byte [r8 + 0xe]
mov byte [rdx + 0xe], al
add dword [rsp + 0x2c], ebx
mov qword [rsp + 0x38], rdi
jmp 0x180003729
mov ecx, r10d
xor eax, eax
jmp 0x180003b9d
mov rax, r8
movzx r8d, byte [rsi + rax + 8]
cmp rax, rcx
mov byte [rdx + rax], r8b
lea r8, [rax + 1]
jne 0x180003b9a
jmp 0x1800039b7
mov r8d, dword [rsp + 0x34]
sub r8d, dword [rsp + 0x2c]
lea r9d, [r8 - 1]
je 0x1800039ce
lea rax, [rdx + 0x10]
cmp rdi, rax
setae cl
add rsi, 0x18
cmp rdx, rsi
setae al
or cl, al
je 0x180003d33
cmp r9d, 0xe
jbe 0x180003d33
mov ecx, r8d
xor eax, eax
shr ecx, 4
shl rcx, 4
movdqu xmm2, xmmword [rdi + rax]
movups xmmword [rdx + rax], xmm2
add rax, 0x10
cmp rax, rcx
jne 0x180003bfb
mov ecx, r8d
mov eax, r9d
and ecx, 0xfffffff0
mov r9d, ecx
sub eax, ecx
add rdi, r9
add rdx, r9
cmp r8d, ecx
je 0x1800039ce
movzx ecx, byte [rdi]
test eax, eax
mov byte [rdx], cl
je 0x1800039ce
invalid