Function at 0x1805967c0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x58
cmp rdx, 2
jb 0x180596cf3
mov rbx, rdx
lea rax, [rdx + 0x10]
cmp rax, r9
ja 0x180596d04
mov rsi, r8
mov rdi, rcx
mov r14, rbx
shr r14, 1
cmp rbx, 0xf
mov qword [rsp + 0x20], rbx
mov qword [rsp + 0x28], r14
jbe 0x180596834
lea r8, [rsi + rbx*8]
mov rcx, rdi
mov rdx, rsi
call fcn.1805962c0
lea rcx, [rdi + r14*8]
lea rdx, [rsi + r14*8]
lea r8, [rsi + rbx*8]
add r8, 0x40
call fcn.1805962c0
mov eax, 8
jmp 0x180596ade
cmp rbx, 7
jbe 0x180596acb
mov eax, dword [rdi + 8]
mov ecx, dword [rdi + 0xc]
xor edx, edx
cmp ecx, dword [rdi + 4]
setb dl
xor ecx, ecx
cmp eax, dword [rdi]
setb cl
cmove ecx, edx
mov eax, dword [rdi + 0x18]
mov edx, dword [rdi + 0x1c]
xor r8d, r8d
cmp edx, dword [rdi + 0x14]
setb r8b
xor r9d, r9d
cmp eax, dword [rdi + 0x10]
setb r9b
cmove r9d, r8d
movzx edx, cl
mov eax, edx
xor al, 1
movzx ebx, al
movzx r9d, r9b
lea rcx, [r9 + 2]
mov r10d, dword [rdi + r9*8 + 0x10]
mov r11d, dword [rdi + r9*8 + 0x14]
mov r8, r9
xor r8, 3
xor ebp, ebp
cmp r11d, dword [rdi + rdx*8 + 4]
setb bpl
xor r11d, r11d
cmp r10d, dword [rdi + rdx*8]
setb r11b
cmove r11d, ebp
mov r10d, dword [rdi + r8*8]
mov ebp, dword [rdi + r8*8 + 4]
xor r15d, r15d
cmp ebp, dword [rdi + rbx*8 + 4]
setb r15b
xor ebp, ebp
cmp r10d, dword [rdi + rbx*8]
lea r10, [rdi + r9*8 + 0x10]
setb bpl
cmove ebp, r15d
test bpl, bpl
mov r9, rbx
cmovne r9, rcx
lea r15, [rdi + rbx*8]
mov r12, r15
cmovne r12, r10
test r11b, r11b
cmovne r9, rdx
mov r11, rdx
cmovne r11, rcx
cmovne rcx, rbx
cmovne r10, r15
lea rdx, [rdi + rdx*8]
cmovne r12, rdx
test bpl, bpl
cmove rbx, r8
cmovne rcx, r8
lea rdx, [rdi + r8*8]
cmove rdx, r10
mov r8d, dword [rdi + rcx*8]
mov edx, dword [rdx + 4]
xor r10d, r10d
cmp edx, dword [r12 + 4]
setb r10b
xor edx, edx
cmp r8d, dword [rdi + r9*8]
setb dl
cmove edx, r10d
test dl, dl
mov rax, rcx
cmovne rax, r9
mov qword [rsp + 0x30], rax
cmove rcx, r9
mov r8, qword [rdi + r11*8]
mov qword [rsi], r8
mov r10, qword [rdi + rcx*8]
lea rcx, [rdi + r14*8]
mov r8d, dword [rdi + r14*8 + 8]
mov r9d, dword [rdi + r14*8 + 0xc]
xor r11d, r11d
cmp r9d, dword [rdi + r14*8 + 4]
setb r11b
xor r9d, r9d
cmp r8d, dword [rdi + r14*8]
setb r9b
cmove r9d, r11d
mov r8d, dword [rdi + r14*8 + 0x18]
mov r11d, dword [rdi + r14*8 + 0x1c]
xor ebp, ebp
cmp r11d, dword [rdi + r14*8 + 0x14]
setb bpl
xor r15d, r15d
cmp r8d, dword [rdi + r14*8 + 0x10]
setb r15b
cmove r15d, ebp
movzx r11d, r9b
mov r8d, r11d
xor r8b, 1
movzx r8d, r8b
movzx r12d, r15b
lea r9, [r12 + 2]
lea r15, [rcx + r12*8]
add r15, 0x10
mov ebp, dword [rcx + r12*8 + 0x10]
mov r13d, dword [rcx + r12*8 + 0x14]
xor r12, 3
xor eax, eax
cmp r13d, dword [rcx + r11*8 + 4]
setb al
xor r13d, r13d
cmp ebp, dword [rcx + r11*8]
setb r13b
cmove r13d, eax
mov edx, dword [rcx + r12*8]
mov ebp, dword [rcx + r12*8 + 4]
xor eax, eax
cmp ebp, dword [rcx + r8*8 + 4]
setb al
xor ebp, ebp
cmp edx, dword [rcx + r8*8]
mov qword [rsi + 8], r10
setb bpl
cmove ebp, eax
test bpl, bpl
mov r10, r8
cmovne r10, r9
lea rax, [rcx + r8*8]
mov rdx, rax
cmovne rdx, r15
test r13b, r13b
mov r14, qword [rsp + 0x30]
mov r13, qword [rdi + r14*8]
cmovne r15, rax
lea rax, [rcx + r11*8]
cmovne r10, r11
cmovne r11, r9
cmovne r9, r8
mov qword [rsi + 0x10], r13
mov r14, qword [rsp + 0x28]
cmovne rdx, rax
test bpl, bpl
cmove r8, r12
cmovne r9, r12
lea rax, [rcx + r12*8]
cmove rax, r15
mov ebp, dword [rcx + r9*8]
mov eax, dword [rax + 4]
xor r15d, r15d
cmp eax, dword [rdx + 4]
setb r15b
xor eax, eax
cmp ebp, dword [rcx + r10*8]
mov rdx, qword [rdi + rbx*8]
setb al
cmove eax, r15d
mov rbx, qword [rsp + 0x20]
test al, al
mov rax, r9
cmovne rax, r10
mov qword [rsi + 0x18], rdx
cmove r9, r10
mov rdx, qword [rcx + r11*8]
mov qword [rsi + r14*8], rdx
mov rdx, qword [rcx + r9*8]
mov qword [rsi + r14*8 + 8], rdx
mov rax, qword [rcx + rax*8]
mov qword [rsi + r14*8 + 0x10], rax
mov rax, qword [rcx + r8*8]
mov qword [rsi + r14*8 + 0x18], rax
mov eax, 4
jmp 0x180596ade
mov rax, qword [rdi]
mov qword [rsi], rax
mov rax, qword [rdi + r14*8]
mov qword [rsi + r14*8], rax
mov eax, 1
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x50], 2
mov rcx, rbx
sub rcx, r14
lea rdx, [rax*8]
mov r9d, 2
xor r10d, r10d
jmp 0x180596b28
mov r10, qword [rsp + 0x48]
mov r9, qword [rsp + 0x50]
mov r14, qword [rsp + 0x28]
cmp r9, r10
je 0x180596bea
lea r15, [r10 + 1]
mov qword [rsp + 0x48], r15
mov r11, qword [rsp + r10*8 + 0x38]
test r11, r11
mov r8, rcx
cmove r8, r14
mov r10, r15
cmp rax, r8
jae 0x180596b1f
lea r9, [rdi + r11*8]
lea r10, [rsi + r11*8]
mov r11, rdx
mov r15, rax
jmp 0x180596b73
mov rbp, r10
mov qword [rbp], r12
inc r15
add r11, 8
cmp r15, r8
je 0x180596b10
mov r12, qword [r9 + r15*8]
mov qword [r10 + r15*8], r12
mov r13, r12
shr r13, 0x20
xor ebp, ebp
cmp dword [r10 + r15*8 - 4], r13d
seta bpl
xor ebx, ebx
cmp dword [r10 + r15*8 - 8], r12d
seta bl
cmovne ebp, ebx
cmp bpl, 1
jne 0x180596b67
mov rbp, r11
nop word cs:[rax + rax]
mov rbx, qword [r10 + rbp - 8]
mov qword [r10 + rbp], rbx
cmp rbp, 8
je 0x180596b60
xor ebx, ebx
cmp dword [r10 + rbp - 0xc], r13d
seta bl
xor r14d, r14d
cmp dword [r10 + rbp - 0x10], r12d
seta r14b
cmove r14d, ebx
add rbp, 0xfffffffffffffff8
test r14b, r14b
jne 0x180596bb0
add rbp, r10
jmp 0x180596b63
lea rax, [rsi + r14*8]
lea rdx, [rsi + r14*8]
add rdx, 0xfffffffffffffff8
mov r8, qword [rsp + 0x20]
lea rcx, [rsi + r8*8]
add rcx, 0xfffffffffffffff8
lea r8, [rdi + r8*8]
add r8, 0xfffffffffffffff8
xor r9d, r9d
cmp r14, 1
mov r10d, 0
sbb r10, r14
nop dword [rax + rax]
mov ebp, dword [rax]
mov r11d, dword [rax + 4]
xor r14d, r14d
cmp r11d, dword [rsi + 4]
setb r14b
xor r11d, r11d
cmp ebp, dword [rsi]
setb r11b
cmove r11d, r14d
test r11b, r11b
mov r14, rsi
cmovne r14, rax
mov r14, qword [r14]
mov qword [rdi], r14
movzx r14d, r11b
xor r11b, 1
lea rax, [rax + r14*8]
add rdi, 8
mov ebp, dword [rcx]
mov r14d, dword [rcx + 4]
xor r15d, r15d
cmp r14d, dword [rdx + 4]
setb r15b
xor r14d, r14d
cmp ebp, dword [rdx]
movzx r11d, r11b
lea rsi, [rsi + r11*8]
setb r14b
cmove r14d, r15d
test r14b, r14b
mov r11, rcx
cmovne r11, rdx
mov r11, qword [r11]
mov qword [r8 + r9*8], r11
movzx r11d, r14b
lea rcx, [rcx + r11*8]
add rcx, 0xfffffffffffffff8
shl r11, 3
sub rdx, r11
dec r9
cmp r10, r9
jne 0x180596c20
add rdx, 8
test byte [rsp + 0x20], 1
je 0x180596ce5
xor r8d, r8d
xor r9d, r9d
cmp rsi, rdx
setae r8b
setb r9b
mov r10, rax
cmovb r10, rsi
mov r10, qword [r10]
mov qword [rdi], r10
lea rsi, [rsi + r9*8]
lea rax, [rax + r8*8]
cmp rsi, rdx
jne 0x180596d04
add rcx, 8
cmp rax, rcx
jne 0x180596d04
add rsp, 0x58
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2