Function at 0x200dd7e0
Capabilities:
Encode data using xor

Disassembly:
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x50
mov ebp, r9d
mov rdi, r8
mov rsi, rdx
mov rbx, rcx
mov eax, r9d
and eax, 0x1f
cmp eax, 0xb
jbe 0x200dd834
cmp eax, 0x12
jae 0x200dd894
cmp eax, 0xe
jbe 0x200dd994
cmp eax, 0xf
je 0x200ddb6c
cmp eax, 0x11
jne 0x200ddc83
mov rcx, rdi
call fcn.20421e38
xor esi, esi
jmp 0x200de21f
cmp eax, 5
jbe 0x200dd87d
cmp eax, 8
jbe 0x200dda5e
cmp eax, 9
je 0x200ddb8e
cmp eax, 0xb
jne 0x200ddfd3
mov esi, 0xffffffff
jmp 0x200de21f
mov ecx, 0x7cf5bb04
test eax, eax
jne 0x200dd9be
mov rdx, rbx
mov rbx, rsi
mov eax, ecx
and eax, 5
mov rsi, rdx
mov ebp, ecx
cmp eax, 2
jbe 0x200dd860
cmp eax, 3
jne 0x200dd9f9
mov ebx, ebx
mov ecx, 0x9d4e7e41
jmp 0x200dd86d
cmp eax, 0x14
jbe 0x200dda2c
cmp eax, 0x15
jne 0x200ddaa9
lea rax, [0x2046f1b8]
mov qword [rsi], rax
mov rcx, rsi
call fcn.200a3bf0
lea rax, [0x2046e1c8]
mov qword [rsi], rax
mov rbx, qword [rsi + 0x60]
test rbx, rbx
je 0x200ddef3
nop
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x200ddeeb
test bpl, 0x20
jne 0x200ddec0
mov eax, 1
mov ecx, 0xff9b989e
mov edx, 0x646776
mov r8d, 0xff9b989f
mov r9d, 0x646775
mov r10d, 0x86186187
lea r11, [0x20573980]
lea rsi, [0x20470e80]
nop word cs:[rax + rax]
mov edi, r9d
imul rdi, r10
shr rdi, 0x20
mov ebx, r9d
sub ebx, edi
shr ebx, 1
add ebx, edi
shr ebx, 4
lea edi, [rbx + rbx*4]
lea edi, [rbx + rdi*4]
add edi, r8d
movzx ebx, byte [rdi + rsi]
xor bl, 0xc7
add byte [rax + r11 - 1], bl
cmp rax, 0x15
je 0x200dde0b
mov edi, edx
imul rdi, r10
shr rdi, 0x20
mov ebx, edx
sub ebx, edi
shr ebx, 1
add ebx, edi
shr ebx, 4
lea edi, [rbx + rbx*4]
lea edi, [rbx + rdi*4]
add edi, ecx
mov edi, edi
movzx ebx, byte [rdi + rsi]
xor bl, 0xc7
add byte [rax + r11], bl
add rax, 2
add ecx, 0xfffffffe
add edx, 2
add r8d, 0xfffffffe
add r9d, 2
jmp 0x200dd920
cmp eax, 0xc
je 0x200ddba0
cmp eax, 0xe
jne 0x200ddcb5
test esi, esi
je 0x200ddf2b
mov rcx, rbx
call fcn.200782c0
mov rsi, rbx
jmp 0x200de21f
cmp eax, 2
jne 0x200ddae9
nop
movzx eax, byte [0x20573ad3]
lea rsi, [0x20573ad0]
cmp al, 0xc9
je 0x200de21f
mov cl, 0xcc
mov al, 0x4a
lock cmpxchg byte [0x20573ad3], cl
je 0x200ddf08
cmp al, 0xc9
jne 0x200dd9e0
jmp 0x200de21f
cmp eax, 5
jne 0x200ddb2d
nop
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rdi
test rbx, rbx
je 0x200de21f
mov eax, ebx
and eax, 3
cmp rbx, 4
jae 0x200dde1f
xor ecx, ecx
jmp 0x200dde88
cmp eax, 0x12
je 0x200ddbe0
cmp eax, 0x13
jne 0x200ddce9
mov rcx, rdi
call fcn.2007ad00
test esi, esi
je 0x200de21c
mov rcx, rdi
call fcn.200782c0
mov rsi, rdi
jmp 0x200de21f
cmp eax, 6
je 0x200ddc45
cmp eax, 8
jne 0x200ddd29
nop
movzx eax, byte [0x205739b6]
lea rsi, [0x205739a0]
cmp al, 0x60
je 0x200de21f
mov cl, 0xd0
nop dword [rax]
mov al, 0xa2
lock cmpxchg byte [0x205739b6], cl
je 0x200ddf3d
cmp al, 0x60
jne 0x200dda90
jmp 0x200de21f
cmp eax, 0x16
jbe 0x200ddd3e
cmp eax, 0x17
jne 0x200ddf33
xor eax, eax
sub eax, dword [rsi - 4]
cdqe
add rsi, rax
add rsi, 0xffffffffffffff68
mov edx, 0x5f1f0590
mov r8, rsi
call fcn.200da7c0
test ebx, ebx
mov rbx, rsi
jne 0x200ddc98
jmp 0x200de21f
nop
movzx eax, byte [0x20573995]
lea rdx, [0x20573980]
cmp al, 0x74
je 0x200ddb25
mov r8b, 0x3e
lea rbx, [rsp + 0x30]
lea rcx, [rsp + 0x28]
nop dword [rax]
mov al, 0xb9
lock cmpxchg byte [0x20573995], r8b
je 0x200dd8dd
cmp al, 0x74
jne 0x200ddb10
mov rsi, rdx
jmp 0x200de21f
cmp rsi, rdi
jbe 0x200ddd6b
test rbx, rbx
je 0x200de21c
xor eax, eax
cmp rbx, 8
jb 0x200de1b7
mov rcx, rdi
sub rcx, rsi
cmp rcx, 0x20
jb 0x200de1b7
cmp rbx, 0x20
jae 0x200de160
xor eax, eax
jmp 0x200de193
test esi, esi
je 0x200de21c
test bpl, 0x20
jne 0x200dda0d
mov rcx, rdi
call fcn.200782c0
mov rsi, rdi
jmp 0x200de21f
mov rcx, rsi
mov rdx, rdi
call fcn.20422320
xor esi, esi
jmp 0x200de21f
nop
mov rax, qword [rsi]
mov rax, qword [rax + 0x18]
lea rdx, [rsp + 0x40]
mov rcx, rsi
mov r8d, edi
call qword [case.0x200c66ec.0]
mov rax, qword [rsp + 0x48]
mov rcx, qword [rbx + 8]
mov rax, qword [rax + 8]
cmp rax, qword [rcx + 8]
sete al
mov ecx, dword [rsp + 0x40]
cmp ecx, dword [rbx]
sete cl
and cl, al
movzx esi, cl
jmp 0x200de21f
lea rax, [0x2046e1c8]
mov qword [rsi], rax
mov rdi, qword [rsi + 0x60]
test rdi, rdi
je 0x200ddc30
nop
mov rcx, qword [rdi + 8]
test rcx, rcx
je 0x200ddc28
nop
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x200ddc28
nop
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
mov rcx, rdi
call fcn.200782c0
test ebx, ebx
je 0x200de21f
mov rcx, rsi
call fcn.200782c0
jmp 0x200de21f
nop
mov rcx, qword [rsi + 8]
movzx eax, byte [0x20573952]
cmp al, 0x21
je 0x200de14d
mov dl, 0xdf
xor esi, esi
nop dword [rax]
mov al, 0x34
lock cmpxchg byte [0x20573952], dl
je 0x200de0f9
cmp al, 0x21
je 0x200de14d
test bpl, 0x20
je 0x200ddc60
jmp 0x200de21f
test ebx, ebx
je 0x200de21c
mov rcx, rdi
call fcn.200782c0
lea rbx, [rsp + 0x38]
mov rsi, rdi
test bpl, 0x20
jne 0x200de21f
mov rcx, rbx
call fcn.200782c0
mov rsi, rbx
jmp 0x200de21f
nop
movzx eax, byte [0x205739e9]
lea rsi, [0x205739e0]
cmp al, 0xa0
je 0x200de21f
mov cl, 0x5f
nop
mov al, 0xad
lock cmpxchg byte [0x205739e9], cl
je 0x200ddfda
cmp al, 0xa0
jne 0x200ddcd0
jmp 0x200de21f
nop
movzx eax, byte [0x205739d5]
lea rsi, [0x205739c0]
cmp al, 0xf3
je 0x200de21f
mov cl, 0x95
nop word cs:[rax + rax]
mov al, 0x1e
lock cmpxchg byte [0x205739d5], cl
je 0x200ddfff
cmp al, 0xf3
jne 0x200ddd10
jmp 0x200de21f
test ebx, ebx
je 0x200de21f
mov rcx, rsi
call fcn.200782c0
jmp 0x200de21f
nop
mov rax, qword [rbx + 0x38]
mov rcx, qword [rax]
mov esi, 0xffffffff
test rcx, rcx
je 0x200de21f
nop
mov rdx, qword [rbx + 0x50]
cmp dword [rdx], 0
jle 0x200de0b1
nop
movzx esi, byte [rcx]
jmp 0x200de21f
nop
mov qword [rsp + 0x38], rbx
test rbx, rbx
je 0x200de21c
test bpl, 0x40
jne 0x200dde0b
mov rcx, rbx
mov rax, rbx
and rcx, 3
je 0x200dddac
lea rdx, [rbx - 1]
mov rax, rdx
movzx edx, byte [rsi + rdx]
mov byte [rdi + rax], dl
mov qword [rsp + 0x38], rax
lea rdx, [rax - 1]
dec rcx
jne 0x200ddd94
cmp rbx, 4
jb 0x200de21c
add rax, 0xfffffffffffffffc
lea rcx, [rax + 3]
movzx edx, byte [rsi + rax + 3]
mov byte [rdi + rax + 3], dl
mov qword [rsp + 0x38], rcx
lea rcx, [rax + 2]
movzx edx, byte [rsi + rax + 2]
mov byte [rdi + rax + 2], dl
mov qword [rsp + 0x38], rcx
lea rcx, [rax + 1]
movzx edx, byte [rsi + rax + 1]
mov byte [rdi + rax + 1], dl
mov qword [rsp + 0x38], rcx
movzx ecx, byte [rsi + rax]
mov byte [rdi + rax], cl
mov qword [rsp + 0x38], rax
add rax, 0xfffffffffffffffc
cmp rax, 0xfffffffffffffffc
jne 0x200dddba
jmp 0x200de21c
mov al, 0x74
xchg byte [0x20573995], al
lea rsi, [0x20573980]
jmp 0x200de21f
and rbx, 0xfffffffffffffffc
xor ecx, ecx
nop word cs:[rax + rax]
nop
mov rdx, qword [rsp + 0x28]
movzx edx, byte [rdx + rcx]
mov r8, qword [rsp + 0x30]
mov byte [r8 + rcx], dl
mov rdx, qword [rsp + 0x28]
movzx edx, byte [rdx + rcx + 1]
mov r8, qword [rsp + 0x30]
mov byte [r8 + rcx + 1], dl
mov rdx, qword [rsp + 0x28]
movzx edx, byte [rdx + rcx + 2]
mov r8, qword [rsp + 0x30]
mov byte [r8 + rcx + 2], dl
mov rdx, qword [rsp + 0x28]
movzx edx, byte [rdx + rcx + 3]
mov r8, qword [rsp + 0x30]
mov byte [r8 + rcx + 3], dl
add rcx, 4
cmp rbx, rcx
jne 0x200dde30
test rax, rax
je 0x200de21f
nop word cs:[rax + rax]
nop
mov rdx, qword [rsp + 0x28]
movzx edx, byte [rdx + rcx]
mov r8, qword [rsp + 0x30]
mov byte [r8 + rcx], dl
inc rcx
dec rax
jne 0x200ddea0
jmp 0x200de21f
nop
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x200ddeeb
nop
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
mov rcx, rbx
call fcn.200782c0
test edi, edi
je 0x200de21f
mov rcx, rsi
call fcn.200782c0
jmp 0x200de21f
nop
add byte [0x20573ad0], 0xd6
add byte [0x20573ad1], 0x92
add byte [0x20573ad2], 0x3e
mov al, 0xc9
xchg byte [0x20573ad3], al
jmp 0x200de21f
mov rsi, rbx
jmp 0x200de21f
nop
movzx esi, byte [rbx + 0x19]
jmp 0x200de21f
lea r10, [0x20470ea0]
mov ecx, 0xbb9eb874
lea r11, [r10 + rcx]
mov r8d, 0xbb9eb872
xor edi, edi
movabs rbx, 0x2e8ba2e8ba2e8ba3
lea rsi, [0x205739a0]
mov r14d, 0xbb9eb873
nop dword [rax]
mov rax, rcx
mul rbx
mov r9, rdx
mov rax, r8
mul rbx
shr rdx, 2
imul rax, rdx, 0xffffffffffffffea
add rax, r10
add rax, rdi
movzx eax, byte [r14 + rax]
xor al, 0xaa
add byte [rdi + rsi], al
shr r9, 2
imul rax, r9, 0xffffffffffffffea
movzx eax, byte [r11 + rax]
xor al, 0xaa
add byte [rdi + rsi + 1], al
add rdi, 2
add r11, 2
add rcx, 2
add r8, 2
cmp rdi, 0x16
jne 0x200ddf70
test bpl, 0x40
jne 0x200ddfd3
mov al, 0x60
xchg byte [0x205739b6], al
jmp 0x200de21f
xor esi, esi
jmp 0x200de21f
movabs rax, 0xb86dc2da2c11b86d
xor qword [0x205739e0], rax
xor byte [0x205739e8], 0x11
mov al, 0xa0
xchg byte [0x205739e9], al
jmp 0x200de21f
mov ecx, 0x6d4756da
mov r8d, 0x6d4756d9
xor r10d, r10d
movabs r11, 0x8618618618618619
lea rdi, [0x20470ec0]
lea rsi, [0x205739c0]
nop word cs:[rax + rax]
mov rax, rcx
mul r11
mov r9, rdx
mov rax, r8
mul r11
mov rax, r8
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
add rax, rdi
add rax, 0x6d4756d9
movzx eax, byte [r10 + rax]
xor al, 0x7b
add byte [r10 + rsi], al
cmp r10, 0x14
je 0x200de0a4
mov rax, rcx
sub rax, r9
shr rax, 1
add rax, r9
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
add rax, rdi
add rax, 0x6d4756da
movzx eax, byte [rax + r10]
xor al, 0x7b
add byte [r10 + rsi + 1], al
add r10, 2
add rcx, 2
add r8, 2
jmp 0x200de030
mov al, 0xf3
xchg byte [0x205739d5], al
jmp 0x200de21f
nop
mov r8, qword [rbx + 0x40]
mov r9, qword [r8]
test r9, r9
je 0x200de21f
nop
test byte [rbx + 0x70], 4
jne 0x200de21f
nop
mov r8, qword [rbx + 0x68]
cmp r8, r9
cmovb r8, r9
cmp r8, rcx
jbe 0x200de21f
nop
mov qword [rbx + 0x68], r8
sub r8d, dword [rax]
mov dword [rdx], r8d
mov rax, qword [rbx + 0x38]
mov rcx, qword [rax]
jmp 0x200ddd62
mov eax, 0xe
lea rdx, [0x20573940]
lea r8, [0x20470e50]
nop dword [rax]
lea r9d, [rax - 1]
and r9d, 0xf
movzx r9d, byte [r9 + r8]
xor r9b, 0xeb
add byte [rax + rdx - 0xe], r9b
mov r9d, eax
and r9d, 0xe
movzx r9d, byte [r9 + r8]
xor r9b, 0xeb
add byte [rax + rdx - 0xd], r9b
add rax, 2
cmp rax, 0x20
jne 0x200de110
mov al, 0x21
xchg byte [0x20573952], al
test rcx, rcx
lea rsi, [0x20573940]
cmovne rsi, rcx
jmp 0x200de21f
mov rax, rbx
and rax, 0xffffffffffffffe0
xor ecx, ecx
nop
movups xmm0, xmmword [rsi + rcx]
movups xmm1, xmmword [rsi + rcx + 0x10]
movups xmmword [rdi + rcx], xmm0
movups xmmword [rdi + rcx + 0x10], xmm1
add rcx, 0x20
cmp rax, rcx
jne 0x200de169
cmp rbx, rax
je 0x200de21c
test bl, 0x18
je 0x200de1b7
mov rcx, rax
mov rax, rbx
and rax, 0xfffffffffffffff8
nop dword [rax]
nop
mov rdx, qword [rsi + rcx]
mov qword [rdi + rcx], rdx
add rcx, 8
cmp rax, rcx
jne 0x200de1a0
cmp rbx, rax
je 0x200de21c
mov rdx, rbx
mov rcx, rax
and rdx, 3
je 0x200de1e2
mov rcx, rax
nop word cs:[rax + rax]
nop
movzx r8d, byte [rsi + rcx]
mov byte [rdi + rcx], r8b
inc rcx
dec rdx
jne 0x200de1d0
sub rax, rbx
cmp rax, 0xfffffffffffffffc
ja 0x200de21c
nop dword [rax + rax]
nop
movzx eax, byte [rsi + rcx]
mov byte [rdi + rcx], al
movzx eax, byte [rsi + rcx + 1]
mov byte [rdi + rcx + 1], al
movzx eax, byte [rsi + rcx + 2]
mov byte [rdi + rcx + 2], al
movzx eax, byte [rsi + rcx + 3]
mov byte [rdi + rcx + 3], al
add rcx, 4
cmp rbx, rcx
jne 0x200de1f0
mov rsi, rdi
mov rax, rsi
add rsp, 0x50
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
ret