Function at 0x204043e0
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 rdi, r8
mov rbx, rdx
mov rsi, rcx
mov eax, dword [0x205b8728]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x20404431
nop word [rax + rax]
mov eax, dword [0x2049b808]
mov eax, dword [0x205b872c]
cmp eax, 0x42
jge 0x20404420
lea r15, [rdi + 1]
lea rax, [0x2049b808]
movsxd r12, dword [0x2049b808]
add r12, rax
mov eax, dword [0x205b872c]
cmp eax, 0x57
jge 0x20404463
mov r13d, dword [0x2049b7f0]
mov eax, dword [0x205b872c]
cmp eax, 0x26
jl 0x204044be
lea r14, [0x20404ad0]
mov r13d, 0xcbafeedc
mov ecx, 0x2c
mov edx, 0xbcff18e0
mov r8d, 0xc8c46847
mov r9d, 0xc37c7d18
call fcn.200f6070
mov qword [0x205b8718], rax
mov rcx, r14
call fcn.20427ec0
mov eax, dword [0x2049b7f0]
mov eax, dword [0x205b8728]
lea ecx, [rax - 1]
imul ecx, eax
and ecx, 1
mov eax, dword [0x205a5c3c]
add eax, r13d
cmp ecx, eax
jne 0x20404470
jmp 0x20404451
pxor xmm0, xmm0
movdqa xmmword [rbp - 0x20], xmm0
mov qword [rbp - 0x10], 0
test r15, r15
je 0x20404525
js 0x204049c2
cmp r15, 0x1000
mov qword [rbp - 8], rdi
jb 0x20404558
lea rcx, [rdi + 0x28]
mov edx, 0xf930aa57
mov r8d, 0xbcff18e0
mov r9d, 0x419faf38
call fcn.2008daf0
lea r14, [rax + 0x27]
mov rcx, r14
not rcx
mov rdx, r14
xor rdx, 0xffffffffffffffe0
xor r14, 0x1f
and r14, rcx
or r14, rdx
not r14
mov qword [r14 - 8], rax
jmp 0x20404574
mov r14, qword [rbp - 0x20]
test rbx, rbx
setne al
sete cl
test r14, r14
sete dl
setne r8b
and r8b, cl
and dl, al
or dl, r8b
mov rax, rbx
or rax, r14
sete al
or al, dl
cmp al, 1
jne 0x204045be
jmp 0x20404866
mov rcx, r15
mov edx, 0xf930aa57
mov r8d, 0xbcff18e0
mov r9d, 0x419faf38
call fcn.2008daf0
mov r14, rax
mov qword [rbp - 0x20], r14
lea rdi, [r14 + r15]
mov qword [rbp - 0x10], rdi
mov rcx, r14
xor edx, edx
mov r8, r15
call fcn.2044feb0
mov qword [rbp - 0x18], rdi
test rbx, rbx
sete al
setne cl
test r14, r14
sete dl
xor cl, dl
not cl
and cl, al
or cl, dl
cmp cl, 1
mov rdi, qword [rbp - 8]
je 0x20404866
test rdi, rdi
je 0x20404861
movabs rax, 0x54d1da66781db38a
add rax, qword [0x205a5c30]
xor ecx, ecx
cmp rdi, rax
jb 0x20404648
mov rax, r14
sub rax, rbx
cmp rax, 0x20
jb 0x20404648
cmp rdi, 0x20
jae 0x20404713
xor ecx, ecx
mov rax, rcx
mov rcx, rdi
and rcx, 0xfffffffffffffff8
lea rdx, [rcx - 8]
movdqa xmm0, xmmword [0x2049b7b0]
movdqa xmm1, xmmword [0x2049b7c0]
nop dword [rax]
movq xmm2, qword [rbx + rax]
movdqa xmm3, xmm2
pandn xmm3, xmm0
pand xmm2, xmm1
por xmm2, xmm3
movq qword [r14 + rax], xmm2
cmp byte [0x205b3831], 0
jne 0x2040463f
cmp rdx, rax
je 0x2040463f
add rax, 8
jmp 0x20404610
cmp rcx, rdi
je 0x20404861
mov rax, rcx
not rax
add rax, rdi
mov rdx, rdi
and rdx, 3
je 0x20404695
inc rcx
xor r8d, r8d
movzx r9d, byte [rbx + rcx - 1]
xor r9b, 0x67
mov byte [r14 + rcx - 1], r9b
mov r9d, r8d
not r9d
and r9d, 1
mov r10, r8
and r10, 0xfffffffffffffffe
or r10, r9
and r8d, 1
lea r8, [r10 + r8*2]
cmp r8, rdx
je 0x20404695
inc rcx
jmp 0x20404660
cmp rax, 3
jb 0x20404861
lea rax, [rdi - 4]
nop word cs:[rax + rax]
movzx edx, byte [rbx + rcx]
xor dl, 0x67
mov byte [r14 + rcx], dl
movzx edx, byte [rbx + rcx + 1]
movzx r8d, byte [0x205a5c38]
add r8b, 0xb1
mov r9d, r8d
xor r9b, r8b
not r9b
and r9b, dl
xor r9b, r8b
and r9b, 0x67
and dl, 0x98
or dl, r9b
mov byte [r14 + rcx + 1], dl
movzx edx, byte [rbx + rcx + 2]
xor dl, 0x67
mov byte [r14 + rcx + 2], dl
movzx edx, byte [rbx + rcx + 3]
xor dl, 0x67
mov byte [r14 + rcx + 3], dl
cmp rax, rcx
je 0x20404861
add rcx, 4
jmp 0x204046b0
mov qword [rbp - 0x28], rsi
mov qword [rbp - 8], rdi
mov rcx, rdi
and rcx, 0xffffffffffffffe0
xor r8d, r8d
pcmpeqd xmm0, xmm0
movdqa xmm1, xmmword [0x2049b7d0]
movdqa xmm2, xmmword [0x2049b7e0]
mov r10d, 0xcbafeede
mov r11d, 0xcbafeedc
xor r15d, r15d
jmp 0x2040477c
xor edx, edx
movdqa xmm5, xmm3
pandn xmm5, xmm2
pand xmm3, xmm1
por xmm3, xmm5
movdqu xmmword [r14 + r15], xmm4
movdqu xmmword [r14 + r15 + 0x10], xmm3
add r15, 0x20
cmp r15, rcx
je 0x20404850
movdqu xmm5, xmmword [rbx + r15]
movdqu xmm3, xmmword [rbx + r15 + 0x10]
movdqa xmm4, xmm5
pxor xmm4, xmm2
pand xmm4, xmm5
por xmm5, xmm1
pxor xmm5, xmm0
por xmm4, xmm5
mov eax, dword [0x205b872c]
nop word [rax + rax]
mov r9d, dword [0x205a5ad0]
mov edx, dword [0x205b8728]
lea eax, [rdx - 1]
imul eax, edx
mov edi, dword [0x205a5c3c]
add edi, r10d
xor edx, edx
div edi
test edx, edx
jne 0x204047b0
lea eax, [r9 + 1]
mov dword [0x205a5ad0], eax
mov edx, r9d
not edx
xor r9d, eax
not eax
and eax, edx
or eax, r9d
not eax
mov r9d, dword [0x205a5c3c]
add r9d, r11d
cmp eax, r9d
jne 0x20404750
mov edx, dword [0x205b872c]
nop dword [rax + rax]
test r8b, r8b
jne 0x20404810
xor edi, edi
mov edx, 0
test r13d, r13d
jle 0x20404752
xor edx, edx
nop word [rax + rax]
movsxd rdi, edi
xor dx, word [r12 + rdi]
mov esi, dword [0x205a5c3c]
add edi, esi
add edi, 0xcbafeede
cmp edi, r13d
jl 0x20404830
jmp 0x20404752
mov rdi, qword [rbp - 8]
cmp rcx, rdi
jne 0x2040491d
mov rsi, qword [rbp - 0x28]
mov byte [r14 + rdi], 0
movsxd r8, edi
mov rdx, qword [rbp - 0x20]
lea rax, [rsi + 8]
mov qword [rbp - 8], rax
mov qword [rsi + 0x18], 0
mov qword [rsi + 0x20], 0xf
mov byte [rsi + 8], 0
lea rax, [0x2046c448]
mov qword [rsi], rax
mov rcx, rsi
call fcn.2025dae0
mov rcx, qword [rbp - 0x20]
test rcx, rcx
je 0x20404909
mov rdx, qword [rbp - 0x10]
sub rdx, rcx
cmp rdx, 0x1000
jb 0x204048f0
mov rax, qword [rcx - 8]
add rcx, qword [0x205a5c30]
sub rcx, rax
movabs r8, 0x54d1da66781db37a
add r8, rcx
cmp r8, 0x20
jae 0x204049c7
add rdx, qword [0x205a5c30]
movabs rcx, 0x54d1da66781db3a9
add rdx, rcx
mov rcx, rax
mov dword [rsp + 0x20], 0xd7f55f95
mov r8d, 0x4d7c47d
mov r9d, 0x74a06eb4
call fcn.2008bfb0
mov rax, rsi
add rsp, 0x58
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov r8, rdi
xor r8, 0xffffffffffffffe7
movzx r10d, byte [0x205b38b9]
mov r13d, 0xcbafef11
nop word cs:[rax + rax]
mov r11d, dword [0x205b8728]
lea esi, [r11 - 1]
imul esi, r11d
test sil, 1
jne 0x2040498d
xor esi, esi
cmp eax, r9d
setne sil
movzx r11d, word [0x2049b7f4]
sub r11d, edx
dec esi
and r11w, si
setne r15b
movzx r12d, byte [0x205b38b9]
mov esi, dword [0x205b8728]
lea edi, [rsi - 1]
imul edi, esi
test dil, 1
je 0x204049ac
movzx r11d, word [0x2049b7f4]
mov r11d, dword [0x205b872c]
mov esi, dword [0x205a5c3c]
add esi, r13d
cmp r11d, esi
jge 0x20404940
jmp 0x20404955
and r15b, r12b
mov eax, dword [0x205b8728]
lea edx, [rax - 1]
imul edx, eax
test dl, 1
jne 0x20404a00
jmp 0x204049cc
call fcn.2025eeb0
call fcn.20407a4c
test r11w, r11w
sete al
setne dl
xor al, dl
and al, r12b
xor dl, r15b
xor dl, al
mov byte [0x205b38b9], dl
cmp dword [0x205a5c3c], 0x34501124
je 0x20404a2c
nop word cs:[rax + rax]
test r11w, r11w
setne dl
mov eax, r12d
sub al, dl
mul dl
xor al, r12b
lea edx, [r15 + rax]
mul dl
and al, 1
mov byte [0x205b38b9], al
mov eax, dword [0x205b872c]
cmp eax, 0x54
jge 0x20404a00
jmp 0x204049cc
test r8b, 0x18
setne al
sete dl
test r10b, dl
mov rsi, qword [rbp - 0x28]
jne 0x20404a60
mov r8d, r10d
not r8b
and r8b, dl
mov rdi, qword [rbp - 8]
jne 0x20404648
and r10b, al
je 0x204045ee
jmp 0x20404648
mov rdi, qword [rbp - 8]
jmp 0x20404648