Function at 0x20176510
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rbx
mov rax, rdx
mov rdx, qword [rdx + 0x10]
movzx r9d, byte [rdx + 0x19]
test r9b, r9b
je 0x2017653c
mov r8, qword [rax + 8]
cmp byte [r8 + 0x19], 0
je 0x2017654f
mov r8, qword [rax]
cmp byte [r8 + 0x19], 0
cmove rdx, r8
jmp 0x2017659e
mov r10, rdx
nop
mov r8, r10
mov r10, qword [r10]
cmp byte [r10 + 0x19], 0
je 0x20176540
jmp 0x2017657c
mov r10, rax
nop word cs:[rax + rax]
mov r11, r10
mov r10, r8
cmp r11, qword [r8 + 0x10]
jne 0x20176579
mov r8, qword [r10 + 8]
cmp byte [r8 + 0x19], 0
je 0x20176560
jmp 0x2017657c
mov r8, r10
mov r10, qword [rax]
movzx r11d, byte [r10 + 0x19]
movzx ebx, byte [0x205500c8]
add bl, 0x7f
cmp r11b, bl
cmove rdx, r10
or r9b, r11b
je 0x20176652
mov r9, qword [rax + 8]
cmp byte [rdx + 0x19], 0
jne 0x201765ac
mov qword [rdx + 8], r9
mov r8, qword [rcx]
cmp qword [r8 + 8], rax
je 0x201765c2
lea r8, [r9 + 0x10]
cmp qword [r9], rax
cmove r8, r9
jmp 0x201765c6
add r8, 8
mov qword [r8], rdx
mov r8, qword [rcx]
cmp qword [r8], rax
jne 0x20176600
movzx r11d, byte [0x205500c8]
add r11b, 0x7f
mov r10, r9
cmp byte [rdx + 0x19], r11b
jne 0x201765fd
mov r11, rdx
nop dword [rax]
mov r10, r11
mov r11, qword [r11]
cmp byte [r11 + 0x19], 0
je 0x201765f0
mov qword [r8], r10
mov r8, qword [rcx]
cmp qword [r8 + 0x10], rax
jne 0x20176643
cmp byte [rdx + 0x19], 0
mov r10, r9
jne 0x2017663f
mov r11, rdx
nop word cs:[rax + rax]
mov r10, r11
mov r11, qword [r11 + 0x10]
movzx ebx, byte [0x205500c8]
mov esi, ebx
xor sil, 0x7f
add bl, bl
add bl, sil
cmp byte [r11 + 0x19], bl
je 0x20176620
mov qword [r8 + 0x10], r10
cmp byte [rax + 0x18], 1
je 0x20176729
jmp 0x20176a82
mov rdx, qword [r8 + 0x10]
cmp r8, rax
sete r9b
movzx ebx, byte [0x205b3a08]
xor r9b, bl
mov r11d, r9d
xor r11b, 1
and r11b, bl
mov ebx, r11d
and bl, r9b
test bl, 1
jne 0x2017659e
xor r11b, r9b
test r11b, 1
jne 0x2017659e
mov qword [r10 + 8], r8
mov r9, qword [rax]
mov qword [r8], r9
mov r9, r8
cmp r8, qword [rax + 0x10]
je 0x201766cd
mov r9, qword [r8 + 8]
movzx r10d, byte [0x205500c8]
add r10b, 0x7f
cmp byte [rdx + 0x19], r10b
jne 0x201766ba
mov qword [rdx + 8], r9
mov qword [r9], rdx
mov r10, qword [rax + 0x10]
mov qword [r8 + 0x10], r10
mov r10, qword [rax + 0x10]
mov qword [r10 + 8], r8
mov r10, qword [rcx]
cmp qword [r10 + 8], rax
je 0x201766e7
mov r11, qword [rax + 8]
lea r10, [r11 + 0x10]
cmp qword [r11], rax
cmove r10, r11
jmp 0x201766eb
add r10, 8
mov qword [r10], r8
mov r10, qword [rax + 8]
mov qword [r8 + 8], r10
movzx r10d, byte [r8 + 0x18]
movzx r11d, byte [rax + 0x18]
mov byte [r8 + 0x18], r11b
mov byte [rax + 0x18], r10b
cmp byte [rax + 0x18], 1
je 0x20176729
jmp 0x20176a82
mov byte [r9 + 0x18], 0
mov r9, qword [rdx + 8]
mov r8, qword [rcx]
cmp rdx, qword [r8 + 8]
je 0x20176a72
mov r8, rdx
cmp byte [rdx + 0x18], 1
jne 0x20176a6f
mov rdx, r9
mov r9, qword [r9]
cmp r8, r9
je 0x20176770
cmp byte [r9 + 0x18], 0
je 0x201767f0
cmp byte [r9 + 0x19], 0
jne 0x20176725
jmp 0x20176852
mov r9, qword [rdx + 0x10]
movzx r10d, byte [r9 + 0x18]
add r10b, byte [0x205b3cdb]
add r10b, byte [0x205b3cda]
jne 0x20176886
mov byte [r9 + 0x18], 1
mov byte [rdx + 0x18], 0
mov r9, qword [rdx + 0x10]
mov r10, qword [r9]
mov qword [rdx + 0x10], r10
mov r10, qword [r9]
cmp byte [r10 + 0x19], 0
sete r11b
movzx ebx, byte [0x205b3cd9]
test bl, r11b
jne 0x201767be
xor bl, r11b
je 0x201767c2
mov qword [r10 + 8], rdx
mov r10, qword [rdx + 8]
mov qword [r9 + 8], r10
mov r10, qword [rcx]
cmp qword [r10 + 8], rdx
je 0x20176874
mov r11, qword [rdx + 8]
lea r10, [r11 + 0x10]
cmp qword [r11], rdx
cmove r10, r11
jmp 0x20176878
mov byte [r9 + 0x18], 1
mov byte [rdx + 0x18], 0
mov r9, qword [rdx]
mov r10, qword [r9 + 0x10]
mov qword [rdx], r10
mov r10, qword [r9 + 0x10]
cmp byte [r10 + 0x19], 0
jne 0x20176812
mov qword [r10 + 8], rdx
mov r10, qword [rdx + 8]
mov qword [r9 + 8], r10
mov r10, qword [rcx]
cmp qword [r10 + 8], rdx
je 0x20176835
mov r11, qword [rdx + 8]
lea r10, [r11 + 0x10]
cmp qword [r11 + 0x10], rdx
cmovne r10, r11
jmp 0x20176839
add r10, 8
mov qword [r10], r9
mov qword [r9 + 0x10], rdx
mov qword [rdx + 8], r9
mov r9, qword [rdx]
cmp byte [r9 + 0x19], 0
jne 0x20176725
mov r10, qword [r9 + 0x10]
cmp byte [r10 + 0x18], 1
jne 0x2017692d
mov r11, qword [r9]
cmp byte [r11 + 0x18], 1
je 0x20176720
jmp 0x2017692d
add r10, 8
mov qword [r10], r9
mov qword [r9], rdx
mov qword [rdx + 8], r9
mov r9, qword [rdx + 0x10]
movzx r10d, byte [0x205500c8]
add r10b, 0x73
mov r11d, r10d
xor r11b, 0xc
and r10b, 0xc
add r10b, r10b
add r10b, r11b
cmp byte [r9 + 0x19], r10b
jne 0x20176725
mov r10, qword [r9]
cmp byte [r10 + 0x18], 1
jne 0x201768c6
mov r11, qword [r9 + 0x10]
cmp byte [r11 + 0x18], 1
je 0x20176720
mov r11, qword [r9 + 0x10]
cmp byte [r11 + 0x18], 1
jne 0x20176a09
movzx r11d, byte [0x205500c8]
add r11b, 0x80
mov byte [r10 + 0x18], r11b
mov byte [r9 + 0x18], 0
mov r10, qword [r9]
mov r11, qword [r10 + 0x10]
mov qword [r9], r11
mov r11, qword [r10 + 0x10]
cmp byte [r11 + 0x19], 0
jne 0x20176903
mov qword [r11 + 8], r9
mov r11, qword [r9 + 8]
mov qword [r10 + 8], r11
mov r11, qword [rcx]
cmp qword [r11 + 8], r9
je 0x201769f6
mov rsi, qword [r9 + 8]
lea r11, [rsi + 0x10]
cmp qword [rsi + 0x10], r9
cmovne r11, rsi
jmp 0x201769fa
mov r11, qword [r9]
cmp byte [r11 + 0x18], 1
jne 0x20176998
movzx r11d, byte [0x205500c8]
add r11b, 0x80
mov byte [r10 + 0x18], r11b
mov byte [r9 + 0x18], 0
mov r10, qword [r9 + 0x10]
mov r11, qword [r10]
mov qword [r9 + 0x10], r11
mov r11, qword [r10]
cmp byte [r11 + 0x19], 0
jne 0x20176965
mov qword [r11 + 8], r9
mov r11, qword [r9 + 8]
mov qword [r10 + 8], r11
mov r11, qword [rcx]
cmp qword [r11 + 8], r9
je 0x20176987
mov rsi, qword [r9 + 8]
lea r11, [rsi + 0x10]
cmp qword [rsi], r9
cmove r11, rsi
jmp 0x2017698b
add r11, 8
mov qword [r11], r10
mov qword [r10], r9
mov qword [r9 + 8], r10
mov r9, qword [rdx]
movzx r10d, byte [rdx + 0x18]
mov byte [r9 + 0x18], r10b
mov byte [rdx + 0x18], 1
mov r9, qword [r9]
mov byte [r9 + 0x18], 1
mov r9, qword [rdx]
mov r10, qword [r9 + 0x10]
mov qword [rdx], r10
mov r10, qword [r9 + 0x10]
cmp byte [r10 + 0x19], 0
jne 0x201769c6
mov qword [r10 + 8], rdx
mov r10, qword [rdx + 8]
mov qword [r9 + 8], r10
mov r10, qword [rcx]
cmp qword [r10 + 8], rdx
je 0x201769e9
mov r11, qword [rdx + 8]
lea r10, [r11 + 0x10]
cmp qword [r11 + 0x10], rdx
cmovne r10, r11
jmp 0x201769ed
add r10, 8
mov qword [r10], r9
mov qword [r9 + 0x10], rdx
jmp 0x20176a6b
add r11, 8
mov qword [r11], r10
mov qword [r10 + 0x10], r9
mov qword [r9 + 8], r10
mov r9, qword [rdx + 0x10]
movzx r10d, byte [rdx + 0x18]
mov byte [r9 + 0x18], r10b
mov byte [rdx + 0x18], 1
mov r9, qword [r9 + 0x10]
mov byte [r9 + 0x18], 1
mov r9, qword [rdx + 0x10]
mov r10, qword [r9]
mov qword [rdx + 0x10], r10
mov r10, qword [r9]
cmp byte [r10 + 0x19], 0
jne 0x20176a38
mov qword [r10 + 8], rdx
mov r10, qword [rdx + 8]
mov qword [r9 + 8], r10
mov r11, qword [rcx]
lea r10, [r11 + 8]
cmp byte [0x205b3cd8], 0
jne 0x20176a65
cmp qword [r11 + 8], rdx
je 0x20176a65
mov r11, qword [rdx + 8]
lea r10, [r11 + 0x10]
cmp qword [r11], rdx
cmove r10, r11
mov qword [r10], r9
mov qword [r9], rdx
mov qword [rdx + 8], r9
mov rdx, r8
movzx r8d, byte [0x205500c8]
add r8b, 0x80
mov byte [rdx + 0x18], r8b
mov rdx, qword [0x205b38a0]
add rdx, qword [rcx + 8]
je 0x20176aba
movabs r8, 0xc83de7f35883281c
movabs r9, 0x41fbdff5aa72d59b
add rdx, r8
add rdx, r9
sub r9, rdx
lea rdx, [r8 + r9]
inc rdx
neg rdx
mov qword [rcx + 8], rdx
pop rbx
pop rsi
ret