Function at 0x201d8170
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x80
lea rbp, [rsp + 0x80]
mov qword [rbp - 8], 0xfffffffffffffffe
mov rdi, rdx
mov rsi, rcx
mov rcx, qword [rcx]
mov eax, dword [0x205b3fe4]
cmp eax, 0x54
jl 0x201d81ba
mov al, 1
nop word [rax + rax]
mov edx, dword [0x20474228]
test al, al
je 0x201d81b0
movsxd r14, dword [0x20474228]
mov r15d, dword [0x20474218]
mov edx, 0x4e8703a7
mov r8d, 0xc5f87ae7
mov r9d, 0x31c97c7a
call fcn.201d9250
mov rcx, qword [rsi + 8]
mov edx, dword [0x205b35b8]
add edx, dword [rcx]
mov dword [rsp + 0x20], 0x9eee6c39
mov rcx, rax
mov r8d, 0x5226b822
mov r9d, 0x6d3474f1
call fcn.201d9200
mov qword [rsi + 0x18], rax
test rax, rax
je 0x201d8691
mov ecx, 0x30
mov edx, 0x75f48778
mov r8d, 0xe27f073d
mov r9d, 0x26e10c97
call fcn.2008daf0
mov qword [rbp - 0x10], rax
mov rcx, qword [rsi]
call fcn.201d7950
mov rcx, rax
call fcn.201d7950
lea rcx, [rsi + 0x20]
mov r8, qword [rsi + 0x18]
add r8, 0x10
mov rdx, qword [rbp - 0x10]
mov qword [rdx], r8
xorps xmm0, xmm0
movups xmmword [rdx + 8], xmm0
mov qword [rdx + 0x18], 0
mov qword [rdx + 0x20], rax
mov byte [rdx + 0x28], 0
call fcn.201d2ef0
mov r8, qword [rsi + 0x18]
mov rdx, qword [rsi + 0x20]
mov dword [rsp + 0x30], 0x7008297e
mov dword [rsp + 0x28], 0x718d5fa6
mov dword [rsp + 0x20], 0x68b3a35a
lea r9, [0x201d65b0]
lea rcx, [rbp - 0x40]
call fcn.201d9290
mov rax, qword [rbp - 0x40]
mov qword [rbp - 0x10], rax
mov ecx, 0xc
call fcn.2042789c
mov r10, rax
mov rcx, qword [rsi + 8]
mov rax, qword [rsi + 0x18]
mov eax, dword [rax + 0x28]
mov rbx, qword [rsi + 0x20]
mov dword [r10], 0
mov dword [r10 + 8], 0
mov edx, dword [rcx + 8]
mov ecx, edx
not ecx
mov r8d, edx
xor r8d, 1
mov r9d, ecx
and ecx, 0x7ffffffe
or ecx, r8d
and r8d, 1
xor edx, 0xfffffffe
and r9d, 1
or r9d, edx
not r9d
or r9d, r8d
not ecx
add ecx, ecx
add r9d, 0x42696f5a
mov edx, r9d
xor edx, ecx
and r9d, ecx
lea ecx, [rdx + r9*2]
add ecx, 0xbd9690a6
mov edx, ecx
not edx
mov r8d, ecx
xor r8d, 1
mov r9d, eax
xor r9d, edx
and edx, 0xfffffffe
or edx, r8d
not edx
xor ecx, eax
and r9d, eax
lea r12d, [rcx + r9*2]
add r12d, edx
mov dword [r10 + 4], r12d
mov rcx, qword [rbp - 0x10]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
mov qword [rbp - 0x18], r10
call qword [case.0x2010e313.0]
movzx eax, ax
mov ecx, r12d
xor ecx, 0x7ae5db83
not r12d
and r12d, 0x51a247c
or r12d, ecx
not r12d
lea ecx, [rcx + r12*2]
add eax, ecx
add eax, 0x851a247d
mov rcx, qword [rbp - 0x18]
mov dword [rcx + 8], eax
mov r12d, dword [rcx + 4]
mov rcx, rbx
call fcn.201af850
movzx eax, ax
add eax, r12d
mov rbx, qword [rbp - 0x18]
mov dword [rbx], eax
mov rcx, qword [rsi + 0x28]
cmp rcx, rbx
sete al
test rcx, rcx
sete dl
test al, dl
jne 0x201d83c0
xor al, dl
jne 0x201d83c0
call fcn.2008bfc0
mov qword [rsi + 0x28], rbx
mov ebx, dword [rbx]
mov rcx, qword [rsi]
call fcn.201d7950
mov rcx, rax
mov edx, ebx
call fcn.201d9a40
lea rcx, [0x20474228]
add r14, rcx
mov edx, dword [0x20559290]
mov ecx, 0xb2d1bf49
add ecx, dword [0x205592c0]
lea r8d, [rdx + 0x7d925cfc]
mov r9d, r8d
xor r9d, ecx
and r8d, ecx
lea ecx, [r9 + r8*2]
add ecx, 0x826da304
mov r8d, edx
not r8d
mov ebx, ecx
not ebx
and edx, ebx
and ebx, r8d
and r8d, ecx
or edx, r8d
xor ebx, edx
not ebx
nop word cs:[rax + rax]
mov edx, dword [0x205b3fe4]
cmp edx, 0x39
jg 0x201d8472
mov dword [0x20559290], ecx
mov edx, dword [0x205b3fe0]
lea r8d, [rdx - 1]
imul r8d, edx
and r8d, 1
mov edx, dword [0x205592c0]
mov r9d, edx
xor r9d, 0xb2d1bf48
and edx, 0x32d1bf48
lea edx, [r9 + rdx*2]
cmp r8d, edx
je 0x201d8485
mov dword [0x20559290], ecx
mov edx, dword [0x205b3fe4]
cmp edx, 0x5a
jge 0x201d8430
jmp 0x201d843b
test ebx, ebx
jne 0x201d84a9
mov ecx, dword [0x205592c0]
mov edx, ecx
xor edx, 0xb2d1bf48
and ecx, 0x32d1bf48
lea ecx, [rdx + rcx*2]
cmp ecx, r15d
jl 0x201d86c5
xor r12d, r12d
mov ecx, 0xb2d1bf98
nop word cs:[rax + rax]
mov edx, dword [0x205b3fe4]
mov r8d, dword [0x205592c0]
add r8d, ecx
cmp edx, r8d
jge 0x201d84c0
mov qword [rsi + 0x10], rax
test rax, rax
je 0x201d8695
mov rcx, rsi
call fcn.201d87f0
mov eax, dword [rsi + 0x38]
mov dword [rdi], eax
mov rcx, qword [rsi + 0x18]
call fcn.201d4340
xor ecx, ecx
test ebx, ebx
setne cl
mov rdx, qword [0x20474220]
sub rdx, r12
movabs r8, 0x795c1bdf6b47ccb1
xor r8, rcx
lea rcx, [r8 + rcx*2]
movabs r8, 0x86a3e42094b8334e
add r8, rcx
movabs r9, 0x3f06edf75220f6e7
add r9, qword [0x205592c8]
xor r9, rdx
not r8
mov rcx, r8
and rcx, r9
or r9, r8
not r9
or r9, rcx
mov ecx, dword [0x205b3fe0]
not r9
mov rcx, r8
xor rcx, r9
and rcx, r8
or rcx, r9
mov rdx, rcx
not rdx
mov r8d, 0xb2d1bf49
lea r9, [fcn.201d8170]
add r9d, r9d
add r9d, 0x2dc0
nop
mov r10d, dword [0x205592c0]
add r10d, r8d
xor r10d, r9d
not r10d
test r10d, r9d
jne 0x201d8580
mov r8, qword [0x205b38a0]
mov r9, r8
not r9
mov r10, r9
xor r10, rcx
and r10, r9
and rcx, r8
or rcx, r10
and rdx, r8
mov r8, qword [0x205592c8]
movabs r9, 0x3f06edf75220f6ea
mov r10, r8
xor r10, r9
and r8, r9
lea r8, [r10 + r8*2]
imul r8, rdx
add r8, rcx
mov qword [0x205b38a0], r8
test al, al
je 0x201d8610
movzx r8d, word [rsi + 0x3c]
mov rax, qword [rsi + 0x10]
add r8, qword [rax + 8]
mov rax, qword [rsi + 0x28]
mov edx, dword [rax + 4]
add rdx, r8
mov rcx, qword [rbp - 0x10]
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x2010e313.0]
mov qword [rsi + 0x30], rax
mov rax, qword [rsi + 0x18]
cmp dword [rax + 0x18], 0
je 0x201d8699
mov rax, qword [rsi + 0x28]
mov eax, dword [rax + 8]
mov rdx, qword [rsi + 8]
mov r8, qword [rsi + 0x10]
mov ecx, dword [r8 + 0x10]
sub ecx, eax
mov edx, dword [rdx + 8]
mov r8, qword [r8 + 8]
movzx r9d, word [rsi + 0x3c]
mov r10, qword [0x205b38a0]
mov r11, r10
xor r11, r9
not r10
not r9
and r9, r10
or r9, r11
not r9
lea r9, [r11 + r9*2]
add r9, r8
add r8, rax
mov eax, dword [rsi + 0x38]
mov qword [rbp - 0x40], r9
mov dword [rbp - 0x38], edx
mov qword [rbp - 0x30], r8
mov dword [rbp - 0x28], ecx
mov dword [rbp - 0x20], eax
mov rcx, qword [rsi + 0x20]
lea rdx, [rbp - 0x40]
call fcn.201affe0
mov edi, eax
test al, al
jne 0x201d869c
mov dword [rsi + 0x38], 0
jmp 0x201d869c
xor edi, edi
jmp 0x201d86b1
xor edi, edi
jmp 0x201d869c
mov dil, 1
mov rcx, qword [rbp - 0x10]
mov rax, qword [rcx]
mov rax, qword [rax]
mov edx, 1
call qword [case.0x2010e313.0]
mov eax, edi
add rsp, 0x80
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
pop rbp
ret
mov ecx, 8
xor r12d, r12d
nop dword [rax]
lea edx, [rcx - 8]
movsxd rdx, edx
add rdx, r14
nop dword [rax]
mov r8d, dword [0x205b3fe0]
lea r9d, [r8 - 1]
imul r9d, r8d
test r9b, 1
jne 0x201d86e0
mov rdx, qword [rdx]
mov r8, rdx
xor r8, rdx
not r8
and r12, r8
xor r12, rdx
cmp ecx, r15d
jge 0x201d84ac
add ecx, 8
jmp 0x201d86d0