Function at 0x20177520
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov rdi, r9
mov rax, r8
mov ebx, edx
mov rsi, rcx
mov ecx, edx
and ecx, 0xf
cmp ecx, 5
jae 0x20177563
cmp ecx, 1
ja 0x20177594
test ecx, ecx
je 0x2017766d
mov edx, 0x7d41d653
call fcn.20177520
xor eax, eax
jmp 0x201778fe
cmp ecx, 7
jb 0x201775cb
jne 0x2017762d
mov ecx, 9
mov ebx, 0xea0f00e9
mov r9, rax
mov r14, rdi
cmp ecx, 8
ja 0x2017763f
mov rax, r14
mov rdi, r9
mov ebx, 0x5ab3f326
jmp 0x201775e2
mov r12, rax
cmp ecx, 2
je 0x2017768b
cmp ecx, 4
jne 0x201776b3
nop
mov r8, qword [rsi + 8]
test r8, r8
sete dl
movzx eax, byte [0x2051f042]
cmp al, 0x24
jne 0x201776d0
mov r14, r12
jmp 0x201778a2
cmp ecx, 5
jne 0x201775e2
mov rcx, rsi
mov rdx, rax
call fcn.203c93a0
xor eax, eax
jmp 0x201778fe
mov r8, rax
sub r8, rsi
jae 0x20177657
test bl, bl
js 0x201776cb
test rdi, rdi
je 0x20177703
cmp rdi, 1
mov rcx, rdi
adc rcx, 0
xor edx, edx
cmp rdi, 8
jb 0x20177817
cmp r8, 0x20
jb 0x20177817
cmp rdi, 0x20
jae 0x201777a9
xor edx, edx
jmp 0x201777ee
mov r9, rsi
mov r14, rax
mov rsi, rdi
cmp ecx, 8
jbe 0x20177587
mov rdi, rsi
mov r10, r14
test bl, 0x40
jne 0x201776a8
mov rcx, rdi
call fcn.20077cc0
jmp 0x201778fb
xor r8d, r8d
mov rcx, rdi
xor edx, edx
test bl, 0x40
je 0x201778a0
jmp 0x201778d4
mov rcx, rax
mov rsi, rax
call fcn.200799c0
mov rax, rsi
test edi, edi
mov r14, rsi
jne 0x201778eb
jmp 0x201778fe
mov rcx, rdi
call fcn.200799c0
mov rax, r12
test eax, eax
je 0x201776f5
mov r9, rsi
mov r14, rax
mov r10, rax
test bl, 0x40
je 0x2017764a
xor r11d, r11d
mov rax, r9
jmp 0x201778c5
lea rcx, [0x205723c0]
mov edx, 0xaf670d51
call fcn.20176980
xor eax, eax
jmp 0x201778fe
jmp 0x201778b4
mov cl, 0xbd
nop word cs:[rax + rax]
mov al, 0xc8
lock cmpxchg byte [0x2051f042], cl
je 0x2017770f
cmp al, 0x24
jne 0x201776e0
jmp 0x201778d4
test bl, 0x20
jne 0x201778fb
jmp 0x201778fe
mov rcx, rdi
xor edi, edi
xor edx, edx
jmp 0x20177889
mov ecx, 0xec1e2845
mov r9d, 0x13e1d7cc
mov r10d, 1
mov r11d, 0xec1e2846
mov ebp, 0x13e1d7ca
lea r14, [0x2051f030]
lea r15, [0x20417980]
mov rax, r12
nop dword [rax]
mov r12d, r9d
imul r12, r12, 0x38e38e39
shr r12, 0x22
lea r12d, [r12 + r12*8]
lea r12d, [rcx + r12*2]
mov r13d, ebp
imul r13, r13, 0x38e38e39
shr r13, 0x22
lea r13d, [r13 + r13*8]
lea r13d, [r11 + r13*2]
movzx r13d, byte [r13 + r15]
xor r13b, 0xf
add byte [r10 + r14 - 1], r13b
movzx r12d, byte [r12 + r15]
xor r12b, 0xf
add byte [r10 + r14], r12b
add ecx, 0xfffffffe
add r9d, 2
add r10, 2
add r11d, 0xfffffffe
add ebp, 2
cmp r10, 0x13
jne 0x20177740
mov rcx, rdi
jmp 0x2017788c
mov rdx, rcx
and rdx, 0xffffffffffffffe0
xor r8d, r8d
nop word cs:[rax + rax]
nop
movups xmm0, xmmword [rsi + r8]
movups xmm1, xmmword [rsi + r8 + 0x10]
movups xmmword [rax + r8], xmm0
movups xmmword [rax + r8 + 0x10], xmm1
add r8, 0x20
cmp rdx, r8
jne 0x201777c0
cmp rcx, rdx
je 0x20177884
test cl, 0x18
je 0x20177817
mov r8, rdx
mov rdx, rcx
and rdx, 0xfffffffffffffff8
nop dword [rax + rax]
nop
mov r9, qword [rsi + r8]
mov qword [rax + r8], r9
add r8, 8
cmp rdx, r8
jne 0x20177800
cmp rcx, rdx
je 0x20177884
mov r9, rcx
mov r8, rdx
and r9, 3
je 0x20177842
mov r8, rdx
nop word cs:[rax + rax]
nop
movzx r10d, byte [rsi + r8]
mov byte [rax + r8], r10b
inc r8
dec r9
jne 0x20177830
sub rdx, rcx
cmp rdx, 0xfffffffffffffffc
ja 0x20177884
nop dword [rax + rax]
nop
movzx ecx, byte [rsi + r8]
mov byte [rax + r8], cl
movzx ecx, byte [rsi + r8 + 1]
mov byte [rax + r8 + 1], cl
movzx ecx, byte [rsi + r8 + 2]
mov byte [rax + r8 + 2], cl
movzx ecx, byte [rsi + r8 + 3]
mov byte [rax + r8 + 3], cl
add r8, 4
cmp rdi, r8
jne 0x20177850
xor edx, edx
mov rcx, rdi
mov r8, rax
test bl, 0x10
je 0x201778fe
mov r9b, 0x24
xchg byte [0x2051f042], r9b
test bl, 0x40
jne 0x201778d4
jmp 0x201778b7
test bl, 0x20
je 0x201778d4
nop
movzx eax, byte [rdi + r11]
mov byte [r9 + r11], al
mov rax, r14
inc r11
test ebx, 0x100
jne 0x2017790f
mov r14, rax
mov rax, rsi
xor r8d, r8d
xor edx, edx
cmp r11, r10
jae 0x201778e3
mov rsi, rax
jmp 0x201778a2
lea rax, [0x2051f030]
test dl, dl
cmove rax, r8
jmp 0x201778fe
test ebx, 0x200
je 0x201778fe
mov rcx, r14
call fcn.20077cc0
test bl, 0x10
mov rax, r14
jne 0x201778fe
mov rax, rdi
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test rcx, rcx
je 0x201778fe
cmp rcx, 4
jae 0x2017794f
mov r8, rcx
lea rdx, [r8 - 1]
mov r9, r8
and r9, 3
je 0x20177980
nop word [rax + rax]
lea rcx, [r8 - 1]
movzx r10d, byte [rsi + r8 - 1]
mov byte [rax + r8 - 1], r10b
dec r9
mov r8, rcx
jne 0x20177930
cmp rdx, 3
jb 0x201778fe
jmp 0x2017798d
lea rdx, [rax + rcx]
dec rdx
cmp rax, rdx
ja 0x2017791a
lea rdx, [rsi + rcx]
dec rdx
cmp rsi, rdx
ja 0x2017791a
mov rdx, rsi
sub rdx, rax
cmp rdx, 0x10
jb 0x2017791a
cmp rcx, 0x10
jae 0x201779cb
xor edx, edx
jmp 0x20177a12
mov rcx, r8
cmp rdx, 3
jb 0x201778fe
mov rdx, rcx
nop
movzx r8d, byte [rsi + rcx - 1]
mov byte [rax + rcx - 1], r8b
movzx r8d, byte [rsi + rcx - 2]
mov byte [rax + rcx - 2], r8b
movzx r8d, byte [rsi + rcx - 3]
mov byte [rax + rcx - 3], r8b
add rdx, 0xfffffffffffffffc
movzx r8d, byte [rsi + rcx - 4]
mov byte [rax + rcx - 4], r8b
mov rcx, rdx
jne 0x20177990
jmp 0x201778fe
mov rdx, rcx
and rdx, 0xfffffffffffffff0
lea r8, [rax + rcx]
add r8, 0xfffffffffffffff0
lea r9, [rsi + rcx]
add r9, 0xfffffffffffffff0
mov r10, rdx
neg r10
xor r11d, r11d
nop dword [rax + rax]
nop
movups xmm0, xmmword [r9 + r11]
movups xmmword [r8 + r11], xmm0
add r11, 0xfffffffffffffff0
cmp r10, r11
jne 0x201779f0
cmp rcx, rdx
je 0x201778fe
test cl, 0xc
je 0x20177a60
mov r9, rcx
and r9, 0xfffffffffffffffc
mov r8d, ecx
and r8d, 3
lea r10, [rax + rcx]
add r10, 0xfffffffffffffffc
neg rdx
lea r11, [rsi + rcx]
add r11, 0xfffffffffffffffc
mov rdi, r9
neg rdi
nop dword [rax]
nop
mov ebx, dword [r11 + rdx]
mov dword [r10 + rdx], ebx
add rdx, 0xfffffffffffffffc
cmp rdi, rdx
jne 0x20177a40
cmp rcx, r9
je 0x201778fe
jmp 0x2017791d
and ecx, 0xf
jmp 0x2017791a