Function at 0x469694
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.00404ce0
xor eax, eax
push ebp
push 0x469947
push dword fs:[eax]
mov dword fs:[eax], esp
push 1
call sub.gdi32.dll_GetStockObject
push eax
nop
nop
nop
and eax, 0x99
sub eax, 0x13b
push eax
pop eax
nop
nop
sub eax, 0xb0
xor eax, 0xac
add eax, 0x6f
mov eax, 0x23
pop eax
lea eax, [ebp - 0x10]
call fcn.00404860
push 1
call sub.gdi32.dll_GetObjectType
push edx
push ebx
nop
nop
and ebx, 0x195
push edx
pop edx
or edx, 0xbf
add ebx, 0x7c
and edx, 0xc8
nop
nop
inc edx
and edx, 0x5d
xchg ebx, edx
pop ebx
pop edx
mov dl, 1
mov eax, dword [0x4128d4]
call fcn.00403a1c
mov dword [ebp - 0x1c], eax
push ecx
push edx
and ecx, 0x17d
nop
nop
add edx, 0x129
add ecx, 0x105
or ecx, 0xbb
inc edx
dec edx
pop edx
pop ecx
call sub.user32.dll_DestroyCaret
push esi
push ebx
mov ebx, 0x178
xchg ebx, esi
xchg esi, ebx
mov ebx, 0xba
add esi, 0x18b
dec esi
dec esi
xchg ebx, ebx
sub ebx, 0x17a
pop ebx
pop esi
mov dl, 0x20
mov eax, dword [ebp - 0x1c]
call fcn.00416474
push 1
call sub.gdi32.dll_GetStockObject
push eax
nop
nop
nop
and eax, 0x99
sub eax, 0x13b
push eax
pop eax
nop
nop
sub eax, 0xb0
xor eax, 0xac
add eax, 0x6f
mov eax, 0x23
pop eax
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x1c]
call fcn.0041625c
call sub.kernel32.dll_GetTickCount
push eax
push ebx
dec ebx
inc ebx
inc eax
inc eax
nop
nop
nop
nop
nop
xor ebx, 0x181
or eax, 0x6e
xchg ebx, eax
pop ebx
pop eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x4698ef
inc eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], 0
push 1
call sub.gdi32.dll_GetObjectType
push edx
push ebx
nop
nop
and ebx, 0x195
push edx
pop edx
or edx, 0xbf
add ebx, 0x7c
and edx, 0xc8
nop
nop
inc edx
and edx, 0x5d
xchg ebx, edx
pop ebx
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.00408bd8
mov dword [ebp - 0x18], eax
call sub.user32.dll_DestroyCaret
push esi
push ebx
mov ebx, 0x178
xchg ebx, esi
xchg esi, ebx
mov ebx, 0xba
add esi, 0x18b
dec esi
dec esi
xchg ebx, ebx
sub ebx, 0x17a
pop ebx
pop esi
lea eax, [ebp - 0x2c]
mov dl, byte [ebp - 0x18]
add dl, byte [ebp - 8]
call fcn.00404a48
mov edx, dword [ebp - 0x2c]
lea eax, [ebp - 0x10]
call fcn.00404b2c
push edi
push esi
xor esi, 0x147
push edi
pop edi
mov edi, 0x75
push edi
pop edi
dec edi
add esi, 0xf1
add edi, 0x30
add edi, 0x1a3
pop esi
pop edi
call sub.kernel32.dll_GetTickCount
push eax
push ebx
dec ebx
inc ebx
inc eax
inc eax
nop
nop
nop
nop
nop
xor ebx, 0x181
or eax, 0x6e
xchg ebx, eax
pop ebx
pop eax
push 0x469954
call sub.kernel32.dll_GlobalAddAtomA
push esi
or esi, 0x14a
nop
nop
or esi, 0x1e
mov esi, 0x111
or esi, 0x51
xchg esi, esi
dec esi
inc esi
nop
nop
nop
nop
nop
or esi, 0x5c
pop esi
inc dword [ebp - 0x14]
dec dword [ebp - 0x20]
jne 0x4697f4
push 1
call sub.gdi32.dll_DeleteColorSpace
push edx
nop
nop
mov edx, 0xf6
inc edx
nop
nop
nop
pop edx
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
call fcn.004048b4
push ebx
or ebx, 0x114
inc ebx
dec ebx
xchg ebx, ebx
xchg ebx, ebx
pop ebx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46994e
lea eax, [ebp - 0x2c]
mov edx, 2
call fcn.00404884
lea eax, [ebp - 0x10]
call fcn.00404860
lea eax, [ebp - 4]
call fcn.00404860
ret