Function at 0x201788f0
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rdi
push rbx
mov rax, rdx
mov rdx, qword [rdx + 0x10]
movzx r9d, byte [rdx + 0x19]
test r9b, r9b
je 0x20178927
mov r8, qword [rax + 8]
cmp byte [r8 + 0x19], 0
je 0x2017893f
mov r8, qword [rax]
movzx r9d, byte [0x205b3cdb]
add r9b, byte [r8 + 0x19]
cmove rdx, r8
jmp 0x201789eb
mov r10, rdx
nop word [rax + rax]
mov r8, r10
mov r10, qword [r10]
cmp byte [r10 + 0x19], 0
je 0x20178930
jmp 0x2017896c
mov r10, rax
nop word cs:[rax + rax]
mov r11, r10
mov r10, r8
cmp r11, qword [r8 + 0x10]
jne 0x20178969
mov r8, qword [r10 + 8]
cmp byte [r8 + 0x19], 0
je 0x20178950
jmp 0x2017896c
mov r8, r10
mov r10, qword [rax]
movzx r11d, byte [r10 + 0x19]
or r9b, r11b
movzx ebx, byte [0x205500c8]
add bl, 0x7f
test r11b, r11b
cmove rdx, r10
cmp r9b, bl
jne 0x201789eb
mov rdx, qword [r8 + 0x10]
cmp r8, rax
je 0x201789eb
mov qword [r10 + 8], r8
mov r9, qword [rax]
mov qword [r8], r9
mov r9, r8
cmp r8, qword [rax + 0x10]
je 0x201789ca
mov r9, qword [r8 + 8]
cmp byte [rdx + 0x19], 0
jne 0x201789b7
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 0x20178ab6
mov r11, qword [rax + 8]
lea r10, [r11 + 0x10]
cmp qword [r11], rax
cmove r10, r11
jmp 0x20178aba
mov r9, qword [rax + 8]
cmp byte [rdx + 0x19], 0
jne 0x201789f9
mov qword [rdx + 8], r9
mov r8, qword [rcx]
cmp qword [r8 + 8], rax
je 0x20178a1a
lea r8, [r9 + 0x10]
cmp qword [r9], rax
cmove r8, r9
cmp byte [0x205b3cd9], 0
cmovne r8, r9
jmp 0x20178a1e
add r8, 8
mov qword [r8], rdx
mov r8, qword [rcx]
cmp qword [r8], rax
jne 0x20178a77
movzx r11d, byte [0x205b3cda]
add r11b, byte [rdx + 0x19]
movzx ebx, byte [0x205500c8]
add bl, 0x7f
mov r10, r9
cmp r11b, bl
jne 0x20178a74
mov r11, rdx
nop word [rax + rax]
mov r10, r11
mov r11, qword [r11]
cmp byte [r11 + 0x19], 0
sete sil
movzx edi, byte [0x205b3a08]
mov ebx, edi
xor bl, sil
test dil, sil
jne 0x20178a50
test bl, bl
jne 0x20178a50
mov qword [r8], r10
mov r8, qword [rcx]
cmp qword [r8 + 0x10], rax
jne 0x20178aab
cmp byte [rdx + 0x19], 0
mov r10, r9
jne 0x20178aa7
mov r11, rdx
nop dword [rax]
mov r10, r11
mov r11, qword [r11 + 0x10]
movzx ebx, byte [0x205500c8]
add bl, 0x7f
cmp byte [r11 + 0x19], bl
je 0x20178a90
mov qword [r8 + 0x10], r10
cmp byte [rax + 0x18], 1
je 0x20178af9
jmp 0x20178e2b
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 0x20178af9
jmp 0x20178e2b
mov byte [r9 + 0x18], 0
mov r9, qword [rdx + 8]
mov r8, qword [rcx]
cmp rdx, qword [r8 + 8]
je 0x20178e1b
mov r8, rdx
cmp byte [rdx + 0x18], 1
jne 0x20178e18
mov rdx, r9
mov r9, qword [r9]
cmp r8, r9
je 0x20178b40
cmp byte [r9 + 0x18], 0
je 0x20178b60
cmp byte [r9 + 0x19], 0
jne 0x20178af5
jmp 0x20178c06
mov r9, qword [rdx + 0x10]
cmp byte [r9 + 0x18], 0
je 0x20178ba5
cmp byte [r9 + 0x19], 0
jne 0x20178af5
jmp 0x20178c45
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 0x20178b82
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 0x20178be9
mov r11, qword [rdx + 8]
lea r10, [r11 + 0x10]
cmp qword [r11 + 0x10], rdx
cmovne r10, r11
jmp 0x20178bed
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
jne 0x20178bc7
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 0x20178c28
mov r11, qword [rdx + 8]
lea r10, [r11 + 0x10]
cmp qword [r11], rdx
cmove r10, r11
jmp 0x20178c2c
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 0x20178af5
mov r10, qword [r9 + 0x10]
cmp byte [r10 + 0x18], 1
jne 0x20178cba
mov r11, qword [r9]
cmp byte [r11 + 0x18], 1
je 0x20178af0
jmp 0x20178cba
add r10, 8
mov qword [r10], r9
mov qword [r9], rdx
mov qword [rdx + 8], r9
mov r9, qword [rdx + 0x10]
cmp byte [r9 + 0x19], 0
jne 0x20178af5
mov r10, qword [r9]
cmp byte [r10 + 0x18], 1
jne 0x20178c5e
mov r11, qword [r9 + 0x10]
cmp byte [r11 + 0x18], 1
je 0x20178af0
mov r11, qword [r9 + 0x10]
cmp byte [r11 + 0x18], 1
jne 0x20178d99
mov byte [r10 + 0x18], 1
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 0x20178c90
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 0x20178d86
mov rsi, qword [r9 + 8]
lea r11, [rsi + 0x10]
cmp qword [rsi + 0x10], r9
cmovne r11, rsi
jmp 0x20178d8a
mov r11, qword [r9]
cmp byte [r11 + 0x18], 1
jne 0x20178d1a
mov byte [r10 + 0x18], 1
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 0x20178ce7
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 0x20178d09
mov rsi, qword [r9 + 8]
lea r11, [rsi + 0x10]
cmp qword [rsi], r9
cmove r11, rsi
jmp 0x20178d0d
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]
movzx r11d, byte [0x205500c8]
add r11b, 0x7f
cmp byte [r10 + 0x19], r11b
jne 0x20178d53
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 0x20178d76
mov r11, qword [rdx + 8]
lea r10, [r11 + 0x10]
cmp qword [r11 + 0x10], rdx
cmovne r10, r11
jmp 0x20178d7a
add r10, 8
mov qword [r10], r9
mov qword [r9 + 0x10], rdx
jmp 0x20178e14
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 0x20178dc8
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 0x20178e0a
mov r10, qword [rdx + 8]
mov r11, qword [r10]
cmp r11, rdx
sete bl
movzx esi, byte [0x205b3cd8]
xor bl, sil
lea rdi, [r10 + 0x10]
test bl, bl
cmovne rdi, r10
cmp r11, rdx
cmovne r10, rdi
test sil, sil
cmove r10, rdi
jmp 0x20178e0e
add r10, 8
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]
movabs r8, 0xf33b6a3b0aea8a96
sub rdx, r8
add rdx, qword [rcx + 8]
add rdx, r8
je 0x20178e4f
dec rdx
mov qword [rcx + 8], rdx
pop rbx
pop rdi
pop rsi
ret