Function at 0x180363f90
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x98
mov rbp, r9
mov rdi, r8
mov r15, rdx
mov rbx, rcx
cmp rdx, 0x21
jae 0x180363fd8
mov rax, qword [rsp + 0x110]
mov qword [rsp + 0x20], rax
mov rcx, rbx
mov rdx, r15
mov r8, rdi
mov r9, rbp
call fcn.180363240
jmp 0x18036459f
mov rax, qword [rsp + 0x108]
mov qword [rsp + 0x40], rax
mov esi, dword [rsp + 0x100]
lea rax, [rdi - 0x30]
mov qword [rsp + 0x50], rax
mov r13d, 0xff
mov qword [rsp + 0x58], rbp
mov r14, r15
nop word cs:[rax + rax]
sub esi, 1
jb 0x18036457c
mov r9, r14
shr r9, 3
lea rdx, [r9 + r9*2]
shl rdx, 6
add rdx, rbx
imul r8, r9, 0x150
add r8, rbx
cmp r14, 0x40
mov dword [rsp + 0x4c], esi
jae 0x180364070
mov rax, qword [rbx]
mov r9, qword [rdx]
cmp rax, r9
setb cl
je 0x180364080
mov r10, qword [r8]
cmp rax, r10
setb r11b
je 0x180364097
mov rax, rbx
cmp cl, r11b
je 0x1803640ab
jmp 0x1803640c7
mov rcx, rbx
call fcn.1803626f0
jmp 0x1803640c7
mov rcx, qword [rbx + 0x18]
cmp rcx, qword [rdx + 0x18]
setb cl
mov r10, qword [r8]
cmp rax, r10
setb r11b
jne 0x180364059
mov rax, qword [rbx + 0x18]
cmp rax, qword [r8 + 0x18]
setb r11b
mov rax, rbx
cmp cl, r11b
jne 0x1803640c7
cmp r9, r10
setb al
jne 0x1803640be
mov rax, qword [rdx + 0x18]
cmp rax, qword [r8 + 0x18]
setb al
xor cl, al
cmovne rdx, r8
mov rax, rdx
sub rax, rbx
movabs rcx, 0xaaaaaaaaaaaaaaab
mul rcx
mov r12, rdx
shr r12, 5
lea rax, [r12 + r12*2]
shl rax, 4
lea rsi, [rbx + rax]
movups xmm0, xmmword [rbx + rax]
movups xmm1, xmmword [rbx + rax + 0x10]
movups xmm2, xmmword [rbx + rax + 0x20]
movaps xmmword [rsp + 0x80], xmm2
movaps xmmword [rsp + 0x70], xmm1
movaps xmmword [rsp + 0x60], xmm0
cmp qword [rsp + 0x40], 0
je 0x180364148
mov rax, qword [rsp + 0x40]
mov rcx, qword [rax]
xor eax, eax
cmp rcx, qword [rsi]
setne al
cmovb eax, r13d
cmp al, 0xff
je 0x180364148
movzx eax, al
test eax, eax
jne 0x180364360
mov rax, qword [rsp + 0x40]
mov rax, qword [rax + 0x18]
cmp rax, qword [rsi + 0x18]
jae 0x180364360
cmp r14, rbp
ja 0x1803645b4
lea rbp, [r14 + r14*2]
shl rbp, 4
lea rcx, [rdi + rbp]
xor r15d, r15d
mov rax, rbx
mov rdx, r12
nop word cs:[rax + rax]
lea r8, [rdx + rdx*2]
shl r8, 4
add r8, rbx
jmp 0x1803641bd
add rcx, 0xffffffffffffffd0
test r9b, r9b
mov r10, rcx
cmovne r10, rdi
lea r11, [r15 + r15*2]
shl r11, 4
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmm2, xmmword [rax + 0x20]
movups xmmword [r10 + r11 + 0x20], xmm2
movups xmmword [r10 + r11 + 0x10], xmm1
movups xmmword [r10 + r11], xmm0
movzx r9d, r9b
add r15, r9
add rax, 0x30
cmp rax, r8
jae 0x1803641e0
mov r9, qword [rax]
cmp r9, qword [rsi]
setb r9b
jne 0x180364180
mov r9, qword [rax + 0x18]
cmp r9, qword [rsi + 0x18]
setb r9b
jmp 0x180364180
cmp rdx, r14
je 0x180364220
lea rdx, [r15 + r15*2]
shl rdx, 4
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmm2, xmmword [rax + 0x20]
movups xmmword [rcx + rdx - 0x10], xmm2
movups xmmword [rcx + rdx - 0x20], xmm1
movups xmmword [rcx + rdx - 0x30], xmm0
add rcx, 0xffffffffffffffd0
add rax, 0x30
mov rdx, r14
jmp 0x180364170
mov rax, r15
shl rax, 4
lea r8, [rax + rax*2]
mov rcx, rbx
mov rdx, rdi
call fcn.180468b10
mov rdx, r14
sub rdx, r15
je 0x180364304
lea rax, [r15 + 1]
cmp r14, rax
jne 0x180364250
xor r8d, r8d
jmp 0x1803642c7
mov rax, rdx
and rax, 0xfffffffffffffffe
lea rcx, [r15 + r15*2]
shl rcx, 4
add rcx, rbx
add rbp, qword [rsp + 0x50]
xor r9d, r9d
nop word [rax + rax]
movups xmm0, xmmword [rbp]
movups xmm1, xmmword [rbp + 0x10]
movups xmm2, xmmword [rbp + 0x20]
movups xmmword [rcx + 0x20], xmm2
movups xmmword [rcx + 0x10], xmm1
movups xmmword [rcx], xmm0
lea r8, [r9 + 2]
xor r9, 0xfffffffffffffffe
add r9, r14
lea r9, [r9 + r9*2]
shl r9, 4
movups xmm0, xmmword [rdi + r9]
movups xmm1, xmmword [rdi + r9 + 0x10]
movups xmm2, xmmword [rdi + r9 + 0x20]
movups xmmword [rcx + 0x30], xmm0
movups xmmword [rcx + 0x40], xmm1
movups xmmword [rcx + 0x50], xmm2
add rcx, 0x60
add rbp, 0xffffffffffffffa0
mov r9, r8
cmp rax, r8
jne 0x180364270
test dl, 1
je 0x180364304
mov rax, r8
not rax
add rax, r14
lea rax, [rax + rax*2]
shl rax, 4
add r8, r15
lea rcx, [r8 + r8*2]
shl rcx, 4
movups xmm0, xmmword [rdi + rax]
movups xmm1, xmmword [rdi + rax + 0x10]
movups xmm2, xmmword [rdi + rax + 0x20]
movups xmmword [rbx + rcx + 0x20], xmm2
movups xmmword [rbx + rcx + 0x10], xmm1
movups xmmword [rbx + rcx], xmm0
test r15, r15
mov rbp, qword [rsp + 0x58]
je 0x180364360
cmp r14, r15
jb 0x1803645b4
lea rcx, [r15 + r15*2]
shl rcx, 4
add rcx, rbx
mov rax, qword [rsp + 0x110]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x28], rax
mov esi, dword [rsp + 0x4c]
mov dword [rsp + 0x20], esi
mov r8, rdi
mov r9, rbp
call fcn.180363f90
mov r14, r15
cmp r15, 0x21
jae 0x180364010
jmp 0x180363fb5
cmp r14, rbp
ja 0x1803645b4
lea rax, [r14 + r14*2]
shl rax, 4
mov qword [rsp + 0x40], rax
add rax, rdi
xor ebp, ebp
mov rcx, rbx
nop
lea rdx, [r12 + r12*2]
shl rdx, 4
add rdx, rbx
jmp 0x1803643d8
add rax, 0xffffffffffffffd0
xor r9d, r9d
cmp r8b, 0xff
mov r8, rax
cmovne r8, rdi
setne r9b
lea r10, [rbp*2]
add r10, rbp
shl r10, 4
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmm2, xmmword [rcx + 0x20]
movups xmmword [r8 + r10 + 0x20], xmm2
movups xmmword [r8 + r10 + 0x10], xmm1
movups xmmword [r8 + r10], xmm0
add rbp, r9
add rcx, 0x30
cmp rcx, rdx
jae 0x180364410
mov r9, qword [rsi]
xor r8d, r8d
cmp r9, qword [rcx]
setne r8b
cmovb r8d, r13d
test r8b, r8b
jne 0x180364390
mov r9, qword [rsi + 0x18]
xor r8d, r8d
cmp r9, qword [rcx + 0x18]
setne r8b
cmovb r8d, r13d
jmp 0x180364390
cmp r12, r14
je 0x180364450
add rax, 0xffffffffffffffd0
lea rdx, [rbp*2]
add rdx, rbp
shl rdx, 4
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmm2, xmmword [rcx + 0x20]
movups xmmword [rdi + rdx + 0x20], xmm2
movups xmmword [rdi + rdx + 0x10], xmm1
movups xmmword [rdi + rdx], xmm0
inc rbp
add rcx, 0x30
mov r12, r14
jmp 0x180364380
mov rax, rbp
shl rax, 4
lea r8, [rax + rax*2]
mov rcx, rbx
mov rdx, rdi
call fcn.180468b10
mov r15, r14
sub r15, rbp
mov esi, dword [rsp + 0x4c]
je 0x180364547
lea rax, [rbp + 1]
cmp r14, rax
jne 0x180364486
xor edx, edx
jmp 0x180364509
mov rax, r15
and rax, 0xfffffffffffffffe
lea rcx, [rbp*2]
add rcx, rbp
shl rcx, 4
add rcx, rbx
mov r9, qword [rsp + 0x40]
add r9, qword [rsp + 0x50]
xor r8d, r8d
nop dword [rax]
movups xmm0, xmmword [r9]
movups xmm1, xmmword [r9 + 0x10]
movups xmm2, xmmword [r9 + 0x20]
movups xmmword [rcx + 0x20], xmm2
movups xmmword [rcx + 0x10], xmm1
movups xmmword [rcx], xmm0
lea rdx, [r8 + 2]
xor r8, 0xfffffffffffffffe
add r8, r14
lea r8, [r8 + r8*2]
shl r8, 4
movups xmm0, xmmword [rdi + r8]
movups xmm1, xmmword [rdi + r8 + 0x10]
movups xmm2, xmmword [rdi + r8 + 0x20]
movups xmmword [rcx + 0x30], xmm0
movups xmmword [rcx + 0x40], xmm1
movups xmmword [rcx + 0x50], xmm2
add rcx, 0x60
add r9, 0xffffffffffffffa0
mov r8, rdx
cmp rax, rdx
jne 0x1803644b0
test r15b, 1
je 0x180364547
mov rax, rdx
not rax
add rax, r14
lea rax, [rax + rax*2]
shl rax, 4
add rdx, rbp
lea rcx, [rdx + rdx*2]
shl rcx, 4
movups xmm0, xmmword [rdi + rax]
movups xmm1, xmmword [rdi + rax + 0x10]
movups xmm2, xmmword [rdi + rax + 0x20]
movups xmmword [rbx + rcx + 0x20], xmm2
movups xmmword [rbx + rcx + 0x10], xmm1
movups xmmword [rbx + rcx], xmm0
cmp r14, rbp
jb 0x1803645b4
lea rax, [rbp*2]
add rax, rbp
shl rax, 4
add rbx, rax
mov eax, 0
mov qword [rsp + 0x40], rax
cmp r15, 0x21
mov rbp, qword [rsp + 0x58]
jae 0x180364000
jmp 0x180363fb5
mov rax, qword [rsp + 0x110]
mov qword [rsp + 0x28], rax
mov byte [rsp + 0x20], 1
mov rcx, rbx
mov rdx, r14
mov r8, rdi
mov r9, rbp
call fcn.18035dfb0
nop
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2