Function at 0x40196c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
push esi
push edi
lea edi, [ebp - 0x15]
lea esi, [0x40598c]
mov ecx, 5
rep movsb byte es:[edi], byte [esi]
push dword [ebp + 8]
call fcn.00401f44
mov dword [ebp - 0x24], eax
test eax, eax
jne 0x40199e
mov eax, dword [str.Enter_name]
jmp 0x401b9a
movzx eax, byte [ebp - 0x14]
xor eax, dword [ebp - 0x24]
mov byte [ebp - 0x14], al
and dword [ebp - 4], 0
jmp 0x4019c4
movzx eax, byte [ebp - 0x14]
mov edx, dword [ebp - 4]
mov ecx, dword [ebp + 8]
movzx edx, byte [ecx + edx]
xor eax, edx
mov byte [ebp - 0x14], al
inc dword [ebp - 4]
mov eax, dword [ebp - 0x24]
cmp dword [ebp - 4], eax
jb 0x4019ae
and dword [ebp - 4], 0
mov eax, dword [ebp - 4]
mov edx, eax
inc edx
lea edx, [ebp + edx - 0x15]
movzx ecx, byte [edx]
movzx eax, byte [ebp + eax - 0x15]
xor ecx, eax
mov eax, ecx
mov byte [edx], al
inc dword [ebp - 4]
cmp dword [ebp - 4], 4
jb 0x4019d0
call fcn.00401c35
mov dword [ebp - 0x28], eax
mov eax, 6
mov edi, dword [ebp - 0x28]
mul dword [ebp - 0x28]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 8], eax
and dword [ebp - 4], 0
and dword [ebp - 0xc], 0
and dword [ebp - 0x10], 0
jmp 0x401a4e
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
shld edx, eax, 8
shl eax, 8
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], eax
mov edi, dword [ebp - 8]
add edi, dword [ebp - 4]
movzx edi, byte [edi + 0x40413c]
mov eax, edi
xor edx, edx
lea ecx, [ebp - 0x10]
or eax, dword [ecx]
or edx, dword [ecx + 4]
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], eax
inc dword [ebp - 4]
cmp dword [ebp - 4], 6
jb 0x401a18
and dword [ebp - 4], 0
mov edx, 0
mov eax, 0x15
push edx
push eax
lea eax, [ebp - 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00401e2c
mov dword [ebp - 8], eax
lea ecx, [ebp - 0x10]
push dword [ecx + 4]
push dword [ecx]
mov edx, 0
mov eax, 0x15
xchg dword [esp + 4], edx
xchg dword [esp], eax
push edx
push eax
call fcn.00401dc0
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], eax
mov edi, dword [ebp - 4]
movzx esi, byte [ebp + edi - 0x15]
sar esi, 4
add esi, dword [ebp - 8]
mov bl, byte [esi + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [ebp + edi*2 - 0x20], bl
mov edx, 0
mov eax, 0x15
push edx
push eax
lea eax, [ebp - 0x10]
push dword [eax + 4]
push dword [eax]
call fcn.00401e2c
mov dword [ebp - 8], eax
lea ecx, [ebp - 0x10]
push dword [ecx + 4]
push dword [ecx]
mov edx, 0
mov eax, 0x15
xchg dword [esp + 4], edx
xchg dword [esp], eax
push edx
push eax
call fcn.00401dc0
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], eax
mov edi, dword [ebp - 4]
mov esi, edi
shl esi, 1
inc esi
movzx edi, byte [ebp + edi - 0x15]
and edi, 0xf
add edi, dword [ebp - 8]
mov bl, byte [edi + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [ebp + esi - 0x20], bl
inc dword [ebp - 4]
cmp dword [ebp - 4], 5
jb 0x401a58
mov byte [ebp - 0x16], 0
push 0xa
lea eax, [ebp - 0x20]
push eax
push dword [0x405960]
push str._s__s_
push 0x40301c
call fcn.00402004
add esp, 0x14
mov dword [ebp - 8], 0x70
and dword [ebp - 4], 0
jmp 0x401b60
mov eax, dword [ebp - 4]
movzx eax, byte [eax + 0x40301c]
xor dword [ebp - 8], eax
inc dword [ebp - 4]
cmp dword [ebp - 4], 0x10
jb 0x401b4f
mov edi, dword [ebp - 8]
mov esi, edi
and esi, 0xf0
shl esi, 4
or si, 0xa010
and edi, 0xf
or esi, edi
mov dword [ebp - 8], esi
push esi
push str._.4X
push 0x40302c
call fcn.00402004
add esp, 0xc
lea eax, [0x40301c]
pop edi
pop esi
pop ebx
leave
ret