Function at 0x4016e7
Capabilities:
Encode data using xor

Disassembly:
push 0x4a4
mov eax, 0x4e982b
call fcn.004e96d0
mov ebx, ecx
xor eax, eax
lea edi, [ebp - 0x450]
push 6
inc eax
mov esi, 0x7b9a68
mov dword [ebp - 4], eax
pop ecx
rep movsd dword es:[edi], dword [esi]
push 0
mov dword [ebp - 0x460], eax
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov esi, 0x7b9a84
lea edi, [ebp - 0x428]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, 0x7b9a84
lea edi, [ebp - 0x434]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, str.sxCcCZrXWc_
lea edi, [ebp - 0x41c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
call fcn.00490970
cmp byte [ebp - 0x41d], 0
mov esi, eax
push 0x35
mov dword [ebp - 0x458], esi
pop edi
je 0x401776
xor ecx, ecx
xor edx, edx
mov eax, ecx
div edi
add dl, 0x32
xor byte [ebp + ecx - 0x428], dl
inc ecx
cmp ecx, 0xc
jl 0x401760
cmp byte [ebp - 0x412], 0
je 0x401797
xor ecx, ecx
xor edx, edx
mov eax, ecx
div edi
add dl, 0x32
xor byte [ebp + ecx - 0x41c], dl
inc ecx
cmp ecx, 0xb
jl 0x401781
cmp byte [ebp - 0x429], 0
je 0x4017b8
xor ecx, ecx
xor edx, edx
mov eax, ecx
div edi
add dl, 0x32
xor byte [ebp + ecx - 0x434], dl
inc ecx
cmp ecx, 0xc
jl 0x4017a2
cmp byte [ebp - 0x436], 0
je 0x4017d9
xor ecx, ecx
xor edx, edx
mov eax, ecx
div edi
add dl, 0x32
xor byte [ebp + ecx - 0x450], dl
inc ecx
cmp ecx, 0x1b
jl 0x4017c3
xor eax, eax
push eax
push eax
push eax
lea eax, [ebp - 0x428]
push eax
lea eax, [ebp - 0x41c]
push eax
lea eax, [ebp - 0x434]
push eax
lea eax, [ebp - 0x450]
push eax
push esi
call fcn.00492040
xor eax, eax
lea edi, [ebp - 0x450]
push 6
pop ecx
rep stosd dword es:[edi], eax
push 0xa
mov esi, str.avxpuc
pop ecx
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
lea edi, [ebp - 0x428]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
lea edi, [ebp - 0x434]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
cmp dword [ebp + 0x1c], 0xf
lea edi, [ebp - 0x41c]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp + 8]
lea edi, [ebp - 0x4ac]
mov dword [ebp - 0x454], eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
jbe 0x40185e
mov eax, dword [ebp + 8]
mov dword [ebp - 0x454], eax
push 0x35
xor ecx, ecx
pop esi
xor edx, edx
mov eax, ecx
div esi
add dl, 0x32
xor byte [ebp + ecx - 0x4ac], dl
inc ecx
cmp ecx, 0x2b
jl 0x401863
push dword [ebp - 0x454]
lea eax, [ebp - 0x4ac]
push eax
lea eax, [ebp - 0x410]
push eax
call fcn.004010d7
mov esi, dword [ebp - 0x458]
lea eax, [ebp - 0x410]
add esp, 0xc
push eax
push esi
call fcn.004965f0
push esi
call fcn.004936b0
mov edi, eax
mov dword [ebp - 0x464], edi
test edi, edi
jne 0x401999
mov byte [ebp - 0x460], 0
lea ecx, [ebp + 8]
call fcn.00403fdb
lea ecx, [ebp + 0x20]
call fcn.00403fdb
mov al, byte [ebp - 0x460]
call fcn.004e968e
ret 0x30
push dword [esi]
lea ecx, [ebp - 0x47c]
call fcn.00401656
push ecx
lea ecx, [ebp - 0x47c]
mov byte [ebp - 4], 2
call fcn.004011e4
pop ecx
lea ecx, [ebp - 0x47c]
mov dword [ebx], eax
mov byte [ebp - 4], 1
call fcn.00403fdb
mov ecx, dword [esi + 4]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401918
sub ecx, edx
push ecx
push dword [esi + 4]
lea ecx, [ebx + 4]
call fcn.004044ca
mov ecx, dword [esi + 8]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401933
sub ecx, edx
push ecx
push dword [esi + 8]
lea ecx, [ebx + 0x1c]
call fcn.004044ca
mov ecx, dword [esi + 0xc]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40194e
sub ecx, edx
push ecx
push dword [esi + 0xc]
lea ecx, [ebx + 0x34]
call fcn.004044ca
push dword [esi + 0x10]
lea ecx, [ebp - 0x47c]
call fcn.00401656
push ecx
lea ecx, [ebp - 0x47c]
mov byte [ebp - 4], 3
call fcn.004011e4
test eax, eax
mov byte [ebp - 4], 1
pop ecx
setne al
lea ecx, [ebp - 0x47c]
mov byte [ebx + 0x4c], al
call fcn.00403fdb
push edi
call fcn.00490300
mov esi, eax
test esi, esi
jne 0x4018e3
lea ecx, [ebx + 0x1c]
mov edx, str.null
call fcn.004045e8
test al, al
je 0x401aed
lea eax, [ebx + 4]
cmp dword [eax + 0x14], 0xf
mov dword [ebp - 0x454], eax
jbe 0x4019d5
mov eax, dword [eax]
mov dword [ebp - 0x454], eax
cmp dword [ebp + 0x34], 0xf
lea edi, [ebp - 0x4b0]
push 0xc
mov esi, 0x7b9940
lea eax, [ebp + 0x20]
pop ecx
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x45c], eax
movsw word es:[edi], word [esi]
jbe 0x4019ff
mov eax, dword [ebp + 0x20]
mov dword [ebp - 0x45c], eax
push 0x35
xor ecx, ecx
pop esi
xor edx, edx
mov eax, ecx
div esi
add dl, 0x32
xor byte [ebp + ecx - 0x4b0], dl
inc ecx
cmp ecx, 0x32
jl 0x401a04
push dword [ebp - 0x454]
lea eax, [ebp - 0x4b0]
push dword [ebp - 0x45c]
push eax
lea eax, [ebp - 0x410]
push eax
call fcn.004010d7
add esp, 0x10
lea eax, [ebp - 0x410]
push eax
push dword [ebp - 0x458]
call fcn.004965f0
lea ecx, [ebx + 0x1c]
lea eax, [ebp + 0x20]
cmp ecx, eax
je 0x401a69
cmp dword [ebp + 0x34], 0xf
push dword [ebp + 0x30]
cmova eax, dword [ebp + 0x20]
push eax
call fcn.004044ca
cmp byte [0x7b993f], 0
lea edi, [ebp - 0x470]
mov esi, str._RZDZYMSTRgcptbr
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
je 0x401a9b
push 0x35
xor ecx, ecx
pop esi
xor edx, edx
mov eax, ecx
div esi
add dl, 0x32
xor byte [ebp + ecx - 0x470], dl
inc ecx
cmp ecx, 0xc
jl 0x401a85
cmp byte [0x7b998f], 0
lea edi, [ebp - 0x49c]
push 7
pop ecx
mov esi, str.gCPTBR_
rep movsd dword es:[edi], dword [esi]
je 0x401acf
push 0x35
xor ecx, ecx
pop esi
xor edx, edx
mov eax, ecx
div esi
add dl, 0x32
xor byte [ebp + ecx - 0x49c], dl
inc ecx
cmp ecx, 0x1c
jl 0x401ab9
push 0x40
lea eax, [ebp - 0x470]
push eax
lea eax, [ebp - 0x49c]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edi, dword [ebp - 0x464]
lea edx, [ebx + 4]
lea ecx, [ebp + 8]
call fcn.0040461e
test al, al
je 0x4018be
lea edx, [ebx + 0x1c]
lea ecx, [ebp + 0x20]
call fcn.0040461e
test al, al
je 0x4018be
cmp byte [ebx + 0x4c], 0
je 0x4018be
push edi
call fcn.00490430
push dword [ebp - 0x458]
call fcn.0048ff90
jmp 0x4018c5