Function at 0x41fef0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2024
call fcn.00441cb0
mov eax, dword [0x457664]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
push esi
mov esi, dword [ebp + 8]
mov dword [ebp - 0x2020], esi
mov dword [ebp - 0x2024], eax
push edi
mov edi, dword [0x4570d0]
mov dword [ebp - 0x2010], edi
test esi, esi
je 0x42019c
test ecx, ecx
je 0x41ff58
mov edi, dword [ebp + 0x14]
mov dword [ebp - 0x2010], edi
test edi, edi
jne 0x41ff58
pop edi
mov byte [esi], 0
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00441849
mov esp, ebp
pop ebp
ret 0x10
test ecx, ecx
mov eax, 0x456cd0
push ebx
cmovne eax, ecx
mov dword [ebp - 0x2014], eax
push 0x1000
push 0
mov al, byte [eax + 5]
xor al, byte [esi + 2]
movzx ebx, al
mov eax, 0xaaaaaaab
mul ebx
mov eax, ebx
mov dword [ebp - 0x201c], ebx
shr edx, 1
lea ecx, [edx + edx*2]
xor edx, edx
div edi
mov dword [ebp - 0x2008], ecx
mov ecx, eax
mov eax, edi
imul eax, ecx
mov dword [ebp - 0x200c], ecx
mov ecx, ebx
sub ecx, eax
lea eax, [ebp - 0x1004]
push eax
mov dword [ebp - 0x2018], ecx
call sub.VCRUNTIME140.dll_memset
push 0x1000
lea eax, [ebp - 0x2004]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [ebp - 0x200c]
lea eax, [ebp - 0x1004]
add esp, 0x18
add esi, 4
test ecx, ecx
je 0x420025
test edi, edi
je 0x420014
mov ebx, dword [ebp - 0x2014]
sub ebx, eax
nop
movzx ecx, byte [esi]
inc esi
movzx edx, byte [ebx + eax]
xor edx, ecx
mov cl, byte [edx + 0x4572d8]
mov byte [eax], cl
inc eax
sub edi, 1
jne 0x41fff0
mov edi, dword [ebp - 0x2010]
mov ecx, dword [ebp - 0x200c]
sub ecx, 1
mov dword [ebp - 0x200c], ecx
jne 0x41ffe3
mov ebx, dword [ebp - 0x201c]
xor edi, edi
cmp dword [ebp - 0x2018], edi
jbe 0x420066
mov ebx, dword [ebp - 0x2014]
sub esi, eax
nop word [eax + eax]
movzx ecx, byte [ebx + edi]
lea eax, [eax + 1]
movzx edx, byte [esi + eax - 1]
inc edi
xor edx, ecx
mov cl, byte [edx + 0x4572d8]
mov byte [eax - 1], cl
cmp edi, dword [ebp - 0x2018]
jb 0x420040
mov ebx, dword [ebp - 0x201c]
cmp ebx, 3
jb 0x420155
mov ecx, dword [ebp - 0x2008]
mov eax, ecx
cmp ecx, ebx
jl 0x42007e
lea eax, [ecx - 3]
mov cl, byte [ebp + eax - 0x1004]
mov byte [ebp - 0x2004], cl
cmp ebx, 3
jbe 0x4200b6
lea ecx, [ebx - 4]
mov eax, 0xaaaaaaab
mul ecx
xor esi, esi
shr edx, 1
inc edx
nop
mov al, byte [ebp + esi - 0x1004]
lea esi, [esi + 3]
mov byte [ebp + esi - 0x2004], al
sub edx, 1
jne 0x4200a0
lea edx, [ebx - 3]
mov ecx, 1
cmp edx, ecx
jbe 0x4200d7
mov al, byte [ebp + ecx - 0x1001]
mov byte [ebp + ecx - 0x2004], al
add ecx, 3
cmp ecx, edx
jb 0x4200c2
lea edi, [ebp - 0x2004]
lea esi, [ecx + 3]
add edi, ecx
cmp esi, ebx
jle 0x420104
mov ecx, dword [ebp - 0x2008]
mov eax, 0xfffffffd
sub eax, ecx
add esi, eax
lea eax, [esi + 3]
cmovns eax, esi
mov al, byte [ebp + eax - 0x1004]
jmp 0x42012f
jne 0x42011d
mov ecx, dword [ebp - 0x2008]
sub esi, ecx
lea eax, [esi + 3]
cmovns eax, esi
mov al, byte [ebp + eax - 0x1004]
jmp 0x42012f
test esi, esi
cmovns esi, ecx
mov ecx, dword [ebp - 0x2008]
mov al, byte [ebp + esi - 0x1001]
mov edx, 2
mov byte [edi], al
lea ecx, [ebp + ecx - 0x1005]
nop dword [eax]
mov al, byte [ecx]
lea ecx, [ecx - 3]
mov byte [ebp + edx - 0x2004], al
add edx, 3
cmp edx, ebx
jb 0x420140
jmp 0x420170
test ebx, ebx
je 0x420170
push ebx
lea eax, [ebp - 0x1004]
push eax
lea eax, [ebp - 0x2004]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [ebp - 0x2024]
test eax, eax
je 0x42017c
mov dword [eax], ebx
mov esi, dword [ebp - 0x2020]
test ebx, ebx
je 0x420197
push ebx
lea eax, [ebp - 0x2004]
push eax
push esi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov byte [esi + ebx], 0
pop ebx
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.00441849
mov esp, ebp
pop ebp
ret 0x10