Function at 0x40549c
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4ba781
call fcn.004ba2e0
sub esp, 0x34
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov ebx, ecx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x24], 0x797f
xor edi, edi
cmp dword [ebp - 0x24], 0x7c31
jle 0x40551b
mov esi, edi
mov eax, esi
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], 0x5321
mov ebx, eax
mov dword [ebp - 0x14], 0x1455
mov dword [ebp - 0x28], edi
mov eax, ebx
xor eax, edi
cdq
push edx
push eax
mov ecx, 0xab8d58
call fcn.004311a3
inc edi
cmp edi, 0x640d
jl 0x4054e0
dec ebx
dec dword [ebp - 0x14]
push 0
pop edi
jne 0x4054dd
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x1c], eax
dec dword [ebp - 0x20]
jne 0x4054d4
inc esi
cmp esi, 0xaa8
jl 0x4054c8
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebx + 0x10]
mov dword [ebp - 0x14], esi
mov dword [ebp - 4], edi
cmp dword [ebp - 0x24], 0x75ac
jge 0x40553c
mov edx, str.pluw_wixo_fmxdkgyq
mov ecx, 0xab8d58
call fcn.004329de
or dword [ebp - 4], 0xffffffff
jmp 0x405568
mov dword [ebp - 0x28], 0x106e
cmp dword [ebp - 0x28], 0x2263
jle 0x4055c8
mov dword [ebp - 0x1c], 0x2d75
cmp dword [ebp - 0x1c], 0x2e7e
jle 0x405779
push edi
push 0x19fd
push 0x143
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_GetDIBColorTable]
mov ebx, edi
mov dword [ebp - 0x28], 0x6f6
cmp dword [ebp - 0x28], 0x1eab
jle 0x40570b
imul edx
lodsb al, byte [esi]
outsb dx, byte [esi]
aam 0xbc
aam 0x57
invalid
mov esi, edi
mov eax, edi
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], 0x4c06
xor eax, ebx
cdq
push edx
push eax
lea ecx, [ebp - 0x40]
call fcn.00405272
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x405730
mov eax, dword [eax]
push eax
call fcn.0048e258
pop ecx
push edi
push 1
lea ecx, [ebp - 0x40]
call fcn.004030f7
mov eax, dword [ebp - 0x24]
add eax, esi
mov dword [ebp - 0x24], eax
dec dword [ebp - 0x20]
jne 0x405719
inc esi
cmp esi, 0x2f41
jl 0x40570d
inc ebx
cmp ebx, 0x4236
jl 0x4055fd
push edi
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_BeginPaint]
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
cmp dword [ebx + 0x10], 0
jbe 0x4057c4
cmp dword [ebx + 0x10], edi
jbe 0x4057e5
cmp dword [ebx + 0x14], 8
jb 0x40578e
mov eax, dword [ebx]
jmp 0x405790
mov eax, ebx
movzx edx, word [eax + edi*2]
lea eax, [edi - 0x702c]
movzx ecx, ax
mov eax, ecx
and eax, edx
add eax, eax
sub ecx, eax
add ecx, edx
movzx esi, cx
lea eax, [edi + edx]
xor edx, edx
push 0x19
pop ecx
div ecx
mov ecx, edx
shl esi, cl
add dword [ebp - 0x14], esi
inc edi
cmp dword [ebx + 0x10], edi
ja 0x405784
mov esi, dword [ebp - 0x14]
mov dword [ebp - 4], 2
cmp dword [ebp - 0x1c], 0x2ac6
jge 0x4057df
push str.xyi_enlwmgk_glicdygbh_xgo_autgec_voakpfj
call fcn.0048e258
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x405810
push str.cSeuzbePuhnkGJBATVPlSLS
call fcn.0048b573
xor edi, edi
push edi
push 0xab0535
push str._::EndDoc___::GetDC___::GetDesktopWindow_______error_
push edi
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 0x405809
ret
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret