Function at 0x46a4bc
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.00404cdc
xor eax, eax
push ebp
push 0x46a71a
push dword fs:[eax]
mov dword fs:[eax], esp
push 1
call sub.gdi32.dll_CreatePatternBrush
push eax
nop
nop
nop
nop
push eax
pop eax
add eax, 0x130
nop
nop
nop
nop
nop
push eax
pop eax
or eax, 0x188
or eax, 0xac
pop eax
lea eax, [ebp - 0x10]
call fcn.0040485c
push 1
call sub.user32.dll_GetLastActivePopup
mov dl, 1
mov eax, dword [0x41605c]
call fcn.00403a18
mov dword [ebp - 0x1c], eax
call sub.user32.dll_GetActiveWindow
push ecx
push edx
and edx, 0x6d
nop
nop
or ecx, 0x86
nop
nop
nop
nop
nop
nop
pop edx
pop ecx
mov dl, 0x20
mov eax, dword [ebp - 0x1c]
call fcn.004198bc
push ebx
push esi
sub ebx, 0x98
mov esi, 0x32
or ebx, 0x57
inc ebx
push esi
pop esi
push esi
pop esi
or ebx, 0x3c
pop esi
pop ebx
push 1
call sub.user32.dll_GetLastActivePopup
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x1c]
call fcn.004196a4
push 1
call sub.kernel32.dll_SetCommBreak
push eax
push edi
sub eax, 0x8c
dec edi
nop
pop edi
pop eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x46a6bf
inc eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], 0
call sub.user32.dll_GetActiveWindow
push ecx
push edx
and edx, 0x6d
nop
nop
or ecx, 0x86
nop
nop
nop
nop
nop
nop
pop edx
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.0040914c
mov dword [ebp - 0x18], eax
push edx
push ebx
add edx, 0x116
push ebx
pop ebx
push edx
pop edx
add ebx, 0xea
push ebx
pop ebx
add ebx, 0x188
xchg ebx, ebx
add ebx, 0x192
add ebx, 0x164
nop
nop
pop ebx
pop edx
push 1
call sub.gdi32.dll_CreatePatternBrush
push eax
nop
nop
nop
nop
push eax
pop eax
add eax, 0x130
nop
nop
nop
nop
nop
push eax
pop eax
or eax, 0x188
or eax, 0xac
pop eax
lea eax, [ebp - 0x2c]
mov dl, byte [ebp - 0x18]
add dl, byte [ebp - 8]
call fcn.00404a44
mov edx, dword [ebp - 0x2c]
lea eax, [ebp - 0x10]
call fcn.00404b28
push ebx
and ebx, 0x15e
push ebx
pop ebx
and ebx, 0x75
xor ebx, 0x2c
and ebx, 0x65
dec ebx
sub ebx, 0x44
push ebx
pop ebx
xchg ebx, ebx
or ebx, 0xa4
or ebx, 0xb0
pop ebx
push 1
call sub.user32.dll_GetMenu
push edi
and edi, 0x136
push edi
pop edi
nop
nop
nop
nop
sub edi, 0x7c
dec edi
nop
nop
nop
push edi
pop edi
mov edi, 0xe8
push edi
pop edi
pop edi
call sub.kernel32.dll_GetUserDefaultLCID
push edx
xchg edx, edx
add edx, 0x133
mov edx, 0xa0
xchg edx, edx
or edx, 0xd6
pop edx
inc dword [ebp - 0x14]
dec dword [ebp - 0x20]
jne 0x46a5ae
push 1
call sub.gdi32.dll_CreatePatternBrush
push eax
nop
nop
nop
nop
push eax
pop eax
add eax, 0x130
nop
nop
nop
nop
nop
push eax
pop eax
or eax, 0x188
or eax, 0xac
pop eax
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
call fcn.004048b0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46a721
lea eax, [ebp - 0x2c]
mov edx, 2
call fcn.00404880
lea eax, [ebp - 0x10]
call fcn.0040485c
lea eax, [ebp - 4]
call fcn.0040485c
ret