Function at 0x180597a60
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 0x180597aa8
mov rax, qword [rsp + 0x110]
mov qword [rsp + 0x20], rax
mov rcx, rbx
mov rdx, r15
mov r8, rdi
mov r9, rbp
call fcn.180596d10
jmp 0x18059806f
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 0x18059804c
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 0x180597b40
mov rax, qword [rbx]
mov r9, qword [rdx]
cmp rax, r9
setb cl
je 0x180597b50
mov r10, qword [r8]
cmp rax, r10
setb r11b
je 0x180597b67
mov rax, rbx
cmp cl, r11b
je 0x180597b7b
jmp 0x180597b97
mov rcx, rbx
call fcn.1805961c0
jmp 0x180597b97
mov rcx, qword [rbx + 0x18]
cmp rcx, qword [rdx + 0x18]
setb cl
mov r10, qword [r8]
cmp rax, r10
setb r11b
jne 0x180597b29
mov rax, qword [rbx + 0x18]
cmp rax, qword [r8 + 0x18]
setb r11b
mov rax, rbx
cmp cl, r11b
jne 0x180597b97
cmp r9, r10
setb al
jne 0x180597b8e
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 0x180597c18
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 0x180597c18
movzx eax, al
test eax, eax
jne 0x180597e30
mov rax, qword [rsp + 0x40]
mov rax, qword [rax + 0x18]
cmp rax, qword [rsi + 0x18]
jae 0x180597e30
cmp r14, rbp
ja 0x180598084
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 0x180597c8d
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 0x180597cb0
mov r9, qword [rax]
cmp r9, qword [rsi]
setb r9b
jne 0x180597c50
mov r9, qword [rax + 0x18]
cmp r9, qword [rsi + 0x18]
setb r9b
jmp 0x180597c50
cmp rdx, r14
je 0x180597cf0
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 0x180597c40
mov rax, r15
shl rax, 4
lea r8, [rax + rax*2]
mov rcx, rbx
mov rdx, rdi
call fcn.1806a7400
mov rdx, r14
sub rdx, r15
je 0x180597dd4
lea rax, [r15 + 1]
cmp r14, rax
jne 0x180597d20
xor r8d, r8d
jmp 0x180597d97
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 0x180597d40
test dl, 1
je 0x180597dd4
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 0x180597e30
cmp r14, r15
jb 0x180598084
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.180597a60
mov r14, r15
cmp r15, 0x21
jae 0x180597ae0
jmp 0x180597a85
cmp r14, rbp
ja 0x180598084
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 0x180597ea8
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 0x180597ee0
mov r9, qword [rsi]
xor r8d, r8d
cmp r9, qword [rcx]
setne r8b
cmovb r8d, r13d
test r8b, r8b
jne 0x180597e60
mov r9, qword [rsi + 0x18]
xor r8d, r8d
cmp r9, qword [rcx + 0x18]
setne r8b
cmovb r8d, r13d
jmp 0x180597e60
cmp r12, r14
je 0x180597f20
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 0x180597e50
mov rax, rbp
shl rax, 4
lea r8, [rax + rax*2]
mov rcx, rbx
mov rdx, rdi
call fcn.1806a7400
mov r15, r14
sub r15, rbp
mov esi, dword [rsp + 0x4c]
je 0x180598017
lea rax, [rbp + 1]
cmp r14, rax
jne 0x180597f56
xor edx, edx
jmp 0x180597fd9
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 0x180597f80
test r15b, 1
je 0x180598017
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 0x180598084
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 0x180597ad0
jmp 0x180597a85
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.180591a80
nop
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2