Function at 0x4716c4
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.004053e8
xor eax, eax
push ebp
push 0x4719be
push dword fs:[eax]
mov dword fs:[eax], esp
push 1
call sub.user32.dll_IsWindowEnabled
push edx
push ebx
mov edx, 0xb9
and edx, 0x23
dec edx
add edx, 0xec
xchg edx, ebx
inc edx
push edx
pop edx
nop
nop
nop
nop
nop
inc edx
add ebx, 0x15
sub ebx, 0x18e
mov edx, 0xb8
add edx, 0x150
pop ebx
pop edx
lea eax, [ebp - 0x10]
xor edx, edx
call fcn.00405454
push 1
call sub.user32.dll_GetTopWindow
push eax
xor eax, 0xbe
push eax
pop eax
push eax
pop eax
xor eax, 0x10b
sub eax, 0x135
nop
xor eax, 0x55
or eax, 0x2c
nop
pop eax
mov dl, 1
mov eax, dword [0x4176b0]
call fcn.0041c59c
mov dword [ebp - 0x1c], eax
push eax
xor eax, 0xb2
sub eax, 0xe7
nop
inc eax
nop
nop
or eax, 0x1a1
pop eax
push 1
call sub.user32.dll_IsMenu
push edx
sub edx, 0x11e
and edx, 0xed
sub edx, 0x5a
and edx, 0x105
or edx, 0x5a
add edx, 0x1a8
dec edx
xchg edx, edx
sub edx, 0xac
push edx
pop edx
dec edx
xchg edx, edx
or edx, 0x52
pop edx
mov dx, 0x20
mov eax, dword [ebp - 0x1c]
call fcn.0041bbb0
push 1
call sub.gdi32.dll_AbortDoc
push ebx
push esi
mov ebx, 0x1a
inc esi
and esi, 0x160
push esi
pop esi
xchg esi, esi
xor ebx, 0x126
pop esi
pop ebx
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x1c]
call fcn.0041b974
push 1
call sub.user32.dll_IsWindowEnabled
push edx
push ebx
mov edx, 0xb9
and edx, 0x23
dec edx
add edx, 0xec
xchg edx, ebx
inc edx
push edx
pop edx
nop
nop
nop
nop
nop
inc edx
add ebx, 0x15
sub ebx, 0x18e
mov edx, 0xb8
add edx, 0x150
pop ebx
pop edx
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x47195b
inc eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], 0
push 1
call sub.user32.dll_IsMenu
push edx
sub edx, 0x11e
and edx, 0xed
sub edx, 0x5a
and edx, 0x105
or edx, 0x5a
add edx, 0x1a8
dec edx
xchg edx, edx
sub edx, 0xac
push edx
pop edx
dec edx
xchg edx, edx
or edx, 0x52
pop edx
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.0040adb4
mov dword [ebp - 0x18], eax
push 1
call sub.user32.dll_GetTopWindow
push eax
xor eax, 0xbe
push eax
pop eax
push eax
pop eax
xor eax, 0x10b
sub eax, 0x135
nop
xor eax, 0x55
or eax, 0x2c
nop
pop eax
lea eax, [ebp - 0x2c]
mov dx, word [ebp - 0x18]
add dx, word [ebp - 8]
call fcn.0040556c
mov edx, dword [ebp - 0x2c]
lea eax, [ebp - 0x10]
call fcn.00405724
push edx
sub edx, 0x4e
dec edx
add edx, 0x18e
or edx, 0x174
or edx, 0xbc
inc edx
mov edx, 0x170
inc edx
sub edx, 0xb
add edx, 0x16a
pop edx
push 1
call sub.gdi32.dll_AbortDoc
push ebx
push esi
mov ebx, 0x1a
inc esi
and esi, 0x160
push esi
pop esi
xchg esi, esi
xor ebx, 0x126
pop esi
pop ebx
call sub.kernel32.dll_GetLastError
push ebx
push esi
xor ebx, 0x39
and ebx, 0xb4
dec ebx
nop
nop
nop
mov ebx, 2
mov ebx, 0x122
sub esi, 0x31
push esi
pop esi
and ebx, 0x1a3
and ebx, 0x19d
pop esi
pop ebx
inc dword [ebp - 0x14]
dec dword [ebp - 0x20]
jne 0x471845
call sub.kernel32.dll_GetCurrentProcessId
push edi
push edx
xchg edx, edi
nop
nop
sub edx, 0x102
dec edi
and edx, 0x160
xchg edx, edx
xor edi, 0x6d
and edx, 0x28
or edi, 0x1a9
nop
nop
and edx, 0x4c
pop edx
pop edi
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
call fcn.00405400
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4719c5
lea eax, [ebp - 0x2c]
mov edx, 2
call fcn.004053f8
lea eax, [ebp - 0x10]
call fcn.004053f0
lea eax, [ebp - 4]
call fcn.004053f0
ret