Function at 0x202172c0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x60
mov edi, r9d
mov rsi, r8
mov rbx, rdx
mov r14, rcx
mov eax, r9d
and eax, 0x1f
cmp eax, 0xd
jb 0x20217307
cmp eax, 0x10
jae 0x20217330
cmp eax, 0xf
je 0x20217429
cmp eax, 0xd
jne 0x20217482
nop
movzx r15d, byte [rsi + 0x18]
jmp 0x20217d6b
cmp eax, 5
jbe 0x20217363
cmp eax, 9
jae 0x20217384
cmp eax, 6
je 0x20217555
cmp eax, 8
jne 0x202176b6
nop
mov qword [rsp + 0x28], r14
xor ecx, ecx
jmp 0x20217cdb
cmp eax, 0x14
jb 0x202173b2
cmp eax, 0x16
ja 0x202174a6
cmp eax, 0x14
je 0x202177a1
mov r15d, 0xffffffff
cmp eax, 0x16
je 0x20217d6b
mov r14d, r14d
mov edi, 0xdf17797
jmp 0x202174af
cmp eax, 3
jae 0x202173d8
test eax, eax
je 0x20217589
cmp eax, 2
jne 0x202176e3
nop
movzx r15d, byte [rsi + 0x19]
jmp 0x20217d6b
cmp eax, 0xb
jae 0x202174f9
cmp eax, 9
jne 0x2021773a
nop
movzx eax, byte [0x2052e039]
cmp al, 0xe6
jne 0x20217d95
lea r15, [0x2052e030]
jmp 0x20217d6b
cmp eax, 0x10
jne 0x20217530
test r14d, r14d
jne 0x20217719
test dil, 0x20
je 0x20217d68
lea r15, [rsp + 0x48]
jmp 0x20217d6b
je 0x202175f4
cmp eax, 5
jne 0x202176fa
nop
mov rcx, qword [rbx + 8]
test rcx, rcx
sete bl
movzx eax, byte [0x2052df02]
cmp al, 5
je 0x20217a69
mov dl, 0x33
nop word cs:[rax + rax]
mov al, 0x44
lock cmpxchg byte [0x2052df02], dl
je 0x20217618
cmp al, 5
jne 0x20217410
jmp 0x20217a69
lea rax, [0x204122e8]
mov qword [rsi], rax
mov rbx, qword [rsi + 0x60]
test rbx, rbx
je 0x20217726
nop
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x20217475
nop
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c7fcc.0]
test rax, rax
je 0x20217475
nop
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c7fcc.0]
mov rcx, rbx
call fcn.20077cc0
jmp 0x20217d50
nop
mov rax, qword [rsi + 0x38]
mov rdx, qword [rax]
test rdx, rdx
je 0x20217796
nop
mov rcx, qword [rsi + 0x50]
cmp dword [rcx], 0
jle 0x202177e2
jmp 0x20217cf7
cmp eax, 0x17
jne 0x20217743
nop
movzx eax, byte [0x2052dfb3]
lea r15, [0x2052dfb0]
cmp al, 0x79
je 0x20217d6b
test dil, 0x20
jne 0x20217705
mov cl, 0x6d
nop word cs:[rax + rax]
mov al, 0x9a
lock cmpxchg byte [0x2052dfb3], cl
je 0x202178c4
cmp al, 0x79
jne 0x202174e0
jmp 0x20217d6b
cmp eax, 0xc
jne 0x20217755
lea rax, [0x20413328]
mov qword [rsi], rax
mov rcx, rsi
call fcn.200a5960
lea rax, [0x204122e8]
mov qword [rsi], rax
mov r14, qword [rsi + 0x60]
test r14, r14
jne 0x20217c27
jmp 0x20217a7b
cmp eax, 0x11
ja 0x2021777d
nop
movzx eax, byte [0x2052e025]
cmp al, 0xbe
sete bl
jne 0x20217836
xor ecx, ecx
xor ebx, ebx
jmp 0x20217b30
nop
movzx eax, byte [0x2052dfe5]
lea r15, [0x2052dfd0]
cmp al, 0x9a
je 0x20217d6b
mov cl, 0x45
nop
mov al, 0x9f
lock cmpxchg byte [0x2052dfe5], cl
je 0x20217c7e
cmp al, 0x9a
jne 0x20217570
jmp 0x20217d6b
nop
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x48], rsi
mov qword [rsp + 0x40], rbx
cmp rsi, rbx
jae 0x202177ae
lea r8, [rsp + 0x50]
lea rax, [rsp + 0x58]
lea rcx, [rsp + 0x30]
mov r9, rsi
mov rdx, rbx
test edi, 0x200
jne 0x20217813
nop
mov r10, qword [rsi + 0x68]
cmp r10, r9
cmovb r10, r9
mov r15d, 0xffffffff
cmp r10, rdx
jbe 0x20217d6b
nop
mov qword [rsi + 0x68], r10
sub r10d, dword [rax]
mov dword [rcx], r10d
mov rax, qword [r8]
mov rdx, qword [rax]
jmp 0x20217cfc
test esi, esi
je 0x2021782e
xor ebx, ebx
mov rcx, r14
call fcn.20077cc0
test dil, 0x20
mov r15, r14
jne 0x20217d6b
lea rcx, [rsp + 0x40]
mov eax, 0xcf046483
mov edx, 0x30fb9b8e
mov r8d, 1
mov r9d, 0xcf046484
mov r10d, 0x30fb9b8c
lea r11, [0x2052def0]
lea r14, [0x2041e950]
nop word cs:[rax + rax]
mov r15d, edx
imul r15, r15, 0x38e38e39
shr r15, 0x22
lea r15d, [r15 + r15*8]
lea r15d, [rax + r15*2]
mov r12d, r10d
imul r12, r12, 0x38e38e39
shr r12, 0x22
lea r12d, [r12 + r12*8]
lea r12d, [r9 + r12*2]
movzx ebp, byte [r12 + r14]
xor bpl, 0x78
add byte [r8 + r11 - 1], bpl
movzx ebp, byte [r15 + r14]
xor bpl, 0x78
add byte [r8 + r11], bpl
add eax, 0xfffffffe
add edx, 2
add r8, 2
add r9d, 0xfffffffe
add r10d, 2
cmp r8, 0x13
jne 0x20217650
xor eax, eax
jmp 0x20217aba
xor eax, eax
sub eax, dword [rsi - 4]
cdqe
lea r15, [rsi + rax]
add r15, 0xffffffffffffff68
mov rcx, r15
mov r9d, 0xf9093b07
call fcn.202155e0
test ebx, ebx
jne 0x20217c9f
jmp 0x20217d62
nop
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x30], rbx
xor eax, eax
jmp 0x20217d35
mov r15, r14
test esi, esi
je 0x20217d6b
mov rcx, r14
call fcn.20077cc0
test dil, dil
mov r15, r14
jns 0x20217d6b
mov rcx, rsi
call fcn.20077cc0
jmp 0x20217d68
mov r15, r14
test edi, 0x100
je 0x20217d6b
jmp 0x20217d50
movzx r15d, bl
jmp 0x20217d6b
cmp eax, 0x18
jbe 0x20217861
movzx r15d, sil
jmp 0x20217d6b
xor eax, eax
sub eax, dword [r14 - 4]
cdqe
lea r15, [r14 + rax]
add r15, 0xffffffffffffff78
mov rcx, r15
call fcn.201109d0
test esi, esi
jne 0x20217cb5
jmp 0x20217d6b
cmp eax, 0x13
jne 0x20217873
xor r15d, r15d
lock dec dword [rsi + 8]
cmove r15, rsi
jmp 0x20217d6b
mov r15d, 0xffffffff
jmp 0x20217d6b
test ebx, ebx
jne 0x20217b82
jmp 0x20217d68
test r14, r14
je 0x20217d40
cmp r14, 4
jb 0x20217a00
mov rax, rbx
sub rax, rsi
cmp rax, 0x10
jb 0x20217a00
cmp r14, 0x10
jae 0x202178e7
xor eax, eax
jmp 0x20217930
nop
mov r8, qword [rsi + 0x40]
mov r9, qword [r8]
test r9, r9
je 0x202178b6
mov r15d, 0xffffffff
test byte [rsi + 0x70], 4
jne 0x20217d6b
lea r8, [rsi + 0x38]
test edi, 0x200
je 0x202175c3
nop
mov qword [rsp + 0x20], 0
test dil, dil
mov r15, r14
js 0x20217d6b
jmp 0x20217b5a
mov r15, r14
jmp 0x20217d6b
mov cl, 0x34
nop dword [rax + rax]
mov al, 0xfb
lock cmpxchg byte [0x2052e025], cl
je 0x202178af
cmp al, 0xbe
jne 0x20217840
test edi, 0x200
jne 0x202175fe
jmp 0x20217b3a
mov rcx, rbx
mov edx, esi
call fcn.203cac30
mov r15, rbx
jmp 0x20217d6b
nop
movzx eax, byte [0x2052e006]
lea r15, [0x2052dff0]
cmp al, 0x26
je 0x20217d6b
mov cl, 0x39
mov al, 0x18
lock cmpxchg byte [0x2052e006], cl
je 0x20217979
test dil, 0x40
je 0x202179f4
cmp al, 0x26
jne 0x2021788c
jmp 0x20217d6b
xor eax, eax
jmp 0x20217abf
mov r15d, 0xffffffff
mov eax, r14d
jmp 0x20217daa
nop
xor byte [0x2052dfb0], 0x5f
xor byte [0x2052dfb1], 0xbe
xor byte [0x2052dfb2], 0x22
mov al, 0x79
xchg byte [0x2052dfb3], al
jmp 0x20217d6b
mov rax, r14
and rax, 0xfffffffffffffff0
lea rcx, [rsi + r14]
add rcx, 0xfffffffffffffff0
lea rdx, [rbx + r14]
add rdx, 0xfffffffffffffff0
mov r8, rax
neg r8
xor r9d, r9d
nop
movdqu xmm0, xmmword [rdx + r9]
movdqu xmmword [rcx + r9], xmm0
add r9, 0xfffffffffffffff0
cmp r8, r9
jne 0x20217907
cmp rax, r14
je 0x20217d40
test r14b, 0xc
je 0x202179fc
mov rcx, r14
and rcx, 0xfffffffffffffffc
mov edx, r14d
and edx, 3
lea r8, [rsi + r14]
add r8, 0xfffffffffffffffc
neg rax
lea r9, [rbx + r14]
add r9, 0xfffffffffffffffc
mov r10, rcx
neg r10
nop
mov r11d, dword [r9 + rax]
mov dword [r8 + rax], r11d
add rax, 0xfffffffffffffffc
cmp r10, rax
jne 0x20217956
cmp rcx, r14
mov r14, rdx
jne 0x20217a00
jmp 0x20217d40
mov eax, 0x1c3a7c24
mov ecx, 0xe3c583f2
mov edx, 1
mov r8d, 0x1c3a7c25
mov r9d, 0xaaaaaaab
lea r10, [0x2052dff0]
lea r11, [0x2041e9d0]
mov esi, ecx
imul rsi, r9
shr rsi, 0x24
shl esi, 3
lea esi, [rsi + rsi*2]
lea edi, [rax + rsi]
add esi, r8d
movzx ebx, byte [rdx + r10 - 1]
xor bl, byte [rsi + r11]
movzx esi, byte [rdx + r10]
xor bl, 0x65
xor sil, byte [rdi + r11]
mov byte [rdx + r10 - 1], bl
xor sil, 0x65
mov byte [rdx + r10], sil
add eax, 0xfffffffe
add ecx, 2
add rdx, 2
add r8d, 0xfffffffe
cmp rdx, 0x17
jne 0x202179a2
jmp 0x20217b46
xor r15d, r15d
jmp 0x20217d6b
and r14d, 0xf
lea rcx, [r14 - 1]
mov rdx, r14
and rdx, 3
je 0x20217a26
lea rax, [r14 - 1]
movzx r8d, byte [rbx + r14 - 1]
mov byte [rsi + r14 - 1], r8b
dec rdx
mov r14, rax
jne 0x20217a0d
jmp 0x20217a29
mov rax, r14
cmp rcx, 3
jb 0x20217d40
mov rcx, rax
nop
movzx edx, byte [rbx + rax - 1]
mov byte [rsi + rax - 1], dl
movzx edx, byte [rbx + rax - 2]
mov byte [rsi + rax - 2], dl
movzx edx, byte [rbx + rax - 3]
mov byte [rsi + rax - 3], dl
add rcx, 0xfffffffffffffffc
movzx edx, byte [rbx + rax - 4]
mov byte [rsi + rax - 4], dl
mov rax, rcx
jne 0x20217a36
jmp 0x20217d40
lea r15, [0x2052def0]
test bl, bl
cmove r15, rcx
jmp 0x20217d6b
test edi, 0x100
jne 0x20217c6e
lea r15, [0x2052e030]
movq xmm0, qword [0x2052e030]
paddb xmm0, xmmword [0x2041e850]
movq qword [0x2052e030], xmm0
add byte [0x2052e038], 0x29
mov al, 0xe6
xchg byte [0x2052e039], al
jmp 0x20217d6b
test dil, dil
js 0x20217b28
lea ecx, [rax + 0x2616b709]
mov edx, 0x86186187
imul rdx, rcx
shr rdx, 0x20
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 4
lea edx, [rcx + rcx*4]
lea ecx, [rcx + rdx*4]
neg ecx
lea edx, [rax + rcx]
add edx, 0x2616b709
cdqe
lea rcx, [0x2052e010]
lea r8, [0x2041e9f0]
sub r8, rdx
movzx edx, byte [r8 + 0x14]
xor dl, 0xed
add byte [rax + rcx], dl
add rcx, rax
inc eax
xor ebx, ebx
cmp eax, 0x15
jl 0x20217aba
mov al, 0xbe
xchg byte [0x2052e025], al
test edi, 0x100
je 0x20217b6b
jmp 0x20217b3a
mov al, 5
xchg byte [0x2052df02], al
test dil, 0x40
jne 0x20217a69
lea r15, [0x2052e010]
jmp 0x20217d6b
mov al, 0x26
xchg byte [0x2052e006], al
lea r15, [0x2052dff0]
jmp 0x20217d6b
nop
mov rax, qword [rsp + 0x20]
cmp rax, qword [rsp + 0x50]
jae 0x20217d40
nop
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x20]
movzx eax, byte [rax + rcx]
mov byte [rsi + rcx], al
inc qword [rsp + 0x20]
test dil, 0x20
jne 0x20217b5a
mov rcx, rsi
call fcn.20077cc0
jmp 0x20217d68
mov ecx, 0x77875f64
mov r8d, 0x77875f62
xor r10d, r10d
movabs r11, 0x2e8ba2e8ba2e8ba3
lea r14, [0x2041e9b0]
lea r15, [0x2052dfd0]
nop dword [rax + rax]
mov rax, rcx
mul r11
mov r9, rdx
mov rax, r8
mul r11
shr rdx, 2
imul rax, rdx, 0xffffffffffffffea
add rax, r14
add rax, 0x77875f5e
movzx eax, byte [r10 + rax + 5]
xor al, 0xa7
add byte [r10 + r15], al
cmp r10, 0x14
je 0x20217c1d
shr r9, 2
imul rax, r9, 0xffffffffffffffea
add rax, r14
add rax, 0x77875f64
movzx eax, byte [rax + r10]
xor al, 0xa7
add byte [r10 + r15 + 1], al
add r10, 2
add rcx, 2
add r8, 2
jmp 0x20217bc0
lea r14, [rsp + 0x38]
test dil, dil
jns 0x20217c8d
nop
mov rcx, qword [r14 + 8]
test rcx, rcx
je 0x20217c66
test dil, 0x20
jne 0x20217d3a
nop
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c7fcc.0]
test rax, rax
je 0x20217c66
nop
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c7fcc.0]
mov rcx, r14
call fcn.20077cc0
test ebx, ebx
je 0x20217d68
mov rcx, rsi
call fcn.20077cc0
test dil, 0x40
jne 0x20217b95
jmp 0x20217d68
mov al, 0x9a
xchg byte [0x2052dfe5], al
jmp 0x20217d6b
lea r15, [rsp + 0x28]
mov rcx, r15
call fcn.20077cc0
test dil, dil
jns 0x20217d6b
lea r15, [rsp + 0x20]
mov rcx, r15
call fcn.20077cc0
test dil, 0x40
je 0x20217d68
jmp 0x20217d6b
inc rcx
test edi, 0x200
jne 0x20217b46
cmp rcx, rsi
jae 0x20217d03
nop
mov rdx, qword [rsp + 0x28]
movzx r15d, byte [rdx + rcx]
movzx r8d, byte [rbx + rcx]
xor edx, edx
cmp r15b, r8b
jne 0x20217d12
test dil, dil
js 0x20217d1d
nop
movzx r15d, byte [rdx]
jmp 0x20217d6b
xor r15d, r15d
test edi, 0x100
cmove r15, rsi
jmp 0x20217d6b
test dil, 0x20
jne 0x20217c9a
sub r15d, r8d
jmp 0x20217d6b
test edi, 0x400
je 0x20217ccc
nop
mov rdx, qword [rsp + 0x30]
movzx edx, byte [rdx + rax]
mov byte [rsi + rax], dl
inc rax
cmp rax, r14
jb 0x20217d1d
test dil, 0x40
jne 0x20217d48
nop
mov r15, qword [rsp + 0x48]
jmp 0x20217d6b
nop
mov r15, qword [rsp + 0x38]
jmp 0x20217d6b
test r14d, r14d
je 0x20217d5f
mov rcx, rsi
call fcn.20077cc0
jmp 0x20217d68
xor r15d, r15d
test dil, 0x40
jne 0x20217d6b
mov r15, rsi
mov rax, r15
add rsp, 0x60
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
test dil, 0x20
je 0x20217b16
jmp 0x202173a6
cmp al, 0xe6
je 0x20217d7d
test dil, dil
js 0x20217d50
xor r15d, r15d
mov cl, 0xe2
mov al, 0x8b
lock cmpxchg byte [0x2052e039], cl
je 0x20217a7b
test dil, 0x40
je 0x20217d8c
jmp 0x20217d6b