Function at 0x466aac
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd4
push ebx
xor ebx, ebx
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00404bac
xor eax, eax
push ebp
push 0x466d3d
push dword fs:[eax]
mov dword fs:[eax], esp
push 1
call sub.kernel32.dll_DeleteAtom
push edi
push eax
nop
nop
mov eax, 0x17d
push eax
pop eax
add edi, 0x56
dec edi
pop eax
pop edi
lea eax, [ebp - 0x10]
call fcn.004046f8
push 0x466d4c
call sub.kernel32.dll_GlobalAddAtomA
mov dl, 1
mov eax, dword [0x416044]
call fcn.0040389c
mov dword [ebp - 0x1c], eax
push 1
call sub.user32.dll_GetWindowContextHelpId
push eax
push ecx
add eax, 0x14a
nop
nop
nop
nop
nop
nop
inc ecx
sub ecx, 0x6b
dec ecx
sub ecx, 0x44
xchg ecx, eax
sub ecx, 0xd7
add ecx, 0x34
add eax, 0xea
pop ecx
pop eax
mov dl, 0x20
mov eax, dword [ebp - 0x1c]
call fcn.004198ac
push edx
push esi
or esi, 0x11e
or edx, 0x27
xor esi, 0xb3
inc esi
nop
nop
mov edx, 0x3d
and esi, 0xf1
or edx, 0x63
dec edx
pop esi
pop edx
call sub.user32.dll_GetKBCodePage
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x1c]
call fcn.00419694
push 1
call sub.kernel32.dll_DeleteAtom
push edi
push eax
nop
nop
mov eax, 0x17d
push eax
pop eax
add edi, 0x56
dec edi
pop eax
pop edi
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x466cac
inc eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], 0
call sub.kernel32.dll_GetCurrentThread
push ecx
mov ecx, 0x102
add ecx, 0x7b
inc ecx
inc ecx
and ecx, 0x3b
mov ecx, 0x15a
xchg ecx, ecx
or ecx, 0x14f
inc ecx
push ecx
pop ecx
add ecx, 0xac
pop ecx
lea ecx, [ebp - 0x28]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 0x28]
call fcn.00408f14
mov dword [ebp - 0x18], eax
push esi
and esi, 0x65
push esi
pop esi
or esi, 0x103
push esi
pop esi
dec esi
dec esi
sub esi, 0xac
xor esi, 0x2d
sub esi, 0x124
or esi, 0x10b
inc esi
pop esi
call sub.kernel32.dll_GetTickCount
push ebx
and ebx, 0x16d
and ebx, 0xd5
add ebx, 0x3a
xor ebx, 0xcf
inc ebx
and ebx, 0x8b
xchg ebx, ebx
pop ebx
lea eax, [ebp - 0x2c]
mov dl, byte [ebp - 0x18]
add dl, byte [ebp - 8]
call fcn.004048e0
mov edx, dword [ebp - 0x2c]
lea eax, [ebp - 0x10]
call fcn.004049c4
push 1
call sub.kernel32.dll_DeleteAtom
push edi
push eax
nop
nop
mov eax, 0x17d
push eax
pop eax
add edi, 0x56
dec edi
pop eax
pop edi
call sub.kernel32.dll_GetCurrentThread
push ecx
mov ecx, 0x102
add ecx, 0x7b
inc ecx
inc ecx
and ecx, 0x3b
mov ecx, 0x15a
xchg ecx, ecx
or ecx, 0x14f
inc ecx
push ecx
pop ecx
add ecx, 0xac
pop ecx
inc dword [ebp - 0x14]
dec dword [ebp - 0x20]
jne 0x466bb6
call sub.kernel32.dll_GetCurrentThread
push ecx
mov ecx, 0x102
add ecx, 0x7b
inc ecx
inc ecx
and ecx, 0x3b
mov ecx, 0x15a
xchg ecx, ecx
or ecx, 0x14f
inc ecx
push ecx
pop ecx
add ecx, 0xac
pop ecx
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
call fcn.0040474c
push edx
or edx, 0xd0
sub edx, 0x106
xchg edx, edx
nop
nop
nop
nop
nop
or edx, 0x19f
xchg edx, edx
or edx, 0xa9
dec edx
xchg edx, edx
push edx
pop edx
add edx, 0x132
add edx, 7
pop edx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x466d44
lea eax, [ebp - 0x2c]
mov edx, 2
call fcn.0040471c
lea eax, [ebp - 0x10]
call fcn.004046f8
lea eax, [ebp - 4]
call fcn.004046f8
ret