Function at 0x40811c
Capabilities:
Encode data using xor

Disassembly:
push 0x1dc
mov eax, 0x431e47
call fcn.0041bc0a
mov dword [ebp - 0x1ac], edx
mov dword [ebp - 0x19c], ecx
mov dword [ebp - 0x1a4], ecx
mov dword [ebp - 0x1d0], ecx
xor ebx, ebx
mov dword [ebp - 0x1a0], ebx
mov edi, ecx
xor eax, eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov dword [ecx], ebx
mov dword [ecx + 4], ebx
mov dword [ecx + 8], ebx
mov dword [ebp - 4], ebx
lea ecx, [ebp - 0x58]
push 0x43c654
mov dword [ebp - 0x1a0], 1
call fcn.00404325
pop ecx
mov dword [ebp - 4], 1
lea edi, [ebp - 0x20]
mov esi, str.tZZQpJJNUQ__
mov ecx, ebx
push 0x37
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
pop esi
xor edx, edx
mov eax, ecx
div esi
add dl, 0x32
xor byte [ebp + ecx - 0x20], dl
inc ecx
cmp ecx, 0xf
jl 0x40818f
mov esi, str.YVF_S__v_v
lea edi, [ebp - 0x38]
push 0x37
mov ecx, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
pop esi
xor edx, edx
mov eax, ecx
div esi
add dl, 0x32
xor byte [ebp + ecx - 0x38], dl
inc ecx
cmp ecx, 0xd
jl 0x4081b3
lea eax, [ebp - 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
lea ecx, [ebp - 0x20]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp byte [0x43c759], 0
lea edi, [ebp - 0x1cc]
mov esi, str.tZZQxR_MRPX
mov dword [ebp - 0x1a8], eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
je 0x408215
push 0x37
mov ecx, ebx
pop esi
xor edx, edx
mov eax, ecx
div esi
add dl, 0x32
xor byte [ebp + ecx - 0x1cc], dl
inc ecx
cmp ecx, 0xe
jl 0x4081ff
mov esi, str.YVF_S__v_v
lea edi, [ebp - 0x1bc]
push 0x37
pop ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
xor edx, edx
mov eax, ebx
div ecx
add dl, 0x32
xor byte [ebp + ebx - 0x1bc], dl
inc ebx
cmp ebx, 0xd
jl 0x408227
lea eax, [ebp - 0x1bc]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
lea ecx, [ebp - 0x1cc]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
call fcn.00408cb0
mov dword [ebp - 0x1a4], eax
mov eax, dword [ebp - 0x1a8]
test eax, eax
je 0x40835e
test edi, edi
je 0x40835e
cmp dword [ebp - 0x44], 0xf
lea edx, [ebp - 0x198]
lea ecx, [ebp - 0x58]
cmova ecx, dword [ebp - 0x58]
push edx
push ecx
call eax
mov ebx, dword [ebp - 0x19c]
mov esi, eax
cmp esi, 0xffffffff
je 0x408364
lea eax, [ebp - 0x16c]
push eax
lea ecx, [ebp - 0x28]
call fcn.004040bd
mov edx, dword [ebp - 0x1ac]
lea ecx, [ebp - 0x1e8]
push 0x43bf98
mov byte [ebp - 4], 2
call fcn.00404325
pop ecx
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 3
push ecx
mov ecx, eax
call fcn.00404245
push eax
lea ecx, [ebp - 0x40]
call fcn.00404084
or dword [ebp - 0x1a0], 2
lea ecx, [ebp - 0x1e8]
mov byte [ebp - 4], 5
call fcn.00402636
test byte [ebp - 0x198], 0x10
je 0x40832f
mov edx, 0x43c650
lea ecx, [ebp - 0x28]
call fcn.00408d20
test al, al
jne 0x40832f
mov edx, 0x43c658
lea ecx, [ebp - 0x28]
call fcn.00408d20
test al, al
jne 0x40832f
lea eax, [ebp - 0x40]
mov ecx, ebx
push eax
call fcn.0040891a
lea ecx, [ebp - 0x40]
call fcn.00402636
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call fcn.00402636
lea eax, [ebp - 0x198]
push eax
push esi
call edi
test eax, eax
jne 0x4082a1
push esi
call dword [ebp - 0x1a4]
jmp 0x408364
mov ebx, dword [ebp - 0x19c]
lea ecx, [ebp - 0x58]
call fcn.00402636
mov eax, ebx
call fcn.0041bbb9
ret