Function at 0x201dde00
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x58
lea rbp, [rsp + 0x50]
mov qword [rbp], 0xfffffffffffffffe
mov edi, edx
mov rsi, rcx
call fcn.201de680
mov r15d, edi
mov rax, qword [rsi + 0x168]
mov rcx, qword [rsi + 0x170]
sub rcx, rax
sar rcx, 1
cmp rcx, r15
jbe 0x201dde87
movzx r11d, word [rax + r15*2]
test r11w, r11w
setne al
sete dl
movzx ecx, byte [0x205b3cd9]
mov r8d, ecx
xor r8b, 1
mov r9d, ecx
xor r9b, dl
mov r10d, r8d
and r10b, al
or r10b, r9b
cmp r10b, 1
jne 0x201dde87
and r8b, dl
jne 0x201dde87
and cl, al
jne 0x201dde87
mov dword [rbp - 8], r11d
xor r14d, r14d
jmp 0x201dde91
mov r14b, 1
mov dword [rbp - 8], 0
lea rbx, [rsi + 0x168]
lea rax, [0x2047464c]
nop
movsxd r12, dword [0x2047464c]
mov ecx, dword [0x205b402c]
cmp ecx, 0x25
jl 0x201dded3
nop word cs:[rax + rax]
mov ecx, dword [0x2047464c]
mov ecx, dword [0x205b402c]
cmp ecx, 0x3b
jge 0x201ddec0
jmp 0x201ddea0
add r12, rax
nop word cs:[rax + rax]
mov r13d, dword [0x20474654]
mov eax, dword [0x205b4028]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x201ddf00
mov eax, dword [0x20474654]
jmp 0x201ddee0
mov rcx, rsi
call fcn.201de790
test r14b, r14b
je 0x201de32a
mov qword [rbp - 0x28], rsi
mov rcx, rsi
call fcn.201de4c0
mov rax, qword [rsi + 0x168]
mov r9, qword [rsi + 0x170]
mov r8, r9
sub r8, rax
sar r8, 1
cmp r8, r15
jbe 0x201ddf4f
movzx eax, word [rax + r15*2]
mov dword [rbp - 8], eax
test ax, ax
jne 0x201de321
jmp 0x201de307
mov qword [rbp - 0x18], rax
mov word [rbp - 0xa], 0
mov eax, dword [0x205b402c]
cmp eax, 0x2a
jge 0x201ddf90
jmp 0x201ddf66
mov eax, 0x284f3555
add eax, dword [0x20559cb0]
lea rcx, [fcn.201dde00]
add ecx, ecx
add ecx, 0x44c0
mov edx, ecx
not edx
and edx, ecx
cmp edx, eax
je 0x201ddf9d
nop word [rax + rax]
mov eax, dword [0x205b402c]
cmp eax, 0x3a
jge 0x201ddf90
jmp 0x201ddf66
mov qword [rbp - 8], rdi
mov ecx, dword [0x20559be0]
mov edx, dword [0x20559cb0]
mov eax, edx
xor eax, 0x284f3555
mov r10d, edx
and r10d, 0x284f3555
add r10d, r10d
mov r11d, eax
xor r11d, r10d
and r10d, eax
lea eax, [r11 + r10*2]
mov r10d, edx
sub r10d, eax
lea eax, [rcx + r10]
add eax, 0x284f3556
mov r10d, dword [0x205b402c]
add edx, 0x284f357d
cmp r10d, edx
jge 0x201de000
mov dword [0x20559be0], eax
mov edx, dword [0x205b402c]
cmp edx, 0x15
jl 0x201de013
mov dword [0x20559be0], eax
mov edx, dword [0x205b402c]
cmp edx, 0x3e
jge 0x201de000
jmp 0x201ddfef
mov qword [rbp - 0x30], r9
mov qword [rbp - 0x20], rbx
mov edx, ecx
not edx
xor ecx, eax
not eax
and eax, edx
or eax, ecx
not eax
cmp dword [0x20559cb0], 0xd7b0caab
jne 0x201de054
mov ecx, 0x284f3555
add ecx, dword [0x20559cb0]
mov edx, dword [0x205b4028]
lea r10d, [rdx - 1]
imul r10d, edx
test r10b, 1
je 0x201de087
lea rdx, [fcn.201dde00]
lea r10d, [rdx + rdx]
add r10d, 0x15e0
mov ecx, r10d
not ecx
and r10d, ecx
add edx, edx
add edx, 0x15e1
and ecx, 0xfffffffe
xor ecx, edx
or ecx, r10d
nop
cmp ecx, 0xffffffff
jne 0x201de080
jmp 0x201de035
xor edx, edx
mov r14d, 0
cmp eax, ecx
jne 0x201de1ae
xor edx, edx
nop dword [rax]
test dl, dl
jne 0x201de0b1
mov r10d, dword [0x205b402c]
cmp r10d, 0x47
jle 0x201de0c8
mov r9d, dword [0x205b4028]
lea r10d, [r9 - 1]
imul r10d, r9d
test r10b, 1
jne 0x201de0a0
jmp 0x201de0a4
lea rdx, [fcn.201dde00]
add edx, edx
add edx, 0x34a0
mov r10d, edx
not r10d
nop dword [rax]
mov r11d, dword [0x20559cb0]
mov ebx, r11d
xor ebx, 0x160d1224
mov r14d, r11d
and r14d, 0x160d1224
lea ebx, [rbx + r14*2]
add ebx, 0x12422332
mov r14d, edx
xor r14d, ebx
not ebx
and ebx, r10d
or ebx, r14d
cmp ebx, 0xffffffff
jne 0x201de0e0
add r11d, 0x284f3555
xor r10d, r10d
mov edx, 0
mov r14d, 0
cmp r11d, r13d
jge 0x201de1ae
mov r11d, 0x284f3555
lea rdx, [fcn.201dde00]
add edx, edx
add edx, 0x2c80
mov ebx, edx
not ebx
and ebx, edx
xor edx, edx
xor r14d, r14d
nop word cs:[rax + rax]
mov r9d, dword [0x205b4028]
nop word [rax + rax]
mov r9d, dword [0x20559cb0]
add r9d, r11d
cmp ebx, r9d
jne 0x201de170
movsxd r10, r10d
xor rdx, qword [r12 + r10]
xor r14, qword [r12 + r10 + 8]
mov r9d, dword [0x20559cb0]
mov edi, r9d
xor edi, 0x284f3565
and r9d, 0x284f3565
lea r9d, [rdi + r9*2]
add r10d, r9d
cmp r10d, r13d
jl 0x201de160
mov r9, qword [rbp - 8]
inc r9d
cmp r8, r9
jbe 0x201de1d2
mov rax, qword [rbp - 0x18]
lea rax, [rax + r9*2]
mov rbx, qword [rbp - 0x20]
mov qword [rsi + 0x170], rax
jmp 0x201de307
mov qword [rbp - 8], r9
lea r10, [fcn.201dde00]
add r10d, r10d
add r10d, 0x36e0
mov r11d, r10d
not r11d
nop dword [rax]
test r11d, r10d
jne 0x201de20a
mov r9d, dword [0x205b4028]
lea edi, [r9 - 1]
imul edi, r9d
test dil, 1
je 0x201de22c
mov r9d, dword [0x205b4028]
mov edi, dword [0x20559cb0]
sub edi, r9d
add edi, 0xd0013414
imul edi, r9d
test dil, 1
jne 0x201de1f0
jmp 0x201de1f5
mov r12, qword [0x20474638]
mov r13, qword [0x20474630]
xor r10d, r10d
cmp eax, ecx
setne r10b
xor eax, eax
neg r10
mov r11d, 0
sbb r11, r11
sub r13, rdx
sbb r12, r14
mov rcx, r12
not rcx
mov rdx, r13
not rdx
mov r9, r11
xor r9, r12
mov rdi, r10
xor rdi, r13
mov rbx, rdi
and rbx, r10
mov r14, r9
and r14, r11
not rdi
not r9
and r10, rdx
or r10, rdi
and r11, rcx
or r11, r9
not r10
or r10, rbx
not r11
or r11, r14
xor r13, r10
xor r12, r11
xor r11, rcx
xor r10, rdx
and r10, rdx
or r10, r13
and r11, rcx
or r11, r12
not r10
not r11
test al, al
je 0x201de35c
jmp 0x201de3aa
mov rdi, qword [rbp - 8]
cmp r8, rdi
mov rbx, qword [rbp - 0x20]
jae 0x201de307
mov rax, qword [0x20559cb8]
sub rax, qword [rbp - 0x18]
add rax, qword [rsi + 0x178]
movabs rcx, 0x945d7b9e590265ec
add rcx, rax
sar rcx, 1
cmp rcx, rdi
jae 0x201de33e
lea r8, [rbp - 0xa]
mov rcx, rbx
mov rdx, rdi
call fcn.201de8b0
add rsi, 0xe8
mov rcx, rsi
call fcn.201e3cd0
mov rcx, qword [rbx]
mov dword [rbp - 8], eax
mov word [rcx + r15*2], ax
lea rcx, [rbp - 0x28]
call fcn.201ddd00
mov eax, dword [rbp - 8]
add rsp, 0x58
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
sub rdi, r8
lea r8, [rdi + rdi]
mov r14, qword [rbp - 0x30]
mov rcx, r14
xor edx, edx
call fcn.2044feb0
lea rax, [r14 + rdi*2]
jmp 0x201de1c6
mov rax, r10
or rax, r11
setne al
sete cl
movzx edx, byte [0x205b3cd9]
mov r9d, edx
xor r9b, cl
and r9b, dl
xor cl, al
and cl, dl
xor cl, al
or cl, r9b
mov byte [0x205b3cd9], cl
mov ecx, dword [0x205b4028]
lea eax, [rcx - 1]
imul eax, ecx
mov ecx, 0x284f3557
add ecx, dword [0x20559cb0]
xor edx, edx
div ecx
test edx, edx
je 0x201de2c4
lea rax, [fcn.201dde00]
lea ebx, [rax + rax]
add ebx, 0xdc0
mov r14d, ebx
not r14d
mov rax, r10
or rax, r11
setne dl
movzx ecx, byte [0x205b3cd9]
mov eax, ecx
sub al, dl
mul dl
mov edx, eax
mov eax, ecx
xor al, 1
and al, dl
xor dl, 1
and dl, cl
or dl, al
sub cl, dl
mov eax, ecx
mul dl
and al, 1
mov byte [0x205b3cd9], al
test r14d, ebx
jne 0x201de3c0
jmp 0x201de35c